简介
OpenCLI 是一个开源、AI 原生的命令行工具,其核心理念是“将任何网站或 Electron 应用变成命令行接口”。它彻底颠覆了传统爬虫或 API 调用的数据获取方式,通过直接复用用户在 Chrome 浏览器中的已登录状态,让终端命令能够直接操作网页内容。这意味着你无需在命令行中配置 API Key 或处理复杂的登录验证,只要你的 Chrome 浏览器登录了某个网站,OpenCLI 就能在终端里直接调用该网站的功能,如刷 B 站、看知乎、发推文等。该项目支持超过 17 个主流站点,包含 57 条命令,是 AI Agent 获取真实网页数据的理想桥梁。
主要功能
-
零风险凭证管理:完全复用 Chrome 的登录状态,用户的账号密码和 Cookie 从不离开浏览器进程,安全性极高,且无需处理风控验证。
-
AI 原生发现与生成:内置
explore、synthesize、cascade命令,支持 AI 自动探索网站 API、生成适配器代码、探测认证策略,极大简化了新增网站支持的开发流程。 -
双引擎架构:支持 YAML 声明的数据管道(简单配置)和 TypeScript 浏览器运行时注入(复杂逻辑),适配器放入
clis/文件夹即可自动注册。 -
多格式输出:所有命令支持
--format参数,可输出table(默认)、json、yaml、md、csv格式,便于管道传输给 LLM 或其他脚本处理。 -
MCP 集成:通过 Playwright MCP Bridge 扩展,可作为 MCP 服务器接入 Claude Desktop、Cursor 等 AI 客户端,让 AI Agent 直接控制浏览器。
安装与配置
环境要求
-
Node.js >= 18.0.0
-
Chrome 浏览器(已安装并登录目标网站)
安装步骤
-
安装 CLI:通过 npm 全局安装。
npm install -g @jackwener/opencli -
配置浏览器连接(二选一):
-
方法 A(推荐,MCP 扩展):在 Chrome 中安装 Playwright MCP Bridge 扩展,获取 Token 并配置环境变量
PLAYWRIGHT_MCP_EXTENSION_TOKEN。 -
方法 B(CDP 直连):在 Chrome 中启用
chrome://inspect#remote-debugging,设置环境变量OPENCLI_USE_CDP=1。
-
如何使用
-
查看命令列表:
opencli list查看所有支持的站点和命令。 -
执行命令:使用
opencli <site> <command> [options]格式。-
查看 B 站热门:
opencli bilibili hot --limit 5 -
搜索知乎问题(JSON 格式):
opencli zhihu search --query "AI" -f json -
获取雪球热股:
opencli xueqiu hot-stock
-
-
AI 探索模式:开发新适配器时,使用
opencli explore <url>自动分析页面结构,opencli synthesize生成适配器代码。
应用场景实例
实例 1:AI Agent 数据采集助手
场景:AI Agent 需要获取用户个人 Twitter 时间线或 B 站关注列表进行情感分析或内容总结。传统方式需要用户提供 API Key 或模拟登录,极易触发风控。
OpenCLI 方案:Agent 直接调用 opencli twitter timeline或 opencli bilibili me favorite。由于复用用户真实的浏览器会话,返回的数据包含个性化推荐和私密内容,且不会被网站识别为机器人,数据真实性和完整性远超公开 API。
实例 2:终端工作流自动化
场景:开发者习惯在终端工作,但需要频繁切换浏览器查看 GitHub 通知、Reddit 热帖或 Boss 直聘新消息,打断工作流。
OpenCLI 方案:在 .zshrc中设置别名,如 alias news='opencli reddit hot && opencli hackernews top'。每次打开终端或执行命令,直接获取结构化信息输出到终端,无需打开浏览器标签页。
实例 3:量化投资信息监控
场景:量化交易员需要实时监控雪球大 V 动态、雅虎财经行情和路透社新闻,但网页界面信息冗余,难以快速提取关键指标。
OpenCLI 方案:编写定时脚本,循环执行 opencli xueqiu feed、opencli yahoo-finance quote --symbol AAPL、opencli reuters search --query "Fed",将输出重定向到日志文件或发送到钉钉/飞书,实现无人值守的市场舆情监控。

842

被折叠的 条评论
为什么被折叠?



