web-fetch-linkup
SKILL.md
Web Fetch with Linkup
Fetch clean web content via the Linkup API using a standalone Python script.
Prerequisites
A .env file in the skill directory (.claude/skills/web-fetch-linkup/.env) with:
LINKUP_API_KEY=your_api_key_here
See .env.example for the template.
Workflow
Step 1: Collect the URL
Get the URL from the user via AskUserQuestion or directly if provided in the request.
Step 2: Fetch the content
Run the script using Bash:
python3 .claude/skills/web-fetch-linkup/fetch.py "<URL>"
Options:
| Flag | Effect |
|---|---|
--no-render-js |
Disable JavaScript rendering (default: enabled) |
--extract-images |
Include image URLs in output |
--include-raw-html |
Include raw HTML in output |
Examples:
# Standard fetch (JS rendering enabled)
python3 .claude/skills/web-fetch-linkup/fetch.py "https://example.com/article"
# Static page, faster
python3 .claude/skills/web-fetch-linkup/fetch.py "https://example.com" --no-render-js
# With images
python3 .claude/skills/web-fetch-linkup/fetch.py "https://example.com" --extract-images
Step 3: Parse the response
The script outputs JSON on stdout with:
url— The fetched URLmarkdown— The extracted content in Markdown formatimages— (only with--extract-images) List of image URLsrawHtml— (only with--include-raw-html) Raw HTML source
Step 4: Save the content
Create a file in fetched-content/ with the format:
Filename: {domain}-{YYYYMMDD-HHmmss}.md
Structure:
---
source: <URL>
fetched_at: <ISO timestamp>
---
# <Title inferred from content>
<Extracted markdown content>
Step 5: Confirm
Inform the user of the created file path.
Exit codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | .env missing or LINKUP_API_KEY not set |
| 3 | 401 — Invalid or expired API key |
| 4 | 429 — Rate limit exceeded |
| 5 | Other HTTP error |
| 6 | Network error (DNS, timeout, etc.) |
Error handling
| Error | Action |
|---|---|
| Exit 1 | Check .claude/skills/web-fetch-linkup/.env exists with LINKUP_API_KEY |
| Exit 3 | API key is invalid or expired — get a new one at https://app.linkup.so |
| Exit 4 | Rate limit — wait before retrying |
| Exit 5 | Check stderr for HTTP status details |
| Exit 6 | Network issue — retry with --no-render-js if timeout |
Usage examples
Fetch an article:
"Fetch the content of https://example.com/article"
Fetch documentation:
"Use linkup to scrape https://docs.example.com/api"
Dynamic page:
"Extract content from this React page: https://app.example.com/dashboard"
Weekly Installs
3
Repository
romainjeff/link…ch-skillFirst Seen
Feb 11, 2026
Security Audits
Installed on
github-copilot3
codex3
kimi-cli3
gemini-cli3
amp3
opencode3