关于 opencli-reader
opencli-reader 是一个只读技能,通过 opencli 适配器注册表读取受支持网站和服务的信息。它指导 Agent 查找命令并检查适配器要求;已有专用技能的来源应优先使用专用技能。
主要功能
- 01只读访问数据源
- 02查找已注册命令
- 03检查适配器策略
- 04JSON 输出指引
- 05故障诊断
适用场景
- 01研究金融与新闻来源
- 02读取受支持网站的帖子
- 03检查网站适配器要求
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ himself65/ finance-skills --skill opencli-reader安装后在 Claude Code 中输入/opencli-reader确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/discovery.mdfinance-sources.md详细介绍
opencli 读取器(通用回退,只读)
如果宿主环境尚未执行以下 Shell 探测(例如 Codex),请先使用其 Shell 工具运行 ! 包裹的命令,再选择设置路径。请依据实际输出;如果无法访问 Shell,请说明这一限制。
适用于 opencli 通过其适配器注册表支持的任何来源的通用回退方案(支持 100 多个站点,且仍在增长)。仅当没有专门的 finance-skill 覆盖该来源时才使用此技能;如果请求符合以下任一专用技能的适用范围,应始终优先使用它们:twitter-reader、linkedin-reader、discord-reader、telegram-reader、yc-reader。
此技能为只读。 不得调用 opencli 提供的写入命令(post、like、comment、send、save、upvote、subscribe、follow、delete、reply-dm 等)。
第 1 步:判断是否使用此技能
仅当请求无法由更具体的技能处理时,才使用此技能。
| 如果用户询问…… | 改用此技能 |
|---|---|
| Twitter/X | twitter-reader |
linkedin-reader | |
| Discord | discord-reader |
| Telegram | telegram-reader |
| Y Combinator | yc-reader |
| opencli 支持的其他任何来源(Yahoo Finance、Bloomberg、Reuters、Reddit、HackerNews、Eastmoney、Xueqiu、Substack、arXiv 等) | 此技能 |
如果来源也不在 opencli 的注册表中,请停止并告知用户该请求不在支持范围内——不要改用临时抓取方案。
第 2 步:确保 opencli 已就绪
当前环境状态:
!`(command -v opencli && opencli doctor 2>&1 | head -5 && echo "READY" || echo "SETUP_NEEDED") 2>/dev/null || echo "NOT_INSTALLED"`
如果为 NOT_INSTALLED:
npm install -g @jackwener/opencli
如果为 SETUP_NEEDED,请引导用户完成 Browser Bridge 设置(仅当适配器策略为 COOKIE、HEADER、INTERCEPT 或 UI 时才需要;PUBLIC 和 LOCAL 适配器无需浏览器):
- 从 GitHub Releases 页面下载最新的
opencli-extension-v{version}.zip - 解压文件,在 Chrome 中打开
chrome://extensions,启用开发者模式 - 点击加载已解压的扩展程序,并选择解压后的文件夹
- 确保 Chrome 已登录目标站点,然后重新运行
opencli doctor
需要 Node.js >= 20(或 Bun >= 1.0)。
第 3 步:找到合适的命令
不要猜测命令名称或标志——注册表中有 500 多个命令,且每周都会变化。请改为:
# Full registry (grouped by site), machine-readable JSON
opencli list -f json
# Filter to a site
opencli list | grep -i <site>
# Site-level help (all commands + flags)
opencli <site> --help
# Command-level help (positional args + flags + defaults)
opencli <site> <command> --help
opencli list -f json 中每个命令的条目都包含:
site— 适配器命名空间(例如yahoo-finance)name— 子命令(例如quote)strategy—PUBLIC/COOKIE/HEADER/INTERCEPT/UI/LOCAL— 用于判断是否需要浏览器登录description、args、columns— 规范元数据
请将 opencli list -f json 作为事实依据。切勿凭记忆将站点列表写入计划;适配器每周都会新增。
最常见的金融 / 研究来源速览
下表是一个精选列表,并非全部来源——请务必通过 opencli <site> --help 确认。
| 来源 | 站点标识 | 常用命令 |
|---|---|---|
| Yahoo Finance | yahoo-finance | quote |
| Bloomberg | bloomberg | markets、economics、industries、tech、politics、opinions、news、businessweek、feeds、main |
| Reuters | reuters | search |
| Eastmoney(东方财富) | eastmoney | quote、rank、kline、sectors、etf、holders、money-flow、northbound、longhu、kuaixun、convertible、index-board、announcement、hot-rank |
| Xueqiu(雪球) | xueqiu | stock、hot-stock、hot、feed、comments、watchlist、search、groups、fund-snapshot、fund-holdings、earnings-date、kline |
| Sinafinance | sinafinance | (参见 --help) |
| TDX / THS | tdx、ths | (参见 --help) |
| Barchart(期权) | barchart | quote、options、flow、greeks |
reddit | hot、popular、frontpage、search、subreddit、read、user、user-posts、user-comments、saved | |
| HackerNews | hackernews | top、best、new、ask、show、jobs、user、search |
| Substack | substack | feed、publication、search |
| Medium | medium | (参见 --help) |
| arXiv | arxiv | (参见 --help) |
| Google Scholar | google-scholar | (参见 --help) |
weibo | (参见 --help) | |
| Bilibili | bilibili | hot、video + 更多 |
| Xiaohongshu(小红书) | xiaohongshu | (参见 --help) |
| Rednote(小红书国际版) | rednote | (参见 --help——与 xiaohongshu 相同) |
| Zhihu | zhihu | (参见 --help) |
| Baidu Scholar | baidu-scholar | (参见 --help) |
| Wanfang | wanfang | (参见 --help) |
| 36kr | 36kr | (参见 --help) |
| Jike | jike | (参见 --help) |
| Bluesky | bluesky | (参见 --help) |
| Apple Podcasts | apple-podcasts | (参见 --help) |
| Xiaoyuzhou(播客) | xiaoyuzhou | (参见 --help) |
| Spotify | spotify | (参见 --help) |
| YouTube | youtube | (参见 --help) |
| Weixin Official Account | weixin | (参见 --help——drafts 用于读取;create-draft 用于写入) |
| Toutiao | toutiao | articles |
| 政府政策 / 法律 | gov-policy、gov-law | (参见 --help) |
| 网页下载 / 阅读器 | web | read、download |
对于未列出的来源,请运行 opencli list -f json 并筛选。
第 4 步:运行前检查适配器的策略
运行 opencli list -f json(或 opencli <site> <command> --help),并查看 strategy 字段:
| 策略 | 含义 | 前提条件 |
|---|---|---|
PUBLIC | 纯 HTTP;无需浏览器 | 无 |
LOCAL | 与本地端点通信 | 本地服务正在运行 |
COOKIE / HEADER | 复用你在该站点的 Chrome 登录状态 | 已在 Chrome 中登录该站点 + 已加载 Browser Bridge 扩展 |
INTERCEPT | 打开自动化窗口以捕获已签名的请求 | 同 COOKIE;请耐心等待——可能需要几秒钟 |
UI | 完整 DOM 交互 | 同 COOKIE;速度最慢;结果取决于站点当前布局 |
如果用户没有登录,而适配器的策略不是 PUBLIC / LOCAL,请告知用户需要先在 Chrome 中登录该站点,再重试。
第 5 步:执行命令
通用模式
opencli <site> <command> [positional-args] [flags] -f json
通用标志
| 标志 | 效果 |
|---|---|
-f json | 结构化 JSON——供 Agent 处理时始终优先使用 |
-f yaml / -f csv / -f md / -f table / -f plain | 其他格式 |
-v | 详细日志(同时设置 OPENCLI_VERBOSE=1) |
--live | 命令执行后保持自动化窗口打开(仅限由浏览器驱动的适配器) |
--focus | 在前台打开自动化窗口(仅限由浏览器驱动的适配器) |
特定命令的标志(--limit、--filter、--type 等)并非通用标志——请务必查看 opencli <site> <command> --help。
示例
# Yahoo Finance quote (PUBLIC)
opencli yahoo-finance quote AAPL -f json
# Reddit hot posts in a subreddit (COOKIE or PUBLIC depending on subreddit)
opencli reddit subreddit wallstreetbets --limit 20 -f json
opencli reddit search "SPY options" --limit 15 -f json
# HackerNews top (PUBLIC)
opencli hackernews top --limit 20 -f json
# Eastmoney hot rank (PUBLIC)
opencli eastmoney hot-rank -f json
# Xueqiu hot stocks (PUBLIC or COOKIE)
opencli xueqiu hot-stock -f json
opencli xueqiu stock SH600519 -f json
# Bloomberg markets headlines (COOKIE)
opencli bloomberg markets -f json
# arXiv paper search (PUBLIC)
opencli arxiv search "volatility surface" --limit 10 -f json
# Substack feed
opencli substack feed --limit 20 -f json
# Web page → readable markdown (PUBLIC)
opencli web read "https://example.com/article" -f json
关键规则
- 在构造本会话中尚未运行过的命令前,始终先使用
opencli <site> <command> --help— 不要臆测标志名称。 - 使用
-f json进行程序化处理。 - 先使用较小的
--limit(10–20)验证数据结构,再获取更多内容。 - 运行由浏览器驱动的适配器前,先检查
strategy— 如果用户尚未登录,COOKIE/UI适配器将会失败。 - 仅限只读操作 — 跳过写入命令。 各适配器中常见的写入命令名称包括:
post、reply、comment、like、unlike、upvote、save、subscribe、unsubscribe、follow、unfollow、block、unblock、delete、bookmark、unbookmark、send、create-draft、reply-dm、accept。如果不确定某个命令是读操作还是写操作,请查看opencli list -f json中的description;如果描述表明它会修改数据,就跳过。
第 6 步:处理故障
如果命令返回空结果或报错,可能是网站更改了选择器 / API。opencli 内置了自动修复流程:
# Re-run with diagnostic context
OPENCLI_DIAGNOSTIC=1 opencli <site> <command> <args>
这会输出结构化的 RepairContext,用于标识故障适配器的源文件路径。可采取以下措施:
- 如果用户安装了
opencli-autofix技能,请告知他们运行该技能。 - 如果没有,请建议他们在 https://github.com/jackwener/opencli/issues 提交问题,并附上
RepairContext输出。 - 不要悄悄改用手工编写的抓取代码 — 这会掩盖上游注册表中的问题。
目标网站的速率限制也可能导致结果为空;请等待后重试。
第 7 步:呈现结果
- 围绕用户的实际问题总结数据,不要只倾倒原始 JSON。
- 注明来源 — 在可用时,为每项内容提供网站名称和 URL。
- 对于市场数据,展示价格 / 涨跌幅 / 成交量 / 市值,并标记异常。
- 对于新闻 / 帖子,突出标题、时间戳和关键引述。
- 对于研究内容(arXiv、Scholar),包含标题、作者、摘要和链接。
- 将浏览器会话视为私密信息 — 绝不回显 CDP 端点、Cookie 或身份验证令牌。
参考文件
references/discovery.md— 如何使用opencli list、opencli <site> --help,以及注册表条目的 JSON 架构references/finance-sources.md— 关于金融类适配器(Yahoo Finance、Bloomberg、Eastmoney、Xueqiu、Barchart、Reuters、Reddit、HackerNews)的详细说明,以及哪些命令属于读操作或写操作
当需要某个特定网站的具体示例,或用户询问专用读取器未涵盖的功能时,请阅读这些参考文件。