Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Fetch and analyze web content using a specialised extraction workflow that converts HTML to clean markdown, extracts main article content, handles images and links, and provides AI analysis. Use this when you need cleaner page extraction than a raw fetch, when comparing a small set of URLs, or when the user asks to fetch, extract, analyse, summarise, or compare web pages. Prefer native web_fetch for straightforward cooperative pages; if the target URL is blocked by anti-bot or JS-only rendering,
.claude/skills/valtterimelkko-webfetch-skill/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 78% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 178% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 6% | 0% |
Fetch and analyze web content by calling a specialized sub-agent that uses the webfetch script.
Use this as a clean single-page / few-page extraction tier:
web_fetch for quick cooperative pagescamofox before escalating to any paid proxy pathTo fetch and analyze web content, invoke the webfetch sub-agent:
Fetch a single URL: > Fetch and summarize: https://example.com
Fetch multiple URLs (max 5): > Fetch and compare: https://example.com and https://example2.com
Analyze specific content: > What are the main points on: https://example.com/article
Extract specific information: > Extract all email addresses from: https://example.com/contact
The sub-agent will:
Keep the order narrow and cheap:
web_fetch or this script workflow first.camofox.camofox also fails and the blocked URL is genuinely important, ask before using residential-proxy.Do not automatically turn a small fetch task into a proxy-backed workflow.
The webfetch script requires these Python packages:
bashpip install --break-system-packages trafilatura requests beautifulsoup4
trafilatura - Main content extraction and HTML→markdown conversion requests - HTTP client for fetching URLs beautifulsoup4 - Link and image extraction
This approach avoids external APIs and local LLMs while providing intelligent analysis.
CRITICAL: When you are the sub-agent for this skill, you MUST follow these instructions exactly:
webfetch function - Use the Python script insteadWhen asked to fetch web content, follow this EXACT process:
Step 1: Run the webfetch.py script
bashpython3 ./skills/webfetch-skill/scripts/webfetch.py --url "URL_HERE" --output ./tmp/webfetch-skill/FILENAME.md
For multiple URLs (max 5), run separately for each URL or use --url multiple times:
bashpython3 ./skills/webfetch-skill/scripts/webfetch.py --url "URL1" --url "URL2" --url "URL3" --output ./tmp/webfetch-skill/output.md
Step 2: Read the generated markdown file(s)
bashUse the Read tool to read: ./tmp/webfetch-skill/FILENAME.md
Step 3: Analyze the content
Step 4: Return results
./skills/webfetch-skill/scripts/webfetch.py./tmp/webfetch-skill/When invoking this sub-agent, use a prompt like:
Fetch and analyze content from these URLs using the webfetch script:
- https://example.com/page1
- https://example.com/page2
DO NOT use MCP tools. Use ONLY the python3 script at ./skills/webfetch-skill/scripts/webfetch.py.
Save output to ./tmp/webfetch-skill/ and read the files.You can also run the webfetch script directly without the sub-agent:
bash# Basic fetch python3 scripts/webfetch.py --url "https://example.com" # Multiple URLs python3 scripts/webfetch.py --url "https://example.com" --url "https://example2.com" # Disable cache python3 scripts/webfetch.py --url "https://example.com" --no-cache # Set timeout python3 scripts/webfetch.py --url "https://example.com" --timeout 30 # Save to file python3 scripts/webfetch.py --url "https://example.com" --output content.md
| Parameter | Required | Default | Description | |-----------|----------|---------|-------------| | --url, -u | Yes | - | URL to fetch (can be specified multiple times, max 5) | | --cache, -c | No | true | Enable/disable 15-minute cache | | --no-cache | No | - | Disable caching (alias for --cache=false) | | --timeout, -t | No | 10 | Request timeout in seconds | | --output, -o | No | - | Save output to file instead of stdout |
Trafilatura automatically identifies the main article body and removes boilerplate (navigation, ads, footers).
Extracts up to 10 images with:
Extracts up to 20 links with:
[text](url)15-minute file-based cache in ./tmp/webfetch-skill/:
When running the script directly, output is in markdown:
markdown# https://example.com _(from cache)_ ## Content Main content extracted from the page... ## Images - **Image Alt**: https://example.com/image.jpg ## Links - [Link Text](https://example.com/page)
When using the sub-agent, you get AI analysis instead of raw content.
Cannot access:
Potential issues:
The script handles common errors gracefully:
Errors are included in markdown output so sub-agent can inform you.
For optimal results:
--timeout 30)Example effective prompts:
This skill includes:
scripts/webfetch.py - Main fetch script with content extraction
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,595 | 6,868 | +23% | 1 | 1 | 0% | 806 | 2,434 | +202% | 0 | 0 | — |
case-02 | fail→fail | 8,066 | 7,451 | -8% | 1 | 1 | 0% | 888 | 2,661 | +200% | 0 | 0 | — |
case-03 | fail→fail | 4,628 | 5,415 | +17% | 1 | 1 | 0% | 781 | 2,359 | +202% | 0 | 0 | — |
case-04 | pass→pass | 10,483 | 2,695 | -74% | 1 | 1 | 0% | 1,745 | 2,508 | +44% | 0 | 0 | — |
case-05 | fail→pass | 8,267 | 2,131 | -74% | 1 | 1 | 0% | 1,355 | 2,414 | +78% | 0 | 0 | — |
case-06 | pass→pass | 12,085 | 2,419 | -80% | 1 | 1 | 0% | 1,795 | 2,447 | +36% | 0 | 0 | — |
case-07 | pass→pass | 2,169 | 9,677 | +346% | 1 | 1 | 0% | 291 | 2,700 | +828% | 0 | 0 | — |
case-08 | pass→pass | 2,516 | 7,642 | +204% | 1 | 1 | 0% | 343 | 2,648 | +672% | 0 | 0 | — |
case-09 | fail→fail | 11,364 | 9,451 | -17% | 1 | 1 | 0% | 373 | 2,501 | +571% | 0 | 0 | — |
case-10 | fail→pass | 5,745 | 3,181 | -45% | 1 | 1 | 0% | 963 | 2,673 | +178% | 0 | 0 | — |
case-11 | pass→pass | 3,969 | 1,789 | -55% | 1 | 1 | 0% | 713 | 2,410 | +238% | 0 | 0 | — |
case-12 | pass→pass | 10,751 | 4,145 | -61% | 1 | 1 | 0% | 2,028 | 2,394 | +18% | 0 | 0 | — |
case-13 | pass→pass | 3,606 | 1,996 | -45% | 1 | 1 | 0% | 669 | 2,436 | +264% | 0 | 0 | — |
case-14 | fail→pass | 7,792 | 1,802 | -77% | 1 | 1 | 0% | 1,363 | 2,334 | +71% | 0 | 0 | — |
case-15 | fail→pass | 11,202 | 2,291 | -80% | 1 | 1 | 0% | 1,585 | 2,335 | +47% | 0 | 0 | — |
case-16 | pass→pass | 8,020 | 1,683 | -79% | 1 | 1 | 0% | 1,182 | 2,310 | +95% | 0 | 0 | — |
case-17 | pass→pass | 7,909 | 2,645 | -67% | 1 | 1 | 0% | 1,245 | 2,500 | +101% | 0 | 0 | — |
case-18 | pass→pass | 13,733 | 1,361 | -90% | 1 | 1 | 0% | 2,091 | 2,252 | +8% | 0 | 0 | — |
case-19 | fail→pass | 12,810 | 1,452 | -89% | 1 | 1 | 0% | 2,145 | 2,267 | +6% | 0 | 0 | — |
case-20 | fail→pass | 10,668 | 2,971 | -72% | 1 | 1 | 0% | 1,948 | 2,534 | +30% | 0 | 0 | — |
case-21 | pass→pass | 9,476 | 2,586 | -73% | 1 | 1 | 0% | 1,873 | 2,539 | +36% | 0 | 0 | — |
case-22 | fail→pass | 4,856 | 2,156 | -56% | 1 | 1 | 0% | 789 | 2,350 | +198% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.