> 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. "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.
npx skills add https://github.com/himself65/finance-skills --skill opencli-reader
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.
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.
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):
opencli-extension-v{version}.zip from the GitHub Releases pagechrome://extensions in Chrome, enable Developer modeopencli doctorRequires Node.js >= 21 (or Bun >= 1.0).
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 metadataUse opencli list -f json as the source of truth. Never paste a site list into the plan from memory; adapters are added every week.
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.
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.
opencli <site> <command> [positional-args] [flags] -f json
| 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.
# 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 before constructing a command you haven't run this session — don't assume flag names.-f json for programmatic processing.--limit (10–20) to validate the shape before pulling more.strategy before running a browser-backed adapter — if the user isn't logged in, a COOKIE / UI adapter will fail.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.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:
opencli-autofix skill installed, tell them to run that skill.RepairContext output.Rate limits on the target site can also cause empty results; wait and retry.
references/discovery.md — How to navigate opencli 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 writeRead 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.
Analyzes meeting transcripts and recordings to uncover behavioral patterns, communication insights, and actionable feedback. Identifies when you avoid conflict, use filler words, dominate conversations, or miss opportunities to listen. Perfect for professionals seeking to improve their communication and leadership skills.
Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y".
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack.
A skill that creates new Claude skills and automatically shares them on Slack using Rube for seamless team collaboration and skill discovery.
Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include "automate Slack app", "control VS Code", "interact with Discord app", "test this Electron app", "connect to desktop app", or any task requiring automation of a native Electron application.
Prepare meeting materials with Notion context and Codex research; use when gathering context, drafting agendas/pre-reads, and tailoring materials to attendees.
Interactive daily standup/meeting update generator. Use when user says 'daily', 'standup', 'scrum update', 'status update', 'what did I do yesterday', 'prepare for meeting', 'morning update', or 'team sync'. Pulls activity from GitHub, Jira, and Claude Code session history. Conducts 4-question interview (yesterday, today, blockers, discussion topics) and generates formatted Markdown update.
Take himself65/opencli-reader from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm.
Without those the skill loads but fails at the first command.