Web Search Plus
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.
---
✨ What Makes This Different?
---
🚀 Quick Start
```bash
Interactive setup (recommended for first run)
python3 scripts/setup.pyOr 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
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](https://serper.dev) | | Tavily | 1,000/mo | Research, explanations, academic | [tavily.com](https://tavily.com) | | Querit | Contact sales/free tier varies | Multilingual AI search, international updates | [querit.ai](https://querit.ai) | | Exa | 1,000/mo | "Similar to X", startups, papers | [exa.ai](https://exa.ai) | | Perplexity | Via Kilo | Direct answers with citations | [kilo.ai](https://kilo.ai) | | You.com | Limited | Real-time info, AI/RAG context | [api.you.com](https://api.you.com) | | SearXNG | FREE ✅ | Privacy, multi-source, $0 cost | Self-hosted |
Setting your keys:```bash
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" } } ```---
🎯 When to Use Which Provider
| 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.---
🧠 How Auto-Routing Works
The skill looks at your query and picks the best provider:
```bash "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"`---
📖 Usage Examples
Let Auto-Routing Choose (Recommended)
```bash 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" ```
Force a Specific Provider
```bash 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" ```
---
⚙ 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", "include_news": true}, "searxng": {"instance_url": "https://your-instance.example.com"} } ```
---
📊 Provider Comparison
| 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 |
---
❓ Common Questions
Do I need API keys for all providers?
No. You only need keys for providers you want to use. Start with one (Serper recommended), add more later.Which provider should I start with?
Serper — fastest, cheapest, largest free tier (2,500 queries/month), and handles most queries well.What if I run out of free queries?
The skill automatically falls back to your other configured providers. Or switch to SearXNG (unlimited, self-hosted).How much does this cost?
Is SearXNG really private?
Yes, if self-hosted. You control the server, no tracking, no profiling. Public instances depend on the operator's policy.How do I set up SearXNG?
```bashDocker (5 minutes)
docker run -d -p 8080:8080 searxng/searxng ``` Then enable JSON API in `settings.yml`. See [docs.searxng.org](https://docs.searxng.org/admin/installation.html).Why did it route my query to the "wrong" provider?
Sometimes queries are ambiguous. Use `--explain-routing` to see why, then override with `-p provider` if needed.---
🔄 Automatic Fallback
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.
---
📤 Output Format
```json { "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 Note
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`
---
🔒 Security
SearXNG SSRF Protection: The SearXNG instance URL is validated with defense-in-depth:📚 More Documentation
---