active-research by actionbook/actionbook
npx skills add https://github.com/actionbook/actionbook --skill active-research使用 Actionbook Browser 分析任何主题、领域或论文,并生成美观的 HTML 报告——具备 SPA 感知导航、网络空闲检测、批量操作和智能页面分析功能。
| 能力 | 描述 |
|---|---|
| 页面加载等待 | wait-idle — 监控 fetch/XHR 直到网络稳定 |
| SPA 内容 | wait-fn — 在提取前等待 JavaScript 条件满足 |
| 页面理解 | snapshot --filter interactive --max-tokens N — 聚焦、节省预算 |
| 弹窗拦截 | --auto-dismiss-dialogs — 自动处理 alert/confirm/prompt |
| 加载速度 | --block-images — 跳过图片以加速文本提取 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 页面稳定性 | --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 高级搜索 + ar5iv 深度阅读 |
doi:10.XXX/... | 论文 | 解析 DOI,然后使用 arXiv 高级搜索 查找相关工作 |
| 学术关键词(paper, research, model, algorithm) | 学术主题 | arXiv 高级搜索 + Google 搜索非学术来源 |
| URL | 特定页面 | 获取并分析页面 |
| 通用文本 | 主题研究 | Google 搜索 + 相关时使用 arXiv 高级搜索 |
┌──────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐
│ 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 browser 命令进行网页浏览。切勿使用任何其他方法访问网络:
curl、wget、httpie 或任何 HTTP CLI 工具python -c "import requests" 或任何脚本语言的 HTTP 库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)— 自动处理打开+等待+提取+关闭
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --json
# 对于交互式多步骤工作流,使用显式打开:
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 至关重要:
text 会返回空或不完整的内容wait-idle 监控所有待处理的网络请求,等待其安静 500 毫秒对于网络稳定后动态加载内容的页面:
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)。
根据主题,从不同角度生成 5-8 个搜索查询:
搜索顺序 — 始终先查询 Actionbook API,然后搜索:
| 步骤 | 操作 | 原因 |
|---|---|---|
| 步骤 2(首先) | 查询 Actionbook API | 在浏览之前,获取 arXiv、ar5iv 和其他已知站点的已验证选择器。 |
| 步骤 3(其次) | arXiv 高级搜索 | 使用 Actionbook 选择器进行多字段、过滤的学术搜索。 |
| 步骤 4(第三) | Google / Bing 搜索 | 补充博客、新闻、代码、讨论、非学术来源。 |
在浏览任何 URL 之前,查询 Actionbook 的索引选择器。
# 按域名搜索索引操作
actionbook search "<keywords>" -d "<domain>"
# 获取特定页面的详细选择器
actionbook get "<domain>:/<path>:<area>"
对研究有用的预索引站点:
| 站点 | area_id | 关键选择器 |
|---|---|---|
| arXiv 高级搜索 | 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.google.com:/:default | #gs_hdr_tsi(搜索), #gs_hdr_tsb(提交) |
| arXiv 首页 | arxiv.org:/:default | 跨 240 万+文章的全局搜索 |
对于你计划访问的任何 URL,运行 actionbook search "<keywords>" -d "<domain>" 来检查它是否被索引。
经验教训:通过浏览器自动化提交 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+ 个结果searchtype=title选项 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"
# 如果 batch 表单提交失败(页面再次显示表单而不是结果):
# → 立即回退到选项 A 的基于 URL 搜索
# → 不要重试表单 — 浪费时间
arXiv 搜索能力(来自索引选择器 — 用于选项 B):
| 能力 | 选择器 |
|---|---|
| 搜索字段(标题/作者/摘要) | #terms-0-field select |
| 搜索词 | #terms-0-term input |
| 添加布尔词 | button "Add another term +" |
| 过滤器:计算机科学 | #classification-computer_science |
| 过滤器:物理、数学等 | #classification-physics, #classification-mathematics |
| 日期:过去 12 个月 | #date-filter_by-1 radio |
| 日期:特定年份 | #date-filter_by-2 radio + #date-year |
| 日期:自定义范围 | #date-filter_by-3 radio + #date-from_date / #date-to_date |
| 显示摘要 | #abstracts-0 radio |
# 通过 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']"预计 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 片段包含有用信息:
使用 4+ 个不同的搜索查询。 不要依赖一个搜索角度:
首选:使用 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
# 使用令牌预算进行 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(结构化,但对新论文可能失败)— 对静态 HTML 使用 --lite
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、机器人检测)— 使用带 stealth 的交互模式:
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 学术(由 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"
对于未索引站点,使用快照发现结构:
actionbook --block-images browser fetch "<url>" --format snapshot --max-tokens 800 --json
将收集到的信息组织成连贯的报告:
按照 @actionbookdev/json-ui 模式编写 JSON 文件。使用 Write 工具。
输出路径: ./output/<topic-slug>.json(或用户指定的 --output 路径)
关键:在放弃之前,必须尝试所有备用方法。不要在第一次失败时就停止。
重要:始终对 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
切勿静默放弃。 如果所有方法都失败,告诉用户:
<path>cd <actionbook-repo>/packages/json-ui && npm link# macOS
open <report.html>
# Linux
xdg-open <report.html>
完成后始终关闭浏览器:
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. 使用快照发现实际的页面结构
actionbook browser snapshot --filter interactive --max-tokens 800
# 2. 或者检查特定区域
actionbook browser info "<parent_selector>"
# 返回:建议的选择器、可见性、标签信息
# 3. 调整选择器并重试
# 1. 如果初始加载返回 CAPTCHA 或访问被拒绝:
actionbook browser close
# 2. 使用 stealth 重新打开
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
# 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 渲染崩溃 | 检查 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 学术) | 替代 5+ 个顺序命令 |
snapshot --filter interactive | 当发现未知页面结构时 | 用于未索引站点 |
info <selector> | 当点击/输入未按预期工作时 | 调试元素可见性 |
--stealth | 当站点返回 CAPTCHA 或访问被拒绝时 | 在重试时添加 |
要避免的常见错误:
browser fetch 可以一条命令完成时,使用手动的 open → wait-idle → text → close--lite — 浪费 5-10 秒在浏览器启动上--rewrite-urls — x.com 和 reddit.com 有激进的反爬虫机制,会阻止抓取wait-idle(内容显示为空)batch(慢、不可靠)重要:始终包含 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."
}
}
]
}
分析学术论文时,使用更丰富的模板,包含:
PaperHeader(标题、arxivId、日期、类别)AuthorList(作者及所属机构)Abstract(带关键词高亮)ContributionList(关键贡献)MethodOverview(逐步方法)ResultsTable(实验结果)Formula(关键方程,LaTeX)Figure(来自 ar5iv 的论文图表)| 组件 | 用途 | 关键属性 |
|---|---|---|
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 |
| 问题 | 症状 | 修复方法 |
|---|---|---|
MetricsGrid.suffix 为对象 | text.replace is not a function | suffix 必须是纯字符串 |
MetricsGrid.value 为数字 | 渲染错误 | value 必须是字符串(例如,"58.5" 而不是 58.5) |
缺少 BrandHeader/BrandFooter | 报告看起来损坏 | 始终包含两者 |
Table 行值为对象 | 单元格中显示 [object Object] | 行单元格值必须是纯字符串 |
| Prose 内容非常长 | 渲染被截断 | 拆分为 |
Analyze any topic, domain, or paper and generate a beautiful HTML report using Actionbook Browser — featuring SPA-aware navigation, network idle detection, batch operations, and intelligent page analysis.
| Capability | Description |
|---|---|
| Page load wait | wait-idle — monitors fetch/XHR until network settles |
| SPA content | wait-fn — wait for JS conditions before extracting |
| Page understanding | snapshot --filter interactive --max-tokens N — focused, budget-friendly |
| Popups blocking | --auto-dismiss-dialogs — auto-handle alert/confirm/prompt |
| Load speed | --block-images — skip images for faster text extraction |
| Page stability | --no-animations — freeze CSS transitions |
| Error detection | console --level error — check for page issues |
| Multi-step forms | batch — execute multiple actions in one call |
| Element debugging | info <selector> — inspect visibility, position, properties |
| Change tracking | snapshot --diff — only see what changed |
| Anti-detection | --stealth + fingerprint rotate for protected sites |
| Auth management | storage set — inject JWT/tokens for gated content |
| One-shot fetch | browser fetch <url> — navigate+wait+extract+close in one command |
| Static page speed | --lite — HTTP-first, browser fallback only if needed |
| Anti-scrape URLs | --rewrite-urls — x.com→xcancel.com, reddit→old.reddit |
| Wait tuning | --wait-hint — domain-aware wait (fast/normal/slow/heavy) |
| Log correlation | --session-tag — tag all operations for debugging |
/active-research <topic>
/active-research <topic> --output ./reports/my-report.json
Or simply tell Claude: "Research XXX and generate a report"
| Parameter | Required | Default | Description |
|---|---|---|---|
topic | Yes | - | The subject to research (any text) |
--output | No | ./output/<topic-slug>.json | Output path for JSON report |
| Pattern | Type | Strategy |
|---|---|---|
arxiv:XXXX.XXXXX | Paper | arXiv Advanced Search + ar5iv deep read |
doi:10.XXX/... | Paper | Resolve DOI, then arXiv Advanced Search for related work |
| Academic keywords (paper, research, model, algorithm) | Academic topic | arXiv Advanced Search + Google for non-academic sources |
| URL | Specific page | Fetch and analyze the page |
| General text | Topic research | Google search + arXiv Advanced Search if relevant |
┌──────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐
│ 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
└──────────┘ └──────────────┘ └──────────────┘
Always useactionbook browser commands for web browsing. NEVER use any other method to access the web:
curl, wget, httpie, or any HTTP CLI tool via bashpython -c "import requests" or any scripting-language HTTP library via bashactionbook browser and actionbook search/actionbook get commandsIf you need web content, the PREFERRED path is: actionbook browser fetch <url> --format text --json (one-shot). For interactive multi-step workflows, use: actionbook browser open <url> → actionbook browser wait-idle → actionbook browser text.
CRITICAL: Always use these flags when opening the browser for research.
# PREFERRED: One-shot fetch (I1) — handles open+wait+extract+close automatically
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --json
# For interactive multi-step workflows, use explicit open:
actionbook --block-images --auto-dismiss-dialogs --no-animations --rewrite-urls browser open "<url>"
| Flag | Why |
|---|---|
--block-images | Skip image downloads — 2-5x faster page load for text extraction |
--auto-dismiss-dialogs | Prevent alert/confirm/prompt from blocking automation |
--no-animations | Freeze CSS animations — stable snapshots, no timing issues |
--rewrite-urls | Rewrite x.com→xcancel.com, reddit→old.reddit to avoid anti-bot blocking |
--wait-hint <hint> | Domain-aware wait: instant, , , , , or ms |
For sites with anti-bot protection, add --stealth:
actionbook --block-images --auto-dismiss-dialogs --no-animations --stealth --rewrite-urls browser open "<url>"
Option A: One-shot fetch (PREFERRED for read-only page extraction):
# Single command: navigate → wait (domain-aware) → extract → close
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --json
# For static pages (Wikipedia, docs, blogs), add --lite to skip browser entirely:
actionbook --rewrite-urls browser fetch "<url>" --format text --lite --json
# For accessibility tree:
actionbook --block-images --rewrite-urls browser fetch "<url>" --format snapshot --max-tokens 2000 --json
Option B: Interactive multi-step pattern (for forms, clicks, multi-page flows):
# Step 1: Navigate
actionbook browser open "<url>" # or: goto, click a link
# Step 2: Wait for load (MANDATORY in v2)
actionbook browser wait-idle # Wait for fetch/XHR to settle
# Step 3: Extract content
actionbook browser text [selector] # Extract text
# OR
actionbook browser snapshot --filter interactive --max-tokens 500 # Understand page structure
Whywait-idle is critical:
text returns empty or incomplete contentwait-idle monitors all pending network requests, waits until quiet for 500msFor pages that load content dynamically after network settles:
actionbook browser wait-idle
actionbook browser wait-fn "document.querySelector('.results')" # Wait for specific element
actionbook browser text ".results"
REMINDER: Every web access in this workflow MUST use
actionbook browsercommands. Usingcurl,wget,python requests, or any other HTTP tool is strictly forbidden. The bash tool should ONLY be used foractionbookCLI commands and local file operations (json-ui render,open).
Based on the topic, generate 5-8 search queries from different angles:
Search order — ALWAYS query Actionbook API first, then search:
| Step | Action | Why |
|---|---|---|
| Step 2 (FIRST) | Query Actionbook API | Get verified selectors for arXiv, ar5iv, and other known sites BEFORE browsing. |
| Step 3 (SECOND) | arXiv Advanced Search | Use Actionbook selectors for multi-field, filtered academic search. |
| Step 4 (THIRD) | Google / Bing search | Supplement with blogs, news, code, discussions, non-academic sources. |
BEFORE browsing any URL, query Actionbook's indexed selectors.
# Search for indexed actions by domain
actionbook search "<keywords>" -d "<domain>"
# Get detailed selectors for a specific page
actionbook get "<domain>:/<path>:<area>"
Pre-indexed sites useful for research:
| Site | area_id | Key Selectors |
|---|---|---|
| arXiv Advanced Search | arxiv.org:/search/advanced:default | 40+ selectors : field select, term input, category checkboxes, date range filters |
| ar5iv paper | ar5iv.labs.arxiv.org:/html/{paper_id}:default | h1.ltx_title_document, div.ltx_authors, div.ltx_abstract, section.ltx_section |
| Google Scholar |
For any URL you plan to visit , run actionbook search "<keywords>" -d "<domain>" to check if it's indexed.
LESSON LEARNED: arXiv form submission via browser automation is unreliable. Use URL-based search as the PRIMARY method.
Option A: URL-based search (PRIMARY — most reliable):
# Simple keyword search
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"
# Advanced URL search with filters
# searchtype: all, title, author, abstract
# start: result offset (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"
Search strategy: Start broad, then narrow:
"Rust" "machine learning") — aim for 50+ resultssearchtype=titleOption B: Form interaction via batch (BACKUP — use if URL search is insufficient):
# Open arXiv with research flags
actionbook --block-images --auto-dismiss-dialogs --no-animations browser open "https://arxiv.org/search/advanced"
actionbook browser wait-idle
# Use batch for form — fewer round-trips, more reliable
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"
# If batch form submission fails (page shows form again instead of results):
# → Fall back to Option A URL-based search immediately
# → Do NOT retry the form — it wastes time
arXiv search capabilities (from indexed selectors — for Option B):
| Capability | Selector |
|---|---|
| Search field (Title/Author/Abstract) | #terms-0-field select |
| Search term | #terms-0-term input |
| Add boolean terms | button "Add another term +" |
| Filter: Computer Science | #classification-computer_science |
| Filter: Physics, Math, etc. | #classification-physics, #classification-mathematics |
# Search via Google (with wait-idle for SPA results)
actionbook browser open "https://www.google.com/search?q=<encoded_query>"
actionbook browser wait-idle
actionbook browser text "#search"
# Or search via Bing
actionbook browser open "https://www.bing.com/search?q=<encoded_query>"
actionbook browser wait-idle
actionbook browser text "#b_results"
Parse search results to extract URLs. For each discovered URL, query Actionbook API to check if indexed.
CRITICAL: URL Handling Rules (Learned from Production Use)
NEVER manually construct URLs from search snippets. Many Google snippet URLs are truncated or reformatted. Instead:
actionbook browser snapshot --filter interactive to find actual link elementsactionbook browser click "a[href*='domain.com']"Expect 20-30% of URLs to be dead. In practice, ~5 out of 20 URLs return 404. Handle this:
actionbook browser open "<url>"
actionbook browser wait-idle
# Check if the page is a 404 or error page
actionbook browser wait-fn "!document.title.includes('404') && !document.title.includes('Not Found')" --timeout 3000
# If timeout → page is dead, skip immediately. Do NOT retry.
Salvage info from Google snippets. If a URL is dead but the Google snippet had useful info:
Use 4+ diverse search queries. Don't rely on one search angle:
PREFERRED: Usebrowser fetch for one-shot page extraction (handles wait + extract + cleanup):
# Quick text extraction (most common)
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --json
# Static pages (Wikipedia, docs, blogs) — skip browser entirely
actionbook --rewrite-urls browser fetch "<url>" --format text --lite --json
# Page structure analysis
actionbook --block-images --rewrite-urls browser fetch "<url>" --format snapshot --max-tokens 2000 --json
# With token budget for LLM context management
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --max-tokens 4000 --json
For interactive workflows (forms, clicks), fall back to multi-step:
actionbook browser open "<url>"
actionbook browser wait-idle # MANDATORY: wait for network
actionbook browser text # Full page text (fallback)
actionbook browser text "<selector>" # Use Actionbook selector if indexed
If page content seems incomplete, debug:
# Check for JS errors that might block rendering
actionbook browser console --level error
# Check if a specific element exists
actionbook browser wait-fn "document.querySelector('.content')" --timeout 5000
# Inspect element properties
actionbook browser info ".content"
For arXiv papers , try sources in this order:
# 1. arXiv abstract (most reliable) — use fetch
actionbook --block-images browser fetch "https://arxiv.org/abs/<arxiv_id>" --format text --json
# 2. HuggingFace papers page
actionbook --block-images browser fetch "https://huggingface.co/papers/<arxiv_id>" --format text --json
# 3. ar5iv HTML (structured, but fails on new papers) — use --lite for static HTML
actionbook browser fetch "https://ar5iv.org/html/<arxiv_id>" --format text --lite --json
# NOTE: if content too short, ar5iv didn't render. Fall back.
# 4. GitHub repo (from search results) — use fetch
actionbook --block-images browser fetch "<github_repo_url>" --format text --json
For protected sites (Cloudflare, bot detection) — use interactive mode with stealth:
actionbook --stealth --block-images --auto-dismiss-dialogs --rewrite-urls browser open "<protected_url>"
actionbook browser wait-idle
actionbook browser text
For mobile-only content:
actionbook browser emulate iphone-14
actionbook browser open "<url>"
actionbook browser wait-idle
actionbook browser text
For Google Scholar (indexed by 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"
For unindexed sites , use snapshot to discover structure:
actionbook --block-images browser fetch "<url>" --format snapshot --max-tokens 800 --json
Organize collected information into a coherent report:
Write a JSON file following the @actionbookdev/json-ui schema. Use the Write tool.
Output path: ./output/<topic-slug>.json (or user-specified --output path)
CRITICAL: You MUST try ALL fallback methods before giving up. Do NOT stop at the first failure.
IMPORTANT: Always use ABSOLUTE paths for JSON_FILE and HTML_FILE.
Try each method one by one until one succeeds:
# Method 1: Monorepo absolute path (most reliable if inside actionbook project)
node "$(git rev-parse --show-toplevel)/packages/json-ui/dist/cli.js" render /absolute/path/to/report.json -o /absolute/path/to/report.html
# Method 2: Global install (if user ran: cd packages/json-ui && npm link)
json-ui render /absolute/path/to/report.json -o /absolute/path/to/report.html
# Method 3: npx (if published to npm)
npx @actionbookdev/json-ui render /absolute/path/to/report.json -o /absolute/path/to/report.html
NEVER give up silently. If all methods fail, tell the user:
<path>cd <actionbook-repo>/packages/json-ui && npm link# macOS
open <report.html>
# Linux
xdg-open <report.html>
Always close the browser when done:
actionbook browser close
Intelligent error recovery using advanced browser capabilities:
# 1. Open page
actionbook browser open "<url>"
actionbook browser wait-idle --timeout 15000
# 2. Check for JS errors
actionbook browser console --level error
# If errors found → page is broken, skip to next source
# 3. Check if content rendered
actionbook browser wait-fn "document.body.innerText.length > 100" --timeout 5000
# If timeout → content didn't render, try fallback
# 1. Use snapshot to discover actual page structure
actionbook browser snapshot --filter interactive --max-tokens 800
# 2. Or inspect a specific area
actionbook browser info "<parent_selector>"
# Returns: suggested selectors, visibility, tag info
# 3. Adjust selector and retry
# 1. If initial load returns CAPTCHA or access denied:
actionbook browser close
# 2. Reopen with stealth
actionbook --stealth --no-animations --auto-dismiss-dialogs browser open "<url>"
actionbook browser wait-idle
# 3. If still blocked, rotate fingerprint
actionbook browser fingerprint rotate --os windows
actionbook browser open "<url>"
actionbook browser wait-idle
# 1. Wait for network
actionbook browser wait-idle --idle-time 1000 --timeout 15000
# 2. Wait for specific element
actionbook browser wait-fn "document.querySelector('.results')" --timeout 10000
# 3. If still empty, check console
actionbook browser console --level error
# 4. Try clicking a loading trigger
actionbook browser snapshot --filter interactive --max-tokens 300
# Look for "Load More", "Show Results", etc.
| Error | Recovery Strategy |
|---|---|
| Browser fails to open | actionbook browser status, retry + check console --level error |
| Page load timeout | wait-idle --timeout 15000, then console --level error to diagnose |
| URL returns 404 | wait-fn "!document.title.includes('404')" to detect fast. Skip immediately, do NOT retry. Use Google snippet text as backup data. |
| arXiv form submission fails | Fall back to URL-based search: arxiv.org/search/?query=...&searchtype=all |
IMPORTANT: Always run actionbook browser close before finishing, even on errors.
Before finalizing research, verify you used these capabilities:
| Feature | When to Use | Check |
|---|---|---|
browser fetch | Read-only page extraction (preferred over open+wait+text) | Use for most page reads |
--lite | Static pages (Wikipedia, docs, blogs) — skip browser entirely | Add to fetch for static sites |
--rewrite-urls | Always (avoids anti-bot on x.com, reddit) | Set in initial browser launch |
--wait-hint | Domain-aware wait tuning (fast/slow/heavy) | Use with fetch or manual flow |
Common mistakes to avoid:
open → wait-idle → text → close when browser fetch does it in one command--lite for static pages (Wikipedia, docs, blogs) — wastes 5-10s on browser startup--rewrite-urls — x.com and reddit.com have aggressive anti-bot that blocks scrapingwait-idle after navigation in interactive mode (content appears empty)batch for form interactions (slow, unreliable)IMPORTANT: Always include BrandHeader and 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."
}
}
]
}
When analyzing academic papers, use a richer template with:
PaperHeader (title, arxivId, date, categories)AuthorList (authors with affiliations)Abstract (with keyword highlights)ContributionList (key contributions)MethodOverview (step-by-step method)ResultsTable (experimental results)Formula (key equations, LaTeX)Figure (paper figures from ar5iv)| Component | Use For | Key Props |
|---|---|---|
BrandHeader | Report header | badge, poweredBy |
PaperHeader | Paper metadata | title, arxivId, date, categories |
| Pitfall | Symptom | Fix |
|---|---|---|
MetricsGrid.suffix as object | text.replace is not a function | suffix must be a plain string |
MetricsGrid.value as number | Render error | value must be a string (e.g., "58.5" not 58.5) |
| Missing / |
All text fields should use plain English strings.
{ "title": "Key Findings" }
Note: MetricsGrid props value and suffix, and Table row cell values must always be plain strings.
ar5iv.org HTML (preferred for reading, but often incomplete for papers < 3 months old):
| Element | Selector | Reliability | Fallback |
|---|---|---|---|
| Title | h1.ltx_title_document | High | div.ltx_abstract |
| Authors | div.ltx_authors | High | — |
| Abstract | div.ltx_abstract | High | — |
| Full article | article |
Recommended approach: Use wait-idle + wait-fn to verify ar5iv content loaded:
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
# If wait-fn times out → content didn't render, fall back to other sources
| Priority | Source | What you get | Reliability |
|---|---|---|---|
| 1 | arxiv.org/abs/<id> | Abstract, metadata, submission history | Very high |
| 2 | huggingface.co/papers/<id> | Abstract, community, related models | Very high |
| 3 | GitHub repo | README, code, model zoo | High |
| 4 | HuggingFace model card | Training recipe, benchmarks | High |
| 5 | ar5iv.org/html/<id> | Full paper HTML |
scholar.google.com) — Actionbook indexedsemanticscholar.org)paperswithcode.com)Weekly Installs
373
Repository
GitHub Stars
1.4K
First Seen
Feb 12, 2026
Security Audits
Gen Agent Trust HubPassSocketWarnSnykWarn
Installed on
opencode333
gemini-cli325
codex325
github-copilot313
kimi-cli305
amp304
专业SEO审计工具:全面网站诊断、技术SEO优化与页面分析指南
57,600 周安装
fastnormalslowheavy--session-tag <tag> | Tag all operations for log correlation and debugging |
--lite (fetch only) | Try HTTP first, skip browser for static pages (Wikipedia, docs, blogs) |
scholar.google.com:/:default#gs_hdr_tsi (search), #gs_hdr_tsb (submit) |
| arXiv homepage | arxiv.org:/:default | Global search across 2.4M+ articles |
| Date: past 12 months |
#date-filter_by-1 radio |
| Date: specific year | #date-filter_by-2 radio + #date-year |
| Date: custom range | #date-filter_by-3 radio + #date-from_date / #date-to_date |
| Show abstracts | #abstracts-0 radio |
| ar5iv content truncated | Fall back to arxiv abstract + wait-fn "document.body.innerText.length > 5000" to verify |
| Selector not found | snapshot --filter interactive to discover actual structure |
| Dynamic content missing | wait-idle + wait-fn for specific conditions |
| Alert popup blocking | --auto-dismiss-dialogs prevents this entirely |
| Anti-bot detection | --stealth + fingerprint rotate |
| Slow media-heavy page | --block-images or --block-media for 2-5x speedup |
| CSS animation interference | --no-animations freezes all transitions |
| json-ui render crash | Check MetricsGrid — suffix/value must be plain strings |
npx json-ui 404 | Try all 3 methods (monorepo, global, npx) |
| No search results | Start broad (50+ results), then narrow. Use 4+ query angles. |
--session-tag | Multi-step operations needing log correlation | Set for debugging sessions |
wait-idle | After EVERY open/goto/click that triggers navigation | Must be used on every page |
--block-images | Always (research doesn't need images) | Set in initial browser launch |
--auto-dismiss-dialogs | Always (prevents blocking) | Set in initial browser launch |
--no-animations | Always (stable snapshots) | Set in initial browser launch |
wait-fn | When content loads asynchronously after network settles | Use on SPAs, dynamic pages |
console --level error | When page content seems incomplete or broken | Use for debugging |
batch | When filling multi-step forms (arXiv, Google Scholar) | Replaces 5+ sequential commands |
snapshot --filter interactive | When discovering unknown page structure | Use on unindexed sites |
info <selector> | When a click/type doesn't work as expected | Debug element visibility |
--stealth | When site returns CAPTCHA or access denied | Add on retry |
AuthorList |
| Authors |
authors: [{name, affiliation}], maxVisible |
Section | Major section | title, icon (paper/star/bulb/chart/code/link/info/warning) |
Prose | Rich text | content (supports bold , italic , code, lists) |
Abstract | Abstract text | text, highlights: ["keyword"] |
ContributionList | Numbered findings | items: [{badge, title, description}] |
MethodOverview | Step-by-step | steps: [{step, title, description}] |
MetricsGrid | Key stats | metrics: [{label, value, trend, suffix}], cols |
ResultsTable | Data table | columns, rows, highlights: [{row, col}] |
Table | Generic table | columns: [{key, label}], rows, striped, compact |
Callout | Info/tip/warning | type (info/tip/warning/important/note), title, content |
Highlight | Blockquote | type (quote/important/warning/code), text, source |
KeyPoint | Key finding card | icon, title, description, variant |
CodeBlock | Code snippet | code, language, title, showLineNumbers |
Formula | LaTeX equation | latex, block, label |
Figure | Image(s) | images: [{src, alt, width}], label, caption |
Image | Single image | src, alt, caption, width |
DefinitionList | Term/definition | items: [{term, definition}] |
LinkGroup | Source links | links: [{href, label, icon}] |
Grid | Grid layout | cols, children |
Card | Card container | padding (sm/md/lg), shadow |
TagList | Tags | tags: [{label, color, href}] |
BrandFooter | Footer | timestamp, attribution, disclaimer |
BrandHeaderBrandFooter| Report looks broken |
| Always include both |
Table row values as object | [object Object] in cells | Row cell values must be plain strings |
| Very long Prose content | Truncated render | Split into multiple Prose blocks or use subsections |
| Medium |
| Use when section selectors fail |
| Sections | section.ltx_section | Low on new papers | article |
| Figures | figure.ltx_figure | Medium | — |
| Tables | table.ltx_tabular | Medium | — |
| Medium |
| 6 | Google Scholar / Semantic Scholar | Citations, related work | Medium |