核心用法 / Core Usage
站点适配器
读「站点 X 的结构化数据」,最省的路径是跳过 snapshot + click。
在你 open、翻页、一路点击穿越 GitHub / Reddit / Bilibili 之前,先看有没有现成的
站点适配器——一小段社区写的 JS,在你登录态的标签页里直接打站点自己的 JSON API,
把干净的结构化数据一次交给你。不点击、不爬、不截图。
是什么
站点适配器(site adapter)是社区写的一个 JS 函数:它在你当前登录态的标签页里
直接调用站点自己的 JSON API,返回清洗好的结构化数据。本质上就是打包好的、按站点划分的
eval——只是不用你自己写,也不用摸清每个站点的接口。
因为它跑在你已经登录的那个标签页里、以你的身份发请求,所以像
bilibili/feed、twitter/… 这类需要登录态的信息流也能直接读到——
这正是手拼 URL 或匿名抓取做不到的地方。
eval 打某个站点的内部接口,那站点适配器就是把这段代码
沉淀成命令、由社区维护、按站点归类。你少写一次脏活,别人也复用得到。
怎么用
四个动作:一次性拉包(update)、看装了哪些(list)、看某个适配器怎么调
(info)、运行它(site <name>/<cmd>)。
$ chrome-use site update # 一次性:拉取适配器包(命令数随 bb-sites 同步增长)
$ chrome-use site list # 已装了哪些(github/issues、reddit/search…)
$ chrome-use site info github/issues # 某适配器的参数 + 在哪个域名上跑
$ chrome-use site github/issues owner/repo --json # 运行 → JSON(自动帮你导航过去)
site update:从 bb-sites 社区包拉取整套适配器。只需一次;之后 chrome-use 会自动保持同步(见下方「自动触发」)。site list:列出本地已安装的所有<name>/<cmd>,例如github/issues、reddit/search。site info <name>/<cmd>:查一个适配器声明了哪些参数、以及它会在哪个域名上运行——调之前先看这个,就知道该传什么。site <name>/<cmd> [args] --json:真正运行。加--json拿一行可解析的结构化输出。
加了 --json,最后一条命令返回的就是站点自己的数据,已经清洗成可解析的结构(下面为节选、缩进过):
{
"success": true,
"data": {
"domain": "github.com",
"origin": "https://github.com/",
"result": {
"count": 30,
"repo": "epiral/bb-sites",
"state": "open",
"issues": [
{
"number": 85,
"title": "feat(youtube/transcript): migrate to API-based subtitles",
"author": "kerrmoulton",
"state": "open",
"is_pr": true,
"comments": 0,
"labels": [],
"created_at": "2026-06-16T07:54:47Z",
"url": "https://github.com/epiral/bb-sites/pull/85"
}
// … 其余 29 条同构,count 是本次返回的总数
]
}
},
"error": null
}
site info <name>/<cmd> 看它的参数声明和目标域名,
再照着传。这比盲跑一次看报错更省。
参数与导航
适配器的参数按声明顺序用位置参数填入;想按名字覆盖某一个,就用 --key value。
两种写法可以混用:位置参数先占位,--key 再定点覆盖。
# 位置参数按声明顺序填
$ chrome-use site github/issues owner/repo --json
# --key 按名覆盖(顺序无所谓)
$ chrome-use site reddit/search --query "chrome-use" --sort new --json
运行时它会导航到适配器声明的域名——如果你当前标签页已经在那个域名上,就复用当前标签页,
不新开。请求仍发生在你登录态的那个标签页里,所以 bilibili/feed、twitter/…
这类登录才可见的信息流照常返回(为什么能,见上面「是什么」)。
open 到目标站点。site <name>/<cmd> 会自己导航到适配器的域名再执行;
但你得已经登录那个站点,登录态信息流才读得到。
自动触发 —— 看到就用它
你不用记住哪些站点有适配器。chrome-use 会自动保持适配器包同步(首次使用 + 每周),
并且当你 open / navigate / snapshot 一个域名有适配器的页面时主动提示你:
- stderr 上一行
💡 site adapters for <domain>; --json输出里的siteAdapters: {domain, commands}字段。
$ chrome-use open https://github.com/epiral/bb-sites
# … 页面打开的同时,stderr 冒出一行:
💡 site adapters for github.com: github/issues, github/pulls, github/repo …
site <name>/<cmd>💡 site adapters for <domain> 时,别再 snapshot + click 去读数据——
直接用它点名的 site <name>/<cmd>:更省、更稳,而且已经装好了。你也不需要自己先跑
site update,用它给出的命令即可。
site <name>/<cmd>
可能提示「未安装」。这时手动跑一次 site update,再重跑那条命令即可。
什么时候用它 vs extract --schema vs snapshot
同一页数据往往有多条路。站点适配器是已知站点结构化数据的首选;没有合适适配器时, 再往下退。下面这张表帮你对号入座。
| 你的情况 | 用什么 | 为什么 |
|---|---|---|
| 已知站点的结构化数据(GitHub issues、Reddit/HN 搜索、B 站 / Twitter 信息流),尤其登录态之后 | chrome-use site <name>/<cmd> |
直接打站点 JSON API、以你身份运行,跳过 snapshot + click,最省最稳 |
| 任意页面的结构化数据,没有社区适配器——表格、搜索结果、信息流行、仪表盘 | extract --schema '{rows,fields}' |
给个形状,一次调用出干净 JSON,不用自己写 eval、也不倒整页 HTML |
要给模型做推理、或需要拿 @ref 去交互 |
snapshot -i --json |
结构化快照带稳定 ref,既能读也能驱动后续 click / type |
| 需要自定义形状、逻辑较特殊的一次性抽取 | eval --stdin |
在页面 MAIN world 里直接写 JS,最灵活(适配器就是它的沉淀版) |
extract --schema;再不行才回到常规的
snapshot / eval 手动循环。数据抽取的全景见 提取数据。
来源与许可
适配器来自 bb-sites 社区包。
chrome-use 负责在运行时拉取并执行它们——本仓库不打包、不重分发任何适配器代码,
site update 每次从上游获取最新版本。
site list 反映的是你本地这一次同步到的版本。
下一步
站点适配器是数据抽取里最省的一档;配合下面这些手段覆盖其余场景。