# Wigolo Fetch

Local-first URL fetch with clean markdown, structured metadata, JS-rendered SPA...

- Repository: https://github.com/KnockOutEZ/wigolo (5517 stars)
- Category: Engineering
- License: AGPL-3.0-only
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add KnockOutEZ/wigolo --skill wigolo-fetch -g -a claude-code -y`
Codex: `npx skills add KnockOutEZ/wigolo --skill wigolo-fetch -g -a codex -y`
Cursor: `npx skills add KnockOutEZ/wigolo --skill wigolo-fetch -g -a cursor -y`
Gemini CLI: `npx skills add KnockOutEZ/wigolo --skill wigolo-fetch -g -a gemini-cli -y`

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

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# wigolo fetch

Smart URL fetching: HTTP-first with automatic browser fallback for JS-rendered pages, persistent local cache, optional browser-session auth.

## Quick Reference

```json
// 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:

The rest: https://github.com/KnockOutEZ/wigolo/blob/HEAD/skills/wigolo-fetch/SKILL.md
