网站转 CLI
把任意网站变成 CLI,让 AI Agent 复用你已登录的浏览器会话操作网页
将任意网站转换为 CLI,并在你已登录的 Chrome 上运行 Browser Use。 将网站、浏览器会话、Electron 应用和本地工具转化为人类与 AI Agent 可用的确定性接口。 或者针对任意页面运行 Browser Use —— 导航、填写表单、点击、提取、自动化。
OpenCLI 为你提供三种不同自动化场景的统一入口:
- 使用内置适配器 用于 Bilibili、知乎、小红书、Reddit、HackerNews、Twitter/X 等众多网站。
- 让 AI Agent 操作任意网站 – 在你的 AI Agent(Claude Code、Cursor 等)中安装
opencli-browserskill,它就能通过opencli browser原语,利用你已登录的浏览器进行导航、点击、键入/填写、提取和检查任何页面。 - 端到端编写新适配器 – 使用
opencli browser和opencli-adapter-authorskill,该 skill 会引导你完成从初次侦察、字段解码、代码编写到opencli browser verify的全流程。
它还可以作为本地工具的 CLI 中心,例如 gh、docker、longbridge、tg、discord、wx、ntn(Notion)以及其他你自行注册的二进制文件,同时也支持 桌面应用适配器,适用于 Cursor、Trae CN、Codex、Antigravity、ChatGPT 和 Trae SOLO 等 Electron 应用。
快速开始
1. 安装 OpenCLI
桌面端使用,建议从 OpenCLIApp 开始。它集成了 OpenCLI 运行时,保持已托管的 opencli 命令可用,并提供系统托盘界面用于配置、诊断、更新、浏览器登录保活以及 Web 转 Markdown。
选项 A — OpenCLIApp(推荐 macOS / Windows):
从 https://opencli.info/download 下载最新应用并安装,然后打开该应用一次,在系统页面中安装或修复 opencli 命令。
选项 B — npm 全局安装(仅 CLI / CI / 服务器): 通过 npm 安装时,OpenCLI 要求 Node.js >= 20。
node --version
npm install -g @jackwener/opencli
2. 安装 Browser Bridge 扩展
OpenCLI 通过一个轻量级的 Browser Bridge 扩展以及一个小型本地守护进程连接到 Chrome/Chromium。守护进程会在需要时自动启动。
选项 A — Chrome Web Store(推荐): 从 Chrome Web Store 安装 OpenCLI。
选项 B — 手动安装:
- 从 GitHub Releases 页面 下载最新的
opencli-extension-v{version}.zip。 - 解压,打开
chrome://extensions,启用 开发者模式。 - 点击 加载已解压的扩展程序,选择解压后的文件夹。
3. 验证安装
opencli doctor
4. 可选:命名你的 Chrome 配置文件
每个 Chrome 配置文件运行独立的 OpenCLI 扩展实例。如果你使用多个 Chrome 配置文件,可以列出已连接的配置文件并分配本地别名:
opencli profile list
opencli profile rename <contextId> work
opencli profile use work
opencli --profile work browser main state
如果只有一个已连接的配置文件,OpenCLI 会自动使用它。如果有多个已连接且未设置默认,OpenCLI 会要求你选择而不是猜测。
5. 运行你的第一条命令
opencli list
opencli hackernews top --limit 5
opencli bilibili hot --limit 5
面向人类用户
当你需要一个可靠的命令而不是实时浏览器会话时,可以直接使用 OpenCLI:
opencli list显示所有已注册的命令。opencli <site> <command>运行内置或生成的适配器。opencli external register mycli通过相同的发现接口暴露本地 CLI。opencli doctor帮助诊断浏览器连接。
扩展 OpenCLI
如果你想添加自己的命令,请从 扩展 OpenCLI 指南 开始。README 只保持简短;该指南涵盖了目录结构、源码控制模型和安装命令。
| 需求 | 推荐路径 |
|---|---|
| 在你自己 Git 仓库中维护个人网站命令 | opencli plugin create + opencli plugin install file://... |
| 快速编写私有本地适配器 | 在 ~/.opencli/clis/ 中运行 opencli browser init <site>/<command> |
| 本地修改官方适配器 | opencli adapter eject <site> + opencli adapter reset <site> |
| 发布或安装第三方命令 | opencli plugin install github:user/repo |
| 封装现有本地二进制文件 | opencli external register <name> |
面向 AI Agent
OpenCLI 的浏览器命令专为 AI Agent 设计 —— 而非手动运行。将 skills 安装到你的 AI Agent(Claude Code、Cursor 等)中,Agent 会利用你已登录的 Chrome 会话代表你操作网站。
安装 skills(也会刷新已有安装)
npx skills add jackwener/opencli
或者只安装你需要的 skill:
npx skills add jackwener/opencli --skill opencli-adapter-author
npx skills add jackwener/opencli --skill opencli-autofix
npx skills add jackwener/opencli --skill opencli-browser
npx skills add jackwener/opencli --skill opencli-browser-sitemap
npx skills add jackwener/opencli --skill opencli-sitemap-author
npx skills add jackwener/opencli --skill opencli-usage
使用哪个 skill
| Skill | 使用时机 | 向 AI Agent 提问的示例 |
|---|---|---|
| opencli-adapter-author | 为新的网站编写可复用适配器,或为已有网站添加命令 | ”为抖音热榜编写一个适配器” / “创建一个命令来抓取该页面的顶部帖子” |
| opencli-autofix | 当内置命令失败时修复损坏的适配器 | ”opencli zhihu hot 返回空 —— 修复它” |
| opencli-browser | 临时操作真实 Chrome 页面 —— 导航、填写表单、点击、提取 | ”帮我检查小红书通知” / “帮我填写这个表单” / “使用浏览器命令抓取这个页面” |
| opencli-browser-sitemap | 在驱动浏览器任务时消耗网站站点地图上下文 | ”使用站点地图导航这个网站,避免盲目点击” |
| opencli-sitemap-author | 为浏览器 Agent 创建或更新网站站点地图知识 | ”记录你刚刚发现此网站的稳定工作流” |
| opencli-usage | 快速参考所有 OpenCLI 命令和网站 | ”OpenCLI 针对 Twitter 有哪些命令?“ |
工作原理
一旦安装了 opencli-browser,你的 AI Agent 就可以:
- 导航 到你已登录浏览器中的任意 URL
- 读取 通过结构化 DOM 快照(而非截图)获取页面内容
- 交互 – 点击按钮、填写表单、选择选项、按下按键
- 提取 页面数据或拦截网络 API 响应
- 等待 元素、文本或页面转换
代理内部处理所有 opencli browser 命令——你只需用自然语言描述你想要完成的操作。
技能参考:
skills/opencli-browser/SKILL.md— 驱动 Chrome 临时操作(导航、填充表单、点击、提取)skills/opencli-browser-sitemap/SKILL.md— 在驱动浏览器任务时使用站点地图上下文skills/opencli-sitemap-author/SKILL.md— 创建或更新站点地图知识skills/opencli-adapter-author/SKILL.md— 端到端编写一个新适配器skills/opencli-autofix/SKILL.md— 修复损坏的适配器skills/opencli-usage/SKILL.md— 命令和站点参考
可用的浏览器命令包括 open, state, click, type, fill, select, keys, wait, get, find, extract, frames, screenshot, scroll, back, eval, network, tab list, tab new, tab select, tab close, init, verify 和 close。
opencli browser 命令在 browser 之后需要一个 <session> 位置参数。opencli browser work open <url> 和 opencli browser work tab new [url] 都会返回一个目标 ID。使用 opencli browser work tab list 检查目标 ID,然后传递 --tab <targetId> 将命令路由到特定标签页。tab new 创建一个新标签页,但不更改默认浏览器目标;只有 tab select <targetId> 才会将该标签页提升为同一会话中后续未指定目标命令的默认目标。
编写新适配器
当你需要的站点尚未被覆盖时,使用 opencli-adapter-author 技能端到端操作:
- 侦察站点并选择模式(SPA / SSR / JSONP / Token / Streaming)。
- 发现正确的端点——网络检查、初始状态、包搜索、令牌追踪或拦截器回退。
- 选择认证方式——
PUBLIC/COOKIE/INTERCEPT/UI/LOCAL。 - 解码响应字段并设计输出列。
opencli browser recon analyze <url>→opencli browser recon init <site>/<name>→ 编写适配器 →opencli browser recon verify <site>/<name>。- 站点知识持久化到
~/.opencli/sites/<site>/,因此同一站点的下一个适配器将从上下文开始。
配置
| 变量 | 默认值 | 描述 |
|---|---|---|
OPENCLI_PROFILE | — | 当连接多个 Chrome 配置文件时使用的 Browser Bridge 配置文件别名/contextId |
OPENCLI_WINDOW | 命令默认值 | 设置为 foreground 或 background 以覆盖 Browser Bridge 窗口位置。浏览器支持的命令也接受 --window <foreground|background>。 |
OPENCLI_BROWSER_CONNECT_TIMEOUT | 45 | 等待浏览器连接的秒数 |
OPENCLI_BROWSER_COMMAND_TIMEOUT | 60 | 等待单个浏览器命令的秒数 |
OPENCLI_CDP_ENDPOINT | — | 远程浏览器或 Electron 应用的 Chrome DevTools Protocol 端点 |
OPENCLI_CDP_TARGET | — | 按 URL 子字符串过滤 CDP 目标(例如 detail.1688.com) |
OPENCLI_VERBOSE | false | 启用详细日志记录(也支持 -v 标志) |
DEBUG_SNAPSHOT | — | 设置为 1 以输出 DOM 快照调试信息 |
opencli browser * 需要显式的 <session> 位置参数,默认使用前台浏览器窗口,并保持该会话的标签页租约,直到 opencli browser <session> close 或空闲清理。浏览器支持的适配器使用后台适配器窗口,并默认释放一次性标签页租约。交互式适配器可以声明 siteSession: 'persistent' 以保持稳定的站点标签页以实现连续性;传递 --site-session ephemeral 使用一次性标签页。
内置命令
| 站点 | 命令 |
|---|---|
| xiaohongshu | search ask note comments feed user download publish follow unfollow notifications creator-notes creator-notes-summary creator-note-detail creator-profile creator-stats |
| bilibili | hot search history feed ranking download comments dynamic favorite following follow unfollow me subtitle summary video user-videos |
| zhihu | hot search question download follow like favorite comment answer |
| hackernews | top new best ask show jobs search user |
| hltv | search player-summary player-matches player-form player-map-pool player-vs-team player-teammate-impact player-duel match-map match-series team-matches team-map-pool event-matches |
| geogebra | eval add-point add-line add-circle add-polygon triangle hexagon list info |
connect inbox job-detail jobs-preferences post-analytics posts profile-experience profile-projects profile-read profile-analytics safe-send search services-read sent-invitations thread-snapshot timeline salesnav-search salesnav-inbox salesnav-message salesnav-thread | |
hot frontpage popular search subreddit read user user-posts user-comments upvote upvoted save saved comment subscribe | |
trending search timeline tweets lists list-tweets list-create list-delete list-add list-add-batch list-remove list-remove-batch bookmarks post download profile article like likes notifications reply reply-dm thread follow unfollow followers following block unblock bookmark unbookmark delete hide-reply accept | |
| claude | ask send new status read history detail |
| gemini | new ask image deep-research deep-research-result |
| notebooklm | status list open current get history summary note-list notes-get source-list source-get source-fulltext source-guide |
| amazon | bestsellers search product offer discussion movers-shakers new-releases rankings |
| upwork | search feed detail |
| slock | message-send message-read message-search channel-list channel-info channel-create channel-members channel-join task-list task-create task-claim task-status task-convert task-delete thread-list thread-follow attachment-upload attachment-download bookmark-add inbox dm-list server-list server-use whoami |
| huodongxing | events |
精选亮点 — → 查看所有 100+ 支持的站点与命令(douyin / weibo / spotify / 1688 / quark / nowcoder / google-scholar / hupu / xianyu / weread / weread-official / xiaoyuzhou / Chess.com 等)。
CLI 中心
统一透传您现有的命令行工具。对于以下任意工具,运行 opencli <tool> ...:
gh · docker · vercel · wrangler · obsidian · longbridge · lark-cli · ntn(notion) · dws(DingTalk Workspace) · wecom-cli(企业微信) · tg(tg-cli) · discord(discord-cli) · wx(wx-cli)
使用 opencli external register <name> 注册你自己的工具;使用 opencli external list 列出所有已注册项。
桌面应用适配器(Electron,通过 CDP):Cursor / Trae CN / Codex / Antigravity / ChatGPT App / ChatWise / Qoder / Discord / Doubao / Trae SOLO — 见 docs/adapters/desktop/。
下载支持
OpenCLI 支持从支持的平台下载图片、视频和文章。
| 平台 | 内容类型 | 备注 |
|---|---|---|
| xiaohongshu | 图片、视频 | 下载笔记中的所有媒体 |
| rednote | 图片、视频 | 下载已签名的 rednote 笔记链接中的所有媒体 |
| bilibili | 视频 | 需要安装 yt-dlp |
| 图片、视频 | 来自用户媒体标签页或单条推文 | |
| douban | 图片 | 海报/剧照列表 |
| pixiv | 图片 | 原画质量、多页 |
| 1688 | 图片、视频 | 从商品页面下载可见的商品媒体 |
| xiaoyuzhou | 音频、文字稿 | 下载播客音频和文字稿 JSON/文本,需本地凭据 |
| zhihu | 文章(Markdown) | 导出时可选择下载图片 |
| weixin | 文章(Markdown) | 微信公众号文章 |
视频下载请先安装 yt-dlp:brew install yt-dlp
opencli xiaohongshu download "https://www.xiaohongshu.com/search_result/<id>?xsec_token=..." --output ./xhs
opencli xiaohongshu download "https://xhslink.com/..." --output ./xhs
opencli rednote download "https://www.rednote.com/search_result/<id>?xsec_token=..." --output ./rednote
opencli bilibili download BV1xxx --output ./bilibili
opencli twitter download elonmusk --limit 20 --output ./twitter
opencli 1688 download 841141931191 --output ./1688-downloads
opencli xiaoyuzhou download 69b3b675772ac2295bfc01d0 --output ./xiaoyuzhou
opencli xiaoyuzhou transcript 69dd0c98e2c8be31551f6a33 --output ./xiaoyuzhou-transcripts
opencli xiaoyuzhou download 和 transcript 命令需要本地 Xiaoyuzhou 凭据,存放在 ~/.opencli/xiaoyuzhou.json 中。
输出格式
所有内置命令都支持 --format / -f 选项,可选 table(默认)、json、yaml、md 和 csv。
opencli bilibili hot -f json # 可通过管道传给 jq 或 LLM
opencli bilibili hot -f csv # 适合电子表格处理
opencli bilibili hot -v # 详细模式:显示流水线调试步骤
退出码
opencli 遵循 Unix sysexits.h 规范,以便 CI / 脚本根据失败类型进行分支处理:0 成功,66 空结果,69 Browser Bridge 未运行,75 超时,77 需要认证,78 配置错误,130 Ctrl-C。完整参考:docs/guide/exit-codes.md。
插件
通过社区贡献的适配器扩展 OpenCLI:
opencli plugin install github:user/opencli-plugin-my-tool
opencli plugin list
opencli plugin update --all
opencli plugin uninstall my-tool
| 插件 | 类型 | 描述 |
|---|---|---|
| opencli-plugin-github-trending | JS | GitHub Trending 仓库 |
| opencli-plugin-hot-digest | JS | 多平台热门汇总 |
| opencli-plugin-juejin | JS | 稀土掘金热门文章 |
| opencli-plugin-vk | JS | VK (VKontakte) 的留言墙、信息流和搜索 |
参见 插件指南 了解如何创建自己的插件。
测试
请参阅 TESTING.md 了解如何运行和编写测试。
故障排除
- “Extension not connected” — 确保已从 Chrome 网上应用店 安装 Browser Bridge 扩展,并在
chrome://extensions中启用。 - “attach failed: Cannot access a chrome-extension:// URL” — 可能是其他扩展干扰。请尝试临时禁用其他扩展。
- 返回空数据或 ‘Unauthorized’ 错误 — 你的 Chrome/Chromium 登录会话可能已过期。请前往目标网站重新登录。
- Node API 错误 / 缺少
fetch/ 旧版本 Node 启动崩溃 — OpenCLI 需要 Node.js >= 20。运行node --version,如有必要请升级 Node,然后重试。 - 守护进程问题 — 检查状态:
curl localhost:19825/status· 查看日志:curl localhost:19825/logs
