Web Search Plus
Unified search skill with Intelligent Auto-Routing. Uses multi-signal analysis to automatically select between Serper (Google), Tavily (Research), Exa (Neura...
Rank
62
Safety
84
Downloads
10k
Updated
Apr 15, 2026
Version
2.8.5
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 10.3K downloads reported by the source. Last updated 4/15/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Apr 15, 2026
- Adoption signal
- 10.3K downloadsadoption · observed Apr 15, 2026
- Latest release
- 2.8.5release · observed Feb 20, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install kn73gpe8xz2630jrknkb3ya96h7zb84h:web-search-plus- Install using `clawhub skill install kn73gpe8xz2630jrknkb3ya96h7zb84h:web-search-plus` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/robbyczgw-cla/web-search-plus before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-web-search-plus/snapshot"
Documentation
CLAWHUB
150,527 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: web-search-plus
version: 2.8.1
description: Unified search skill with Intelligent Auto-Routing. Uses multi-signal analysis to automatically select between Serper (Google), Tavily (Research), Exa (Neural), Perplexity (AI Answers), You.com (RAG/Real-time), and SearXNG (Privacy/Self-hosted) with confidence scoring.
tags: [search, web-search, serper, tavily, exa, perplexity, you, searxng, google, research, semantic-search, auto-routing, multi-provider, shopping, rag, free-tier, privacy, self-hosted, kilo]
metadata: {"openclaw":{"requires":{"bins":["python3","bash"],"env":{"SERPER_API_KEY":"optional","TAVILY_API_KEY":"optional","EXA_API_KEY":"optional","YOU_API_KEY":"optional","SEARXNG_INSTANCE_URL":"optional","KILOCODE_API_KEY":"optional — required for Perplexity provider (via Kilo Gateway)"},"note":"Only ONE provider key needed. All are optional."}}}
---
# Web Search Plus
**Stop choosing search providers. Let the skill do it for you.**
This skill connects you to 6 search providers (Serper, Tavily, 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?
- **Just search** — No need to think about which provider to use
- **Smart routing** — Analyzes your query and picks the best provider automatically
- **6 providers, 1 interface** — Google results, research engines, neural search, AI answers with citations, RAG-optimized, and privacy-first all in one
- **Works with just 1 key** — Start with any single provider, add more later
- **Free options available** — SearXNG is completely free (self-hosted)
---
## 🚀 Quick Start
```bash
# 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
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) |
| **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"
# Option B: config.json
{ "serper": { "api_key": "your-key" } }
```
---
## 🎯 WheREADME.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.
[](https://clawhub.ai)
[](https://clawhub.ai)
[](https://github.com/robbyczgw-cla/web-search-plus)
---
## 🧠 Features (v2.7.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
```bash
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**
### You.com (RAG/Real-time)
- 🤖 **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 o_meta.json
{
"ownerId": "kn73gpe8xz2630jrknkb3ya96h7zb84h",
"slug": "web-search-plus",
"version": "2.8.5",
"publishedAt": 1771603102076
}CHANGELOG.md
# Changelog - Web Search Plus ## [2.8.5] - 2026-02-20 ### ✨ Feature: Perplexity freshness filter - Added `freshness` parameter to Perplexity provider (`day`, `week`, `month`, `year`) - Maps to Perplexity's native `search_recency_filter` parameter - Example: `python3 scripts/search.py -p perplexity -q "latest AI news" --freshness day` - Consistent with freshness support in Serper and Brave providers ## [2.8.4] - 2026-02-20 ### 🔒 Security Fix: SSRF protection in setup wizard - **Fixed:** `setup.py` SearXNG connection test had no SSRF protection (unlike `search.py`) - **Before:** Operator could be tricked into probing internal networks during setup - **After:** Same IP validation as `search.py` — blocks private IPs, cloud metadata, loopback - **Credit:** ClawHub security scanner ## [2.8.3] - 2026-02-20 ### 🐛 Critical Fix: Perplexity results empty - **Fixed:** Perplexity provider returned 0 results because the AI-synthesized answer wasn't mapped into the results array - **Before:** Only extracted URLs from the answer text were returned as results (often 0) - **After:** The full answer is now the primary result (title, snippet with cleaned text), extracted source URLs follow as additional results - **Impact:** Perplexity queries now always return at least 1 result with the synthesized answer ## [2.8.0] - 2026-02-20 ### 🆕 New Provider: Perplexity (AI-Synthesized Answers) Added Perplexity as the 6th search provider via Kilo Gateway — the first provider that returns **direct answers with citations** instead of just links: #### Features - **AI-Synthesized Answers**: Get a complete answer, not a list of links - **Inline Citations**: Every claim backed by `[1][2][3]` source references - **Real-Time Web Search**: Perplexity searches the web live, reads pages, and summarizes - **Zero Extra Config**: Works through Kilo Gateway with your existing `KILOCODE_API_KEY` - **Model**: `perplexity/sonar-pro` (best quality, supports complex queries) #### Auto-Routing Signals New direct-answer intent detection routes to Perplexity for: - Status queries: "status of", "current state of", "what is the status" - Local info: "events in [city]", "things to do in", "what's happening in" - Direct questions: "what is", "who is", "when did", "how many" - Current affairs: "this week", "this weekend", "right now", "today" #### Usage Examples ```bash # Auto-routed python3 scripts/search.py -q "events in Graz Austria this weekend" # → Perplexity python3 scripts/search.py -q "what is the current status of Ethereum" # → Perplexity # Explicit python3 scripts/search.py -p perplexity -q "latest AI regulation news" ``` #### Configuration Requires `KILOCODE_API_KEY` environment variable (Kilo Gateway account). No additional API key needed — Perplexity is accessed through Kilo's unified API. ```bash export KILOCODE_API_KEY="your-kilo-key" ``` ### 🔧 Routing Rebalance Major overhaul of the auto-routing confidence scoring to fix Serper dominance: #### Problem Serper (G
FAQ.md
# Frequently Asked Questions
## Caching (NEW in v2.7.0!)
### How does caching work?
Search results are automatically cached locally for 1 hour (3600 seconds). When you make the same query again, you get instant results at $0 API cost. The cache key is based on: query text + provider + max_results.
### Where are cached results stored?
In `.cache/` directory inside the skill folder by default. Override with `WSP_CACHE_DIR` environment variable:
```bash
export WSP_CACHE_DIR="/path/to/custom/cache"
```
### How do I see cache stats?
```bash
python3 scripts/search.py --cache-stats
```
This shows total entries, size, oldest/newest entries, and breakdown by provider.
### How do I clear the cache?
```bash
python3 scripts/search.py --clear-cache
```
### Can I change the cache TTL?
Yes! Default is 3600 seconds (1 hour). Set a custom TTL per request:
```bash
python3 scripts/search.py -q "query" --cache-ttl 7200 # 2 hours
```
### How do I skip the cache?
Use `--no-cache` to always fetch fresh results:
```bash
python3 scripts/search.py -q "query" --no-cache
```
### How do I know if a result was cached?
The response includes:
- `"cached": true/false` — whether result came from cache
- `"cache_age_seconds": 1234` — how old the cached result is (when cached)
---
## General
### How does auto-routing decide which provider to use?
Multi-signal analysis scores each provider based on: price patterns, explanation phrases, similarity keywords, URLs, product+brand combos, and query complexity. Highest score wins. Use `--explain-routing` to see the decision breakdown.
### What if it picks the wrong provider?
Override with `-p serper/tavily/exa`. Check `--explain-routing` to understand why it chose differently.
### What does "low confidence" mean?
Query is ambiguous (e.g., "Tesla" could be cars, stock, or company). Falls back to Serper. Results may vary.
### Can I disable a provider?
Yes! In config.json: `"disabled_providers": ["exa"]`
---
## API Keys
### Which API keys do I need?
At minimum ONE key (or SearXNG instance). You can use just Serper, just Tavily, just Exa, just You.com, or just SearXNG. Missing keys = that provider is skipped.
### Where do I get API keys?
- Serper: https://serper.dev (2,500 free queries, no credit card)
- Tavily: https://tavily.com (1,000 free searches/month)
- Exa: https://exa.ai (1,000 free searches/month)
- You.com: https://api.you.com (Limited free tier for testing)
- SearXNG: Self-hosted, no key needed! https://docs.searxng.org/admin/installation.html
### How do I set API keys?
Two options (both auto-load):
**Option A: .env file**
```bash
export SERPER_API_KEY="your-key"
```
**Option B: config.json** (v2.2.1+)
```json
{ "serper": { "api_key": "your-key" } }
```
---
## Routing Details
### How do I know which provider handled my search?
Check `routing.provider` in JSON output, or `[🔍 Searched with: Provider]` in chat responses.
### Why does it sometimes choose Serper for research questions?
If the query has brand/Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/robbyczgw-cla/web-search-plus",
"sourceUrl": "https://clawhub.ai/robbyczgw-cla/web-search-plus",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "10.3K downloads",
"href": "https://clawhub.ai/robbyczgw-cla/web-search-plus",
"sourceUrl": "https://clawhub.ai/robbyczgw-cla/web-search-plus",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "2.8.5",
"href": "https://clawhub.ai/robbyczgw-cla/web-search-plus",
"sourceUrl": "https://clawhub.ai/robbyczgw-cla/web-search-plus",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-20T15:58:22.076Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-web-search-plus/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-robbyczgw-cla-web-search-plus/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 2.8.5",
"description": "web-search-plus 2.8.5 - Updated package version to 2.8.5. - Minor updates in CHANGELOG.md and scripts/search.py. - No changes to SKILL.md; user-facing documentation is unchanged.",
"href": "https://clawhub.ai/robbyczgw-cla/web-search-plus",
"sourceUrl": "https://clawhub.ai/robbyczgw-cla/web-search-plus",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-20T15:58:22.076Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
