Generic read-only fallback for any source opencli covers but
opencli Reader (Generic Fallback, Read-Only)

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,…
--- 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](https://github.com/jackwener/opencli) (100+ 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.
Overview
Generic fallback for any source opencli supports via its adapter registry (100+ 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.
Manual install (npx, ZIP)
npx skills add himself65/finance-skills --skill opencli-reader -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/himself65/finance-skills/tar.gz/0a5759bca1ea \
| tar -xz -C ~/.claude/skills --strip-components=4 finance-skills-0a5759bca1ea/plugins/social-readers/skills/opencli-readerNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/c92d653425197a8f40e0/opencli-reader.zip" -OutFile "$env:TEMP\opencli-reader.zip"; Expand-Archive "$env:TEMP\opencli-reader.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md11.8 KBREADME.md3.3 KBreferences/2 files · 11.8 KB
Read the files here
Show the full text262 lines
opencli Reader (Generic Fallback, Read-Only)
Generic fallback for any source opencli supports via its adapter registry (100+ 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-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}.zipfrom the GitHub Releases page - Unzip it, open
chrome://extensionsin 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 >= 20 (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:
# 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
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 neededdescription,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 |
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 |
(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
# 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
Key rules
- Always use
opencli <site> <command> --helpbefore constructing a command you haven't run this session — don't assume flag names. - Use
-f jsonfor programmatic processing. - Start with a small
--limit(10–20) to validate the shape before pulling more. - Check
strategybefore running a browser-backed adapter — if the user isn't logged in, aCOOKIE/UIadapter 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 thedescriptioninopencli 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:
# Re-run with diagnostic context
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-autofixskill installed, tell them to run that skill. - If not, suggest they file an issue at https://github.com/jackwener/opencli/issues with the
RepairContextoutput. - 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 navigateopencli list,opencli <site> --help, and the JSON schema of registry entriesreferences/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.
| 1 | |
| 2 | name opencli-reader |
| 3 | description > |
| 4 | Generic read-only fallback for any source opencli covers but this repo has no dedicated |
| 5 | reader for — Yahoo Finance, Bloomberg, Reuters, Barchart, Eastmoney, Xueqiu, Sinafinance, |
| 6 | Reddit, HackerNews, Substack, Medium, Weibo, Bilibili, Xiaohongshu, Zhihu, arXiv, |
| 7 | Google Scholar, Apple Podcasts, Xiaoyuzhou, Spotify, YouTube, Weixin, Amazon, and more. |
| 8 | Triggers "use opencli to read", "grab the frontpage from hackernews", |
| 9 | "read reddit r/wallstreetbets", "fetch Eastmoney hot stocks", "pull Xueqiu feed", |
| 10 | "get Bloomberg markets headlines", "search arXiv for", any request to read from a site |
| 11 | where a specialized skill does not exist but opencli does. |
| 12 | FALLBACK — prefer twitter-reader, linkedin-reader, discord-reader, telegram-reader, or |
| 13 | yc-reader when the source matches. READ-ONLY — never invoke write operations. |
| 14 | |
| 15 | |
| 16 | # opencli Reader (Generic Fallback, Read-Only) |
| 17 | |
| 18 | Generic fallback for any source opencli supports via its [adapter registry] (100+ 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. |
| 19 | |
| 20 | **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. |
| 21 | |
| 22 | |
| 23 | |
| 24 | ## Step 1: Decide Whether to Use This Skill |
| 25 | |
| 26 | Only use this skill if the request **cannot** be handled by a more specific skill. |
| 27 | |
| 28 | | If the user asks about… | Use this skill instead | |
| 29 | |---|---| |
| 30 | | Twitter/X | `twitter-reader` | |
| 31 | | LinkedIn | `linkedin-reader` | |
| 32 | | Discord | `discord-reader` | |
| 33 | | Telegram | `telegram-reader` | |
| 34 | | Y Combinator | `yc-reader` | |
| 35 | | Anything else opencli supports (Yahoo Finance, Bloomberg, Reuters, Reddit, HackerNews, Eastmoney, Xueqiu, Substack, arXiv, etc.) | **this skill** | |
| 36 | |
| 37 | 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. |
| 38 | |
| 39 | |
| 40 | |
| 41 | ## Step 2: Ensure opencli Is Ready |
| 42 | |
| 43 | **Current environment status:** |
| 44 | |
| 45 | |
| 46 | !`(command -v opencli && opencli doctor 2>&1 | head -5 && echo "READY" || echo "SETUP_NEEDED") 2>/dev/null || echo "NOT_INSTALLED"` |
| 47 | |
| 48 | |
| 49 | If `NOT_INSTALLED`: |
| 50 | |
| 51 | |
| 52 | npm install -g @jackwener/opencli |
| 53 | |
| 54 | |
| 55 | 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): |
| 56 | |
| 57 | Download the latest `opencli-extension-v{version}.zip` from the [GitHub Releases page] |
| 58 | Unzip it, open `chrome://extensions` in Chrome, enable **Developer mode** |
| 59 | Click **Load unpacked** and select the unzipped folder |
| 60 | Make sure Chrome is logged into the target site, then re-run `opencli doctor` |
| 61 | |
| 62 | Requires Node.js >= 20 (or Bun >= 1.0). |
| 63 | |
| 64 | |
| 65 | |
| 66 | ## Step 3: Discover the Right Command |
| 67 | |
| 68 | **Do not guess command names or flags** — the registry has 500+ commands and changes weekly. Instead: |
| 69 | |
| 70 | |
| 71 | # Full registry (grouped by site), machine-readable JSON |
| 72 | opencli list -f json |
| 73 | |
| 74 | # Filter to a site |
| 75 | opencli list | grep -i <site> |
| 76 | |
| 77 | # Site-level help (all commands + flags) |
| 78 | opencli <site> --help |
| 79 | |
| 80 | # Command-level help (positional args + flags + defaults) |
| 81 | opencli <site> <command> --help |
| 82 | |
| 83 | |
| 84 | The `opencli list -f json` entry for each command includes: |
| 85 | `site` — adapter namespace (e.g., `yahoo-finance`) |
| 86 | `name` — subcommand (e.g., `quote`) |
| 87 | `strategy` — `PUBLIC` / `COOKIE` / `HEADER` / `INTERCEPT` / `UI` / `LOCAL` — tells you if a browser login is needed |
| 88 | `description`, `args`, `columns` — canonical metadata |
| 89 | |
| 90 | 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. |
| 91 | |
| 92 | ### Quick map of the most common finance / research sources |
| 93 | |
| 94 | The table below is a **shortlist**, not exhaustive — always confirm with `opencli <site> --help`. |
| 95 | |
| 96 | | Source | Site slug | Common commands | |
| 97 | |---|---|---| |
| 98 | | Yahoo Finance | `yahoo-finance` | `quote` | |
| 99 | | Bloomberg | `bloomberg` | `markets`, `economics`, `industries`, `tech`, `politics`, `opinions`, `news`, `businessweek`, `feeds`, `main` | |
| 100 | | Reuters | `reuters` | `search` | |
| 101 | | Eastmoney (东方财富) | `eastmoney` | `quote`, `rank`, `kline`, `sectors`, `etf`, `holders`, `money-flow`, `northbound`, `longhu`, `kuaixun`, `convertible`, `index-board`, `announcement`, `hot-rank` | |
| 102 | | Xueqiu (雪球) | `xueqiu` | `stock`, `hot-stock`, `hot`, `feed`, `comments`, `watchlist`, `search`, `groups`, `fund-snapshot`, `fund-holdings`, `earnings-date`, `kline` | |
| 103 | | Sinafinance | `sinafinance` | (see `--help`) | |
| 104 | | TDX / THS | `tdx`, `ths` | (see `--help`) | |
| 105 | | Barchart (options) | `barchart` | `quote`, `options`, `flow`, `greeks` | |
| 106 | | Reddit | `reddit` | `hot`, `popular`, `frontpage`, `search`, `subreddit`, `read`, `user`, `user-posts`, `user-comments`, `saved` | |
| 107 | | HackerNews | `hackernews` | `top`, `best`, `new`, `ask`, `show`, `jobs`, `user`, `search` | |
| 108 | | Substack | `substack` | `feed`, `publication`, `search` | |
| 109 | | Medium | `medium` | (see `--help`) | |
| 110 | | arXiv | `arxiv` | (see `--help`) | |
| 111 | | Google Scholar | `google-scholar` | (see `--help`) | |
| 112 | | Weibo | `weibo` | (see `--help`) | |
| 113 | | Bilibili | `bilibili` | `hot`, `video` + more | |
| 114 | | Xiaohongshu (小红书) | `xiaohongshu` | (see `--help`) | |
| 115 | | Rednote (小红书 international) | `rednote` | (see `--help` — mirrors `xiaohongshu`) | |
| 116 | | Zhihu | `zhihu` | (see `--help`) | |
| 117 | | Tieba (百度贴吧) | `tieba` | (see `--help`) | |
| 118 | | Hupu (虎扑) | `hupu` | (see `--help`) | |
| 119 | | Xianyu (闲鱼) | `xianyu` | (see `--help`) | |
| 120 | | 1688 | `1688` | (see `--help`) | |
| 121 | | Gitee | `gitee` | (see `--help`) | |
| 122 | | Quark | `quark` | (see `--help`) | |
| 123 | | Baidu Scholar | `baidu-scholar` | (see `--help`) | |
| 124 | | Nowcoder | `nowcoder` | (see `--help`) | |
| 125 | | Wanfang | `wanfang` | (see `--help`) | |
| 126 | | Doubao (豆包) | `doubao` | (see `--help`) | |
| 127 | | Yuanbao (腾讯元宝) | `yuanbao` | (see `--help`) | |
| 128 | | Google Gemini | `gemini` | (see `--help`) | |
| 129 | | NotebookLM | `notebooklm` | (see `--help`) | |
| 130 | | Claude | `claude` | (see `--help`) | |
| 131 | | 36kr | `36kr` | (see `--help`) | |
| 132 | | Jike | `jike` | (see `--help`) | |
| 133 | | Bluesky | `bluesky` | (see `--help`) | |
| 134 | | Apple Podcasts | `apple-podcasts` | (see `--help`) | |
| 135 | | Xiaoyuzhou (podcasts) | `xiaoyuzhou` | (see `--help`) | |
| 136 | | Spotify | `spotify` | (see `--help`) | |
| 137 | | YouTube | `youtube` | (see `--help`) | |
| 138 | | Weixin Official Account | `weixin` | (see `--help` — `drafts` is read; `create-draft` is write) | |
| 139 | | Toutiao | `toutiao` | `articles` | |
| 140 | | Government policy / law | `gov-policy`, `gov-law` | (see `--help`) | |
| 141 | | Web download / reader | `web` | `read`, `download` | |
| 142 | |
| 143 | For anything not listed, run `opencli list -f json` and filter. |
| 144 | |
| 145 | |
| 146 | |
| 147 | ## Step 4: Check the Adapter's Strategy Before Running |
| 148 | |
| 149 | Run `opencli list -f json` (or `opencli <site> <command> --help`) and read the `strategy` field: |
| 150 | |
| 151 | | Strategy | What it means | Preconditions | |
| 152 | |---|---|---| |
| 153 | | `PUBLIC` | Pure HTTP; no browser needed | None | |
| 154 | | `LOCAL` | Talks to a local endpoint | Local service running | |
| 155 | | `COOKIE` / `HEADER` | Reuses your Chrome login for the site | Chrome logged into the site + Browser Bridge extension loaded | |
| 156 | | `INTERCEPT` | Opens an automation window to capture a signed request | Same as COOKIE; be patient — may take several seconds | |
| 157 | | `UI` | Full DOM interaction | Same as COOKIE; slowest; results depend on the site's current layout | |
| 158 | |
| 159 | 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. |
| 160 | |
| 161 | |
| 162 | |
| 163 | ## Step 5: Execute the Command |
| 164 | |
| 165 | ### General pattern |
| 166 | |
| 167 | |
| 168 | opencli <site> <command> [positional-args] [flags] -f json |
| 169 | |
| 170 | |
| 171 | ### Universal flags |
| 172 | |
| 173 | | Flag | Effect | |
| 174 | |---|---| |
| 175 | | `-f json` | Structured JSON — always prefer this for agent processing | |
| 176 | | `-f yaml` / `-f csv` / `-f md` / `-f table` / `-f plain` | Other formats | |
| 177 | | `-v` | Verbose logging (also sets `OPENCLI_VERBOSE=1`) | |
| 178 | | `--live` | Keep the automation window open after the command (browser-backed adapters only) | |
| 179 | | `--focus` | Open the automation window in the foreground (browser-backed adapters only) | |
| 180 | |
| 181 | Command-specific flags (`--limit`, `--filter`, `--type`, etc.) are **not** universal — always check `opencli <site> <command> --help`. |
| 182 | |
| 183 | ### Examples |
| 184 | |
| 185 | |
| 186 | # Yahoo Finance quote (PUBLIC) |
| 187 | opencli yahoo-finance quote AAPL -f json |
| 188 | |
| 189 | # Reddit hot posts in a subreddit (COOKIE or PUBLIC depending on subreddit) |
| 190 | opencli reddit subreddit wallstreetbets --limit 20 -f json |
| 191 | opencli reddit search "SPY options" --limit 15 -f json |
| 192 | |
| 193 | # HackerNews top (PUBLIC) |
| 194 | opencli hackernews top --limit 20 -f json |
| 195 | |
| 196 | # Eastmoney hot rank (PUBLIC) |
| 197 | opencli eastmoney hot-rank -f json |
| 198 | |
| 199 | # Xueqiu hot stocks (PUBLIC or COOKIE) |
| 200 | opencli xueqiu hot-stock -f json |
| 201 | opencli xueqiu stock SH600519 -f json |
| 202 | |
| 203 | # Bloomberg markets headlines (COOKIE) |
| 204 | opencli bloomberg markets -f json |
| 205 | |
| 206 | # arXiv paper search (PUBLIC) |
| 207 | opencli arxiv search "volatility surface" --limit 10 -f json |
| 208 | |
| 209 | # Substack feed |
| 210 | opencli substack feed --limit 20 -f json |
| 211 | |
| 212 | # Web page → readable markdown (PUBLIC) |
| 213 | opencli web read "https://example.com/article" -f json |
| 214 | |
| 215 | |
| 216 | ### Key rules |
| 217 | |
| 218 | **Always use `opencli <site> <command> --help`** before constructing a command you haven't run this session — don't assume flag names. |
| 219 | **Use `-f json`** for programmatic processing. |
| 220 | **Start with a small `--limit`** (10–20) to validate the shape before pulling more. |
| 221 | **Check `strategy` before running a browser-backed adapter** — if the user isn't logged in, a `COOKIE` / `UI` adapter will fail. |
| 222 | **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. |
| 223 | |
| 224 | |
| 225 | |
| 226 | ## Step 6: Handle Failures |
| 227 | |
| 228 | If a command returns empty or errors out, the site may have changed its selectors / API. opencli has a built-in self-repair loop: |
| 229 | |
| 230 | |
| 231 | # Re-run with diagnostic context |
| 232 | OPENCLI_DIAGNOSTIC=1 opencli <site> <command> <args> |
| 233 | |
| 234 | |
| 235 | This emits a structured `RepairContext` that identifies the failing adapter's source path. Possible responses: |
| 236 | |
| 237 | If the user has the `opencli-autofix` skill installed, tell them to run that skill. |
| 238 | If not, suggest they file an issue at https://github.com/jackwener/opencli/issues with the `RepairContext` output. |
| 239 | Don't silently fall back to hand-rolled scraping — that hides the bug from the upstream registry. |
| 240 | |
| 241 | Rate limits on the target site can also cause empty results; wait and retry. |
| 242 | |
| 243 | |
| 244 | |
| 245 | ## Step 7: Present the Results |
| 246 | |
| 247 | **Summarize the data** for the user's actual question, don't just dump the raw JSON. |
| 248 | **Include source attribution** — site name + URL for each item where available. |
| 249 | **For market data**, surface price / % change / volume / market cap and flag anomalies. |
| 250 | **For news/posts**, highlight headlines, timestamps, and key quotes. |
| 251 | **For research (arXiv, Scholar)**, include title, authors, abstract, and link. |
| 252 | **Treat browser sessions as private** — never echo CDP endpoints, cookies, or auth tokens. |
| 253 | |
| 254 | |
| 255 | |
| 256 | ## Reference Files |
| 257 | |
| 258 | `references/discovery.md` — How to navigate `opencli list`, `opencli <site> --help`, and the JSON schema of registry entries |
| 259 | `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 |
| 260 | |
| 261 | 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. |
| 262 |
Details
- Updated
- Aug 27, 2026
- License
- MIT
- Stars on the repo
- ★ 3,347
- Checked
- Source
- himself65/finance-skills ↗
- Creator
- himself65 · 24 listings
Similar skills
See all →
SkillResearch what people actually say about any topicSTEP 0: STALE-CLONE SELF-CHECK — RUN BEFORE READING BELOW
SkillScrapes social platforms, business dataApify
Skill微信公众号长文增长闭环 ——
SkillSearch and retrieve content from Twitter/XTwitter/X Skill
SkillSays 'YouTube script', 'video script'🎬 YouTube Script: Writing retention-optimized video script...
SkillAgent Reach — 互联网能力路由器More from himself65
SkillEstimate the intrinsic value of a public company using DCFCompany valuation
SkillRead Discord for financial research using opencliDiscord Skill (Read-Only)
SkillGenerate a pre-earnings briefing for any stock using YahooEarnings Preview Skill
SkillGenerate a post-earnings analysis for any stock using YahooEarnings Recap Skill
SkillDeep-dive into analyst estimates and revision trends for anyEstimate Analysis Skill
SkillCalculate ETF premium/discount vs NAV via Yahoo FinanceETF Premium/Discount Analysis Skill