
Chrome Automation
- 2.9k installs
- Updated July 30, 2026
- zc277584121/marketing-skills
chrome-automation is an agent skill that Automate Chrome browser tasks using agent-browser CLI. Navigate pages, fill forms, click buttons, take screenshots, extr.
About
Skill Chrome Automation agent browser Automate browser tasks in the user s real Chrome session via the agent browser https github com vercel labs agent browser CLI Prerequisite agent browser must be installed and Chrome must have remote debugging enabled See references agent browser setup md if unsure Core Principle Reuse the User s Existing Chrome This skill operates on a single Chrome process the user s real browser There is no session management no separate profiles no launching a fresh Playwright browser The chrome automation agent skill provides documented workflows prerequisites triggers and safety guidance from its SKILL md source Agents load it when user requests match the description and follow step by step instructions without inventing capabilities It integrates with standard agent tooling for the tasks inputs outputs and failure modes described in the repository documentation
- description: Automate Chrome browser tasks using agent-browser CLI. Navigate pages, fill forms, click buttons, take scre
- Automate browser tasks in the user's real Chrome session via the [agent-browser](https://github.com/vercel-labs/agent-br
- > **Prerequisite**: agent-browser must be installed and Chrome must have remote debugging enabled. See `references/agent
- Follow chrome-automation SKILL.md steps and documented constraints.
- Follow chrome-automation SKILL.md steps and documented constraints.
Chrome Automation by the numbers
- 2,909 all-time installs (skills.sh)
- +197 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #270 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
chrome-automation capabilities & compatibility
- Capabilities
- description: automate chrome browser tasks using · automate browser tasks in the user's real chrome · > **prerequisite**: agent browser must be instal · follow chrome automation skill.md steps and docu
- Use cases
- orchestration
What chrome-automation says it does
description: Automate Chrome browser tasks using agent-browser CLI. Navigate pages, fill forms, click buttons, take screenshots, extract data, and replay recorded workflows — all inside the user's rea
Automate browser tasks in the user's real Chrome session via the [agent-browser](https://github.com/vercel-labs/agent-browser) CLI.
> **Prerequisite**: agent-browser must be installed and Chrome must have remote debugging enabled. See `references/agent-browser-setup.md` if unsure.
npx skills add https://github.com/zc277584121/marketing-skills --skill chrome-automationAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2.9k |
|---|---|
| Security audit | 1 / 3 scanners passed |
| Last updated | July 30, 2026 |
| Repository | zc277584121/marketing-skills ↗ |
When should an agent use chrome-automation and what problem does it solve?
Automate Chrome browser tasks using agent-browser CLI. Navigate pages, fill forms, click buttons, take screenshots, extract data, and replay recorded workflows — all inside the user's real Chrome sess
Who is it for?
Developers invoking chrome-automation as documented in the skill source.
Skip if: Skip when requirements fall outside chrome-automation documented scope.
When should I use this skill?
Automate Chrome browser tasks using agent-browser CLI. Navigate pages, fill forms, click buttons, take screenshots, extract data, and replay recorded workflows — all inside the user's real Chrome sess
What you get
Outputs aligned with the chrome-automation SKILL.md workflow and stated deliverables.
- Configured agent-browser CLI
- CDP-connected Chrome automation session
By the numbers
- Documents Chrome 136+ UI path for enabling remote debugging
Files
Skill: Chrome Automation (agent-browser)
Automate browser tasks in the user's real Chrome session via the agent-browser CLI.
Prerequisite: agent-browser must be installed and Chrome must have remote debugging enabled. See references/agent-browser-setup.md if unsure.---
Core Principle: Reuse the User's Existing Chrome
This skill operates on a single Chrome process — the user's real browser. There is no session management, no separate profiles, no launching a fresh Playwright browser.
Always Start by Listing Tabs
Before opening any new page, always list existing tabs first:
agent-browser --auto-connect tab listThis returns all open tabs with their index numbers, titles, and URLs. Check if the page you need is already open:
- If the target page is already open → switch to that tab directly instead of opening a new one. The user likely has it open because they are already logged in and the page is in the right state.
agent-browser --auto-connect tab <index>- If the target page is NOT open → open it in the current tab or a new tab.
agent-browser --auto-connect open <url>Why This Matters
- The user's Chrome has their cookies, login sessions, and browser state
- Opening a new page when one is already available wastes time and may lose login state
- Many marketing platforms (social media dashboards, ad managers, CMS tools) require login — reusing an existing logged-in tab avoids re-authentication
---
Connection
Always use --auto-connect to connect to the user's running Chrome instance:
agent-browser --auto-connect <command>This auto-discovers Chrome with remote debugging enabled. If connection fails, guide the user through enabling remote debugging (see references/agent-browser-setup.md).
Chrome 144+ WebSocket-Only Fallback
Chrome 144+ can expose remote debugging from chrome://inspect/#remote-debugging as a WebSocket-only endpoint. In that state the page shows Server running at: 127.0.0.1:9222, but the traditional discovery URLs return 404:
curl http://127.0.0.1:9222/json/version
curl http://127.0.0.1:9222/json/listOlder agent-browser versions such as 0.27.x may fail with No running Chrome instance found even though Chrome is ready. First try the latest CLI without changing the global install:
npx -y agent-browser@latest connect "ws://127.0.0.1:9222/devtools/browser"
npx -y agent-browser@latest tab listIf this works, use npx -y agent-browser@latest <command> for the rest of the browser task. If it fails with an engine warning or install error, upgrade Node to 24+ or install the latest agent-browser globally.
---
Common Workflows
1. Navigate and Interact
# List tabs to find existing pages
agent-browser --auto-connect tab list
# Switch to an existing tab (if found)
agent-browser --auto-connect tab <index>
# Or open a new page
agent-browser --auto-connect open https://example.com
agent-browser --auto-connect wait --load networkidle
# Take a snapshot to see interactive elements
agent-browser --auto-connect snapshot -i
# Click, fill, etc.
agent-browser --auto-connect click @e3
agent-browser --auto-connect fill @e5 "some text"2. Extract Data from a Page
# Get all text content
agent-browser --auto-connect get text body
# Take a screenshot for visual inspection
agent-browser --auto-connect screenshot
# Execute JavaScript for structured data
agent-browser --auto-connect eval "JSON.stringify(document.querySelectorAll('table tr').length)"3. Replay a Chrome DevTools Recording
The user may provide a recording exported from Chrome DevTools Recorder (JSON, Puppeteer JS, or @puppeteer/replay JS format). See Replaying Recordings below.
---
Step-by-Step Interaction Guide
Taking Snapshots
Use snapshot -i to see all interactive elements with refs (@e1, @e2, ...):
agent-browser --auto-connect snapshot -iThe output lists each interactive element with its role, text, and ref. Use these refs for subsequent actions.
Step Type Mapping
| Action | Command |
|---|---|
| Navigate | agent-browser --auto-connect open <url> (optionally wait --load networkidle, but some sites like Reddit never reach networkidle — skip if open already shows the page title) |
| Click | snapshot -i → find ref → click @eN |
| Fill standard input | click @eN → fill @eN "text" |
| Fill rich text editor | click @eN → keyboard inserttext "text" |
| Press key | press <key> (Enter, Tab, Escape, etc.) |
| Scroll | scroll down <amount> or scroll up <amount> |
| Wait for element | wait @eN or wait "<css-selector>" |
| Screenshot | screenshot or screenshot --annotate |
| Get page text | get text body |
| Get current URL | get url |
| Run JavaScript | eval <js> |
How to Distinguish Input Types
- Standard input/textarea → use
fill - Contenteditable div / rich text editor (LinkedIn message box, Gmail compose, Slack, CMS editors) → click/focus first, then use
keyboard inserttext
Ref Lifecycle
Refs (@e1, @e2, ...) are invalidated when the page changes. Always re-snapshot after:
- Clicking links or buttons that trigger navigation
- Submitting forms
- Triggering dynamic content loads (AJAX, SPA navigation)
Verification
After each significant action, verify the result:
agent-browser --auto-connect snapshot -i # check interactive state
agent-browser --auto-connect screenshot # visual verification---
Replaying Recordings
Accepted Formats
1. JSON (recommended) — structured, can be read progressively:
# Count steps
jq '.steps | length' recording.json
# Read first 5 steps
jq '.steps[0:5]' recording.json2. @puppeteer/replay JS (import { createRunner }) 3. Puppeteer JS (require('puppeteer'), page.goto, Locator.race)
How to Replay
1. Parse the recording — understand the full intent before acting. Summarize what the recording does. 2. List tabs first — check if the target page is already open. 3. Navigate — execute navigate steps, reusing existing tabs when possible. 4. For each interaction step:
- Take a snapshot (
snapshot -i) to see current interactive elements - Match the recording's
aria/...selectors against the snapshot - Fall back to
text/..., then CSS class hints, then screenshot - Do not rely on ember IDs, numeric IDs, or exact XPaths — these change every page load
5. Verify after each step — snapshot or screenshot to confirm
---
Iframe-Heavy Sites
snapshot -i operates on the main frame only and cannot penetrate iframes. Sites like LinkedIn, Gmail, and embedded editors render content inside iframes.
Detecting Iframe Issues
snapshot -ireturns unexpectedly short or empty results- Recording references elements not appearing in snapshot output
get text bodycontent doesn't match what a screenshot shows
Workarounds
1. Use `eval` to access iframe content:
agent-browser --auto-connect eval --stdin <<'EVALEOF'
const frame = document.querySelector('iframe[data-testid="interop-iframe"]');
const doc = frame.contentDocument;
const btn = doc.querySelector('button[aria-label="Send"]');
btn.click();
EVALEOFNote: Only works for same-origin iframes.
2. Use `keyboard` for blind input: If the iframe element has focus, keyboard inserttext "..." sends text regardless of frame boundaries.
3. Use `get text body` to read full page content including iframes.
4. Use `screenshot` for visual verification when snapshot is unreliable.
When to Ask the User
If workarounds fail after 2 attempts on the same step, pause and explain:
- The page uses iframes that cannot be accessed via snapshot
- Which element you need and what you expected
- Ask the user to perform that step manually, then continue
---
Handling Unexpected Situations
Handle Automatically (do not stop):
- Popups or banners → dismiss them (
find text "Dismiss" clickorfind text "Close" click) - Cookie consent dialogs → accept or dismiss
- Tooltip overlays → close them first
- Element not in snapshot → try
find text "..." click, or scroll to reveal withscroll down 300
Pause and Ask the User:
- Login / authentication is required
- A CAPTCHA appears
- Page structure is completely different from expected
- A destructive action is about to happen (deleting data, sending real content) — confirm first
- Stuck for more than 2 attempts on the same step
- All iframe workarounds have failed
When pausing, explain clearly: what step you are on, what you expected, and what you see.
---
Key Commands Reference
| Command | Description |
|---|---|
tab list | List all open tabs with index, title, and URL |
tab <index> | Switch to an existing tab by index |
tab new | Open a new empty tab |
tab close | Close the current tab |
open <url> | Navigate to URL |
snapshot -i | List interactive elements with refs |
click @eN | Click element by ref |
fill @eN "text" | Clear and fill standard input/textarea |
type @eN "text" | Type without clearing |
keyboard inserttext "text" | Insert text (best for contenteditable) |
press <key> | Press keyboard key |
scroll down/up <amount> | Scroll page in pixels |
wait @eN | Wait for element to appear |
wait --load networkidle | Wait for network to settle |
wait <ms> | Wait for a duration |
screenshot [path] | Take screenshot |
screenshot --annotate | Screenshot with numbered labels |
eval <js> | Execute JavaScript in page |
get text body | Get all text content |
get url | Get current URL |
set viewport <w> <h> | Set viewport size |
find text "..." click | Semantic find and click |
close | Close browser session |
---
Known Limitations
1. Iframe blindness: snapshot -i cannot see inside iframes. See Iframe-Heavy Sites. 2. `find text` strict mode: Fails when multiple elements match. Use snapshot -i to locate the specific ref instead. 3. `fill` vs contenteditable: fill only works on <input> and <textarea>. For rich text editors, use keyboard inserttext. 4. `eval` is main-frame only: To interact with iframe content, traverse via document.querySelector('iframe').contentDocument...
---
Multi-Platform Operations
When the user requests an action across multiple platforms (e.g., "publish this article to Dev.to, LinkedIn, and X"), do NOT attempt all platforms in a single conversation. Instead, launch sequential subagents/workers, one per platform. Selecting this skill is explicit permission to use subagents/workers for this multi-platform workflow.
Why Subagents
Each platform operation consumes ~25-40K tokens (reference file + snapshots + interactions). Running 3-5 platforms in one context risks hitting the context limit and degrading late-platform accuracy. Each subagent/worker gets its own fresh context window.
How to Execute
1. Prepare the content — confirm the post text, title, tags, and any platform-specific adaptations with the user. 2. For each platform, launch a subagent/worker with a prompt that includes:
- The full content to publish
- Instructions to read the relevant reference file (e.g.,
Read /path/to/skills/chrome-automation/references/x.md) - Instructions to read the agent-browser skill file for command reference
- The specific task (post, comment, reply, etc.)
- Any platform-specific instructions (e.g., "use these hashtags on LinkedIn")
3. Run subagents/workers sequentially (one at a time), because they all share the same Chrome browser via --auto-connect. Parallel subagents/workers would cause tab conflicts. 4. After each subagent/worker completes, report the result to the user before launching the next one.
Prompt Template for Subagents
You are automating a browser task on [PLATFORM].
First, read these files for context:
- /absolute/path/to/skills/chrome-automation/references/[platform].md
- The installed agent-browser skill file, if available (agent-browser command reference)
Then connect to the user's Chrome browser using `agent-browser --auto-connect` and perform the following task:
[TASK DESCRIPTION]
Content to publish:
[CONTENT]
Important:
- Always list tabs first (`tab list`) and reuse existing logged-in tabs
- Re-snapshot after every navigation or action
- Confirm with the user before submitting/publishing (destructive action)
- If login is required or a CAPTCHA appears, stop and explainWhen NOT to Use Subagents
- Single platform — just do it directly in the current conversation.
- Read-only tasks (browsing, searching, extracting data) — context usage is lighter; a single conversation can handle 2-3 platforms.
---
Platform References
When automating tasks on specific platforms, consult the relevant reference document for page structure details, common operations, and known quirks:
| Platform | Reference | Key Notes |
|---|---|---|
| `references/reddit.md` | Custom faceplate-* components; networkidle never reached; unlabeled comment textbox; find text fails due to duplicate elements | |
| X (Twitter) | `references/x.md` | open often times out (use tab list to reuse existing tabs); click timestamp for post detail (not username); DraftJS contenteditable input (data-testid="tweetTextarea_0"); avoid networkidle |
| `references/linkedin.md` | Ember.js SPA; Enter submits comments (use Shift+Enter for newlines); comment box and compose box share the same label; avoid networkidle; messaging overlay may block content | |
| Dev.to | `references/devto.md` | Fast server-rendered HTML (Forem/Rails); standard <textarea> for comments/posts (Markdown); 5 reaction types; Algolia-powered search; networkidle works normally |
| Hacker News | `references/hackernews.md` | Minimal plain HTML; all form fields are unlabeled; link "reply" navigates to separate page; networkidle works instantly; rate limiting on posts/comments |
---
For installation and Chrome setup instructions, see `references/agent-browser-setup.md`.
agent-browser CLI — Setup Guide
This guide covers installing agent-browser and connecting it to your Chrome browser.
---
Installation
npm install -g agent-browserOr use npx without installing globally:
npx agent-browser --helpVerify installation:
agent-browser --version
npm view agent-browser version---
Enabling Remote Debugging in Chrome
agent-browser connects to your real Chrome via the Chrome DevTools Protocol (CDP). You need to enable remote debugging first.
Option A: Via Chrome UI (Chrome 136+, recommended)
1. Open Chrome normally 2. Go to chrome://inspect/#remote-debugging 3. Enable "Allow remote debugging for this browser instance" 4. Wait until status shows "Server running at: 127.0.0.1:9222"
Option B: Via Command Line
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
# Linux
google-chrome --remote-debugging-port=9222
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222Note: Chrome 136+ blocks--remote-debugging-portwith the default profile. Use the UI toggle (Option A) instead, or add--user-data-dir=/tmp/chrome-debugwhen using the CLI approach.
---
Connecting agent-browser to Chrome
Auto-connect (recommended)
agent-browser --auto-connect open https://example.comThis auto-discovers a Chrome instance with remote debugging enabled on the default port (9222).
Explicit CDP port
agent-browser --cdp 9222 open https://example.comChrome 144+ WebSocket-only endpoint
On newer Chrome builds, the chrome://inspect/#remote-debugging UI can show Server running at: 127.0.0.1:9222 while the old HTTP discovery endpoints return 404:
curl -i http://127.0.0.1:9222/json/version
curl -i http://127.0.0.1:9222/json/listIf agent-browser --auto-connect tab list fails with No running Chrome instance found, try the latest CLI and connect directly to the browser WebSocket endpoint:
npx -y agent-browser@latest connect "ws://127.0.0.1:9222/devtools/browser"
npx -y agent-browser@latest tab listIf the global CLI is old, keep using npx -y agent-browser@latest <command> for that task, or upgrade the global install. agent-browser@0.29.x may require Node 24+; if npx reports an engine failure, upgrade Node first.
---
Verifying the Connection
# List all open tabs — if this works, you're connected
agent-browser --auto-connect tab---
Troubleshooting
Connection refused / timeout
- Chrome's remote debugging is not enabled, or is using a different port
- Ensure Chrome is running with remote debugging enabled (see above)
- Check that no firewall is blocking port 9222
- If port 9222 is open but
/json/versionreturns 404, use the Chrome 144+ WebSocket-only endpoint flow above.
snapshot -i returns empty
- The page may be loading — try
agent-browser --auto-connect wait --load networkidlefirst - The page may render content inside iframes — see the skill's iframe section
fill does not work
- The target element may be a
contenteditablediv (rich text editor) rather than a standard input - Use
keyboard inserttext "text"instead
Dev.to — Platform Reference
Background knowledge for automating Dev.to (DEV Community) tasks via agent-browser.
---
Page Structure
Home Feed (dev.to/)
Dev.to is a Forem-based Ruby on Rails application. The page structure is straightforward HTML with minimal JavaScript framework overhead.
- Top navigation bar:
link "DEV Community Home"— logo/home linktextbox "Search..."— search box +button "Search"link "Create Post"— navigate to post editorlink "Notifications"— notification centerbutton "Navigation menu"— hamburger menu (profile/settings)
- Left sidebar:
link "Home",link "DEV++",link "Reading List",link "Videos"link "DEV Education Tracks",link "DEV Challenges",link "DEV Help"link "Advertise on DEV",link "Organization Accounts",link "DEV Showcase"link "About",link "Contact",link "Forem Shop"- Social links: Twitter, Facebook, Github, Instagram, Twitch, Mastodon, Bluesky
link "Customize tag priority"— customize feed algorithm- Partner links: Google AI, Neon, Algolia
- Feed area:
textbox "What's on your mind?"— quick post prompt (links to editor)- Feed tabs:
link "Discover"/link "Following" button "Toggle dropdown menu"— feed sort options- Article cards: Each is a simple
linkwith title and comment count, e.g.: link "I Run a Solo Company with AI Agent Departments 8 comments"- Cards also contain tag links like
link "#discuss",link "#ai"
- Right sidebar:
- Active discussions list with links
- Sponsor/partner content
- Listings
Article Detail Page (dev.to/<username>/<slug>)
- Left floating action bar (sticky sidebar):
button "reaction-drawer-trigger"— open reaction drawerbutton "Jump to Comments"— scroll to commentsbutton "Add to reading list"— bookmark/savebutton "Boost"— boost the postbutton "Share post options"— share menu
- Article header:
- Author name link:
link "<Author Name>"(appears twice — avatar and text) - Reaction buttons (5 types):
button "Like"— heart reactionbutton "Unicorn"— unicorn reactionbutton "Exploding Head"— mind blownbutton "Raised Hands"— celebratebutton "Fire"— fire reaction- Tag links:
link "# <tag>"(e.g.,link "# ai",link "# agents")
- Article content: Standard HTML with links, code blocks, images
- Comment section:
button "Sort comments"— sort optionsbutton "Subscribe"— subscribe to comment thread- Main comment input:
textbox "Add a comment to the discussion"— top-level comment box (Markdown supported) - Each comment has:
- Author profile image link:
link "<username> profile image" button "<Name> profile details"— view author details- Timestamp link:
link "Mar 4"etc. button "Toggle dropdown menu"— comment options (edit/delete/report)button "like"— like the commentbutton "Comment button Reply"— open reply form
Reply Form (expanded under a comment)
Clicking button "Comment button Reply" expands a reply form:
textbox "Reply to a comment..."— the reply input (Markdown supported)- Markdown toolbar:
button "Bold",button "Italic",button "Link"button "Ordered list",button "Unordered list"button "Heading",button "Quote"button "Code",button "Code block"button "Embed",button "Upload image"button "More options"button "Submit"(disabled until text entered)button "Preview"(disabled until text entered)button "Dismiss"— close the reply form
Create Post Page (dev.to/new)
- Editor tabs:
button "Edit"/button "Preview" button "Close the editor"— exit without saving- Cover image:
button "Upload Cover Image"+button "🍌 Generate Image"(AI image generation) button "Cover Video Link"— add cover videotextbox "Post Title"— article titletextbox "Add up to 4 tags"— tag input (combobox for tag suggestions)- Markdown toolbar (same as reply form):
- Bold, Italic, Link, Ordered list, Unordered list, Heading, Quote, Code, Code block, Embed, Upload image
link "Upload Agent Session"— upload agent sessionbutton "More options"— additional formattingtextbox "Post Content"— the main article body (Markdown)- Action buttons:
button "Publish"— publish immediatelybutton "Save draft"— save as draftbutton "Advanced Post options"— series, canonical URL, etc.button "Toggle AI Editor Helper"— AI writing assistant
Search Results Page (dev.to/search?q=<query>)
textbox "Search term"— editable search box- Sort options:
link "Most Relevant"/link "Newest"/link "Oldest" - Filter tabs:
link "Posts"/link "People"/link "Organizations"/link "Tags"/link "Comments"/link "My posts only" - Result cards: Each has:
- Article title link (appears twice — card and title)
- Author profile link +
button "profile details" - Date link
- Tag links (
link "# <tag>") - Reaction count link:
link "N reactions" - Comment link:
link "Add a comment to post - <title>" - Save button:
button "Save post <title> to reading list"
User Profile Page (dev.to/<username>)
- User avatar, name, bio
- Follow button
- Stats (posts, comments, followers)
- Article list
---
Common Operations
Browse Home Feed
agent-browser --auto-connect open https://dev.to
agent-browser --auto-connect wait 2000
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect scroll down 800 # load more articles
agent-browser --auto-connect snapshot -i # re-snapshotSearch for Posts
# Direct URL:
agent-browser --auto-connect open "https://dev.to/search?q=vector+database+AI"
agent-browser --auto-connect wait 2000
agent-browser --auto-connect snapshot -i
# Or use the search box:
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect fill @eSearchBox "AI agents" # textbox "Search..."
agent-browser --auto-connect press Enter
agent-browser --auto-connect wait 2000
agent-browser --auto-connect snapshot -iRead an Article
# Click article title from feed or search results:
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eArticleLink # link "<Article Title>"
agent-browser --auto-connect wait 2000
agent-browser --auto-connect snapshot -i
# Or navigate directly:
agent-browser --auto-connect open "https://dev.to/<username>/<slug>"React to an Article
Dev.to has 5 reaction types (can use multiple):
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eLike # button "Like"
agent-browser --auto-connect click @eUnicorn # button "Unicorn"
agent-browser --auto-connect click @eExploding # button "Exploding Head"
agent-browser --auto-connect click @eRaisedHands # button "Raised Hands"
agent-browser --auto-connect click @eFire # button "Fire"Comment on an Article
agent-browser --auto-connect snapshot -i
# Find the main comment textbox:
agent-browser --auto-connect fill @eCommentBox "Your comment here (supports **Markdown**)"
# textbox "Add a comment to the discussion"
# Submit: need to look for Submit button after typing
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eSubmit # button "Submit"Reply to a Comment
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eReply # button "Comment button Reply"
agent-browser --auto-connect snapshot -i # re-snapshot for reply form
agent-browser --auto-connect fill @eReplyBox "Your reply (supports **Markdown**)"
# textbox "Reply to a comment..."
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eSubmit # button "Submit"Create a New Post
agent-browser --auto-connect open https://dev.to/new
agent-browser --auto-connect wait 2000
agent-browser --auto-connect snapshot -i
# Fill title
agent-browser --auto-connect fill @eTitle "Your Article Title"
# textbox "Post Title"
# Add tags
agent-browser --auto-connect fill @eTags "ai, vectordatabase, rag, tutorial"
# textbox "Add up to 4 tags"
# Fill content (Markdown)
agent-browser --auto-connect fill @eContent "## Introduction\n\nYour article content here..."
# textbox "Post Content"
# Publish or save draft
agent-browser --auto-connect click @ePublish # button "Publish"
# or
agent-browser --auto-connect click @eSaveDraft # button "Save draft"Important: Always confirm with the user before actually publishing a post.
Save to Reading List
# From article detail page:
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eSave # button "Add to reading list"
# From search results:
agent-browser --auto-connect click @eSavePost # button "Save post <title> to reading list"---
Known Quirks & Workarounds
Dev.to is fast and simple
Unlike X and LinkedIn, Dev.to loads quickly and wait --load networkidle usually works. The DOM is straightforward server-rendered HTML without heavy SPA frameworks.
Article cards in feed are simple links
Unlike other platforms where posts have inline action buttons (like, comment, share), Dev.to feed articles are mostly just title links with comment counts. You need to click into the article to interact (react, comment, etc.).
Markdown everywhere
Both the article editor and comment forms accept Markdown. Use fill with Markdown syntax:
agent-browser --auto-connect fill @eContent "## My Heading\n\n- bullet 1\n- bullet 2\n\n```python\nprint('hello')\n```"Comment form uses standard textarea
Unlike LinkedIn/X which use contenteditable divs, Dev.to uses standard <textarea> elements for comments and post content. fill works reliably.
Multiple "Toggle dropdown menu" buttons
Each comment and some UI sections have their own dropdown menu button. Use the ref from snapshot -i to identify the correct one.
Search is powered by Algolia
Dev.to search uses Algolia and is fast. The search URL format is: dev.to/search?q=<query>. Results can be filtered by Posts, People, Organizations, Tags, Comments.
Tags limited to 4 per post
The editor allows up to 4 tags per post. The tag input has autocomplete/suggestions via a combobox.
"What's on your mind?" textbox
The textbox "What's on your mind?" on the home feed is just a link to the Create Post page — it doesn't open an inline editor.
Multiple reaction types
Unlike most platforms with a single "like" button, Dev.to has 5 reaction types (Like, Unicorn, Exploding Head, Raised Hands, Fire). Users can give multiple reactions to the same post. Each reaction has its own button on the article detail page.
AI Editor Helper
The Create Post page has a button "Toggle AI Editor Helper" for AI-powered writing assistance. This is a built-in Dev.to feature.
---
Useful URLs
- Home feed:
https://dev.to/ - Create post:
https://dev.to/new - Search:
https://dev.to/search?q=<query> - User profile:
https://dev.to/<username> - Article:
https://dev.to/<username>/<slug> - Tag page:
https://dev.to/t/<tag> - Reading list:
https://dev.to/readinglist - Notifications:
https://dev.to/notifications - Dashboard:
https://dev.to/dashboard - Settings:
https://dev.to/settings - Organization page:
https://dev.to/<org-name>
AI-Related Tags
#ai/#artificialintelligence#machinelearning/#ml#llm#genai/#generativeai#vectordatabase#rag#agents/#aiagents#nlp#deeplearning#openai/#chatgpt#python#tutorial#beginners
Hacker News — Platform Reference
Background knowledge for automating Hacker News (news.ycombinator.com) tasks via agent-browser.
---
Page Structure
Hacker News is an extremely minimal, server-rendered HTML site with no JavaScript frameworks. All pages are plain HTML tables. This makes it the easiest platform to automate, but form fields have no labels or placeholders.
Front Page (news.ycombinator.com/)
- Top navigation bar:
link "Hacker News"— home linklink "new",link "threads",link "past",link "comments",link "ask",link "show",link "jobs"— section linkslink "submit"— submit new postlink "<username>"— your profile (if logged in)link "logout"— log out
- Post list: Each post has:
link "upvote"— upvote arrow- Title link:
link "<Post Title>"— the post title (clicking navigates to external URL or post detail) - Domain link:
link "<domain.com>"— the source domain - Author link:
link "<username>"— who submitted it - Timestamp link:
link "N hours ago"— links to the post's comment page link "hide"— hide the post- Comments link:
link "N comments"— navigate to comment/discussion page - For posts with no comments:
link "discuss"instead
- Bottom:
link "More"to load next page of posts
- Footer:
textbox(search box, unlabeled), Guidelines, FAQ, Lists, API, Security, Legal, Apply to YC, Contact
Post Detail / Comments Page (news.ycombinator.com/item?id=<id>)
- Post header: Same structure as front page (upvote, title, domain, author, timestamp)
- Additional post links:
link "past",link "favorite",link "N comments" - Comment input:
textbox(unlabeled) +button "add comment" link "help"— formatting help- Comments: Each comment has:
link "upvote"— upvote the comment- Author link:
link "<username>" - Timestamp link:
link "N minutes ago" link "[–]"— collapse/fold the comment thread- Comment text (plain text, not interactive)
link "reply"— navigate to reply page
Reply Page (news.ycombinator.com/reply?id=<comment_id>&goto=...)
Clicking link "reply" on a comment navigates to a separate page with:
- The parent comment displayed for context
link "upvote"— upvote the parentlink "<username>"— parent authorlink "parent",link "context"— navigation linkslink "<Original Post Title>"— link back to original posttextbox(unlabeled) — the reply textarealink "help"— formatting helpbutton "reply"— submit the reply
Submit Page (news.ycombinator.com/submit)
Three unlabeled form fields:
textbox(1st) — title (name="title", type text)textbox(2nd,[nth=1]) — url (name="url", type url)textbox(3rd,[nth=2]) — text (name="text", textarea, for text-only posts)
button "submit" — submit the post
Note: Submit either a URL or text, not both. If URL is provided, text is ignored.
Other Pages
- New:
news.ycombinator.com/newest— latest posts - Ask HN:
news.ycombinator.com/ask— question posts - Show HN:
news.ycombinator.com/show— project showcases - Jobs:
news.ycombinator.com/jobs— job listings - Past:
news.ycombinator.com/front?day=YYYY-MM-DD— historical front page - User profile:
news.ycombinator.com/user?id=<username> - Submissions by domain:
news.ycombinator.com/from?site=<domain> - User's submissions:
news.ycombinator.com/submitted?id=<username> - User's comments:
news.ycombinator.com/threads?id=<username>
Search
HN's built-in search is minimal (footer textbox). The primary search engine is Algolia HN Search:
hn.algolia.com/?q=<query>— full-text search of HN- May timeout; if so, use the HN API or browse by domain/tag
---
Common Operations
Browse Front Page
agent-browser --auto-connect open https://news.ycombinator.com
agent-browser --auto-connect wait --load networkidle # HN loads instantly
agent-browser --auto-connect snapshot -iRead Comments on a Post
# Click the comments link from the front page:
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eComments # link "N comments"
agent-browser --auto-connect wait 1000
agent-browser --auto-connect snapshot -i
# Or navigate directly:
agent-browser --auto-connect open "https://news.ycombinator.com/item?id=<post_id>"Upvote a Post or Comment
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eUpvote # link "upvote"Comment on a Post
# Navigate to the post's comment page first
agent-browser --auto-connect open "https://news.ycombinator.com/item?id=<post_id>"
agent-browser --auto-connect snapshot -i
# The comment textbox is unlabeled — find it by ref
agent-browser --auto-connect fill @eTextbox "Your comment here"
agent-browser --auto-connect click @eAddComment # button "add comment"Reply to a Comment
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eReply # link "reply" — navigates to reply page
agent-browser --auto-connect wait 1000
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect fill @eTextbox "Your reply here"
agent-browser --auto-connect click @eReplyBtn # button "reply"Note: Clicking "reply" navigates to a separate page. This is different from most platforms where reply forms appear inline.
Submit a New Post
agent-browser --auto-connect open https://news.ycombinator.com/submit
agent-browser --auto-connect snapshot -i
# Fill title (1st textbox)
agent-browser --auto-connect fill @e2 "Your Post Title"
# Fill URL (2nd textbox) for link posts:
agent-browser --auto-connect fill @e3 "https://example.com/article"
# OR fill text (3rd textbox) for text/Ask HN posts:
agent-browser --auto-connect fill @e4 "Your post text here"
# Submit
agent-browser --auto-connect click @e5 # button "submit"Important: Always confirm with the user before actually submitting a post.
Search HN
# Option 1: Algolia HN Search (may be slow/timeout)
agent-browser --auto-connect open "https://hn.algolia.com/?q=vector+database"
agent-browser --auto-connect wait 3000
# Option 2: Browse by domain
agent-browser --auto-connect open "https://news.ycombinator.com/from?site=zilliz.com"
# Option 3: Use the footer search box on HN itself
agent-browser --auto-connect snapshot -i
# Find the unlabeled textbox at the bottom of the page
agent-browser --auto-connect fill @eSearchBox "AI vector database"
agent-browser --auto-connect press Enter---
Known Quirks & Workarounds
All form fields are unlabeled
HN uses bare <input> and <textarea> elements with no labels, placeholders, or aria attributes. In snapshots, they appear as just textbox [ref=eN].
Workaround: Use positional refs from snapshot -i. On the submit page: 1st textbox = title, 2nd = url, 3rd = text. On comment/reply pages: the textbox is the comment input.
Reply navigates to a separate page
Unlike most platforms where reply forms appear inline, HN's link "reply" navigates to news.ycombinator.com/reply?id=.... Always re-snapshot after clicking reply.
networkidle works perfectly
HN is pure server-rendered HTML with minimal JS. wait --load networkidle completes almost instantly.
Upvote is a link, not a button
The upvote arrow is link "upvote", not a button. It works the same way with click.
No downvote for new accounts
Downvoting requires sufficient karma. If the user's account is new, downvote links won't appear.
Rate limiting
HN has rate limits on posting and commenting. If you submit too quickly, you may get a "submitting too fast" error. Wait a few minutes and retry.
Comment formatting
HN comments support limited formatting:
- Blank line for paragraph break
*italic*for italics- Indent with 2+ spaces for code blocks
- URLs are auto-linked
- No bold, no headers, no images
Duplicate submission detection
HN detects duplicate URLs. If someone already submitted the same URL, you'll be redirected to the existing discussion.
"past" link on posts
Each post has a link "past" which shows previous submissions of the same URL. This is useful for finding earlier discussions.
Search footer textbox appears on every page
Every HN page has an unlabeled textbox in the footer for search. Don't confuse it with comment input boxes. The comment box typically appears before the first comment, while the search box is at the very bottom of the page.
---
Useful URLs
- Front page:
https://news.ycombinator.com/ - Newest:
https://news.ycombinator.com/newest - Ask HN:
https://news.ycombinator.com/ask - Show HN:
https://news.ycombinator.com/show - Jobs:
https://news.ycombinator.com/jobs - Submit:
https://news.ycombinator.com/submit - Post detail:
https://news.ycombinator.com/item?id=<id> - User profile:
https://news.ycombinator.com/user?id=<username> - User submissions:
https://news.ycombinator.com/submitted?id=<username> - User comments:
https://news.ycombinator.com/threads?id=<username> - Submissions from domain:
https://news.ycombinator.com/from?site=<domain> - Historical front page:
https://news.ycombinator.com/front?day=YYYY-MM-DD - Algolia search:
https://hn.algolia.com/?q=<query> - HN API:
https://hacker-news.firebaseio.com/v0/
AI-Related Patterns on HN
HN is one of the most influential platforms for AI/tech discussions. Common AI-related content patterns:
- Show HN posts: Great for launching tools/products (
Show HN: <Product> – <Description>) - Ask HN posts: Good for gathering feedback (
Ask HN: Best vector database for <use case>?) - Blog post submissions: Submit technical blog posts from your domain
- Comment engagement: Thoughtful comments on trending AI posts build reputation
Popular AI topics on HN:
- LLM releases and benchmarks
- AI agent frameworks
- Vector databases and RAG
- Open-source AI tools
- AI safety and ethics
- Startup launches (especially YC companies)
LinkedIn — Platform Reference
Background knowledge for automating LinkedIn tasks via agent-browser.
---
Page Structure
Home Feed (linkedin.com/feed/)
LinkedIn is an Ember.js single-page application. Key interactive elements:
- Top navigation bar:
link "LinkedIn"— logo/home linkbutton "Click to start a search"— opens search comboboxlink "Home",link "My Network",link "Jobs",link "Messaging",link "Notifications"— main navbutton "<Your Name> Me"— profile/account menu (button text includes the logged-in user's name)button "For Business"— business tools
- Left sidebar (profile card):
- Profile photo, background photo links
- Profile name + headline link
- Company link
link "Profile viewers N",link "Post impressions N"— analyticslink "Saved items",link "Groups",link "Newsletters",link "Events"
- Compose area (top of feed):
button "Start a post"— opens compose modalbutton "Add a video",button "Add a photo"— quick medialink "Write an article on LinkedIn"— long-form article editor
- Post cards: Each post has:
- Social proof line (e.g., "Xinyi Xia" liked, "Richard Shoemake" commented) — shows who in your network interacted
- Author graphic link:
link "View <Author>'s graphic link"— profile photo button "Open control menu for post by <Author>"— post settings (⋯ menu)button "Dismiss post by <Author>"— hide post (×)button "Follow <Author>"— follow button (for non-connections)- Post content text with hashtag links (
link "hashtag <tag>") - External links (
link "https://lnkd.in/...") button "see more, visually reveals content which is already detected by screen readers"— expand truncated text- Image/media buttons:
button "Activate to view larger image, ..." - Reaction count:
button "N reactions"orbutton "<Name> and N others" - Comment count:
button "N comments on <Author>'s post" - Repost count:
button "N reposts of <Author>'s post" - Action buttons (4 buttons per post):
button "React Like"— default like reactionbutton "Open reactions menu"— long-press for Celebrate, Support, Love, Insightful, Funnybutton "Comment"— toggle comment sectionbutton "Repost"— repost/sharebutton "Send in a private message"— share via DM
- Sponsored posts: Marked with
link "View Sponsored Content"orlink "Learn more. View Sponsored Content"
- Right sidebar:
- "Add to your feed" recommendations with
button "Follow"buttons - LinkedIn News section
- Messaging overlay (bottom-right):
button "Compose message"— new DMtextbox "Type to search for connections and conversations."— search conversationstab "Focused"/tab "Other"— message tabs- Conversation list with checkboxes and option buttons
Comment Section (expanded in feed)
Clicking button "Comment" on a post expands the comment section inline:
- Comment input:
textbox "Text editor for creating content"— the comment box button "Open Emoji Keyboard"— add emojibutton "Add a photo"— attach image to comment- Each comment has:
- Author profile photo link:
link "View <Name>'s graphic link" button "Open options for <Name>'s comment"— comment menu (edit/delete)button "see more..."— expand long comment textbutton "React Like to <Name>'s comment"— like the commentbutton "Open reactions menu"— other reactions on commentbutton "N Reactions on <Name>'s comment"— reaction countbutton "Reply to <Name>'s comment"— open reply threadbutton "Load previous replies on <Name>'s comment"— expand reply thread- Load more:
button "Load more comments"— paginate comments
Compose Modal (Start a post)
Clicking button "Start a post" opens a modal overlay:
button "Dismiss"— close the modalbutton "<Name> <Name> Post to Anyone"— visibility selector (Anyone, Connections only, etc.)textbox "Text editor for creating content"— the post text inputbutton "Open Emoji Keyboard"— emoji pickerbutton "Add media"— attach images/documentsbutton "Create an event"— create event postbutton "Celebrate an occasion"— celebration postbutton "More"— additional post typesbutton "Schedule post"— schedule for laterbutton "Post"(disabled until text entered) — publish
User Profile Page (linkedin.com/in/<username>)
Clicking a user's graphic link from feed goes to their profile:
- Profile photo, background image
button "Notify me about all of <Name>'s posts"— bell notificationlink "<Name>"— profile namelink "Contact info"— contact detailslink "N connections"— connections list- Mutual connections link
button "Message <Name>"— send DMbutton "More actions"— additional optionsbutton "Following <Name>"— follow status- Content tabs:
button "Posts",button "Comments",button "Images" - Featured links section
- Experience, Education, Skills sections
Search Results Page
URL format: linkedin.com/search/results/all?keywords=<query>&origin=GLOBAL_SEARCH_HEADER
- Search box:
textbox "Search"— editable, pre-filled with query - Category filter buttons: Jobs, Posts, People, Groups, Courses (quick switch)
- Category filter radio/checkboxes (sidebar): Jobs, Posts, People, Groups, Courses, Companies, Schools, Events, Products, Services
- Time filters: "From my network", "Past 24 hours", "Past week"
- Connection filters: "1st", "2nd", "3rd+"
- Results sections (mixed):
- Jobs with save buttons
- Posts with hashtags and reaction buttons
- People with profile summaries and Follow/Connect buttons
- Groups with Join buttons
- Courses with Save buttons
button "Show all <type> results"— see all results of a specific typebutton "Load more"— paginate results
Posts-only search: linkedin.com/search/results/content/?keywords=<query>
Filter to posts by clicking the "Posts" button or navigating directly.
---
Common Operations
Browse Home Feed
agent-browser --auto-connect open https://www.linkedin.com/feed/
agent-browser --auto-connect wait 3000 # LinkedIn loads slowly
agent-browser --auto-connect snapshot -i # see posts and actions
agent-browser --auto-connect scroll down 1000 # load more posts
agent-browser --auto-connect snapshot -i # re-snapshot after scrollSearch for Posts
# Direct URL (posts only):
agent-browser --auto-connect open "https://www.linkedin.com/search/results/content/?keywords=vector%20database%20AI"
agent-browser --auto-connect wait 3000
agent-browser --auto-connect snapshot -i
# Or use the search box:
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eSearchButton # button "Click to start a search"
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect fill @eSearchBox "AI agents" # combobox "Search"
agent-browser --auto-connect press Enter
agent-browser --auto-connect wait 3000
agent-browser --auto-connect snapshot -iReact to a Post (Like)
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eLike # button "React Like"For other reactions (Celebrate, Love, Insightful, Funny):
# Long-press / hover the reactions menu
agent-browser --auto-connect click @eReactMenu # button "Open reactions menu"
agent-browser --auto-connect snapshot -i # see reaction options
agent-browser --auto-connect click @eReaction # select specific reactionComment on a Post
1. Click the Comment button to expand the comment section:
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eComment # button "Comment"
agent-browser --auto-connect snapshot -i # re-snapshot to see comment input2. Find and fill the comment text box:
# The comment input is: textbox "Text editor for creating content"
agent-browser --auto-connect fill @eCommentBox "Great insights! ..."
agent-browser --auto-connect press Enter # Submit comment (Enter key submits on LinkedIn)Note: On LinkedIn, pressing Enter in the comment box submits the comment. Use Shift+Enter for new lines.
Reply to a Comment
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eReply # button "Reply to <Name>'s comment"
agent-browser --auto-connect snapshot -i # re-snapshot for reply input
agent-browser --auto-connect fill @eReplyBox "Your reply..."
agent-browser --auto-connect press Enter # Submit replyCreate a New Post
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eStartPost # button "Start a post"
agent-browser --auto-connect wait 1000
agent-browser --auto-connect snapshot -i
# Fill the post text
agent-browser --auto-connect fill @eTextbox "Your post content here #AI #VectorDatabase"
# Optionally change visibility
agent-browser --auto-connect click @eVisibility # button "Post to Anyone"
# Submit
agent-browser --auto-connect snapshot -i # re-snapshot for enabled Post button
agent-browser --auto-connect click @ePost # button "Post"Important: Always confirm with the user before actually submitting a post.
Repost
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eRepost # button "Repost"
agent-browser --auto-connect snapshot -i # see repost options
# Options: "Repost instantly" or "Repost with your thoughts"
agent-browser --auto-connect click @eOption # select repost typeSend a Direct Message
# From feed messaging overlay:
agent-browser --auto-connect click @eCompose # button "Compose message"
agent-browser --auto-connect snapshot -i
# Search for recipient, fill message, send
# From a profile page:
agent-browser --auto-connect click @eMessage # button "Message <Name>"
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect fill @eMsgBox "Your message..."
agent-browser --auto-connect press EnterView a Post Detail Page
LinkedIn posts don't have a simple permalink in the feed snapshot. To navigate to a post's detail page:
# Use the post's activity URL pattern:
agent-browser --auto-connect open "https://www.linkedin.com/feed/update/urn:li:activity:<id>/"
agent-browser --auto-connect wait 3000
agent-browser --auto-connect snapshot -iIn the feed, you can also click the timestamp or "N comments" button to navigate to the post detail overlay/page.
---
Known Quirks & Workarounds
Avoid wait --load networkidle
LinkedIn has continuous background network activity (messaging, notifications, tracking). The networkidle state is rarely reached.
Workaround: Use wait 3000 after navigation. LinkedIn is generally slower to load than other platforms.
"View <Name>'s graphic link" is for profile photo links
In the feed, each post author's profile photo appears as link "View <Name>'s graphic link". Clicking this navigates to the author's profile, NOT the post detail. This is similar to X where clicking the username goes to the profile.
Comment box and post compose box have the same label
Both use textbox "Text editor for creating content". When multiple are visible (e.g., compose modal open while a comment box is expanded), use the ref from the most recent snapshot -i carefully.
Workaround: Close the compose modal before commenting, or vice versa. The correct textbox is always the one in the current context (modal vs feed).
Multiple "React Like" / "Comment" buttons on the page
Each visible post has its own set of action buttons. They appear as [nth=1], [nth=2], etc. Always identify the correct post first (by author name or context), then use the corresponding action button ref.
Reactions menu requires hover/click
The reactions menu (button "Open reactions menu") opens a popup with reaction options. After clicking, re-snapshot to see the available reactions, then click the desired one.
"see more" button for truncated content
Long posts are truncated with button "see more, visually reveals content which is already detected by screen readers". Click this to expand the full text.
Messaging overlay may block content
The messaging overlay at the bottom-right can obscure page content. If elements are blocked:
# Minimize the messaging overlay
agent-browser --auto-connect click @eMinimize # button "You are on the messaging overlay. Press enter to minimize it."Post content contains external links as lnkd.in shortlinks
LinkedIn shortens all external URLs to lnkd.in format. The actual URL is behind the redirect.
Sponsored posts mixed in feed
Sponsored/promoted posts appear in the feed with link "View Sponsored Content" labels. They have the same action buttons but may behave differently (e.g., clicking leads to external sites).
Enter key submits comments
Unlike most platforms, pressing Enter in LinkedIn's comment box submits the comment immediately. Use Shift+Enter for line breaks within a comment.
Search requires specific filter for posts
The default search shows a mixed page with Jobs, Posts, People, etc. To see only posts:
- Click the "Posts" filter button after searching
- Or navigate directly to:
linkedin.com/search/results/content/?keywords=<query>
---
Useful URLs
- Home feed:
https://www.linkedin.com/feed/ - My network:
https://www.linkedin.com/mynetwork/ - Jobs:
https://www.linkedin.com/jobs/ - Messaging:
https://www.linkedin.com/messaging/ - Notifications:
https://www.linkedin.com/notifications/ - Profile:
https://www.linkedin.com/in/<username>/ - Company page:
https://www.linkedin.com/company/<company>/ - Search (all):
https://www.linkedin.com/search/results/all/?keywords=<query> - Search (posts):
https://www.linkedin.com/search/results/content/?keywords=<query> - Search (people):
https://www.linkedin.com/search/results/people/?keywords=<query> - Search (companies):
https://www.linkedin.com/search/results/companies/?keywords=<query> - Post detail:
https://www.linkedin.com/feed/update/urn:li:activity:<id>/ - Article:
https://www.linkedin.com/pulse/<slug>/ - Groups:
https://www.linkedin.com/groups/<group_id>/
AI-Related Hashtags
#AI/#ArtificialIntelligence#MachineLearning/#ML#LLM/#LargeLanguageModels#GenerativeAI/#GenAI#VectorDatabase/#VectorSearch#RAG/#RetrievalAugmentedGeneration#AIAgents/#AgenticAI#DataEngineering#NLP/#NaturalLanguageProcessing#DeepLearning#Milvus/#Zilliz
AI-Related Companies & Pages
Zilliz— Milvus / Zilliz CloudOpenAI— GPT / ChatGPTAnthropic— ClaudeGoogle DeepMind— GeminiHugging Face— Open-source MLMeta AI— LlamaMistral AI— Open-source LLMsCohere— Enterprise AI / RerankPinecone— Vector databaseWeaviate— Vector databaseQdrant— Vector database
Reddit — Platform Reference
Background knowledge for automating Reddit tasks via agent-browser.
---
Page Structure
Subreddit Feed (/r/<subreddit>)
The feed page uses custom web components (faceplate-*). Key interactive elements:
- Top bar: Search box, "Create Post" link, chat, inbox, user menu
- Post cards: Each post has: title link, Upvote/Downvote buttons, "Go to comments" link, "Give award" button, "Share" button, "Open user actions" button
- Right sidebar: Subreddit info, rules, community bookmarks
- Left sidebar: Navigation (Home, Popular, News, Explore), recent subreddits
The "Create Post" button appears twice: once in the top nav bar (ref labeled "Create post") and once in the subreddit header area ("Create Post"). Either works.
Post Detail Page (/r/<subreddit>/comments/<id>/...)
- Post content: Title, body text or link, embedded media
- Post actions: Upvote, Downvote, "Go to comments", "Give award", "Share"
- Comment input: An unlabeled
textboxappears below the post. Clicking it activates the editor with "Cancel" and "Comment" buttons. - Comments: Each comment has: Upvote, Downvote, Reply, Give award, Share buttons, plus a "Toggle Comment Thread" to collapse/expand.
- Sort: "Sort by" dropdown (Top, Best, New, etc.) and a "Search Comments" button.
Create Post Page (/r/<subreddit>/submit)
- Subreddit selector: Dropdown to choose the target subreddit
- Post type tabs: Text, Images & Video, Link, Poll, AMA
- Title field:
textbox "Title"— standard input, usefill - Body field:
textbox "Post body text field"— this is a rich text editor with a formatting toolbar (Bold, Italic, Strikethrough, Superscript, Heading, Link, Image, Video, Bullet List, Number List, Spoiler, Quote Block, Code, Code Block, Table) - Flair: "Add flair and tags" button (required in some subreddits)
- Submit: "Post" button (disabled until title is filled), "Save Draft" button
- Drafts: "Drafts" button to access saved drafts
User Profile Page (/user/<username>)
- Overview of posts and comments
- Profile info sidebar
---
Common Operations
Browse a Subreddit
agent-browser --auto-connect tab list # check if already open
agent-browser --auto-connect open https://www.reddit.com/r/artificial/
agent-browser --auto-connect snapshot -i -c # see posts and actions
agent-browser --auto-connect scroll down 800 # load more postsRead a Post
Option A — click by ref after snapshot:
agent-browser --auto-connect snapshot -i -c
# Find the post title link ref, then:
agent-browser --auto-connect click @eNOption B — navigate directly (more reliable, avoids stale refs):
agent-browser --auto-connect open "https://www.reddit.com/r/<subreddit>/comments/<id>/..."Comment on a Post
1. Navigate to the post detail page 2. Find the comment textbox (unlabeled textbox below the post) 3. Click it to activate the editor 4. Type the comment — use fill since it's a standard textbox:
agent-browser --auto-connect snapshot -i -c
# Find the textbox ref (unlabeled textbox, NOT the search box)
agent-browser --auto-connect click @eN
agent-browser --auto-connect fill @eN "Your comment text here"5. Click the "Comment" button to submit
Reply to a Comment
1. Scroll to the target comment 2. Click the "Reply" button on that comment 3. A reply editor will appear — fill it similarly to the main comment box 4. Submit with the "Comment" or "Reply" button
Upvote / Downvote
agent-browser --auto-connect snapshot -i -c
# Each post/comment has Upvote and Downvote buttons
agent-browser --auto-connect click @eN # the Upvote button refCreate a New Post
agent-browser --auto-connect open "https://www.reddit.com/r/<subreddit>/submit"
agent-browser --auto-connect snapshot -i -c
# Fill title (standard input)
agent-browser --auto-connect fill @eTitle "Your post title"
# Fill body (rich text editor — use fill since Reddit exposes it as a textbox)
agent-browser --auto-connect fill @eBody "Your post body text"
# Add flair if required
agent-browser --auto-connect click @eFlair
# Submit
agent-browser --auto-connect click @ePostImportant: Always confirm with the user before actually submitting a post.
---
Known Quirks & Workarounds
wait --load networkidle times out on Reddit
Reddit uses continuous background network activity (analytics, real-time updates, ads). The networkidle state is never reached.
Workaround: Skip wait --load networkidle for Reddit. The open command itself waits for initial load, and its success message includes the page title — if you see the title, the page is ready. If needed, use wait 2000 for a short fixed delay instead.
find text strict mode fails on Reddit
Reddit renders many elements twice (e.g., a screen-reader-only version and a visible version of post titles). This causes find text "..." to match multiple elements and fail with a strict mode violation.
Workaround: Always prefer snapshot -i → find ref → click @eN over find text. If you must use find text, make the query very specific or use find first text "..." click if available.
Post title links appear multiple times in snapshot
Each post title shows up as 2-3 separate link refs (screen-reader text, visible title, thumbnail). When clicking a post, prefer the one that contains the full title text, or better yet, extract the post URL from the error message or snapshot and use open to navigate directly.
Refs go stale after scrolling
Reddit's infinite scroll dynamically loads content. After scrolling, previously captured refs may no longer be valid (timeout errors when clicking).
Workaround: Always re-run snapshot -i after scrolling before interacting with elements.
Reddit's translation layer
If the user's Chrome has translation enabled, Reddit may show dual-language text (English + translated). This affects element labels in snapshots. The interactive elements (buttons, inputs) still work the same way — just be aware that text matching may need to account for translated text.
Comment box is an unlabeled textbox
The main comment textbox on post detail pages has no label/placeholder text in the snapshot. It appears as just textbox [ref=eN]. To identify it:
- It's the textbox that is NOT the search box (which is labeled "Remove r/... filter and expand search to all of Reddit")
- It appears between the post actions and the comment sort controls
---
Useful URLs
- Reddit homepage:
https://www.reddit.com - Specific subreddit:
https://www.reddit.com/r/<subreddit> - User profile:
https://www.reddit.com/user/<username> - Submit post:
https://www.reddit.com/r/<subreddit>/submit - Post detail:
https://www.reddit.com/r/<subreddit>/comments/<post_id>/<slug>/
AI-Related Subreddits
r/artificial— General AI news and discussionr/LocalLLaMA— Local LLM deployment and usager/MachineLearning— ML research and papersr/singularity— AGI and technological singularityr/ChatGPTCoding— AI-assisted codingr/ClaudeAI— Claude-specific discussionr/ArtificialInteligence— AI discussion (note: misspelled subreddit name)r/Rag— Retrieval-Augmented Generation
X (Twitter) — Platform Reference
Background knowledge for automating X (formerly Twitter) tasks via agent-browser.
---
Page Structure
Home Feed (x.com/home or x.com)
The home feed uses a single-page React app. Key interactive elements:
- Left sidebar navigation: Home, Search and explore, Notifications, Follow, Direct Messages, Grok, Profile, More menu items, Post button
- Feed tabs:
tab "For you"(algorithmic) andtab "Following"(chronological) - Compose box (inline at top of feed):
textbox "Post text"with action buttons: - "Add photos or video", "Choose File", "Add a GIF", "Enhance your post with Grok", "Add poll", "Add emoji", "Schedule post", "Tag location", "Content disclosure"
button "Post"(disabled until text entered)- Post cards: Each post in the feed has:
- User name link (with "Verified account" label if verified)
- Handle link (
@username) - Timestamp link (clicking this navigates to post detail page)
button "Grok actions"— AI-related actionsbutton "More"— additional options menubutton "Show more"— expand truncated post textbutton "N Replies. Reply"— reply count + reply actionbutton "N reposts. Repost"— repost/retweet count + actionbutton "N Likes. Like"— like count + actionlink "N views. View post analytics"— view countbutton "Bookmark"— save to bookmarksbutton "Share post"— share options- Pinned/Recommended: Some posts show
button "Pinned by people you follow More"section
Post Detail Page (x.com/<username>/status/<id>)
- Back button:
button "Back"to return to previous page - Post header: User name, handle, Follow button, Grok actions, More button
- Post content: Full text (with
button "Show translation"for non-English posts) - Timestamp:
link "H:MM AM/PM · Mon DD, YYYY"format - View count:
link "N Views" - Action buttons (same as feed but with full counts):
button "N Replies. Reply"button "N reposts. Repost"button "N Likes. Like"button "N Bookmarks. Bookmark"(shows bookmark count on detail page)button "Share post"- Sort control:
button "Relevant"to change reply sort order - Quotes:
link "View quotes"to see quote tweets - Reply box: Below the post, shows:
button "Replying to @username"label- Current user name link
textbox "Post text"— the reply input- Action buttons: photos/video, GIF, Grok enhance, emoji, location, content disclosure
button "Reply"(disabled until text entered)
Reply/Comment Structure
Replies appear below the reply input box. Each reply has the same structure as a feed post:
- User name + handle + timestamp links
- Grok actions, More button
- Reply/Repost/Like/Views/Bookmark/Share buttons
- Nested replies show threading via indentation
Search/Explore Page (x.com/explore or x.com/search)
Explore page (x.com/explore):
- Search box:
combobox "Search query"— type and press Enter to search - Settings:
link "Settings"for search settings - Tabs: For You, Trending, News, Sports, Entertainment
- Trending topics: Each shows title, category, post count, and
button "More"for options
Search results (x.com/search?q=<query>&src=typed_query):
- Search box:
combobox "Search query"(editable, pre-filled with query) - Back button:
button "Back" - Filter menu:
button "More"next to search box - Tabs: Top, Latest, People, Media, Lists
- Results: Same post card structure as home feed
Compose Modal (Post button in sidebar)
Clicking link "Post" in the left sidebar opens a modal overlay:
button "Close"— dismiss the modalbutton "Drafts"— access saved draftstextbox "Post text"— the compose input (contenteditable div)button "Everyone can reply"— set reply permissions- Action buttons: photos/video, GIF, Grok enhance, poll, emoji, schedule, location, content disclosure
button "Post"(disabled until text entered)
User Profile Page (x.com/<username>)
- Profile photo, banner
button "More"— additional optionsbutton "Message"— send DMbutton "Follow @username"— follow/unfollow- Verification badge:
button "Provides details about verified accounts." - Bio with
button "Show translation"if applicable - Join date, Following count, Followers count
- Tabs: Posts, Replies, Highlights, Articles, Media
---
Common Operations
Browse Home Feed
agent-browser --auto-connect open https://x.com/home
agent-browser --auto-connect wait 3000 # X loads slowly, avoid networkidle
agent-browser --auto-connect snapshot -i # see posts and actions
agent-browser --auto-connect scroll down 1000 # load more posts
agent-browser --auto-connect snapshot -i # re-snapshot after scrollSearch for Posts
agent-browser --auto-connect open "https://x.com/search?q=AI%20agents&src=typed_query"
agent-browser --auto-connect wait 3000
agent-browser --auto-connect snapshot -i
# Or navigate to explore and type:
agent-browser --auto-connect open https://x.com/explore
agent-browser --auto-connect wait 2000
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect fill @eSearchBox "vector database AI"
agent-browser --auto-connect press Enter
agent-browser --auto-connect wait 3000
agent-browser --auto-connect snapshot -i
# Switch to Latest tab for most recent results:
agent-browser --auto-connect click @eLatestTabRead a Post (Detail Page)
Option A — click the timestamp link in the feed:
agent-browser --auto-connect snapshot -i
# Find the timestamp link (e.g., "Mar 3", "3 hours ago") — this navigates to the post detail page
agent-browser --auto-connect click @eTimestamp
agent-browser --auto-connect wait 2000
agent-browser --auto-connect snapshot -iOption B — navigate directly:
agent-browser --auto-connect open "https://x.com/<username>/status/<tweet_id>"
agent-browser --auto-connect wait 2000
agent-browser --auto-connect snapshot -iImportant: Clicking the user name link navigates to the user's profile, NOT the post. Always click the timestamp link to go to the post detail page.
Reply to a Post
1. Navigate to the post detail page 2. Find the reply textbox "Post text" (below the post, after the action buttons) 3. Fill and submit:
agent-browser --auto-connect snapshot -i
# Find the textbox ref for "Post text"
agent-browser --auto-connect fill @eReplyBox "Your reply text here"
agent-browser --auto-connect snapshot -i # re-snapshot to get enabled Reply button
agent-browser --auto-connect click @eReply # button "Reply"Like / Repost / Bookmark
agent-browser --auto-connect snapshot -i
# Each post has clearly labeled buttons:
agent-browser --auto-connect click @eLike # button "N Likes. Like"
agent-browser --auto-connect click @eRepost # button "N reposts. Repost"
agent-browser --auto-connect click @eBookmark # button "Bookmark"Create a New Post
Via sidebar Post button (opens modal):
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @ePostLink # link "Post" in sidebar
agent-browser --auto-connect wait 1000
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect fill @eTextbox "Your post content here"
agent-browser --auto-connect snapshot -i # re-snapshot to get enabled Post button
agent-browser --auto-connect click @ePost # button "Post"Via inline compose box on home feed:
agent-browser --auto-connect open https://x.com/home
agent-browser --auto-connect wait 3000
agent-browser --auto-connect snapshot -i
# The textbox "Post text" is at the top of the feed
agent-browser --auto-connect fill @eTextbox "Your post content here"
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @ePost # button "Post"Important: Always confirm with the user before actually submitting a post.
Follow / Unfollow a User
# From a post detail page or user profile:
agent-browser --auto-connect snapshot -i
agent-browser --auto-connect click @eFollow # button "Follow @username"---
Known Quirks & Workarounds
open x.com often times out
X loads slowly and the default 10s timeout for open frequently fails.
Workaround: If the browser already has X open in a tab, use tab list and tab <index> to switch to it instead of opening a new page. If you must open fresh, retry or use a longer timeout:
AGENT_BROWSER_DEFAULT_TIMEOUT=30000 agent-browser --auto-connect open https://x.com/homeAvoid wait --load networkidle
Like Reddit, X uses continuous background network activity (streaming, analytics, real-time updates). The networkidle state is rarely or never reached.
Workaround: Use wait 2000 or wait 3000 for a fixed delay after navigation. Or wait for a specific element:
agent-browser --auto-connect wait "[data-testid='primaryColumn']"Clicking user name navigates to profile, not post
In the feed, both the user name and the timestamp are clickable links. Clicking the user name goes to the profile page; clicking the timestamp (e.g., "Mar 3", "3 hours ago") goes to the post detail page.
Workaround: Always click the timestamp link to navigate to a specific post.
Post text input is a contenteditable div
The compose and reply textboxes use contenteditable="true" divs (DraftJS editor), not standard <input> or <textarea> elements. The data-testid is tweetTextarea_0.
Workaround: Use fill @ref "text" which works with contenteditable elements in agent-browser. If fill doesn't work, try click @ref first, then keyboard type "text".
Refs go stale after scrolling or navigation
X's SPA architecture means DOM changes frequently. After scrolling, navigating, or any action that changes the page content, refs become invalid.
Workaround: Always re-run snapshot -i after any action before using refs.
Translation layer affects element labels
If Chrome has translation enabled, buttons and labels may show dual-language text (e.g., button "Post 帖子", button "Reply 回复"). Interactive elements still work — just be aware that text matching may need to account for translated text.
Multiple textboxes on the page
The post detail page may have both the search box and the reply textbox labeled "Post text". To identify the correct one:
- The reply textbox appears after the post action buttons and
button "Replying to @username" - Use
snapshot -ito see the full context and pick the right ref
"Show more" button for truncated posts
Long posts are truncated in the feed with a button "Show more" to expand. Click it to see the full text before interacting.
---
Useful URLs
- Home feed:
https://x.com/home - Explore/Trending:
https://x.com/explore - Search:
https://x.com/search?q=<query>&src=typed_query - User profile:
https://x.com/<username> - Post detail:
https://x.com/<username>/status/<tweet_id> - Notifications:
https://x.com/notifications - Direct Messages:
https://x.com/messages - Bookmarks:
https://x.com/i/bookmarks - Lists:
https://x.com/<username>/lists - Compose (direct):
https://x.com/compose/post
AI-Related Accounts & Hashtags
Key AI accounts to follow/engage:
@OpenAI— OpenAI official@AnthropicAI— Anthropic official@GoogleDeepMind— Google DeepMind@karpathy— Andrej Karpathy@ylecun— Yann LeCun@geoffreyhinton— Geoffrey Hinton@fchollet— François Chollet@jimfan— Jim Fan (NVIDIA)@emaborevkova— Emad Mostaque@huggingface— Hugging Face
AI-related search queries:
AI agent/AI agentsvector database/vector searchRAG/retrieval augmented generationLLM/large language modelClaude/GPT/Geminiembedding/semantic searchMilvus/Zilliz
Related skills
How it compares
Choose chrome-automation over headless-only browser drivers when agents need to control your real Chrome session with CDP for scraping or interactive form automation.
FAQ
What is chrome-automation?
Automate Chrome browser tasks using agent-browser CLI. Navigate pages, fill forms, click buttons, take screenshots, extract data, and replay recorded workflows — all inside the use
When should I use chrome-automation?
Automate Chrome browser tasks using agent-browser CLI. Navigate pages, fill forms, click buttons, take screenshots, extract data, and replay recorded workflows — all inside the use
Is chrome-automation safe to install?
Review the Security Audits panel on this page before production use.