web-fetch

Solid

Fetches web content as clean markdown by preferring markdown-native responses and falling back to selector-based HTML extraction. Use for documentation, articles, and reference pages at http/https URLs.

Web & Frontend 400 stars 39 forks Updated today

Install

View on GitHub

Quality Score: 79/100

Stars 20%
87
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
80
License 10%
0
Description 5%
100

Skill Content

# Web Content Fetching Fetch web content in this order: 1. Prefer markdown-native endpoints (`content-type: text/markdown`) 2. Use selector-based HTML extraction for known sites 3. Use the bundled Bun fallback script when selectors fail ## Prerequisites Verify required tools before extracting: ```bash command -v curl >/dev/null || echo "curl is required" command -v html2markdown >/dev/null || echo "html2markdown is required for HTML extraction" command -v bun >/dev/null || echo "bun is required for fetch.ts fallback" ``` Install Bun dependencies for the bundled script: ```bash cd ~/.claude/skills/web-fetch && bun install ``` ## Default Workflow Use this as the default flow for any URL: ```bash URL="<url>" CONTENT_TYPE="$(curl -sIL "$URL" | awk -F': ' 'tolower($1)=="content-type"{print tolower($2)}' | tr -d '\r' | tail -1)" if echo "$CONTENT_TYPE" | grep -q "markdown"; then curl -sL "$URL" else curl -sL "$URL" \ | html2markdown \ --include-selector "article,main,[role=main]" \ --exclude-selector "nav,header,footer,script,style" fi ``` ## Known Site Selectors | Site | Include Selector | Exclude Selector | |------|------------------|------------------| | platform.claude.com | `#content-container` | - | | docs.anthropic.com | `#content-container` | - | | developer.mozilla.org | `article` | - | | github.com (docs) | `article` | `nav,.sidebar` | | Generic | `article,main,[role=main]` | `nav,header,footer,script,style` | Example: ```bash curl -s...

Details

Author
aiskillstore
Repository
aiskillstore/marketplace
Created
7 months ago
Last Updated
today
Language
Python
License
None

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category

Data & Documents Solid

fetch-url-as-markdown

Fetch a web page (URL) and return clean Markdown via local trafilatura, with Exa MCP as a fallback for JS-rendered or anti-bot pages. Use when the user asks to read, fetch, scrape, summarize, or quote a URL — prefer this over the built-in WebFetch tool. Don't use for binary files (PDFs, images, archives) or for fetching API/JSON endpoints.

109 Updated today
CodeAlive-AI
AI & Automation Listed

ultra-fetch

Fetch, crawl, or map web pages into clean, context-efficient markdown saved to a file — using a stealth browser that reaches sites the built-in WebFetch can't (bot-protected, Cloudflare, JS-rendered), plus BM25 filtering that keeps only the parts relevant to a query. Use this as the default for actually reading a web page's content, following a search result deeper, reading across a whole site, or discovering what URLs a site has — especially after a WebSearch, or whenever WebFetch is blocked, returns junk, or you need the result saved to disk. NOT for a trivial quick fact where WebFetch already suffices, NOT for logged-in or authenticated pages (out of scope — use the dedicated scrape-x / scrape-fb tools for X and Facebook), and NOT for developing the ultra-fetch tool itself, which is ordinary repo work.

0 Updated 5 days ago
tjdwls101010
Web & Frontend Listed

browser-fetch

Fetch a web page with a real headless Chrome browser (undetected-chromedriver) for two cases WebFetch can't handle. (1) Anti-bot blocking — a 403, a bot-check/"Just a moment" page, or Cloudflare/PerimeterX challenges. (2) JavaScript-rendered pages where WebFetch comes back empty, truncated, or as a shell because the content is built client-side (single-page apps, Swagger/ReDoc/other API docs, dashboards). It renders the page, waits for the JS to settle, and extracts the resulting text. Maintains a persistent per-machine browser profile so bot-challenge cookies persist across fetches instead of re-triggering the challenge every time. Use as a fallback after WebFetch fails OR returns unusable/empty content — not as a first choice, since it's much slower. Fetch-only, not interactive (no clicking/form-filling). Does NOT help with geo-blocking or content behind a login.

0 Updated 2 days ago
malako