mcpField
W
web-fetcher

web-fetcher

github.com/jiahao-shao1Productivity3958 installsUpdated 2w ago
Repository

About web-fetcher

A web-fetching skill that converts URLs into clean Markdown. It routes supported platforms through OpenCLI and uses a prioritized chain of markdown services for other pages.

Key features

  1. 01Fetch URLs as Markdown
  2. 02OpenCLI for known platforms
  3. 03Browser login state for supported sites
  4. 04Fallback chain for generic pages
  5. 05Platform discovery through OpenCLI

Use cases

  1. 01Reading a supported social post using browser login
  2. 02Converting a blog or documentation page to Markdown
  3. 03Trying alternate fetch methods after a short or failed result

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/jiahao-shao1/sjh-skills --skill web-fetcher

After installing, type/web-fetcherin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

.gitignore
LICENSE
README.md
README.zh-CN.md
evals/
trigger_eval.json

Details

From the project README

Web Fetcher

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.

Strategy Overview

  1. Known platforms (Twitter/X, zhihu, reddit, weibo, xiaohongshu, bilibili, etc.) → OpenCLI first. It uses the user's browser login state, is deterministic, and costs zero LLM tokens.
  2. Generic URLs (blogs, docs, articles) → Jina Reader > defuddle.md > markdown.new > WebFetch.

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).

Known Platform → OpenCLI Commands

URL PatternCommandNotes
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>

Dynamic Discovery

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

Generic Fallback Tools

For URLs that don't match a known platform, try these in order:

ToolHow to UseStrengthsWeaknesses
Jina Readercurl -s -H "Accept: text/markdown" "https://r.jina.ai/<url>"Best markdown quality, JS support20 req/min free limit
defuddle.mdcurl -s "https://defuddle.md/<url>"Good quality, by Obsidian creatorUndocumented limits
markdown.newcurl -s "https://markdown.new/<url>"Browser rendering fallback500 req/day
WebFetchBuilt-in tool, no curl neededNo setup neededNo JS rendering, poor on complex pages

Decision Guide

  • Known platform with login → OpenCLI first
  • Static article/blog → Jina Reader first
  • If a tool returns too-short content (<500 chars) → likely an error page, try next tool in chain
  • If Jina fails or is rate-limited → defuddle → markdown.new → WebFetch
  • If OpenCLI fails → fall back to the generic chain above

OpenCLI Setup

If opencli is not installed:

  1. npm i -g @jackwener/opencli
  2. Download browser extension from https://github.com/jackwener/opencli/releases
  3. Chrome → chrome://extensions → Developer mode → Load unpacked → select unzipped folder
  4. opencli doctor to verify

One-time setup. After installation, known platform URLs automatically use browser login state.

Limitations

  • WeChat articles partially supported via opencli weixin; proxy may be needed for some URLs behind GFW
  • OpenCLI requires browser extension setup (one-time)
  • Jina Reader free tier: 20 req/min
  • markdown.new: 500 req/day/IP

Comments

Markdown supported