knockoutez/wigolo/wigolo
- community
Checking that the SKILL.md file is still in the repository.
Local-first web intelligence MCP server for AI coding agents. Ten tools for search, fetch, crawl, cache, extract, find similar, research, agent-driven data gathering, page diffing, and change watching. No API keys. Results cached in a local knowledge store.
Install
npx vskill@latest install knockoutez/wigolo/wigoloSKILL.md
wigolo
Local-first web intelligence MCP server for AI coding agents. Ships ten tools over stdio. All network results land in a local knowledge cache.
Host-LLM synthesis (read me first)
Wigolo has no internal LLM. It returns structured evidence so the calling model (you) writes the final answer. Fold structure into your reply rather than collapsing it away:
searchwithformat: "highlights"— ML-scored passages +citations. Quote and cite [N].research— when MCP sampling is unavailable (common), the output carries abriefwithtopics,highlights,key_findings. Use it as the scaffold for the report you write.find_similar— may return acold_startstring. Pass it to the user; it explains why results came from the web and how to warm the cache.extractwithmode: "structured"— one call for tables +<dl>definitions + JSON-LD + chart hints + key-value pairs.fetchmetadata — surfacesog_type,canonical_url, andog_image; usecanonical_urlto dedupe tracked/canonical URLs.
Quick Setup
Claude Code:
Cursor / VS Code / any MCP client:
Warmup (recommended, one-time):
Warmup flags: --force, --all, --reranker, --firefox, --webkit, --embeddings, --no-searxng, --verify.
Tools
fetch
Fetch a single URL and return clean markdown. Use when you already have a specific URL.
Parameters:
url(string, required)render_js:"auto"(default) |"always"|"never"use_auth: boolean (defaultfalse) — reuses the user's browser sessionmax_chars: numbersection: string — return only the content under a headingsection_index: number (default0) — which heading match when multiple hitscreenshot: boolean (defaultfalse)headers: objectforce_refresh: boolean — bypass cacheactions: array of{type, selector, text, ms, timeout, direction, amount}—click,type,wait,wait_for,scroll,screenshot. Forces browser rendering when present.
Example:
Tip: section is much cheaper than reading the full page. Repeat fetches of the same URL are free from cache unless force_refresh: true.
search
Search the web and return extracted markdown per result. Use when you don't have a URL yet.
Parameters:
query(string ORstring[], required) — array runs variants in parallel and dedupesmax_results: number (default5, cap20)include_content: boolean (defaulttrue)content_max_chars: number (default30000)max_total_chars: number (default50000)time_range:"day"|"week"|"month"|"year"include_domains/exclude_domains:string[]from_date/to_date: ISOYYYY-MM-DDcategory:"general"|"news"|"code"|"docs"|"papers"|"images"language: stringsearch_engines:string[]— override engine selectionformat:"full"(default) |"context"(token-budgeted string) |"highlights"(ML-scored passages + citations) |"answer"(synthesized via MCP sampling; falls back tohighlightswhen unsupported) |"stream_answer"(answer + phase progress notifications)max_highlights: number (default10) — cap whenformat: "highlights"force_refresh: boolean
Example:
Tip: keyword queries beat natural-language questions. A 3–5 item query array usually finds more unique sources than one longer query.
crawl
Crawl a site starting from a seed URL.
Parameters:
url(string, required)strategy:"bfs"(default) |"dfs"|"sitemap"|"map"(URL-only discovery, no content)max_depth: number (default2)max_pages: number (default20)include_patterns/exclude_patterns: regexstring[]use_auth: boolean (defaultfalse)extract_links: boolean (defaultfalse) — returns inter-page link graphmax_total_chars: number (default100000)
Example:
Tip: strategy: "sitemap" is faster and more complete than BFS on doc sites. strategy: "map" returns URLs only — cheap way to scope before targeted fetches.
cache
Search previously fetched content without hitting the network.
Parameters:
query: full-text search — supportsAND,OR,NOT,"exact phrase"url_pattern: glob (e.g."*react.dev*")since: ISO datestats: boolean — returns total URLs, size, date rangeclear: boolean — deletes matching entries (requires one ofquery,url_pattern,since)check_changes: boolean — re-fetches matching URLs, reports changed/unchanged with diff summaries
Example:
Tip: cache hits are instant and cross-session. Run this before search or fetch when you suspect the content is already on disk.
extract
Structured extraction from URL or raw HTML.
Parameters:
urlORhtml(one required;urlwins if both provided)mode:"metadata"(default) |"selector"|"tables"|"schema"|"structured"(tables +<dl>definitions + JSON-LD + chart hints + microdata/data-attr/grid key-value pairs in one call)css_selector: string — required formode: "selector"multiple: boolean (defaultfalse) — return all matches, selector mode onlyschema: JSON Schema object withproperties— required formode: "schema"
Example:
Tip: mode: "schema" does heuristic matching over CSS classes, ARIA labels, microdata, and JSON-LD — no LLM call required. mode: "structured" returns every structured pattern on the page (tables, definitions, jsonld, chart_hints, key_value_pairs) in one response — prefer it over chaining multiple extract calls.
find_similar
Find pages related to a URL or a free-text concept.
Parameters:
urlORconcept(one required)max_results: number (default10, cap50)include_domains/exclude_domains:string[]include_cache: boolean (defaulttrue)include_web: boolean (defaulttrue)
Example:
Tip: uses hybrid 3-way RRF fusion — keyword search + semantic embeddings + live web search. Each result carries match_signals with embedding_rank, fts5_rank, and fused_score. If the cache is empty or embeddings aren't set up, the response includes a cold_start string — pass it to the user to explain why results came from the web.
research
Multi-step research pipeline with decomposition, parallel search, and cited synthesis.
Parameters:
question(string, required)depth:"quick"(~15s, 2 sub-queries, 5–8 sources) |"standard"(~40s, default) |"comprehensive"(~80s, 7 sub-queries, 20–25 sources)max_sources: number (cap50) — overrides depth defaultinclude_domains/exclude_domains:string[]schema: JSON Schema — if present, report is structured to fill these fieldsstream: boolean — emit progress notifications per phase
Example:
Tip: research checks cache internally — no need to pre-probe. With MCP sampling, the tool synthesizes the report directly. Without sampling (the common case), the output ships a brief with topics, highlights, and key_findings, plus the raw sources — the host LLM writes the final report from the brief.
agent
Natural-language data gathering. Plans queries and URLs from a prompt, runs them in parallel within budget, optionally applies a schema.
Parameters:
prompt(string, required)urls:string[]— seed URLs to includeschema: JSON Schema — extract structured fields per page and mergemax_pages: number (default10, cap100)max_time_ms: number (default60000, cap600000)stream: boolean
Example:
Tip: output includes a steps array showing every action (plan, search, fetch, extract, synthesize) with timings. Use this to debug why an agent run produced a weak result.
diff
Compare two versions of a page. Point it at a live URL and its cached copy, two URLs, or two markdown blobs.
Parameters:
old(object, required): one of{ url, markdown, content_hash }new(object, required): one of{ url, markdown }output:"unified"(default),"hunks", or"summary"granularity:"line"(default),"word", or"section"
Example:
Tip: same URL on both sides diffs the cached copy against a fresh fetch. Use output: "summary" for counts only.
watch
Monitor a page for changes over time. Lazy execution — checks run when you call check or when an overdue job is picked up during another tool run.
Parameters:
action(string, required):"create","list","check","pause","resume","delete"urlorurls: single-URL or batch create (mutually exclusive)interval_seconds: required for create (min 60)selector: create-only CSS selector to scope the diffnotification:"inline"(default) or an SSRF-guarded webhook URLjob_id: required for check/pause/resume/delete
Example:
Tip: webhook destinations are SSRF-guarded — a job cannot be pointed at internal or loopback addresses.
Workflow Patterns
Quick routing:
- Use when
search— you need information but don't have a URL. - Use when
fetch— you already have the URL. - Use when
crawl— you need multiple pages from one site. - Use when
cache— you want to check whether something is already on disk. - Use when
extract— you need specific fields, tables, or metadata, not the whole page. - Use when
find_similar— you have a good page/concept and want related content. - Use when
research— a question needs decomposition and multi-source synthesis. - Use when
agent— a natural-language task needs multi-step data gathering. - Use when
diff— you need to see what changed between two versions of a page. - Use when
watch— you want to monitor a page for changes over time.
Cache-first lookup. Before any fetch or search, probe the cache.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassedPattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingSKILL.md
Popularity
- Repository stars
- 4,859
- Repository forks
- 367
- 7-day trend score
- 42
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 25 Aug 2026, 2 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/knockoutez/wigolo/wigolo)