网站转 CLI
把任意网站变成 CLI,让 AI Agent 复用你已登录的浏览器会话操作网页
将任何网站转换为 CLI,并在您已登录的 Chrome 中使用 Browser Use。 将网站、浏览器会话、Electron 应用和本地工具转换为人类和 AI 智能体的确定性接口。 或者针对任何页面运行 Browser Use — 导航、填写表单、点击、提取、自动化。
OpenCLI 为您提供三种不同自动化场景的统一界面:
- 使用内置适配器,适用于 Bilibili、知乎、小红书、Reddit、HackerNews、Twitter/X 等众多站点。
- 让 AI 智能体操作任何网站 — 在您的 AI 智能体(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) 以及您自行注册的其他二进制工具,同时还支持针对 Electron 应用(如 Cursor、Trae CN、Codex、Antigravity、ChatGPT 和 Trae SOLO)的桌面应用适配器。
快速开始
1. 安装 OpenCLI
OpenCLI 需要 Node.js >= 20。
node --version
npm install -g @jackwener/opencli
2. 安装浏览器桥接扩展
OpenCLI 通过一个轻量级的浏览器桥接扩展加一个小型本地守护进程连接到 Chrome/Chromium。该守护进程会在需要时自动启动。
选项 A — Chrome 网上应用店(推荐): 从 Chrome 网上应用店 安装 OpenCLI。
选项 B — 手动安装:
- 从 GitHub 发布页面 下载最新的
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 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 智能体
OpenCLI 的浏览器命令专为 AI 智能体使用而设计 — 无需手动运行。将 skills 安装到您的 AI 智能体(Claude Code、Cursor 等)中,智能体就会使用您已登录的 Chrome 会话代表您操作网站。
安装 skills(也会刷新已有安装)
npx skills add jackwener/opencli
或者只安装您需要的部分:
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 智能体提问示例 |
|---|---|---|
| opencli-adapter-author | 为某个新站点编写可复用的适配器,或为现有站点添加命令 | ”为抖音热门编写一个适配器” / “创建一个命令来抓取该页面的热门帖子” |
| opencli-autofix | 当内置命令失败时修复损坏的适配器 | ”opencli zhihu hot 返回空结果 — 修复它” |
| opencli-browser | 临时驱动真实的 Chrome 页面 — 导航、填写表单、点击、提取 | ”帮我查看我的小红书通知” / “帮我填写这个表单” / “使用浏览器命令抓取这个页面” |
| opencli-browser-sitemap | 在执行浏览器任务时利用站点 sitemap 上下文 | ”使用站点地图导航这个网站,避免盲目点击” |
| opencli-sitemap-author | 为浏览器智能体创建或更新站点 sitemap 知识 | ”记录你刚才发现该站点的稳定工作流程” |
| opencli-usage | 快速查阅所有 OpenCLI 命令和站点 | ”OpenCLI 为 Twitter 提供了哪些命令?“ |
工作原理
一旦安装了 opencli-browser,您的 AI 智能体就可以:
- 导航 到任意 URL,使用您已登录的浏览器
- 读取 页面内容,通过结构化的 DOM 快照(非截图)
- 交互 — 点击按钮、填写表单、选择选项、按键操作
- 提取 页面数据或拦截网络 API 响应
- 等待 元素、文本或页面过渡
智能体会在内部处理所有 opencli browser 命令 — 您只需用自然语言描述想要完成的操作即可。
Skill 参考文档:
skills/opencli-browser/SKILL.md— 临时驱动 Chrome(导航、填写表单、点击、提取)skills/opencli-browser-sitemap/SKILL.md— 在执行浏览器任务时使用 sitemap 上下文skills/opencli-sitemap-author/SKILL.md— 为浏览器智能体创建或更新站点 sitemap 知识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_DAEMON_PORT | 19825 | 守护进程-扩展桥接的 HTTP 端口 |
OPENCLI_PROFILE | — | 当连接多个 Chrome 配置文件时使用的浏览器桥接配置文件别名/上下文 ID |
OPENCLI_WINDOW | 命令默认值 | 设置为 foreground 或 background 以覆盖浏览器桥接窗口放置。浏览器支持的命令也接受 --window <foreground|background>。 |
OPENCLI_BROWSER_CONNECT_TIMEOUT | 30 | 等待浏览器连接的秒数 |
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 |
| 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+ 支持的站点与命令(抖音 / 微博 / Spotify / 1688 / 夸克 / 牛客网 / Google Scholar / 虎扑 / 闲鱼 / 微信读书 / 微信读书官方 / 小宇宙 / Chess.com / 及更多)。
CLI Hub
统一透传你的现有命令行工具。运行 opencli <tool> ... 可使用以下任意工具:
gh · docker · vercel · wrangler · obsidian · longbridge · lark-cli · ntn(notion) · dws(钉钉工作台) · 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 / 豆包 / Trae SOLO — 参见 docs/adapters/desktop/。
下载支持
OpenCLI 支持从受支持的平台下载图片、视频和文章。
| 平台 | 内容类型 | 说明 |
|---|---|---|
| xiaohongshu | 图片、视频 | 下载笔记中的所有媒体 |
| rednote | 图片、视频 | 下载已签名 rednote 笔记 URL 中的所有媒体 |
| 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 需要在 ~/.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 趋势仓库 |
| opencli-plugin-hot-digest | JS | 多平台热点聚合器 |
| opencli-plugin-juejin | JS | 稀土掘金 (Juejin) 热门文章 |
| 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