opencli-reader
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 — General-Purpose Read-Only Reading Skill for opencli
Skill Overview
opencli-reader is a read-only general-purpose fallback skill. When a data source has no dedicated reader skill, it reads the site’s public content through opencli’s adapter registry, covering 100+ sites including Yahoo Finance, Bloomberg, Reuters, Barchart, Eastmoney, Xueqiu, Reddit, Hacker News, Substack, arXiv, YouTube, Bilibili, Xiaohongshu, Zhihu, and more. It only reads data and will not perform any write operations such as posting, liking, following, or deleting.
Applicable Scenarios
- Providing AI agents with real-time data: When market quotes, trending lists, news headlines, or paper abstracts are needed, use a single command to obtain structured JSON (
-f json) and pass it directly to downstream processing, without writing your own scraper. - Cross-site public-opinion and trend collection: When monitoring Reddit discussions, Hacker News rankings, Eastmoney hot stocks, Xueqiu updates, Weibo or Zhihu trending lists simultaneously, use the same command style to read across sites, eliminating the need to maintain separate scraping logic for each platform.
- Reading content that requires login: Sites such as Bloomberg, Xueqiu, and Xiaohongshu require login sessions. opencli reuses existing logged-in Chrome sessions through Browser Bridge to read the content, eliminating the need to store account credentials in scripts.
Note: If the request concerns Twitter/X, LinkedIn, Discord, Telegram, or Y Combinator, use the corresponding dedicated skills (
twitter-reader,linkedin-reader,discord-reader,telegram-reader, andyc-reader). They provide more complete fields and more timely maintenance. opencli-reader is the fallback option for other platforms.
Core Features
- Generic adapter-based reading: Use the unified command format
opencli <site> <command> [args] [flags]to read any supported site. Combine it with-f jsonto output structured results for easy programmatic parsing. The commands and arguments listed byopencli list -f jsonare the sole source of truth. Sites and commands are added every week, so do not guess command names from memory. - Upfront strategy checks to avoid wasted attempts: The registry marks each command with a
strategyfield:PUBLIC/LOCALrequire no browser and can be accessed directly;COOKIE/HEADER/INTERCEPT/UIrequire Chrome to be logged in to the target site and the Browser Bridge extension to be installed. Check the strategy before execution to avoid most troubleshooting issues. - Self-repair path for failures: When a site redesign causes selectors to stop working or a command returns empty results, rerun it with
OPENCLI_DIAGNOSTIC=1. This outputs a structuredRepairContextidentifying the source location of the failed adapter. You can then use the opencli-autofix skill or file an issue with the upstream repository, rather than silently falling back to a one-off hardcoded scraper.
Frequently Asked Questions
Which websites does opencli-reader support? How does it differ from dedicated reader skills?
It covers the 100+ sites in opencli’s adapter registry. Financial sites include Yahoo Finance, Bloomberg, Reuters, Barchart, Eastmoney, Xueqiu, and Sina Finance. Content platforms include Reddit, Hacker News, Substack, Medium, arXiv, Google Scholar, YouTube, Bilibili, Xiaohongshu, Zhihu, Weibo, and more. The difference lies in their positioning: dedicated skills (twitter-reader, linkedin-reader, discord-reader, telegram-reader, and yc-reader) are tailored to individual platforms with more detailed fields and more timely adaptations; opencli-reader is the general-purpose fallback for platforms beyond those covered by the dedicated skills. For a complete and up-to-date site list, run opencli list -f json rather than relying on the examples in this document.
What needs to be installed before use? Is login required?
Node.js >= 20 (or Bun >= 1.0) is required. If it is not installed, run npm install -g @jackwener/opencli, then use opencli doctor to check the environment. Whether login is required depends on the command’s strategy: commands marked PUBLIC or LOCAL use pure HTTP or local services and do not require a browser; commands marked COOKIE, HEADER, INTERCEPT, or UI require Chrome to be logged in to the target site. Download opencli-extension from GitHub Releases, extract it, and enable it in chrome://extensions using “Load unpacked.” If you invoke one of these commands without being logged in, it will fail immediately—log in through Chrome first and try again.
Is this skill safe? Will it modify my account data?
The skill is designed to be read-only. It explicitly prohibits calling any write operations exposed by opencli, including post, reply, comment, like, upvote, save, subscribe, follow, delete, bookmark, send, create-draft, reply-dm, and accept. When uncertain, use the command’s description in opencli list -f json as the authority; skip any command whose description contains change-related semantics. Browser sessions are private data, so CDP endpoints, cookies, and authentication tokens must not be exposed during use.
Why did the reading return empty results?
There are three common causes. First, a site redesign may have caused the adapter’s selectors to stop working. In that case, rerun the command with OPENCLI_DIAGNOSTIC=1 opencli <site> <command> to obtain a RepairContext, then use the opencli-autofix skill or file an issue with the upstream project. Second, the target site may be rate-limiting requests; wait a while and try again. Third, the command’s strategy may require login while the current Chrome session is not logged in. Check the strategy field first, then complete the login if necessary. Regardless of the cause, do not bypass opencli by writing a temporary scraper—doing so will only conceal bugs in the upstream project.