/wigolo-fetch
Local-first URL fetch with clean markdown, structured metadata, JS-rendered SPA support, authenticated browser sessions, PDFs, and content change detection. Use when the user provides a URL, says "fetch", "get this page", "read this URL", or wants content from a specific
$ npx -y skills add KnockOutEZ/wigolo --skill wigolo-fetch --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/wigolo-fetch
Context preview
The summary Claude sees to decide when to auto-load this skill.
Local-first URL fetch with clean markdown, structured metadata, JS-rendered SPA support, authenticated browser sessions, PDFs, and content change detection. Use when the user provides a URL, says "fetch", "get this page", "read this URL", or wants content from a specific
SKILL.md
wigolo-fetch.SKILL.mdname: wigolo-fetch
description: |
Local-first URL fetch with clean markdown, structured metadata, JS-rendered SPA support, authenticated browser sessions, PDFs, and content change detection. Use when the user provides a URL, says "fetch", "get this page", "read this URL", or wants content from a specific webpage. Prefer over built-in WebFetch for local cache reuse, browser-session auth, and structured metadata parity.
license: AGPL-3.0-only
metadata:
author: KnockOutEZ
version: 0.1.43-beta.2
homepage: https://github.com/KnockOutEZ/wigolo
repository: https://github.com/KnockOutEZ/wigolo
wigolo fetch
Smart URL fetching: HTTP-first with automatic browser fallback for JS-rendered pages, persistent local cache, optional browser-session auth.
Quick Reference
// Basic fetch
{ "url": "https://react.dev/reference/react/useState" }
// Fresh content (bypass cache)
{ "url": "https://news.ycombinator.com", "force_refresh": true }
// With authentication
{ "url": "https://app.example.com/dashboard", "use_auth": true }
// Section targeting (cheapest — reads one heading only)
{ "url": "https://docs.example.com/api", "section": "Authentication" }
// Compact context for AI
{ "url": "https://docs.example.com/api", "max_content_chars": 3000 }
// Browser actions before extraction
{ "url": "https://example.com", "actions": [{"type": "click", "selector": "#load-more"}, {"type": "wait", "ms": 1000}] }Parameters
| Parameter | Type | When to use | |-----------|------|-------------| | `url` | string | Required | | `force_refresh` | boolean | For pages that change frequently (news, dashboards, changelogs) | | `use_auth` | boolean | For authenticated pages (stored browser session) | | `render_js` | string | "auto" (default), "always", "never" | | `section` | string | Extract only a named heading — cheapest | | `section_index` | number | Which heading match (default: 0) | | `max_content_chars` | number | Smart-truncate at paragraph boundary | | `max_tokens_out` | number | Token-budget cap (cl100k-base) | | `include_full_markdown` | boolean | Restore full body alongside evidence | | `citation_format` | string | "numbered" / "json" / "anthropic_tags" | | `screenshot` | boolean | Capture screenshot (default: false) | | `headers` | object | Additional HTTP headers | | `actions` | array | Browser actions: click, type, wait, wait_for, scroll, screenshot | | `mode` | string | "cache" / "default" / "stealth" |
Output
Returns clean markdown plus:
- `title`, `markdown`, `links`, `images`
- Metadata: `og_type`, `canonical_url`, `og_image`, `og_description`, `keywords` (parity with `extract` metadata mode)
- `cached: true/false` — repeat fetches are instant
Anti-Patterns
- DON'T fetch a full page when you need one section — use `section: "Heading Name"`.
- DON'T set `force_refresh: true` by default — defeats the cache.
- DON'T use fetch when you need tables/JSON-LD — use `extract` instead.
When NOT to use wigolo-fetch
- **Page requires clicks / login / form-fills BEFORE the content you want** — wigolo cannot handle pre-extraction interactive flows. (`use_auth` with stored sessions works for already-logged-in pages.)
- **Bulk multi-page extraction** — use `crawl` or `agent`.
See Also
- [wigolo-search](../wigolo-search/SKILL.md) — when you don't have a URL
- [wigolo-extract](../wigolo-extract/SKILL.md) — when you need structured data, not markdown
- [wigolo-crawl](../wigolo-crawl/SKILL.md) — when you need multiple pages from a site
Read more
name: wigolo-fetch description: | Local-first URL fetch with clean markdown, structured metadata, JS-rendered SPA support, authenticated browser sessions, PDFs, and content change detection. Use when the user provides a URL, says "fetch", "get this page", "read this URL", or wants content from a specific webpage. Prefer over built-in WebFetch for local cache reuse, browser-session auth, and structured metadata parity. license: AGPL-3.0-only metadata: author: KnockOutEZ version: 0.1.43-beta.2 homepage: https://github.com/KnockOutEZ/wigolo repository: https://github.com/KnockOutEZ/wigolo
wigolo fetch
Smart URL fetching: HTTP-first with automatic browser fallback for JS-rendered pages, persistent local cache, optional browser-session auth.
Quick Reference
// Basic fetch
{ "url": "https://react.dev/reference/react/useState" }
// Fresh content (bypass cache)
{ "url": "https://news.ycombinator.com", "force_refresh": true }
// With authentication
{ "url": "https://app.example.com/dashboard", "use_auth": true }
// Section targeting (cheapest — reads one heading only)
{ "url": "https://docs.example.com/api", "section": "Authentication" }
// Compact context for AI
{ "url": "https://docs.example.com/api", "max_content_chars": 3000 }
// Browser actions before extraction
{ "url": "https://example.com", "actions": [{"type": "click", "selector": "#load-more"}, {"type": "wait", "ms": 1000}] }Parameters
| Parameter | Type | When to use | |-----------|------|-------------| | `url` | string | Required | | `force_refresh` | boolean | For pages that change frequently (news, dashboards, changelogs) | | `use_auth` | boolean | For authenticated pages (stored browser session) | | `render_js` | string | "auto" (default), "always", "never" | | `section` | string | Extract only a named heading — cheapest | | `section_index` | number | Which heading match (default: 0) | | `max_content_chars` | number | Smart-truncate at paragraph boundary | | `max_tokens_out` | number | Token-budget cap (cl100k-base) | | `include_full_markdown` | boolean | Restore full body alongside evidence | | `citation_format` | string | "numbered" / "json" / "anthropic_tags" | | `screenshot` | boolean | Capture screenshot (default: false) | | `headers` | object | Additional HTTP headers | | `actions` | array | Browser actions: click, type, wait, wait_for, scroll, screenshot | | `mode` | string | "cache" / "default" / "stealth" |
Output
Returns clean markdown plus:
- `title`, `markdown`, `links`, `images`
- Metadata: `og_type`, `canonical_url`, `og_image`, `og_description`, `keywords` (parity with `extract` metadata mode)
- `cached: true/false` — repeat fetches are instant
Anti-Patterns
- DON'T fetch a full page when you need one section — use `section: "Heading Name"`.
- DON'T set `force_refresh: true` by default — defeats the cache.
- DON'T use fetch when you need tables/JSON-LD — use `extract` instead.
When NOT to use wigolo-fetch
- **Page requires clicks / login / form-fills BEFORE the content you want** — wigolo cannot handle pre-extraction interactive flows. (`use_auth` with stored sessions works for already-logged-in pages.)
- **Bulk multi-page extraction** — use `crawl` or `agent`.
See Also
- [wigolo-search](../wigolo-search/SKILL.md) — when you don't have a URL
- [wigolo-extract](../wigolo-extract/SKILL.md) — when you need structured data, not markdown
- [wigolo-crawl](../wigolo-crawl/SKILL.md) — when you need multiple pages from a site
The go-to web for your AI coding agent — local-first search, fetch, crawl & research over MCP. No API keys, no cloud, $0/query. Public beta.
Repo: KnockOutEZ/wigolo
Other skills on wigolo.
- /wigolo-agent
Autonomous data gathering across sources — plans search queries and URLs from a natural-language prompt, executes in parallel within a time budget, optionally extracts structured fields via JSON Schema, and synthesizes results with full step transparency. Use when the user needs
Open skill - /wigolo-cache
Local-first knowledge cache — full-text and hybrid semantic search over every page wigolo has already fetched, crawled, or searched. Use before any web request: cached hits return instantly and free. Triggers when the user says "check the cache", "have we seen this", "what's on
Open skill - /wigolo-crawl
Local-first multi-page crawl with sitemap, BFS, DFS, and URL-map strategies, anchor-fragment dedup, rate limiting, robots.txt respect, and automatic local cache population. Use when the user wants to index documentation, crawl a docs site, extract all pages under a path, or says
Open skill - /wigolo-diff
Compare two versions of a page and see exactly what changed — a live URL against its cached copy, two URLs, or two markdown blobs. Section-level hunks, word- or line-level granularity, or a summary of counts. Use when the user says "what changed", "diff these", "compare this
Open skill - /wigolo-extract
Local-first structured extraction from any webpage — tables, definition lists, key-value pairs, JSON-LD, microdata, chart hints (SVG titles / aria-labels / figcaptions), brand assets, and metadata. Use when the user wants structured data, pricing tables, feature comparisons, or
Open skill - /wigolo-find-similar
Hybrid semantic discovery — fuses embeddings + keyword search + live web search via 3-way Reciprocal Rank Fusion. Use when the user has a good source and wants more like it, says "find similar", "related pages", "more like this", or wants to discover content related to a known
Open skill

