网站转 CLI
把任意网站变成 CLI,让 AI Agent 复用你已登录的浏览器会话操作网页
将任意网站转化为CLI,并在你已登录的Chrome上运行Browser Use。 将网站、浏览器会话、Electron应用和本地工具转化为人类和AI代理可用的确定性接口。 或者针对任意页面运行Browser Use——导航、填写表单、点击、提取、自动化。
OpenCLI为您提供三种不同自动化场景的统一界面:
- 使用内置适配器 访问站点,如Bilibili、知乎、小红书、Reddit、HackerNews、Twitter/X以及更多站点。
- 让AI代理操作任意网站 — 在你的AI代理(Claude Code、Cursor等)中安装
opencli-browser技能,它就能通过你已登录的浏览器,使用opencli browser原语进行导航、点击、输入/填写、提取和检查任意页面。 - 编写新的适配器 — 通过
opencli browser+opencli-adapter-author技能实现端到端流程,该技能从首次侦察到字段解码、代码编写和opencli browser verify验证全程引导。
它还可以作为本地工具的CLI枢纽,支持gh、docker、longbridge、tg、discord、wx、ntn(Notion)等二进制工具,以及你自行注册的其他工具,同时还支持桌面应用适配器,用于Electron应用如Cursor、Trae CN、Codex、Antigravity、ChatGPT和Trae SOLO。
快速开始
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. 安装浏览器桥接扩展
OpenCLI通过一个轻量级的浏览器桥接扩展加一个小型本地守护进程连接到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代理
OpenCLI的浏览器命令设计为供AI代理使用,而非手动运行。将技能安装到你的AI代理(Claude Code、Cursor等)中,代理就能使用你已登录的Chrome会话代表你操作网站。
安装技能(同时刷新现有安装)
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
使用哪个技能
| 技能 | 使用场景 | 向AI代理提问的示例 |
|---|---|---|
| opencli-adapter-author | 为新的站点编写可复用的适配器,或为现有站点添加命令 | ”为抖音热搜编写一个适配器” / “做一个命令,从该页面抓取热门帖子” |
| opencli-autofix | 当内置命令失败时修复损坏的适配器 | ”opencli zhihu hot 返回空结果 — 修复它” |
| opencli-browser | 临时驱动真实的Chrome页面 — 导航、填写表单、点击、提取 | ”帮我检查我的小红书通知” / “帮我填写这个表单” / “使用浏览器命令抓取这个页面” |
| opencli-browser-sitemap | 在驱动浏览器任务时利用站点站点地图上下文 | ”使用站点地图导航这个网站,避免盲目点击” |
| opencli-sitemap-author | 为浏览器代理创建或更新站点地图知识 | ”记录你刚刚发现的这个网站的稳定工作流程” |
| opencli-usage | 快速查阅所有OpenCLI命令和站点 | ”OpenCLI对Twitter有什么命令?“ |
工作原理
一旦安装了opencli-browser,你的AI代理就能:
- 导航 — 使用你已登录的浏览器跳转到任意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 配置文件别名/上下文 ID |
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 |
| midjourney | login whoami settings quota generate describe history status action download |
精选亮点 — → 查看所有 100+ 支持的站点和命令(抖音 / 微博 / 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(钉钉工作台) · 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 | Images, Videos | 从笔记中下载所有媒体 |
| rednote | Images, Videos | 从已签名的 rednote 笔记 URL 下载所有媒体 |
| bilibili | Videos | 需要安装 yt-dlp |
| Images, Videos | 从用户媒体标签或单条推文下载 | |
| douban | Images | 海报/剧照列表 |
| pixiv | Images | 原始质量插画,多页 |
| 1688 | Images, Videos | 从商品页面下载可见的产品媒体 |
| xiaoyuzhou | Audio, Transcript | 下载单集音频和转录 JSON/文本,需本地凭证 |
| zhihu | Articles (Markdown) | 导出为 Markdown,可选下载图片 |
| weixin | Articles (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 Web Store 安装 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
