| name | opencli-reader |
| description | Generic read-only fallback for any source opencli covers but this repo has no dedicated reader for — Yahoo Finance, Bloomberg, Reuters, Barchart, Eastmoney, Xueqiu, Sinafinance, Reddit, HackerNews, Substack, Medium, Weibo, Bilibili, Xiaohongshu, Zhihu, arXiv, Google Scholar, Apple Podcasts, Xiaoyuzhou, Spotify, YouTube, Weixin, Amazon, and more. Triggers: "use opencli to read", "grab the frontpage from hackernews", "read reddit r/wallstreetbets", "fetch Eastmoney hot stocks", "pull Xueqiu feed", "get Bloomberg markets headlines", "search arXiv for", any request to read from a site where a specialized skill does not exist but opencli does. FALLBACK — prefer twitter-reader, linkedin-reader, discord-reader, telegram-reader, or yc-reader when the source matches. READ-ONLY — never invoke write operations.
|
opencli Reader (Generic Fallback, Read-Only)
Generic fallback for any source opencli supports via its adapter registry (90+ sites, growing). Use this skill only when no dedicated finance-skill covers the source — the specialized skills (twitter-reader, linkedin-reader, discord-reader, telegram-reader, yc-reader) are always preferred when the request matches one of them.
This skill is read-only. Write commands that opencli exposes (post, like, comment, send, save, upvote, subscribe, follow, delete, reply-dm, etc.) must not be invoked.
Step 1: Decide Whether to Use This Skill
Only use this skill if the request cannot be handled by a more specific skill.
| If the user asks about… | Use this skill instead |
|---|
| Twitter/X | twitter-reader |
| LinkedIn | linkedin-reader |
| Discord | discord-reader |
| Telegram | telegram-reader |
| Y Combinator | yc-reader |
| Anything else opencli supports (Yahoo Finance, Bloomberg, Reuters, Reddit, HackerNews, Eastmoney, Xueqiu, Substack, arXiv, etc.) | this skill |
If the source is not in opencli's registry either, stop and tell the user the request isn't covered — don't fall back to ad-hoc scraping.
Step 2: Ensure opencli Is Ready
Current environment status:
!`(command -v opencli && opencli doctor 2>&1 | head -5 && echo "READY" || echo "SETUP_NEEDED") 2>/dev/null || echo "NOT_INSTALLED"`
If NOT_INSTALLED:
npm install -g @jackwener/opencli
If SETUP_NEEDED, guide the user through Browser Bridge setup (only required for adapters whose strategy is COOKIE, HEADER, INTERCEPT, or UI — PUBLIC and LOCAL adapters work without a browser):
- Download the latest
opencli-extension-v{version}.zip from the GitHub Releases page
- Unzip it, open
chrome://extensions in Chrome, enable Developer mode
- Click Load unpacked and select the unzipped folder
- Make sure Chrome is logged into the target site, then re-run
opencli doctor
Requires Node.js >= 21 (or Bun >= 1.0).
Step 3: Discover the Right Command
Do not guess command names or flags — the registry has 500+ commands and changes weekly. Instead:
opencli list -f json
opencli list | grep -i <site>
opencli <site> --help
opencli <site> <command> --help
The opencli list -f json entry for each command includes:
site — adapter namespace (e.g., yahoo-finance)
name — subcommand (e.g., quote)
strategy — PUBLIC / COOKIE / HEADER / INTERCEPT / UI / LOCAL — tells you if a browser login is needed
description, args, columns — canonical metadata
Use opencli list -f json as the source of truth. Never paste a site list into the plan from memory; adapters are added every week.
Quick map of the most common finance / research sources
The table below is a shortlist, not exhaustive — always confirm with opencli <site> --help.
| Source | Site slug | Common commands |
|---|
| 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 | (see --help) |
| TDX / THS | tdx, ths | (see --help) |
| Barchart (options) | barchart | quote, options, flow, greeks |
| Reddit | 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 | (see --help) |
| arXiv | arxiv | (see --help) |
| Google Scholar | google-scholar | (see --help) |
| Weibo | weibo | (see --help) |
| Bilibili | bilibili | hot, video + more |
| Xiaohongshu (小红书) | xiaohongshu | (see --help) |
| Rednote (小红书 international) | rednote | (see --help — mirrors xiaohongshu) |
| Zhihu | zhihu | (see --help) |
| Tieba (百度贴吧) | tieba | (see --help) |
| Hupu (虎扑) | hupu | (see --help) |
| Xianyu (闲鱼) | xianyu | (see --help) |
| 1688 | 1688 | (see --help) |
| Gitee | gitee | (see --help) |
| Quark | quark | (see --help) |
| Baidu Scholar | baidu-scholar | (see --help) |
| Nowcoder | nowcoder | (see --help) |
| Wanfang | wanfang | (see --help) |
| Doubao (豆包) | doubao | (see --help) |
| Yuanbao (腾讯元宝) | yuanbao | (see --help) |
| Google Gemini | gemini | (see --help) |
| NotebookLM | notebooklm | (see --help) |
| Claude | claude | (see --help) |
| 36kr | 36kr | (see --help) |
| Jike | jike | (see --help) |
| Bluesky | bluesky | (see --help) |
| Apple Podcasts | apple-podcasts | (see --help) |
| Xiaoyuzhou (podcasts) | xiaoyuzhou | (see --help) |
| Spotify | spotify | (see --help) |
| YouTube | youtube | (see --help) |
| Weixin Official Account | weixin | (see --help — drafts is read; create-draft is write) |
| Toutiao | toutiao | articles |
| Government policy / law | gov-policy, gov-law | (see --help) |
| Web download / reader | web | read, download |
For anything not listed, run opencli list -f json and filter.
Step 4: Check the Adapter's Strategy Before Running
Run opencli list -f json (or opencli <site> <command> --help) and read the strategy field:
| Strategy | What it means | Preconditions |
|---|
PUBLIC | Pure HTTP; no browser needed | None |
LOCAL | Talks to a local endpoint | Local service running |
COOKIE / HEADER | Reuses your Chrome login for the site | Chrome logged into the site + Browser Bridge extension loaded |
INTERCEPT | Opens an automation window to capture a signed request | Same as COOKIE; be patient — may take several seconds |
UI | Full DOM interaction | Same as COOKIE; slowest; results depend on the site's current layout |
If the user doesn't have a login and the adapter's strategy is not PUBLIC / LOCAL, tell them they need to log into the site in Chrome before retrying.
Step 5: Execute the Command
General pattern
opencli <site> <command> [positional-args] [flags] -f json
Universal flags
| Flag | Effect |
|---|
-f json | Structured JSON — always prefer this for agent processing |
-f yaml / -f csv / -f md / -f table / -f plain | Other formats |
-v | Verbose logging (also sets OPENCLI_VERBOSE=1) |
--live | Keep the automation window open after the command (browser-backed adapters only) |
--focus | Open the automation window in the foreground (browser-backed adapters only) |
Command-specific flags (--limit, --filter, --type, etc.) are not universal — always check opencli <site> <command> --help.
Examples
opencli yahoo-finance quote AAPL -f json
opencli reddit subreddit wallstreetbets --limit 20 -f json
opencli reddit search "SPY options" --limit 15 -f json
opencli hackernews top --limit 20 -f json
opencli eastmoney hot-rank -f json
opencli xueqiu hot-stock -f json
opencli xueqiu stock SH600519 -f json
opencli bloomberg markets -f json
opencli arxiv search "volatility surface" --limit 10 -f json
opencli substack feed --limit 20 -f json
opencli web read "https://example.com/article" -f json
Key rules
- Always use
opencli <site> <command> --help before constructing a command you haven't run this session — don't assume flag names.
- Use
-f json for programmatic processing.
- Start with a small
--limit (10–20) to validate the shape before pulling more.
- Check
strategy before running a browser-backed adapter — if the user isn't logged in, a COOKIE / UI adapter will fail.
- NEVER execute write operations. Common write command names to avoid across adapters:
post, reply, comment, like, unlike, upvote, save, subscribe, unsubscribe, follow, unfollow, block, unblock, delete, bookmark, unbookmark, send, create-draft, reply-dm, accept. If you're unsure whether a command is read or write, check the description in opencli list -f json; if it suggests a mutation, skip it.
Step 6: Handle Failures
If a command returns empty or errors out, the site may have changed its selectors / API. opencli has a built-in self-repair loop:
OPENCLI_DIAGNOSTIC=1 opencli <site> <command> <args>
This emits a structured RepairContext that identifies the failing adapter's source path. Possible responses:
- If the user has the
opencli-autofix skill installed, tell them to run that skill.
- If not, suggest they file an issue at https://github.com/jackwener/opencli/issues with the
RepairContext output.
- Don't silently fall back to hand-rolled scraping — that hides the bug from the upstream registry.
Rate limits on the target site can also cause empty results; wait and retry.
Step 7: Present the Results
- Summarize the data for the user's actual question, don't just dump the raw JSON.
- Include source attribution — site name + URL for each item where available.
- For market data, surface price / % change / volume / market cap and flag anomalies.
- For news/posts, highlight headlines, timestamps, and key quotes.
- For research (arXiv, Scholar), include title, authors, abstract, and link.
- Treat browser sessions as private — never echo CDP endpoints, cookies, or auth tokens.
Reference Files
references/discovery.md — How to navigate opencli list, opencli <site> --help, and the JSON schema of registry entries
references/finance-sources.md — Detailed notes on the finance-heavy adapters (Yahoo Finance, Bloomberg, Eastmoney, Xueqiu, Barchart, Reuters, Reddit, HackerNews) and which commands are read vs write
Read these reference files when you need concrete examples for a specific site, or when the user asks for a capability not covered by one of the dedicated readers.