skills$openclaw/web-search-plus
robbyczgw-cla6.5kโ˜…

by robbyczgw-cla

web-search-plus โ€“ OpenClaw Skill

web-search-plus is an OpenClaw Skills integration for coding workflows. Unified search skill with Intelligent Auto-Routing. Uses multi-signal analysis to automatically select between Serper (Google), Tavily (Research), Exa (Neural), You.com (RAG/Real-time), and SearXNG (Privacy/Self-hosted) with confidence scoring.

6.5k stars3.3k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

nameweb-search-plus
descriptionUnified search skill with Intelligent Auto-Routing. Uses multi-signal analysis to automatically select between Serper (Google), Tavily (Research), Exa (Neural), You.com (RAG/Real-time), and SearXNG (Privacy/Self-hosted) with confidence scoring. OpenClaw Skills integration.
ownerrobbyczgw-cla
repositoryrobbyczgw-cla/web-search-plus
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @robbyczgw-cla/web-search-plus
last updatedFeb 7, 2026

Maintainer

robbyczgw-cla

robbyczgw-cla

Maintains web-search-plus in the OpenClaw Skills directory.

View GitHub profile
File Explorer
12 files
.
scripts
search.py
64.0 KB
setup.py
16.6 KB
_meta.json
2.9 KB
CHANGELOG.md
11.0 KB
config.example.json
4.9 KB
FAQ.md
7.9 KB
package.json
1.8 KB
README.md
21.8 KB
SKILL.md
5.8 KB
test-auto-routing.sh
555 B
TROUBLESHOOTING.md
5.3 KB
SKILL.md

name: web-search-plus version: 2.6.1 description: Unified search skill with Intelligent Auto-Routing. Uses multi-signal analysis to automatically select between Serper (Google), Tavily (Research), Exa (Neural), You.com (RAG/Real-time), and SearXNG (Privacy/Self-hosted) with confidence scoring. tags: [search, web-search, serper, tavily, exa, you, searxng, google, research, semantic-search, auto-routing, multi-provider, shopping, rag, free-tier, privacy, self-hosted] metadata: {"clawdbot":{"requires":{"bins":["python3","bash"],"env":["SERPER_API_KEY","TAVILY_API_KEY","EXA_API_KEY","YOU_API_KEY","SEARXNG_INSTANCE_URL"]},"primaryEnv":"SERPER_API_KEY"}}

Web Search Plus

Multi-provider web search with Intelligent Auto-Routing: Serper (Google), Tavily (Research), Exa (Neural), You.com (RAG/Real-time), SearXNG (Privacy/Self-hosted).


๐Ÿš€ Quick Start

# Interactive setup (recommended for first run)
python3 scripts/setup.py

# Or manual: copy config and add your keys
cp config.example.json config.json

The wizard explains each provider, collects API keys, and configures defaults.


๐Ÿ”‘ API Keys

Option A: .env file (recommended)

# /path/to/skills/web-search-plus/.env
export SERPER_API_KEY="your-key"   # https://serper.dev
export TAVILY_API_KEY="your-key"   # https://tavily.com  
export EXA_API_KEY="your-key"      # https://exa.ai
export YOU_API_KEY="your-key"      # https://api.you.com
export SEARXNG_INSTANCE_URL="https://your-instance.example.com"

Option B: config.json

{
  "serper": { "api_key": "your-serper-key" },
  "tavily": { "api_key": "your-tavily-key" },
  "exa": { "api_key": "your-exa-key" },
  "you": { "api_key": "your-you-key" },
  "searxng": { "instance_url": "https://your-instance.example.com" }
}

Priority: config.json > .env > environment variable

ProviderFree TierSign Up
Serper2,500/mohttps://serper.dev
Tavily1,000/mohttps://tavily.com
Exa1,000/mohttps://exa.ai
You.comLimitedhttps://api.you.com
SearXNGUnlimitedSelf-hosted

๐Ÿง  Intelligent Auto-Routing

Just search โ€” the skill picks the best provider:

python3 scripts/search.py -q "iPhone 16 Pro Max price"          # โ†’ Serper
python3 scripts/search.py -q "how does HTTPS encryption work"   # โ†’ Tavily
python3 scripts/search.py -q "startups similar to Notion"       # โ†’ Exa
python3 scripts/search.py -q "latest updates on AI regulation"  # โ†’ You.com
python3 scripts/search.py -q "search privately without tracking" # โ†’ SearXNG

Provider Strengths

ProviderBest For
SerperGoogle results, shopping, prices, local businesses, news
TavilyResearch questions, explanations, academic, full-page content
ExaSemantic search, "similar to X", startup discovery, papers
You.comRAG/AI context, real-time info, combined web+news
SearXNGPrivacy-preserving, multi-source aggregation, $0 cost

Debug Routing

python3 scripts/search.py --explain-routing -q "your query"

Auto-Routed (Recommended)

python3 scripts/search.py -q "iPhone 16 Pro Max price"
python3 scripts/search.py -q "how does quantum computing work"
python3 scripts/search.py -q "companies like stripe.com"

Explicit Provider

python3 scripts/search.py -p serper -q "weather Berlin" --type weather
python3 scripts/search.py -p tavily -q "quantum computing" --depth advanced
python3 scripts/search.py -p exa --similar-url "https://stripe.com" --category company
python3 scripts/search.py -p you -q "current tech news" --include-news
python3 scripts/search.py -p searxng -q "linux distros" --engines "google,bing"

โš™๏ธ Configuration

{
  "auto_routing": {
    "enabled": true,
    "fallback_provider": "serper",
    "confidence_threshold": 0.3,
    "disabled_providers": []
  },
  "serper": {"country": "us", "language": "en"},
  "tavily": {"depth": "advanced"},
  "exa": {"type": "neural"},
  "you": {"country": "US", "safesearch": "moderate", "include_news": true},
  "searxng": {"instance_url": "https://your-instance.example.com", "safesearch": 0}
}

๐Ÿ“Š Provider Comparison

FeatureSerperTavilyExaYou.comSearXNG
Speedโšกโšกโšกโšกโšกโšกโšกโšกโšกโšกโšกโšก
Factual Accuracyโญโญโญโญโญโญโญโญโญโญโญโญโญโญ
Semantic Understandingโญโญโญโญโญโญโญโญโญ
Full Page Contentโœ—โœ“โœ“โœ“โœ—
Shopping/Localโœ“โœ—โœ—โœ—โœ“
Similar Pagesโœ—โœ—โœ“โœ—โœ—
RAG-Optimizedโœ—โœ“โœ—โœ“โœ“โœ—
Privacy-Firstโœ—โœ—โœ—โœ—โœ“โœ“
API Cost$$$$$$$FREE

๐Ÿ“ค Output Format

{
  "provider": "serper",
  "query": "iPhone 16 price",
  "results": [{"title": "...", "url": "...", "snippet": "...", "score": 0.95}],
  "routing": {
    "auto_routed": true,
    "provider": "serper",
    "confidence": 0.78,
    "confidence_level": "high"
  }
}

โš ๏ธ Important Notes

Tavily, Serper, and Exa are NOT core OpenClaw providers.

โŒ Don't modify ~/.openclaw/openclaw.json for these providers
โœ… Use this skill's scripts โ€” keys auto-load from .env


๐Ÿ“š Additional Documentation

  • FAQ.md โ€” Frequently asked questions about providers, routing, costs
  • TROUBLESHOOTING.md โ€” Solutions for common errors and issues
  • README.md โ€” Full technical documentation

๐Ÿ”„ Automatic Fallback (v2.2.5+)

If one provider fails (rate limit, timeout, etc.), automatically tries the next provider in priority order. Response includes routing.fallback_used: true when fallback was used.

README.md

Web Search Plus

Unified multi-provider web search with Intelligent Auto-Routing โ€” uses multi-signal analysis to automatically select between Serper, Tavily, Exa, You.com, and SearXNG with confidence scoring.

ClawHub Version GitHub


๐Ÿง  Features (v2.5.0)

Intelligent Multi-Signal Routing โ€” The skill uses sophisticated query analysis:

  • Intent Classification: Shopping vs Research vs Discovery vs RAG/Real-time vs Privacy
  • Linguistic Patterns: "how much" (price) vs "how does" (research) vs "privately" (privacy)
  • Entity Detection: Product+brand combos, URLs, domains
  • Complexity Analysis: Long queries favor research providers
  • Confidence Scoring: Know how reliable the routing decision is
python3 scripts/search.py -q "how much does iPhone 16 cost"     # โ†’ Serper (68% confidence)
python3 scripts/search.py -q "how does quantum entanglement work"  # โ†’ Tavily (86% HIGH)
python3 scripts/search.py -q "startups similar to Notion"       # โ†’ Exa (76% HIGH)
python3 scripts/search.py -q "companies like stripe.com"        # โ†’ Exa (100% HIGH - URL detected)
python3 scripts/search.py -q "summarize key points on AI"       # โ†’ You.com (68% MEDIUM - RAG intent)
python3 scripts/search.py -q "search privately without tracking" # โ†’ SearXNG (74% HIGH - privacy intent)

๐Ÿ” When to Use Which Provider

Built-in Brave Search (OpenClaw default)

  • โœ… General web searches
  • โœ… Privacy-focused
  • โœ… Quick lookups
  • โœ… Default fallback

Serper (Google Results)

  • ๐Ÿ›๏ธ Product specs, prices, shopping
  • ๐Ÿ“ Local businesses, places
  • ๐ŸŽฏ "Google it" - explicit Google results
  • ๐Ÿ“ฐ Shopping/images needed
  • ๐Ÿ† Knowledge Graph data

Tavily (AI-Optimized Research)

  • ๐Ÿ“š Research questions, deep dives
  • ๐Ÿ”ฌ Complex multi-part queries
  • ๐Ÿ“„ Need full page content (not just snippets)
  • ๐ŸŽ“ Academic/technical research
  • ๐Ÿ”’ Domain filtering (trusted sources)

Exa (Neural Semantic Search)

  • ๐Ÿ”— Find similar pages
  • ๐Ÿข Company/startup discovery
  • ๐Ÿ“ Research papers
  • ๐Ÿ’ป GitHub projects
  • ๐Ÿ“… Date-specific content
  • ๐Ÿค– RAG applications (LLM-ready snippets)
  • ๐Ÿ“ฐ Combined web + news (single API call)
  • โšก Real-time information (current events)
  • ๐Ÿ“‹ Summarization context ("What's the latest...")
  • ๐Ÿ”„ Live crawling (full page content on demand)

SearXNG (Privacy-First/Self-Hosted)

  • ๐Ÿ”’ Privacy-preserving search (no tracking)
  • ๐ŸŒ Multi-source aggregation (70+ engines)
  • ๐Ÿ’ฐ $0 API cost (self-hosted)
  • ๐ŸŽฏ Diverse perspectives (results from multiple engines)
  • ๐Ÿ  Self-hosted environments (full control)

Table of Contents


Quick Start

Option A: Interactive Setup (Recommended)

# Run the setup wizard - it guides you through everything
python3 scripts/setup.py

The wizard explains each provider, collects your API keys, and creates config.json automatically.

Option B: Manual Setup

# 1. Set up at least one API key (or SearXNG instance)
export SERPER_API_KEY="your-key"   # https://serper.dev
export TAVILY_API_KEY="your-key"   # https://tavily.com
export EXA_API_KEY="your-key"      # https://exa.ai
export YOU_API_KEY="your-key"      # https://api.you.com
export SEARXNG_INSTANCE_URL="https://your-instance.example.com"  # Self-hosted

# 2. Run a search (auto-routed!)
python3 scripts/search.py -q "best laptop 2024"

Run a Search

# Auto-routed to best provider
python3 scripts/search.py -q "best laptop 2024"

# Or specify a provider explicitly
python3 scripts/search.py -p serper -q "iPhone 16 specs"
python3 scripts/search.py -p tavily -q "quantum computing explained" --depth advanced
python3 scripts/search.py -p exa -q "AI startups 2024" --category company

Smart Auto-Routing

How It Works

When you don't specify a provider, the skill analyzes your query and routes it to the best provider:

Query ContainsRoutes ToExample
"price", "buy", "shop", "cost"Serper"iPhone 16 price"
"near me", "restaurant", "hotel"Serper"pizza near me"
"weather", "news", "latest"Serper"weather Berlin"
"how does", "explain", "what is"Tavily"how does TCP work"
"research", "study", "analyze"Tavily"climate research"
"tutorial", "guide", "learn"Tavily"python tutorial"
"similar to", "companies like"Exa"companies like Stripe"
"startup", "Series A"Exa"AI startups Series A"
"github", "research paper"Exa"LLM papers arxiv"
"private", "anonymous", "no tracking"SearXNG"search privately"
"multiple sources", "aggregate"SearXNG"results from all engines"

Examples

# These are all auto-routed to the optimal provider:
python3 scripts/search.py -q "MacBook Pro M3 price"           # โ†’ Serper
python3 scripts/search.py -q "how does HTTPS work"            # โ†’ Tavily
python3 scripts/search.py -q "startups like Notion"           # โ†’ Exa
python3 scripts/search.py -q "best sushi restaurant near me"  # โ†’ Serper
python3 scripts/search.py -q "explain attention mechanism"    # โ†’ Tavily
python3 scripts/search.py -q "alternatives to Figma"          # โ†’ Exa
python3 scripts/search.py -q "search privately without tracking" # โ†’ SearXNG

Debug Auto-Routing

See exactly why a provider was selected:

python3 scripts/search.py --explain-routing -q "best laptop to buy"

Output:

{
  "query": "best laptop to buy",
  "selected_provider": "serper",
  "reason": "matched_keywords (score=2)",
  "matched_keywords": ["buy", "best"],
  "available_providers": ["serper", "tavily", "exa"]
}

Routing Info in Results

Every search result includes routing information:

{
  "provider": "serper",
  "query": "iPhone 16 price",
  "results": [...],
  "routing": {
    "auto_routed": true,
    "selected_provider": "serper",
    "reason": "matched_keywords (score=1)",
    "matched_keywords": ["price"]
  }
}

Configuration Guide

Environment Variables

Create a .env file or set these in your shell:

# Required: Set at least one
export SERPER_API_KEY="your-serper-key"
export TAVILY_API_KEY="your-tavily-key"
export EXA_API_KEY="your-exa-key"

Config File (config.json)

The config.json file lets you customize auto-routing and provider defaults:

{
  "defaults": {
    "provider": "serper",
    "max_results": 5
  },
  
  "auto_routing": {
    "enabled": true,
    "fallback_provider": "serper",
    "provider_priority": ["serper", "tavily", "exa"],
    "disabled_providers": [],
    "keyword_mappings": {
      "serper": ["price", "buy", "shop", "cost", "deal", "near me", "weather"],
      "tavily": ["how does", "explain", "research", "what is", "tutorial"],
      "exa": ["similar to", "companies like", "alternatives", "startup", "github"]
    }
  },
  
  "serper": {
    "country": "us",
    "language": "en"
  },
  
  "tavily": {
    "depth": "basic",
    "topic": "general"
  },
  
  "exa": {
    "type": "neural"
  }
}

Configuration Examples

Example 1: Disable Exa (Only Use Serper + Tavily)
{
  "auto_routing": {
    "disabled_providers": ["exa"]
  }
}
Example 2: Make Tavily the Default
{
  "auto_routing": {
    "fallback_provider": "tavily"
  }
}
Example 3: Add Custom Keywords
{
  "auto_routing": {
    "keyword_mappings": {
      "serper": [
        "price", "buy", "shop", "amazon", "ebay", "walmart",
        "deal", "discount", "coupon", "sale", "cheap"
      ],
      "tavily": [
        "how does", "explain", "research", "what is",
        "coursera", "udemy", "learn", "course", "certification"
      ],
      "exa": [
        "similar to", "companies like", "competitors",
        "YC company", "funded startup", "Series A", "Series B"
      ]
    }
  }
}
Example 4: German Locale for Serper
{
  "serper": {
    "country": "de",
    "language": "de"
  }
}
Example 5: Disable Auto-Routing
{
  "auto_routing": {
    "enabled": false
  },
  "defaults": {
    "provider": "serper"
  }
}
Example 6: Research-Heavy Config
{
  "auto_routing": {
    "fallback_provider": "tavily",
    "provider_priority": ["tavily", "serper", "exa"]
  },
  "tavily": {
    "depth": "advanced",
    "include_raw_content": true
  }
}

Provider Deep Dives

Serper (Google Search API)

What it is: Direct access to Google Search results via API โ€” the same results you'd see on google.com.

Strengths
StrengthDescription
๐ŸŽฏ AccuracyGoogle's search quality, knowledge graph, featured snippets
๐Ÿ›’ ShoppingProduct prices, reviews, shopping results
๐Ÿ“ LocalBusiness listings, maps, places
๐Ÿ“ฐ NewsReal-time news with Google News integration
๐Ÿ–ผ๏ธ ImagesGoogle Images search
โšก SpeedFastest response times (~200-400ms)
Best Use Cases
  • โœ… Product specifications and comparisons
  • โœ… Shopping and price lookups
  • โœ… Local business searches ("restaurants near me")
  • โœ… Quick factual queries (weather, conversions, definitions)
  • โœ… News headlines and current events
  • โœ… Image searches
  • โœ… When you need "what Google shows"
Getting Your API Key
  1. Go to serper.dev
  2. Sign up with email or Google
  3. Copy your API key from the dashboard
  4. Set SERPER_API_KEY environment variable

What it is: AI-optimized search engine built for research and RAG applications โ€” returns synthesized answers plus full content.

Strengths
StrengthDescription
๐Ÿ“š Research QualityOptimized for comprehensive, accurate research
๐Ÿ’ฌ AI AnswersReturns synthesized answers, not just links
๐Ÿ“„ Full ContentCan return complete page content (raw_content)
๐ŸŽฏ Domain FilteringInclude/exclude specific domains
๐Ÿ”ฌ Deep ModeAdvanced search for thorough research
๐Ÿ“ฐ Topic ModesSpecialized for general vs news content
Best Use Cases
  • โœ… Research questions requiring synthesized answers
  • โœ… Academic or technical deep dives
  • โœ… When you need actual page content (not just snippets)
  • โœ… Multi-source information comparison
  • โœ… Domain-specific research (filter to authoritative sources)
  • โœ… News research with context
  • โœ… RAG/LLM applications
Getting Your API Key
  1. Go to tavily.com
  2. Sign up and verify email
  3. Navigate to API Keys section
  4. Generate and copy your key
  5. Set TAVILY_API_KEY environment variable

What it is: Neural/semantic search engine that understands meaning, not just keywords โ€” finds conceptually similar content.

Strengths
StrengthDescription
๐Ÿง  Semantic UnderstandingFinds results by meaning, not keywords
๐Ÿ”— Similar PagesFind pages similar to a reference URL
๐Ÿข Company DiscoveryExcellent for finding startups, companies
๐Ÿ“‘ Category FiltersFilter by type (company, paper, tweet, etc.)
๐Ÿ“… Date FilteringPrecise date range searches
๐ŸŽ“ AcademicGreat for research papers and technical content
Best Use Cases
  • โœ… Conceptual queries ("companies building X")
  • โœ… Finding similar companies or pages
  • โœ… Startup and company discovery
  • โœ… Research paper discovery
  • โœ… Finding GitHub projects
  • โœ… Date-filtered searches for recent content
  • โœ… When keyword matching fails
Getting Your API Key
  1. Go to exa.ai
  2. Sign up with email or Google
  3. Navigate to API section in dashboard
  4. Copy your API key
  5. Set EXA_API_KEY environment variable

What it is: Open-source, self-hosted meta-search engine that aggregates results from 70+ search engines without tracking.

Strengths
StrengthDescription
๐Ÿ”’ Privacy-FirstNo tracking, no profiling, no data collection
๐ŸŒ Multi-EngineAggregates Google, Bing, DuckDuckGo, and 70+ more
๐Ÿ’ฐ Free$0 API cost (self-hosted, unlimited queries)
๐ŸŽฏ Diverse ResultsGet perspectives from multiple search engines
โš™๏ธ CustomizableChoose which engines to use, SafeSearch, language
๐Ÿ  Self-HostedFull control over your search infrastructure
Best Use Cases
  • โœ… Privacy-sensitive searches (no tracking)
  • โœ… When you want diverse results from multiple engines
  • โœ… Budget-conscious (no API fees)
  • โœ… Self-hosted/air-gapped environments
  • โœ… Fallback when paid APIs are rate-limited
  • โœ… When "aggregate everything" is the goal
Setting Up Your Instance
# Docker (recommended, 5 minutes)
docker run -d -p 8080:8080 searxng/searxng

# Enable JSON API in settings.yml:
# search:
#   formats: [html, json]
  1. See docs.searxng.org
  2. Deploy via Docker, pip, or your preferred method
  3. Enable JSON format in settings.yml
  4. Set SEARXNG_INSTANCE_URL environment variable

Usage Examples

# Just search โ€” the skill picks the best provider
python3 scripts/search.py -q "Tesla Model 3 price"
python3 scripts/search.py -q "how do neural networks learn"
python3 scripts/search.py -q "YC startups like Stripe"
python3 scripts/search.py -q "search privately without tracking"

Serper Options

# Different search types
python3 scripts/search.py -p serper -q "gaming monitor" --type shopping
python3 scripts/search.py -p serper -q "coffee shop" --type places
python3 scripts/search.py -p serper -q "AI news" --type news

# With time filter
python3 scripts/search.py -p serper -q "OpenAI news" --time-range day

# Include images
python3 scripts/search.py -p serper -q "iPhone 16 Pro" --images

# Different locale
python3 scripts/search.py -p serper -q "Wetter Wien" --country at --language de

Tavily Options

# Deep research mode
python3 scripts/search.py -p tavily -q "quantum computing applications" --depth advanced

# With full page content
python3 scripts/search.py -p tavily -q "transformer architecture" --raw-content

# Domain filtering
python3 scripts/search.py -p tavily -q "AI research" --include-domains arxiv.org nature.com

Exa Options

# Category filtering
python3 scripts/search.py -p exa -q "AI startups Series A" --category company
python3 scripts/search.py -p exa -q "attention mechanism" --category "research paper"

# Date filtering
python3 scripts/search.py -p exa -q "YC companies" --start-date 2024-01-01

# Find similar pages
python3 scripts/search.py -p exa --similar-url "https://stripe.com" --category company

SearXNG Options

# Basic search
python3 scripts/search.py -p searxng -q "linux distros"

# Specific engines only
python3 scripts/search.py -p searxng -q "AI news" --engines "google,bing,duckduckgo"

# SafeSearch (0=off, 1=moderate, 2=strict)
python3 scripts/search.py -p searxng -q "privacy tools" --searxng-safesearch 2

# With time filter
python3 scripts/search.py -p searxng -q "open source projects" --time-range week

# Custom instance URL
python3 scripts/search.py -p searxng -q "test" --searxng-url "http://localhost:8080"

Workflow Examples

๐Ÿ›’ Product Research Workflow

# Step 1: Get product specs (auto-routed to Serper)
python3 scripts/search.py -q "MacBook Pro M3 Max specs"

# Step 2: Check prices (auto-routed to Serper)
python3 scripts/search.py -q "MacBook Pro M3 Max price comparison"

# Step 3: In-depth reviews (auto-routed to Tavily)
python3 scripts/search.py -q "detailed MacBook Pro M3 Max review"

๐Ÿ“š Academic Research Workflow

# Step 1: Understand the topic (auto-routed to Tavily)
python3 scripts/search.py -q "explain transformer architecture in deep learning"

# Step 2: Find recent papers (Exa)
python3 scripts/search.py -p exa -q "transformer improvements" --category "research paper" --start-date 2024-01-01

# Step 3: Find implementations (Exa)
python3 scripts/search.py -p exa -q "transformer implementation" --category github

๐Ÿข Competitive Analysis Workflow

# Step 1: Find competitors (auto-routed to Exa)
python3 scripts/search.py -q "companies like Notion"

# Step 2: Find similar products (Exa)
python3 scripts/search.py -p exa --similar-url "https://notion.so" --category company

# Step 3: Deep dive comparison (Tavily)
python3 scripts/search.py -p tavily -q "Notion vs Coda comparison" --depth advanced

Optimization Tips

Cost Optimization

TipSavings
Use SearXNG for routine queries$0 API cost
Use auto-routing (defaults to Serper, cheapest paid)Best value
Use Tavily basic before advanced~50% cost reduction
Set appropriate max_resultsLinear cost savings
Use Exa only for semantic queriesAvoid waste

Performance Optimization

TipImpact
Serper is fastest (~200ms)Use for time-sensitive queries
Tavily basic faster than advanced~2x faster
Lower max_results = faster responseLinear improvement

FAQ & Troubleshooting

General Questions

Q: Do I need API keys for all three providers?

No. You only need keys for providers you want to use. Auto-routing skips providers without keys.

Q: Which provider should I start with?

Serper โ€” it's the fastest, cheapest, and has the largest free tier (2,500 queries).

Q: Can I use multiple providers in one workflow?

Yes! That's the recommended approach. See Workflow Examples.

Q: How do I reduce API costs?

Use auto-routing (defaults to cheapest), start with lower max_results, use Tavily basic before advanced.

Auto-Routing Questions

Q: Why did my query go to the wrong provider?

Use --explain-routing to debug. Add custom keywords to config.json if needed.

Q: Can I add my own keywords?

Yes! Edit config.json โ†’ auto_routing.keyword_mappings.

Q: How does keyword scoring work?

Multi-word phrases get higher weights. "companies like" (2 words) scores higher than "like" (1 word).

Q: What if no keywords match?

Uses the fallback provider (default: Serper).

Q: Can I force a specific provider?

Yes, use -p serper, -p tavily, or -p exa.

Troubleshooting

Error: "Missing API key"

# Check if key is set
echo $SERPER_API_KEY

# Set it
export SERPER_API_KEY="your-key"

Error: "API Error (401)"

Your API key is invalid or expired. Generate a new one.

Error: "API Error (429)"

Rate limited. Wait and retry, or upgrade your plan.

Empty results?

Try a different provider, broaden your query, or remove restrictive filters.

Slow responses?

Reduce max_results, use Tavily basic, or use Serper (fastest).


API Reference

Output Format

All providers return unified JSON:

{
  "provider": "serper|tavily|exa",
  "query": "original search query",
  "results": [
    {
      "title": "Page Title",
      "url": "https://example.com/page",
      "snippet": "Content excerpt...",
      "score": 0.95,
      "date": "2024-01-15",
      "raw_content": "Full page content (Tavily only)"
    }
  ],
  "images": ["url1", "url2"],
  "answer": "Synthesized answer",
  "knowledge_graph": { },
  "routing": {
    "auto_routed": true,
    "selected_provider": "serper",
    "reason": "matched_keywords (score=1)",
    "matched_keywords": ["price"]
  }
}

CLI Options Reference

OptionProvidersDescription
-q, --queryAllSearch query
-p, --providerAllProvider: auto, serper, tavily, exa, you, searxng
-n, --max-resultsAllMax results (default: 5)
--autoAllForce auto-routing
--explain-routingAllDebug auto-routing
--imagesSerper, TavilyInclude images
--countrySerper, YouCountry code (default: us)
--languageSerper, SearXNGLanguage code (default: en)
--typeSerpersearch/news/images/videos/places/shopping
--time-rangeSerper, SearXNGhour/day/week/month/year
--depthTavilybasic/advanced
--topicTavilygeneral/news
--raw-contentTavilyInclude full page content
--exa-typeExaneural/keyword
--categoryExacompany/research paper/news/pdf/github/tweet
--start-dateExaStart date (YYYY-MM-DD)
--end-dateExaEnd date (YYYY-MM-DD)
--similar-urlExaFind similar pages
--searxng-urlSearXNGInstance URL
--searxng-safesearchSearXNG0=off, 1=moderate, 2=strict
--enginesSearXNGSpecific engines (google,bing,duckduckgo)
--categoriesSearXNGSearch categories (general,images,news)
--include-domainsTavily, ExaOnly these domains
--exclude-domainsTavily, ExaExclude these domains
--compactAllCompact JSON output

License

MIT


  • Serper โ€” Google Search API
  • Tavily โ€” AI Research Search
  • Exa โ€” Neural Search
  • ClawHub โ€” OpenClaw Skills

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

  • OpenClaw CLI installed and configured.
  • Language: Markdown
  • License: MIT
  • Topics:

Configuration

```json { "auto_routing": { "enabled": true, "fallback_provider": "serper", "confidence_threshold": 0.3, "disabled_providers": [] }, "serper": {"country": "us", "language": "en"}, "tavily": {"depth": "advanced"}, "exa": {"type": "neural"}, "you": {"country": "US", "safesearch": "moderate", "include_news": true}, "searxng": {"instance_url": "https://your-instance.example.com", "safesearch": 0} } ``` ---

FAQ

How do I install web-search-plus?

Run openclaw add @robbyczgw-cla/web-search-plus in your terminal. This installs web-search-plus into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/robbyczgw-cla/web-search-plus. Review commits and README documentation before installing.