name: browser-discovery description: “浏览器自动化用于文档发现。当curl在JS渲染的网站上失败时、检测可用的浏览器工具时、或配置基于浏览器的文档收集时使用。”
浏览器发现技能
当静态抓取失败时,检测并使用浏览器自动化工具进行文档发现。
变量
| 变量 | 默认值 | 描述 |
|---|---|---|
| PREFERRED_TOOL | auto | auto、antigravity、cursor、playwright |
| WAIT_TIMEOUT | 3 | 等待JS渲染的秒数 |
| MAX_PAGES | 50 | 每个站点发现的最大页面数 |
使用说明
强制要求 - 当需要浏览器自动化时,请遵循以下工作流程步骤。
- 除非设置了
js_required: true,否则始终先尝试使用curl - 在尝试自动化之前检测可用的浏览器工具
- 提取链接时优先使用无障碍快照而非截图
快速决策树
你需要浏览器自动化吗?
│
├─ Curl返回完整内容? ──────────► 否 - 使用curl (docs-fetch-url)
│
├─ Curl返回<1KB或403? ───────────► 是 - 继续以下步骤
│
使用哪个浏览器工具?
│
├─ browser_subagent 可用? ─────────► antigravity-browser.md
│
├─ 在Cursor IDE中? ──────────────────────► cursor-browser.md
│
├─ Chrome调试在 :9222 上可用? ──────────► playwright-browser.md (包装器)
│
└─ 没有浏览器工具? ────────────────────► 参见“无可用浏览器”部分
危险信号 - 停止并重新考虑
如果你即将:
- 在curl可以工作时使用浏览器自动化
- 跳过工具检测并假设特定工具存在
- 在快照能提供结构化数据时截图
- 不等待JS渲染就进行导航
停止 -> 查看相应的操作手册 -> 然后继续
工作流程
- [ ] 检查点:确认确实需要浏览器自动化
- Curl响应 < 1KB?
- Curl收到403禁止访问?
- 配置中有
js_required: true?
- [ ] 检测可用的浏览器工具(优先级顺序)
- [ ] 选择最佳可用工具
- [ ] 检查点:阅读所选工具的操作手册
- [ ] 执行基于浏览器的发现
- [ ] 解析结果并返回结构化数据
工具检测优先级
| 优先级 | 工具 | 检测方法 | 最适合 |
|---|---|---|---|
| 1 | Antigravity browser_subagent |
工具列表中的工具 | 零配置原生 |
| 2 | Cursor MCP (IDE内) | mcp__cursor__browser_* |
在Cursor IDE中 |
| 3 | Cursor CLI | which cursor-agent |
从CLI委托 |
| 4 | Playwright (包装器) | curl localhost:9222/json/version |
完整自动化 |
操作手册
Antigravity 浏览器
- 如果:
browser_subagent工具可用 - 那么:阅读
cookbook/antigravity-browser.md
Cursor 浏览器
- 如果:在Cursor IDE中或
cursor-agent可用 - 那么:阅读
cookbook/cursor-browser.md
Playwright 浏览器
- 如果:Chrome调试可在localhost:9222访问
- 那么:阅读
cookbook/playwright-browser.md
何时需要浏览器
网站需要浏览器自动化的迹象:
- Curl响应 < 1KB (JS渲染的内容)
- 响应包含“请启用javascript”
- 框架标记:
__NEXT_DATA__、window.__remixContext、window.__NUXT__ - 仅返回CSS/字体资源(无文本内容)
无可用浏览器
如果未检测到浏览器工具:
未检测到浏览器自动化工具。
设置选项:
1. Antigravity IDE:内置(零配置)
2. Cursor:安装后可用 cursor-agent
3. Claude Code:启动带调试的Chrome:
google-chrome --remote-debugging-port=9222
然后使用Playwright包装器:
python3 .claude/ai-dev-kit/dev-tools/mcp/wrappers/playwright_wrapper.py navigate "https://..."
输出
以结构化数据形式返回发现的页面:
{
"pages": [
{"url": "...", "title": "...", "section": "..."}
],
"nav_structure": "sidebar | tabs | accordion",
"js_required": true
}