小马的 AI 工具集

网站转 CLI

把任意网站变成 CLI,让 AI Agent 复用你已登录的浏览器会话操作网页

网站转 CLI
类型 CLI 26,012 星标 更新 2026-07-04 许可 Apache-2.0 原仓库 主页

将任意网站转换为 CLI,并在你已登录的 Chrome 上运行 Browser Use。 将网站、浏览器会话、Electron 应用和本地工具转化为人类与 AI Agent 可用的确定性接口。 或者针对任意页面运行 Browser Use —— 导航、填写表单、点击、提取、自动化。

中文文档 npm Node.js Version License

OpenCLI 为你提供三种不同自动化场景的统一入口:

  • 使用内置适配器 用于 Bilibili、知乎、小红书、Reddit、HackerNews、Twitter/X 等众多网站
  • 让 AI Agent 操作任意网站 – 在你的 AI Agent(Claude Code、Cursor 等)中安装 opencli-browser skill,它就能通过 opencli browser 原语,利用你已登录的浏览器进行导航、点击、键入/填写、提取和检查任何页面。
  • 端到端编写新适配器 – 使用 opencli browseropencli-adapter-author skill,该 skill 会引导你完成从初次侦察、字段解码、代码编写到 opencli browser verify 的全流程。

它还可以作为本地工具的 CLI 中心,例如 ghdockerlongbridgetgdiscordwxntn(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 — 手动安装:

  1. 从 GitHub Releases 页面 下载最新的 opencli-extension-v{version}.zip
  2. 解压,打开 chrome://extensions,启用 开发者模式
  3. 点击 加载已解压的扩展程序,选择解压后的文件夹。

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 就可以:

  1. 导航 到你已登录浏览器中的任意 URL
  2. 读取 通过结构化 DOM 快照(而非截图)获取页面内容
  3. 交互 – 点击按钮、填写表单、选择选项、按下按键
  4. 提取 页面数据或拦截网络 API 响应
  5. 等待 元素、文本或页面转换

代理内部处理所有 opencli browser 命令——你只需用自然语言描述你想要完成的操作。

技能参考:

可用的浏览器命令包括 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, verifyclose

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 技能端到端操作:

  1. 侦察站点并选择模式(SPA / SSR / JSONP / Token / Streaming)。
  2. 发现正确的端点——网络检查、初始状态、包搜索、令牌追踪或拦截器回退。
  3. 选择认证方式——PUBLIC / COOKIE / INTERCEPT / UI / LOCAL
  4. 解码响应字段并设计输出列。
  5. opencli browser recon analyze <url>opencli browser recon init <site>/<name> → 编写适配器 → opencli browser recon verify <site>/<name>
  6. 站点知识持久化到 ~/.opencli/sites/<site>/,因此同一站点的下一个适配器将从上下文开始。

配置

变量默认值描述
OPENCLI_PROFILE当连接多个 Chrome 配置文件时使用的 Browser Bridge 配置文件别名/contextId
OPENCLI_WINDOW命令默认值设置为 foregroundbackground 以覆盖 Browser Bridge 窗口位置。浏览器支持的命令也接受 --window <foreground|background>
OPENCLI_BROWSER_CONNECT_TIMEOUT45等待浏览器连接的秒数
OPENCLI_BROWSER_COMMAND_TIMEOUT60等待单个浏览器命令的秒数
OPENCLI_CDP_ENDPOINT远程浏览器或 Electron 应用的 Chrome DevTools Protocol 端点
OPENCLI_CDP_TARGET按 URL 子字符串过滤 CDP 目标(例如 detail.1688.com
OPENCLI_VERBOSEfalse启用详细日志记录(也支持 -v 标志)
DEBUG_SNAPSHOT设置为 1 以输出 DOM 快照调试信息

opencli browser * 需要显式的 <session> 位置参数,默认使用前台浏览器窗口,并保持该会话的标签页租约,直到 opencli browser <session> close 或空闲清理。浏览器支持的适配器使用后台适配器窗口,并默认释放一次性标签页租约。交互式适配器可以声明 siteSession: 'persistent' 以保持稳定的站点标签页以实现连续性;传递 --site-session ephemeral 使用一次性标签页。

内置命令

站点命令
xiaohongshusearch ask note comments feed user download publish follow unfollow notifications creator-notes creator-notes-summary creator-note-detail creator-profile creator-stats
bilibilihot search history feed ranking download comments dynamic favorite following follow unfollow me subtitle summary video user-videos
zhihuhot search question download follow like favorite comment answer
hackernewstop new best ask show jobs search user
hltvsearch 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
geogebraeval add-point add-line add-circle add-polygon triangle hexagon list info
linkedinconnect 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
reddithot frontpage popular search subreddit read user user-posts user-comments upvote upvoted save saved comment subscribe
twittertrending 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
claudeask send new status read history detail
gemininew ask image deep-research deep-research-result
notebooklmstatus list open current get history summary note-list notes-get source-list source-get source-fulltext source-guide
amazonbestsellers search product offer discussion movers-shakers new-releases rankings
upworksearch feed detail
slockmessage-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
huodongxingevents

精选亮点 — → 查看所有 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
twitter图片、视频来自用户媒体标签页或单条推文
douban图片海报/剧照列表
pixiv图片原画质量、多页
1688图片、视频从商品页面下载可见的商品媒体
xiaoyuzhou音频、文字稿下载播客音频和文字稿 JSON/文本,需本地凭据
zhihu文章(Markdown)导出时可选择下载图片
weixin文章(Markdown)微信公众号文章

视频下载请先安装 yt-dlpbrew 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 downloadtranscript 命令需要本地 Xiaoyuzhou 凭据,存放在 ~/.opencli/xiaoyuzhou.json 中。

输出格式

所有内置命令都支持 --format / -f 选项,可选 table(默认)、jsonyamlmdcsv

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-trendingJSGitHub Trending 仓库
opencli-plugin-hot-digestJS多平台热门汇总
opencli-plugin-juejinJS稀土掘金热门文章
opencli-plugin-vkJSVK (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

星历史

Star History Chart

许可证

Apache-2.0

在 GitHub 查看完整项目