一键导入
browser
Control a headless Chromium browser — navigate pages, read content via accessibility snapshots, interact with elements, fill forms, take screenshots
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Control a headless Chromium browser — navigate pages, read content via accessibility snapshots, interact with elements, fill forms, take screenshots
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Scan local git repos for dirty trees, unpushed/unpulled commits, and stashes — keep machines in sync
Scrape and summarize Reddit subreddits via the browser tool — extract posts, comments, and trends using old.reddit.com
Send and receive messages via Telegram — notifications, reports, and two-way messaging with a Telegram bot
Read and send email via Gmail — fetch inbox, summarize messages, send reports and notifications via IMAP/SMTP
| name | browser |
| description | Control a headless Chromium browser — navigate pages, read content via accessibility snapshots, interact with elements, fill forms, take screenshots |
Headless Chromium browser via CLI for web automation.
Check if the server is running, start if needed:
browser status
browser start # auto-starts Chrome on first use
If the server process isn't running at all:
# Derive the engine dir from the browser tool path in the Tool Paths table above
# e.g., if browser = "tsx /foo/bar/lib/browser-cli.ts", then:
tsx /foo/bar/lib/browser/server.ts &
browser is shorthand — actual path is in the Tool Paths section of the assistant config.
browser open <url> # New tab
browser navigate <url> # Current tab
browser tabs # List tabs
browser close [targetId] # Close tab
browser snapshot --efficient # Accessibility tree (~12k chars)
browser snapshot --selector "main" # Scope to element
browser evaluate "document.title" # Run JS, return result
browser screenshot # PNG screenshot (returns path)
browser console # View JS console messages
Choose the right tool:
snapshot --efficient — default for most pages. Text-based, cheap (~3-5K tokens).snapshot --selector "main" — large pages where nav/sidebar bloats the snapshot.evaluate — structured data extraction. Returns JSON. Best for scraping lists, tables, feeds.screenshot — visual layouts, images, CAPTCHAs. Requires vision. Use as fallback.browser click e5 # Click by ref
browser type e5 Hello world # Type into element
browser press Enter # Keyboard key
browser fill e3=John e4=john@x.com # Fill form fields
browser select e7 option1 # Select dropdown
The snapshot command returns an accessibility tree with element refs:
[url: https://news.ycombinator.com]
- heading "Hacker News" [level=1]
- link "Show HN: Something cool" [ref=e5]
- text "142 points by user 3 hours ago"
- link "89 comments" [ref=e6]
Refs like e5 are used in click/type/fill. They change between snapshots — always re-snapshot after acting.
For scraping lists, tables, or feeds, use evaluate with JS instead of parsing snapshots:
browser evaluate "JSON.stringify(Array.from(document.querySelectorAll('.item')).map(el => ({title: el.querySelector('a')?.textContent, url: el.querySelector('a')?.href})))"
This is faster, cheaper, and more reliable than parsing accessibility trees for bulk data.
browser open https://old.reddit.com/r/<subreddit>/
browser evaluate "JSON.stringify(Array.from(document.querySelectorAll('#siteTable .thing.link')).map(t => ({title: t.querySelector('a.title')?.textContent, score: t.querySelector('.score.unvoted')?.textContent, comments: t.querySelector('.comments')?.textContent, time: t.querySelector('time')?.getAttribute('title'), flair: t.querySelector('.linkflairlabel')?.textContent, url: t.querySelector('a.title')?.href})))"
Always use old.reddit.com — simpler HTML, no infinite scroll, works with evaluate. Rate limit: 30s between subreddits.
The browser profile persists (cookies survive restarts). To log in:
pkill -f 'chrome.*browser-control' then retry.--efficient or --selector "main" to scope down.