33 KiB
name, description, exclude_tools, triggers, force_tool_turns
| name | description | exclude_tools | triggers | force_tool_turns |
|---|---|---|---|---|
| active-research | 深度研究与分析工具。能够针对任何主题、领域、论文或技术生成全面的 HTML 报告。增强的高级浏览器自动化功能包括:SPA 处理、网络空闲等待、批量操作、隐身浏览和智能页面分析。当用户要求研究、分析、调查、深入探索或生成任何主题的报告时使用。 | group:web | research, deep-dive, investigate, analyze topic, deep research, generate report | 10 |
Active Research
分析任何主题、领域或论文,并使用 Actionbook Browser 生成精美的 HTML 报告——支持 SPA 感知导航、网络空闲检测、批量操作和智能页面分析。
增强的浏览器能力
| 能力 | 描述 |
|---|---|
| 页面加载等待 | wait-idle——监控 fetch/XHR 直至网络稳定 |
| SPA 内容 | wait-fn——等待 JS 条件满足后再提取 |
| 页面理解 | snapshot --filter interactive --max-tokens N——聚焦、节省预算 |
| 弹窗拦截 | --auto-dismiss-dialogs——自动处理 alert/confirm/prompt |
| 加载速度 | --block-images——跳过图片以加快文本提取 |
| 页面稳定性 | --no-animations——冻结 CSS 过渡动画 |
| 错误检测 | console --level error——检查页面问题 |
| 多步骤表单 | batch——单次调用中执行多个操作 |
| 元素调试 | info <selector>——检查可见性、位置、属性 |
| 变更追踪 | snapshot --diff——仅查看变化内容 |
| 反检测 | --stealth + fingerprint rotate 用于受保护站点 |
| 认证管理 | storage set——注入 JWT/令牌以访问受限内容 |
| 一次性抓取 | browser fetch <url>——导航+等待+提取+关闭,一条命令完成 |
| 静态页面速度 | --lite——优先 HTTP,仅在需要时回退到浏览器 |
| 反爬取 URL | --rewrite-urls——将 x.com 重写为 xcancel.com,reddit 重写为 old.reddit |
| 等待调优 | --wait-hint——域名感知等待(fast/normal/slow/heavy) |
| 日志关联 | --session-tag——为所有操作打标签以便调试 |
用法
/active-research <topic>
/active-research <topic> --output ./reports/my-report.json
或者直接告诉 Claude:「Research XXX and generate a report」
参数
| 参数 | 是否必需 | 默认值 | 描述 |
|---|---|---|---|
topic |
是 | - | 要研究的主题(任意文本) |
--output |
否 | ./output/<topic-slug>.json |
JSON 报告的输出路径 |
主题检测
| 模式 | 类型 | 策略 |
|---|---|---|
arxiv:XXXX.XXXXX |
论文 | arXiv Advanced Search + ar5iv 深度阅读 |
doi:10.XXX/... |
论文 | 解析 DOI,然后通过 arXiv Advanced Search 查找相关工作 |
| 学术关键词(paper, research, model, algorithm) | 学术主题 | arXiv Advanced Search + Google 搜索非学术来源 |
| URL | 特定页面 | 获取并分析该页面 |
| 通用文本 | 主题研究 | Google 搜索 + 必要时使用 arXiv Advanced Search |
架构
┌──────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐
│ Claude │────▶│ Actionbook │────▶│ Web Pages │────▶│ Extract │
│ Code │ │ Browser │ │ (multiple) │ │ Content │
└──────────┘ └──────────────┘ └──────────────┘ └─────┬────┘
│ │ wait-idle │ │ SPA / dynamic │ │
│ │ batch ops │ │ protected │ │
│ │ --stealth │ │ mobile-only │ │
│ │ snapshot │ └───────────────┘ │
│ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ │
├─────────▶│ Actionbook │ │ arXiv Adv. │ │
│ │ search/get │────▶│ Search Form │───────────▶│
│ │ (selectors) │ │ (40+ fields) │ │
│ └──────────────┘ └──────────────┘ │
│ │
┌──────────┐ ┌──────────────┐ ┌──────────────┐ │
│ Open in │◀────│ json-ui │◀────│ Write JSON │◀───────────┘
│ Browser │ │ render │ │ Report │ Synthesize
└──────────┘ └──────────────┘ └──────────────┘
必须使用 Actionbook CLI
始终使用 actionbook browser 命令进行网页浏览。绝不使用任何其他方法访问网络:
- 绝不通过 bash 使用
curl、wget、httpie或任何 HTTP CLI 工具 - 绝不通过 bash 使用
python -c "import requests"或任何脚本语言的 HTTP 库 - 绝不使用 WebFetch 或 WebSearch 工具
- 只使用
actionbook browser和actionbook search/actionbook get命令
如果需要获取网页内容,推荐路径是:actionbook browser fetch <url> --format text --json(一次性完成)。
对于交互式多步骤工作流,请使用:actionbook browser open <url> → actionbook browser wait-idle → actionbook browser text。
浏览器标志——研究默认值
关键:在研究场景下打开浏览器时,始终使用这些标志。
# 推荐:一次性抓取(I1)——自动处理 open+wait+extract+close
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --json
# 对于交互式多步骤工作流,使用显式 open:
actionbook --block-images --auto-dismiss-dialogs --no-animations --rewrite-urls browser open "<url>"
| 标志 | 原因 |
|---|---|
--block-images |
跳过图片下载——文本提取速度提升 2-5 倍 |
--auto-dismiss-dialogs |
防止 alert/confirm/prompt 阻塞自动化 |
--no-animations |
冻结 CSS 动画——快照稳定,无时序问题 |
--rewrite-urls |
将 x.com 重写为 xcancel.com,reddit 重写为 old.reddit 以避免反爬虫拦截 |
--wait-hint <hint> |
域名感知等待:instant、fast、normal、slow、heavy 或毫秒值 |
--session-tag <tag> |
为所有操作打标签以便日志关联和调试 |
--lite(仅 fetch) |
优先尝试 HTTP,对静态页面跳过浏览器(Wikipedia、文档、博客) |
对于有反爬虫保护的站点,添加 --stealth:
actionbook --block-images --auto-dismiss-dialogs --no-animations --stealth --rewrite-urls browser open "<url>"
导航模式——始终遵循
选项 A:一次性抓取(只读页面提取推荐方式):
# 单条命令:导航 → 等待(域名感知)→ 提取 → 关闭
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --json
# 对于静态页面(Wikipedia、文档、博客),添加 --lite 完全跳过浏览器:
actionbook --rewrite-urls browser fetch "<url>" --format text --lite --json
# 无障碍树:
actionbook --block-images --rewrite-urls browser fetch "<url>" --format snapshot --max-tokens 2000 --json
选项 B:交互式多步骤模式(用于表单、点击、多页面流程):
# 步骤 1:导航
actionbook browser open "<url>" # 或:goto, click a link
# 步骤 2:等待加载(v2 中为强制步骤)
actionbook browser wait-idle # 等待 fetch/XHR 稳定
# 步骤 3:提取内容
actionbook browser text [selector] # 提取文本
# 或
actionbook browser snapshot --filter interactive --max-tokens 500 # 理解页面结构
为什么 wait-idle 至关重要:
- SPA(React、Vue、Next.js)在初始 HTML 之后通过 fetch/XHR 加载内容
- 如果不等待,
text返回空或不完整的内容 wait-idle监控所有待处理的网络请求,等待网络静默持续 500ms
对于在网络稳定后动态加载内容的页面:
actionbook browser wait-idle
actionbook browser wait-fn "document.querySelector('.results')" # 等待特定元素
actionbook browser text ".results"
完整工作流
提醒: 本工作流中的每次网络访问都必须使用
actionbook browser命令。 使用curl、wget、python requests或任何其他 HTTP 工具严格禁止。 bash 工具应仅用于actionbookCLI 命令和本地文件操作(json-ui render、open)。
步骤 1:规划搜索策略
根据主题,从不同角度生成 5-8 条搜索查询:
- 核心定义 / 概述
- 最新进展 / 新闻
- 技术细节 / 实现
- 比较 / 替代方案
- 专家观点 / 分析
- 使用场景 / 应用
搜索顺序——始终先查询 Actionbook API,再进行搜索:
| 步骤 | 操作 | 原因 |
|---|---|---|
| 步骤 2(第一步) | 查询 Actionbook API | 在浏览之前获取 arXiv、ar5iv 和其他已知站点的已验证选择器。 |
| 步骤 3(第二步) | arXiv Advanced Search | 使用 Actionbook 选择器进行多字段、过滤后的学术搜索。 |
| 步骤 4(第三步) | Google / Bing 搜索 | 用博客、新闻、代码、讨论、非学术来源进行补充。 |
步骤 2:查询 Actionbook API 获取选择器(始终优先执行此步骤)
在浏览任何 URL 之前,先查询 Actionbook 的索引选择器。
# 按域名搜索已索引的操作
actionbook search "<keywords>" -d "<domain>"
# 获取特定页面的详细选择器
actionbook get "<domain>:/<path>:<area>"
对研究有用的预索引站点:
| 站点 | area_id | 关键选择器 |
|---|---|---|
| arXiv Advanced Search | arxiv.org:/search/advanced:default |
40+ 个选择器:字段选择、词条输入、分类复选框、日期范围筛选 |
| ar5iv 论文 | ar5iv.labs.arxiv.org:/html/{paper_id}:default |
h1.ltx_title_document、div.ltx_authors、div.ltx_abstract、section.ltx_section |
| Google Scholar | scholar.google.com:/:default |
#gs_hdr_tsi(搜索)、#gs_hdr_tsb(提交) |
| arXiv 首页 | arxiv.org:/:default |
在 240 万+ 篇文章中进行全局搜索 |
对于你计划访问的任何 URL,运行 actionbook search "<keywords>" -d "<domain>" 检查它是否已被索引。
步骤 3:arXiv 搜索(优先 URL 方式,表单作为后备)
经验教训:通过浏览器自动化提交 arXiv 表单不可靠。应使用基于 URL 的搜索作为主要方法。
选项 A:基于 URL 的搜索(主要方式——最可靠):
# 简单关键词搜索
actionbook --block-images --auto-dismiss-dialogs --no-animations browser open "https://arxiv.org/search/?query=large+language+model+agent&searchtype=all"
actionbook browser wait-idle
actionbook browser text "#main-container"
# 带筛选条件的高级 URL 搜索
# searchtype: all, title, author, abstract
# start: 结果偏移量(0, 50, 100, ...)
actionbook browser open "https://arxiv.org/search/?query=Rust+machine+learning&searchtype=all&start=0"
actionbook browser wait-idle
actionbook browser text "#main-container"
搜索策略:从宽泛开始,再逐步收窄:
- 首次搜索:宽泛词条(例如
"Rust" "machine learning")——目标是 50+ 条结果 - 如果结果太少(< 10 条):进一步放宽范围,移除日期/分类筛选
- 如果结果太多(> 200 条):添加更具体的词条,使用
searchtype=title - 尝试 2-3 种不同的查询角度(例如框架名称、使用场景、基准测试)
选项 B:通过 batch 进行表单交互(后备方案——当 URL 搜索不足时使用):
# 使用研究标志打开 arXiv
actionbook --block-images --auto-dismiss-dialogs --no-animations browser open "https://arxiv.org/search/advanced"
actionbook browser wait-idle
# 使用 batch 处理表单——往返次数更少,更可靠
cat <<'EOF' | actionbook browser batch --delay 150
{
"actions": [
{"kind": "click", "selector": "#terms-0-field"},
{"kind": "click", "selector": "option[value='title']"},
{"kind": "type", "selector": "#terms-0-term", "text": "large language model agent"},
{"kind": "click", "selector": "#classification-computer_science"},
{"kind": "click", "selector": "#date-filter_by-3"},
{"kind": "type", "selector": "#date-from_date", "text": "2025-01-01"},
{"kind": "type", "selector": "#date-to_date", "text": "2026-02-23"},
{"kind": "click", "selector": "button:has-text('Search'):nth(2)"}
],
"stopOnError": true
}
EOF
actionbook browser wait-idle
actionbook browser text "#main-container"
# 如果批量表单提交失败(页面重新显示表单而非结果):
# → 立即回退到选项 A 的 URL 搜索
# → 不要重试表单——这是在浪费时间
arXiv 搜索能力(来自索引选择器——用于选项 B):
| 能力 | 选择器 |
|---|---|
| 搜索字段(标题/作者/摘要) | #terms-0-field 选择 |
| 搜索词条 | #terms-0-term 输入 |
| 添加布尔词条 | button "Add another term +" |
| 筛选:计算机科学 | #classification-computer_science |
| 筛选:物理、数学等 | #classification-physics、#classification-mathematics |
| 日期:过去 12 个月 | #date-filter_by-1 单选 |
| 日期:特定年份 | #date-filter_by-2 单选 + #date-year |
| 日期:自定义范围 | #date-filter_by-3 单选 + #date-from_date / #date-to_date |
| 显示摘要 | #abstracts-0 单选 |
步骤 4:用 Google / Bing 搜索补充
# 通过 Google 搜索(使用 wait-idle 等待 SPA 结果)
actionbook browser open "https://www.google.com/search?q=<encoded_query>"
actionbook browser wait-idle
actionbook browser text "#search"
# 或通过 Bing 搜索
actionbook browser open "https://www.bing.com/search?q=<encoded_query>"
actionbook browser wait-idle
actionbook browser text "#b_results"
解析搜索结果以提取 URL。对于每个发现的 URL,查询 Actionbook API 检查是否已被索引。
关键:URL 处理规则(来自生产环境经验)
-
绝不手动从搜索摘要中构造 URL。 许多 Google 摘要 URL 被截断或重新格式化。应改为:
- 使用
actionbook browser snapshot --filter interactive查找实际链接元素 - 直接点击链接:
actionbook browser click "a[href*='domain.com']" - 或从 snapshot 引用中提取 href
- 使用
-
预计 20-30% 的 URL 会失效。 实际中,约 20 个 URL 中有 5 个返回 404。按如下方式处理:
actionbook browser open "<url>" actionbook browser wait-idle # 检查页面是否为 404 或错误页面 actionbook browser wait-fn "!document.title.includes('404') && !document.title.includes('Not Found')" --timeout 3000 # 如果超时 → 页面失效,立即跳过。不要重试。 -
从 Google 摘要中抢救信息。 如果 URL 已失效但 Google 摘要包含有用信息:
- 你已经提取的摘要文本本身就是有效数据
- 在报告中加以使用,并注明来源已不可用
- 在替代站点(archive.org、缓存版本)上搜索相同内容
-
使用 4 条以上多样化的搜索查询。 不要依赖单一搜索角度:
- 查询 1:核心主题概述(例如「Rust AI ecosystem 2026」)
- 查询 2:特定框架/工具(例如「Candle vs Burn Rust ML framework」)
- 查询 3:使用场景/基准测试(例如「Rust LLM inference performance benchmark」)
- 查询 4:最新新闻/进展(例如「Rust machine learning latest 2026」)
- 查询 5:社区/生态(例如「Rust AI agent framework comparison」)
步骤 5:深度阅读来源
推荐:使用 browser fetch 进行一次性页面提取(处理等待 + 提取 + 清理):
# 快速文本提取(最常见)
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --json
# 静态页面(Wikipedia、文档、博客)——完全跳过浏览器
actionbook --rewrite-urls browser fetch "<url>" --format text --lite --json
# 页面结构分析
actionbook --block-images --rewrite-urls browser fetch "<url>" --format snapshot --max-tokens 2000 --json
# 带 token 预算的 LLM 上下文管理
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --max-tokens 4000 --json
对于交互式工作流(表单、点击),回退到多步骤:
actionbook browser open "<url>"
actionbook browser wait-idle # 强制:等待网络
actionbook browser text # 整页文本(后备方案)
actionbook browser text "<selector>" # 如已索引,使用 Actionbook 选择器
如果页面内容似乎不完整,进行调试:
# 检查可能阻止渲染的 JS 错误
actionbook browser console --level error
# 检查特定元素是否存在
actionbook browser wait-fn "document.querySelector('.content')" --timeout 5000
# 检查元素属性
actionbook browser info ".content"
对于 arXiv 论文,按以下顺序尝试来源:
# 1. arXiv 摘要(最可靠)——使用 fetch
actionbook --block-images browser fetch "https://arxiv.org/abs/<arxiv_id>" --format text --json
# 2. HuggingFace 论文页面
actionbook --block-images browser fetch "https://huggingface.co/papers/<arxiv_id>" --format text --json
# 3. ar5iv HTML(结构化,但新论文上可能失败)——使用 --lite 获取静态 HTML
actionbook browser fetch "https://ar5iv.org/html/<arxiv_id>" --format text --lite --json
# 注意:如果内容太短,ar5iv 未渲染。回退。
# 4. GitHub 仓库(来自搜索结果)——使用 fetch
actionbook --block-images browser fetch "<github_repo_url>" --format text --json
对于受保护站点(Cloudflare、反爬虫检测)——使用隐身模式交互:
actionbook --stealth --block-images --auto-dismiss-dialogs --rewrite-urls browser open "<protected_url>"
actionbook browser wait-idle
actionbook browser text
对于仅移动端内容:
actionbook browser emulate iphone-14
actionbook browser open "<url>"
actionbook browser wait-idle
actionbook browser text
对于 Google Scholar(被 Actionbook 索引):
actionbook browser open "https://scholar.google.com"
actionbook browser wait-idle
actionbook browser click "#gs_hdr_tsi"
actionbook browser type "#gs_hdr_tsi" "<query>"
actionbook browser click "#gs_hdr_tsb"
actionbook browser wait-idle
actionbook browser text "#gs_res"
对于未索引的站点,使用 snapshot 发现结构:
actionbook --block-images browser fetch "<url>" --format snapshot --max-tokens 800 --json
步骤 6:综合研究结果
将收集的信息组织成一份条理清晰的报告:
- 概述 / 执行摘要
- 主要发现
- 详细分析
- 支撑数据 / 证据
- 影响 / 意义
- 来源
步骤 7:生成 json-ui JSON 报告
按照 @actionbookdev/json-ui 模式编写 JSON 文件。使用 Write 工具。
输出路径: ./output/<topic-slug>.json(或用户指定的 --output 路径)
步骤 8:渲染 HTML
关键:在放弃之前,你必须尝试所有后备方法。不要在第一次失败时就停止。
重要:始终对 JSON_FILE 和 HTML_FILE 使用绝对路径。
逐一尝试每种方法,直到有一种成功:
# 方法 1:Monorepo 绝对路径(如果在 actionbook 项目内,最可靠)
node "$(git rev-parse --show-toplevel)/packages/json-ui/dist/cli.js" render /absolute/path/to/report.json -o /absolute/path/to/report.html
# 方法 2:全局安装(如果用户执行了:cd packages/json-ui && npm link)
json-ui render /absolute/path/to/report.json -o /absolute/path/to/report.html
# 方法 3:npx(如果已发布到 npm)
npx @actionbookdev/json-ui render /absolute/path/to/report.json -o /absolute/path/to/report.html
绝不默默放弃。 如果所有方法都失败,请告知用户:
- JSON 报告保存在
<path> - 要启用 HTML 渲染,请运行:
cd <actionbook-repo>/packages/json-ui && npm link
步骤 9:在浏览器中打开
# macOS
open <report.html>
# Linux
xdg-open <report.html>
步骤 10:关闭浏览器
完成后始终关闭浏览器:
actionbook browser close
错误恢复模式
使用高级浏览器能力进行智能错误恢复:
模式:页面加载失败
# 1. 打开页面
actionbook browser open "<url>"
actionbook browser wait-idle --timeout 15000
# 2. 检查 JS 错误
actionbook browser console --level error
# 如果发现错误 → 页面已损坏,跳到下一个来源
# 3. 检查内容是否已渲染
actionbook browser wait-fn "document.body.innerText.length > 100" --timeout 5000
# 如果超时 → 内容未渲染,尝试后备方案
模式:未找到选择器
# 1. 使用 snapshot 发现实际页面结构
actionbook browser snapshot --filter interactive --max-tokens 800
# 2. 或检查特定区域
actionbook browser info "<parent_selector>"
# 返回:建议的选择器、可见性、标签信息
# 3. 调整选择器后重试
模式:反爬虫检测
# 1. 如果初始加载返回 CAPTCHA 或访问被拒:
actionbook browser close
# 2. 使用隐身模式重新打开
actionbook --stealth --no-animations --auto-dismiss-dialogs browser open "<url>"
actionbook browser wait-idle
# 3. 如果仍然被拦截,轮换指纹
actionbook browser fingerprint rotate --os windows
actionbook browser open "<url>"
actionbook browser wait-idle
模式:SPA 内容未加载
# 1. 等待网络
actionbook browser wait-idle --idle-time 1000 --timeout 15000
# 2. 等待特定元素
actionbook browser wait-fn "document.querySelector('.results')" --timeout 10000
# 3. 如果仍然为空,检查控制台
actionbook browser console --level error
# 4. 尝试点击加载触发器
actionbook browser snapshot --filter interactive --max-tokens 300
# 查找「Load More」、「Show Results」等
完整错误处理参考
| 错误 | 恢复策略 |
|---|---|
| 浏览器打开失败 | actionbook browser status,重试 + 检查 console --level error |
| 页面加载超时 | wait-idle --timeout 15000,然后 console --level error 进行诊断 |
| URL 返回 404 | 使用 wait-fn "!document.title.includes('404')" 快速检测。立即跳过,不要重试。 使用 Google 摘要文本作为备份数据。 |
| arXiv 表单提交失败 | 回退到基于 URL 的搜索:arxiv.org/search/?query=...&searchtype=all |
| ar5iv 内容截断 | 回退到 arXiv 摘要 + 使用 wait-fn "document.body.innerText.length > 5000" 验证 |
| 选择器未找到 | 使用 snapshot --filter interactive 发现实际结构 |
| 动态内容缺失 | wait-idle + wait-fn 等待特定条件 |
| 弹窗警报拦截 | --auto-dismiss-dialogs 完全阻止此问题 |
| 反爬虫检测 | --stealth + fingerprint rotate |
| 媒体繁重的慢速页面 | --block-images 或 --block-media 获得 2-5 倍加速 |
| CSS 动画干扰 | --no-animations 冻结所有过渡 |
| json-ui render 崩溃 | 检查 MetricsGrid——suffix/value 必须是纯字符串 |
npx json-ui 404 |
尝试全部 3 种方法(monorepo、全局、npx) |
| 无搜索结果 | 从宽泛开始(50+ 条结果),然后收窄。使用 4 种以上查询角度。 |
重要: 即使出现错误,也要在结束前始终运行 actionbook browser close。
功能使用检查清单
在最终确定研究之前,验证你是否使用了以下能力:
| 功能 | 何时使用 | 检查 |
|---|---|---|
browser fetch |
只读页面提取(优先于 open+wait+text) | 用于大多数页面读取 |
--lite |
静态页面(Wikipedia、文档、博客)——完全跳过浏览器 | 对静态站点添加到 fetch |
--rewrite-urls |
始终使用(避免 x.com、reddit 的反爬虫) | 在初始浏览器启动时设置 |
--wait-hint |
域名感知等待调优(fast/slow/heavy) | 与 fetch 或手动流程配合使用 |
--session-tag |
需要日志关联的多步骤操作 | 为调试会话设置 |
wait-idle |
在每次触发导航的 open/goto/click 之后 |
必须在每个页面上使用 |
--block-images |
始终使用(研究不需要图片) | 在初始浏览器启动时设置 |
--auto-dismiss-dialogs |
始终使用(防止阻塞) | 在初始浏览器启动时设置 |
--no-animations |
始终使用(稳定的快照) | 在初始浏览器启动时设置 |
wait-fn |
当内容在网络稳定后异步加载时 | 用于 SPA、动态页面 |
console --level error |
当页面内容似乎不完整或损坏时 | 用于调试 |
batch |
当填写多步骤表单时(arXiv、Google Scholar) | 替代 5 条以上连续命令 |
snapshot --filter interactive |
当发现未知页面结构时 | 用于未索引的站点 |
info <selector> |
当 click/type 未按预期工作时 | 调试元素可见性 |
--stealth |
当站点返回 CAPTCHA 或访问被拒时 | 在重试时添加 |
要避免的常见错误:
- 在
browser fetch一条命令就能完成时,仍手动使用open → wait-idle → text → close - 对静态页面(Wikipedia、文档、博客)不使用
--lite——浪费 5-10 秒在浏览器启动上 - 不使用
--rewrite-urls——x.com 和 reddit.com 有激进的反爬虫机制会拦截抓取 - 在交互模式下导航后忘记使用
wait-idle(内容显示为空) - 表单交互不使用
batch(慢、不可靠) - 重试失效 URL 而不是跳过它
- 从搜索摘要中手动构造 URL 而不是点击链接
- 只使用一个搜索查询角度(始终使用 4 条以上多样化的查询)
- 在提取内容前不检查 404 页面
json-ui 报告模板
重要:始终包含 BrandHeader 和 BrandFooter。
{
"type": "Report",
"props": { "theme": "auto" },
"children": [
{
"type": "BrandHeader",
"props": {
"badge": "Deep Research Report",
"poweredBy": "Actionbook"
}
},
{
"type": "Section",
"props": { "title": "Overview", "icon": "paper" },
"children": [
{
"type": "Prose",
"props": {
"content": "Overview of the topic..."
}
}
]
},
{
"type": "Section",
"props": { "title": "Key Findings", "icon": "star" },
"children": [
{
"type": "ContributionList",
"props": {
"items": [
{
"badge": "Finding",
"title": "...",
"description": "..."
}
]
}
}
]
},
{
"type": "Section",
"props": { "title": "Detailed Analysis", "icon": "bulb" },
"children": [
{
"type": "Prose",
"props": { "content": "..." }
}
]
},
{
"type": "Section",
"props": { "title": "Key Metrics", "icon": "chart" },
"children": [
{
"type": "MetricsGrid",
"props": { "metrics": [], "cols": 3 }
}
]
},
{
"type": "Section",
"props": { "title": "Sources", "icon": "link" },
"children": [
{
"type": "LinkGroup",
"props": { "links": [] }
}
]
},
{
"type": "BrandFooter",
"props": {
"timestamp": "YYYY-MM-DDTHH:MM:SSZ",
"attribution": "Powered by Actionbook",
"disclaimer": "This report was generated by AI using web sources. Verify critical information independently."
}
}
]
}
论文报告模板(用于 arXiv 论文)
分析学术论文时,使用更丰富的模板,包含:
PaperHeader(标题、arxivId、日期、分类)AuthorList(带所属机构的作者)Abstract(带关键词高亮)ContributionList(关键贡献)MethodOverview(逐步方法说明)ResultsTable(实验结果)Formula(关键公式,LaTeX)Figure(来自 ar5iv 的论文图表)
可用的 json-ui 组件
| 组件 | 用途 | 关键属性 |
|---|---|---|
BrandHeader |
报告头部 | badge、poweredBy |
PaperHeader |
论文元数据 | title、arxivId、date、categories |
AuthorList |
作者 | authors: [{name, affiliation}]、maxVisible |
Section |
主要章节 | title、icon(paper/star/bulb/chart/code/link/info/warning) |
Prose |
富文本 | content(支持 粗体、斜体、代码、列表) |
Abstract |
摘要文本 | text、highlights: ["keyword"] |
ContributionList |
编号发现 | items: [{badge, title, description}] |
MethodOverview |
逐步说明 | steps: [{step, title, description}] |
MetricsGrid |
关键统计 | metrics: [{label, value, trend, suffix}]、cols |
ResultsTable |
数据表格 | columns、rows、highlights: [{row, col}] |
Table |
通用表格 | columns: [{key, label}]、rows、striped、compact |
Callout |
信息/提示/警告 | type(info/tip/warning/important/note)、title、content |
Highlight |
引用块 | type(quote/important/warning/code)、text、source |
KeyPoint |
关键发现卡片 | icon、title、description、variant |
CodeBlock |
代码片段 | code、language、title、showLineNumbers |
Formula |
LaTeX 公式 | latex、block、label |
Figure |
图片 | images: [{src, alt, width}]、label、caption |
Image |
单张图片 | src、alt、caption、width |
DefinitionList |
术语/定义 | items: [{term, definition}] |
LinkGroup |
来源链接 | links: [{href, label, icon}] |
Grid |
网格布局 | cols、children |
Card |
卡片容器 | padding(sm/md/lg)、shadow |
TagList |
标签 | tags: [{label, color, href}] |
BrandFooter |
页脚 | timestamp、attribution、disclaimer |
json-ui 已知陷阱
| 陷阱 | 症状 | 修复 |
|---|---|---|
MetricsGrid.suffix 为对象 |
text.replace is not a function |
suffix 必须是纯字符串 |
MetricsGrid.value 为数字 |
渲染错误 | value 必须是字符串(例如 "58.5" 而非 58.5) |
缺少 BrandHeader/BrandFooter |
报告显示异常 | 始终包含两者 |
Table 行值为对象 |
单元格显示 [object Object] |
行单元格值必须是纯字符串 |
| 过长的 Prose 内容 | 渲染被截断 | 拆分为多个 Prose 块或使用子章节 |
文本字段
所有文本字段应使用纯英文字符串。
{ "title": "Key Findings" }
注意: MetricsGrid 属性 value 和 suffix,以及 Table 行单元格值必须始终是纯字符串。
学术论文支持
arXiv 论文
ar5iv.org HTML(优先用于阅读,但对 3 个月内的新论文通常不完整):
| 元素 | 选择器 | 可靠性 | 后备方案 |
|---|---|---|---|
| 标题 | h1.ltx_title_document |
高 | div.ltx_abstract |
| 作者 | div.ltx_authors |
高 | — |
| 摘要 | div.ltx_abstract |
高 | — |
| 全文 | article |
中 | 当章节选择器失败时使用 |
| 章节 | section.ltx_section |
新论文上可靠性低 | article |
| 图表 | figure.ltx_figure |
中 | — |
| 表格 | table.ltx_tabular |
中 | — |
推荐方法: 使用 wait-idle + wait-fn 验证 ar5iv 内容已加载:
actionbook browser open "https://ar5iv.org/html/<arxiv_id>"
actionbook browser wait-idle --timeout 15000
actionbook browser wait-fn "document.body.innerText.length > 5000" --timeout 10000
# 如果 wait-fn 超时 → 内容未渲染,回退到其他来源
推荐来源优先级
| 优先级 | 来源 | 获取内容 | 可靠性 |
|---|---|---|---|
| 1 | arxiv.org/abs/<id> |
摘要、元数据、提交历史 | 非常高 |
| 2 | huggingface.co/papers/<id> |
摘要、社区、相关模型 | 非常高 |
| 3 | GitHub 仓库 | README、代码、模型库 | 高 |
| 4 | HuggingFace 模型卡片 | 训练方法、基准测试 | 高 |
| 5 | ar5iv.org/html/<id> |
完整论文 HTML | 中 |
| 6 | Google Scholar / Semantic Scholar | 引用、相关工作 | 中 |
其他学术来源
- Google Scholar(
scholar.google.com)——已被 Actionbook 索引 - Semantic Scholar(
semanticscholar.org) - Papers With Code(
paperswithcode.com) - 会议论文集网站
质量指南
- 广度:从至少 3-5 个不同的来源进行研究
- 深度:阅读全文,而不仅仅是摘要
- 准确性:跨来源交叉验证事实
- 结构:为每种内容类型使用适当的 json-ui 组件
- 归属:始终在报告中包含来源链接
- 时效性:在相关性相同的情况下,优先使用较新的来源