Unified search skill with Intelligent Auto-Routing. Uses multi-signal analysis to automatically select between Serper (Google), Tavily (Research), Querit (Multilingual AI Search), Exa (Neural), Perplexity (AI Answers), You.com (RAG/Real-time), and SearXNG (Privacy/Self-hosted) with confidence scoring.
Stop choosing search providers. Let the skill do it for you.
This skill connects you to 7 search providers (Serper, Tavily, Querit, Exa, Perplexity, You.com, SearXNG) and automatically picks the best one for each query. Shopping question? → Google results. Research question? → Deep research engine. Need a direct answer? → AI-synthesized with citations. Want privacy? → Self-hosted option.
# 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.
You only need ONE key to get started. Add more providers later for better coverage.
| Provider | Free Tier | Best For | Sign Up |
|---|---|---|---|
| Serper | 2,500/mo | Shopping, prices, local, news | serper.dev |
| Tavily | 1,000/mo | Research, explanations, academic | tavily.com |
| Querit | Contact sales/free tier varies | Multilingual AI search, international updates | querit.ai |
| Exa | 1,000/mo | "Similar to X", startups, papers | exa.ai |
| Perplexity | Via Kilo | Direct answers with citations | kilo.ai |
| You.com | Limited | Real-time info, AI/RAG context | api.you.com |
| SearXNG | FREE ✅ | Privacy, multi-source, $0 cost | Self-hosted |
Setting your keys:
# Option A: .env file (recommended)
export SERPER_API_KEY="your-key"
export TAVILY_API_KEY="your-key"
export QUERIT_API_KEY="your-key"
# Option B: config.json
{ "serper": { "api_key": "your-key" } }
| I want to... | Provider | Example Query |
|---|---|---|
| Find product prices | Serper | "iPhone 16 Pro Max price" |
| Find restaurants/stores nearby | Serper | "best pizza near me" |
| Understand how something works | Tavily | "how does HTTPS encryption work" |
| Do deep research | Tavily | "climate change research 2024" |
| Search across languages / international updates | Querit | "latest AI policy updates in Germany" |
| Find companies like X | Exa | "startups similar to Notion" |
| Find research papers | Exa | "transformer architecture papers" |
| Get a direct answer with sources | Perplexity | "events in Berlin this weekend" |
| Know the current status of something | Perplexity | "what is the status of Ethereum upgrades" |
| Get real-time info | You.com | "latest AI regulation news" |
| Search without being tracked | SearXNG | anything, privately |
Pro tip: Just search normally! Auto-routing handles most queries correctly. Override with -p provider when needed.
The skill looks at your query and picks the best provider:
"iPhone 16 price" → Serper (shopping keywords)
"how does quantum computing work" → Tavily (research question)
"latest AI policy updates in Germany" → Querit (multilingual + recency)
"companies like stripe.com" → Exa (URL detected, similarity)
"events in Graz this weekend" → Perplexity (local + direct answer)
"latest news on AI" → You.com (real-time intent)
"search privately" → SearXNG (privacy keywords)
What if it picks wrong? Override it: python3 scripts/search.py -p tavily -q "your query"
Debug routing: python3 scripts/search.py --explain-routing -q "your query"
python3 scripts/search.py -q "Tesla Model 3 price"
python3 scripts/search.py -q "explain machine learning"
python3 scripts/search.py -q "latest AI policy updates in Germany"
python3 scripts/search.py -q "startups like Figma"
python3 scripts/search.py -p serper -q "weather Berlin"
python3 scripts/search.py -p tavily -q "quantum computing" --depth advanced
python3 scripts/search.py -p querit -q "latest AI policy updates in Germany"
python3 scripts/search.py -p exa --similar-url "https://stripe.com" --category company
python3 scripts/search.py -p you -q "breaking tech news" --include-news
python3 scripts/search.py -p searxng -q "linux distros" --engines "google,bing"
{
"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", "include_news": true},
"searxng": {"instance_url": "https://your-instance.example.com"}
}
| Feature | Serper | Tavily | Exa | Perplexity | You.com | SearXNG |
|---|---|---|---|---|---|---|
| Speed | ⚡⚡⚡ | ⚡⚡ | ⚡⚡ | ⚡⚡ | ⚡⚡⚡ | ⚡⚡ |
| Direct Answers | ✗ | ✗ | ✗ | ✓✓ | ✗ | ✗ |
| Citations | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ |
| Factual Accuracy | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| Semantic Understanding | ⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐ |
| Full Page Content | ✗ | ✓ | ✓ | ✓ | ✓ | ✗ |
| Shopping/Local | ✓ | ✗ | ✗ | ✗ | ✗ | ✓ |
| Find Similar Pages | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ |
| RAG-Optimized | ✗ | ✓ | ✗ | ✗ | ✓✓ | ✗ |
| Privacy-First | ✗ | ✗ | ✗ | ✗ | ✗ | ✓✓ |
| API Cost | $$ | $$ | $$ | Via Kilo | $ | FREE |
No. You only need keys for providers you want to use. Start with one (Serper recommended), add more later.
Serper — fastest, cheapest, largest free tier (2,500 queries/month), and handles most queries well.
The skill automatically falls back to your other configured providers. Or switch to SearXNG (unlimited, self-hosted).
Yes, if self-hosted. You control the server, no tracking, no profiling. Public instances depend on the operator's policy.
# Docker (5 minutes)
docker run -d -p 8080:8080 searxng/searxng
Then enable JSON API in settings.yml. See docs.searxng.org.
Sometimes queries are ambiguous. Use --explain-routing to see why, then override with -p provider if needed.
If one provider fails (rate limit, timeout, error), the skill automatically tries the next provider. You'll see routing.fallback_used: true in the response when this happens.
{
"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"
}
}
Tavily, Serper, and Exa are NOT core OpenClaw providers.
❌ Don't modify ~/.openclaw/openclaw.json for these
✅ Use this skill's scripts — keys auto-load from .env
SearXNG SSRF Protection: The SearXNG instance URL is validated with defense-in-depth:
http/https schemes onlySEARXNG_ALLOW_PRIVATE=1