buildoak/fieldwork-skills/web-search
Claude Code and agent skill by buildoak/fieldwork-skills
- community
Checking that the SKILL.md file is still in the repository.
Web search and content extraction skill for AI coding agents. Zero API keys required. Decision tree with fallback chains across 5 tools.
Install
npx vskill@latest install buildoak/fieldwork-skills/web-searchSKILL.md
Web Search
Web search, scraping, and content extraction for AI coding agents. Zero API keys required. Five tools organized in fallback chains: WebSearch and Crawl4AI as primary, Jina as secondary, duckduckgo-search and WebFetch as fallbacks. Use when your agent needs web information -- finding pages, extracting content, or conducting research.
Terminology used in this file:
- Playwright: Browser automation framework used by Crawl4AI for JavaScript-rendered pages.
- SPA: Single-page application; content is rendered dynamically in JavaScript.
- MCP: Model Context Protocol, a standard for exposing tool servers to AI agents.
Setup
- Claude Code: copy this skill folder into
.claude/skills/web-search/ - Codex CLI: append this SKILL.md content to your project's root
AGENTS.md
For the full installation walkthrough (prerequisites, verification, troubleshooting), see references/installation-guide.md.
Staying Updated
This skill ships with an UPDATES.md changelog and UPDATE-GUIDE.md for your AI agent.
After installing, tell your agent: "Check UPDATES.md in the web-search skill for any new features or changes."
When updating, tell your agent: "Read UPDATE-GUIDE.md and apply the latest changes from UPDATES.md."
Follow UPDATE-GUIDE.md so customized local files are diffed before any overwrite.
Quick Start
Run this minimal fallback-safe sequence:
Use this routing rule: search with WebSearch first, extract with Jina/WebFetch for simple pages, escalate to Crawl4AI for JS-heavy targets.
Decision Tree
Tool Reference
WebSearch (Built-in) -- Primary Search
What: Claude Code built-in web search tool. Returns search results with links and snippets. Install required: None (built-in to Claude Code) Strengths: Zero setup, zero API keys, integrated into agent workflow, always available Weaknesses: No direct SDK/CLI access (tool-only), results are search-result blocks not raw JSON
Returns: Search result blocks with titles, URLs, and content snippets.
WebFetch (Built-in) -- Fallback URL Extraction
What: Claude Code built-in URL fetcher. Fetches page content, converts HTML to markdown, processes with AI. Install required: None (built-in to Claude Code) Strengths: Zero setup, AI-processed output, handles redirects, 15-min cache Weaknesses: Cannot handle authenticated/private URLs, may summarize large content
Limitations:
- Will fail for authenticated URLs (Google Docs, Confluence, Jira, private GitHub)
- HTTP auto-upgraded to HTTPS
- Large content may be summarized rather than returned in full
- When redirected to a different host, returns redirect URL instead of content
Crawl4AI -- JS-Rendering Web Scraper
What: Open-source scraper with full Playwright browser rendering. Outputs LLM-friendly markdown. Install required: pip install crawl4ai && crawl4ai-setup Strengths: Full JS rendering, handles SPAs, batch crawling, structured extraction Weaknesses: Requires Playwright install, heavier than Jina
Jina Reader/Search -- Zero-Install Extraction & Search
What: URL-to-markdown converter and search via HTTP API. No install needed -- just curl. API key: Not required. JINA_API_KEY is optional and only increases rate limits. Strengths: Zero install, fast (~1s), works everywhere curl works, search + extract in one service Weaknesses: No JS rendering, rate limited without API key
duckduckgo-search -- Emergency Search Fallback
What: Python library for DuckDuckGo search. Zero API keys, zero registration. Install required: pip install duckduckgo-search Strengths: Completely free, no API key, no rate limit concerns, reliable fallback Weaknesses: Less AI-optimized results than WebSearch, Python-only
Core Workflows
Pattern 1: Quick Web Search
When: Need factual answers or find relevant pages
- Use WebSearch:
WebSearch(query="your query here") - Parse results: each result has title, URL, and content snippet
- Fallback:
curl -s 'https://s.jina.ai/your+query+here' - Emergency:
python3 -c "from duckduckgo_search import DDGS; ..."
Pattern 2: URL Content Extraction
When: Have a URL, need its content as clean text/markdown
a) JS-heavy site: crwl URL (Crawl4AI, full rendering) b) Lightweight static page: curl -s 'https://r.jina.ai/URL' (Jina) c) Both fail: WebFetch(url="URL", prompt="Extract the main content")
Decision: Is it a SPA/JS-heavy? Use Crawl4AI. Static content? Use Jina first. If output is empty/broken, escalate.
Pattern 3: Deep Research
When: Need comprehensive research on a topic with multiple sources
- WebSearch to find relevant pages
- Pick top 3-5 URLs from results
- Extract each with Crawl4AI or Jina
- If any extraction fails (JS site), use the other tool
- Synthesize extracted content into research summary
Token budget: ~5K per extracted page, budget 25K total for 5 pages
Pattern 4: Batch URL Scraping
When: Need content from multiple URLs (5+)
Pattern 5: Fallback Chain
When: Primary tool fails
Search chain: WebSearch (built-in) --> Jina s.jina.ai --> duckduckgo-search
Extract chain: Crawl4AI crwl --> Jina r.jina.ai --> WebFetch (built-in)
Always try the primary tool first, escalate on failure.
MCP Configuration
Jina MCP (optional enhancement, not required):
MCP (Model Context Protocol) is optional. Your agent can use CLI/Python/built-in tools directly.
Environment Setup
Zero API keys required. All tools work out of the box.
Optional:
JINA_API_KEY(get from https://jina.ai) -- increases rate limits, not required
Install:
pip install crawl4ai duckduckgo-searchcrawl4ai-setup# installs Playwright browsers
Built-in tools (WebSearch, WebFetch) require no installation.
Verify: ./scripts/search-check.sh
Anti-Patterns
| Do NOT | Do instead | |
|---|---|---|
| Use Crawl4AI for simple text pages | Use Jina r.jina.ai (zero overhead) | |
| Use Jina for JS-heavy SPAs | Use Crawl4AI (Jina has no JS rendering) | |
| Skip the fallback chain | Always have a backup: WebSearch->Jina->duckduckgo, Crawl4AI->Jina->WebFetch | |
| Extract full pages when you need one fact | Use WebSearch (returns relevant snippets directly) | |
| Batch with Jina for 10+ URLs | Use Crawl4AI batch mode (designed for it) | |
| Forget rate limits | Jina without API key has stricter limits | |
| Use WebFetch for authenticated URLs | It will fail; use browser-ops skill or direct API access |
Error Handling
| Symptom | Tool | Cause | Fix | |
|---|---|---|---|---|
| No results returned | WebSearch | Query too specific or topic too niche | Broaden query, try Jina s.jina.ai or duckduckgo-search | |
| Redirect notification | WebFetch | URL redirects to different host | Make a new WebFetch request with the provided redirect URL | |
| Auth failure | WebFetch | Authenticated/private URL | Use browser-ops skill or direct API access instead | |
| Content summarized | WebFetch | Page content too large | Use Jina r.jina.ai or Crawl4AI for full content | |
| 429 Too Many Requests | Jina | Rate limit hit | Add JINA_API_KEY header, or add delay between requests | |
| Empty/truncated output | Jina | JS-rendered content not captured | Escalate to Crawl4AI: crwl URL | |
| crwl: command not found | Crawl4AI | Not installed or not on PATH | pip install crawl4ai && crawl4ai-setup | |
| Playwright browser not found | Crawl4AI | crawl4ai-setup not run | Run: crawl4ai-setup | |
| TimeoutError | Crawl4AI | Page too slow or blocking | Add timeout parameter, check if site blocks bots | |
| SSL certificate error | Any | Expired or self-signed cert | Retry; for Crawl4AI add ignore_https_errors=True | |
| 403 Forbidden | Jina/Crawl4AI | Site blocking automated access | Try different tool from fallback chain | |
| ImportError: duckduckgo_search | duckduckgo-search | Package not installed | pip install duckduckgo-search | |
| RatelimitException | duckduckgo-search | Too many requests too fast | Add 1-2s delay between calls, or switch to WebSearch |
Bundled Resources Index
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern 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 repositoryCheckingskills/web-search/SKILL.md
Popularity
- Repository stars
- 15
- Repository forks
- 1
- 7-day trend score
- 14
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
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/buildoak/fieldwork-skills/web-search)