From sjh-skills
Fetches any URL as clean markdown, using OpenCLI for login-walled platforms (Twitter, zhihu, reddit, etc.) and Jina Reader/defuddle.md for generic pages.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sjh-skills:web-fetcherThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Fetch any URL as clean markdown. Two paths: known platforms go through OpenCLI (uses browser login state), everything else falls back through a chain of free markdown services.
Fetch any URL as clean markdown. Two paths: known platforms go through OpenCLI (uses browser login state), everything else falls back through a chain of free markdown services.
These are soft priorities — skip obviously wrong strategies (e.g., don't try OpenCLI for a random blog post, don't try Jina for a login-walled zhihu page).
| URL Pattern | Command | Notes |
|---|---|---|
x.com/.../status/<id> | opencli twitter thread <id> | Tweet threads. If the result is just a t.co link (very short text), the tweet likely links to an X Article — retry with opencli twitter article <same-id> |
x.com/.../article/<id> or x.com/i/article/<id> | opencli twitter article <id> | X Article long-form |
zhihu.com/question/<id> | opencli zhihu question <id> | |
zhuanlan.zhihu.com/p/<id> | opencli zhihu download <full-url> | |
reddit.com/r/.../comments/... | opencli reddit read <full-url> | |
weibo.com/... | opencli weibo search <query> | |
xiaohongshu.com/... | opencli xiaohongshu download <id> | |
bilibili.com/video/BV... | opencli bilibili download <bvid> |
The table above covers high-frequency platforms. OpenCLI supports 80+ platforms. For anything not listed:
# See all supported platforms
opencli --help
# See subcommands for a specific platform
opencli <platform> --help
For URLs that don't match a known platform, try these in order:
| Tool | How to Use | Strengths | Weaknesses |
|---|---|---|---|
| Jina Reader | curl -s -H "Accept: text/markdown" "https://r.jina.ai/<url>" | Best markdown quality, JS support | 20 req/min free limit |
| defuddle.md | curl -s "https://defuddle.md/<url>" | Good quality, by Obsidian creator | Undocumented limits |
| markdown.new | curl -s "https://markdown.new/<url>" | Browser rendering fallback | 500 req/day |
| WebFetch | Built-in tool, no curl needed | No setup needed | No JS rendering, poor on complex pages |
If opencli is not installed:
npm i -g @jackwener/openclichrome://extensions → Developer mode → Load unpacked → select unzipped folderopencli doctor to verifyOne-time setup. After installation, known platform URLs automatically use browser login state.
opencli weixin; proxy may be needed for some URLs behind GFWnpx claudepluginhub jiahao-shao1/sjh-skills --plugin sjh-skillsReads public URLs into clean Markdown with platform-aware fallback strategies for WeChat, Zhihu, Bilibili, X/Twitter, and generic sites using Jina Reader, WebFetch, Playwright.
Extracts clean Markdown from any URL using ezycopy CLI. Handles JS-rendered pages with headless Chrome, retries on failure, and auto-installs tool if needed.
Fetches any URL and converts to clean markdown using baoyu-fetch CLI (Chrome CDP with site-specific adapters). Built-in support for X/Twitter, YouTube transcripts, Hacker News, and generic pages. Handles login/CAPTCHA via interaction wait modes.