Free Search Aggregator
Reliable, provider-diverse web search for OpenClaw with high uptime + low operator overhead.
Why use this skill
- - 12 search providers, 6 requiring no API key at all
- Automatic failover: if one provider fails, the next is tried instantly
- Quota-aware: tracks daily usage, warns at 80%, skips exhausted providers
- Task search mode for multi-angle research queries
- Built-in storage lifecycle (cache / index / report), no workspace clutter
- Self-healing: health-based smart routing automatically promotes reliable providers
- Quality optimization: relevance scoring, fuzzy dedup, domain diversity, re-ranking
- Auto-discovery: probes candidate search engines and SearXNG instances for new sources
- Self-diagnostic:
doctor and setup commands for zero-friction onboarding
Provider Overview
| Provider | Key Required | Free Quota | Index Source | Notes |
|---|
| INLINECODE2 | BRAVEAPIKEY | 2000/day | Brave independent | High quality, privacy-friendly |
| INLINECODE3 |
EXA
APIKEY | ~33/day (1k/mo) | Neural + web | Semantic search, unique finds |
|
tavily | TAVILY
APIKEY | 1000/day | Web (AI-optimized) | Designed for AI agents |
|
duckduckgo | None | ~500/day | Bing + own | No key, privacy-focused |
|
bing_html | None | ~300/day | Microsoft Bing RSS | No key, stable XML feed |
|
mojeek | None (or MOJEEK
APIKEY) | 200/day | Mojeek independent | Non-Google/Bing index |
|
serper | SERPER
APIKEY | 2500/day | Google | High quota free tier |
|
searchapi | SEARCHAPI
APIKEY | 100/mo | Google / Bing | Multi-engine |
|
google_cse | GOOGLE
APIKEY + GOOGLE_CX | 100/day | Google | Official Google API |
|
baidu | BAIDU
APIKEY | 200/day | Baidu | Best for Chinese content |
|
wikipedia | None | 1000/day | Wikipedia | Factual/encyclopedic queries |
|
searxng | None | unlimited (self-hosted) | Meta (all engines) | Requires own instance |
Total daily quota (all keys configured): 8400+ requests/day
Credential model (important)
- - No mandatory API key — DuckDuckGo + Bing RSS + Mojeek + Wikipedia work out of the box.
- API-key providers fail gracefully if key is missing (AuthError → skip, no quota consumed, no latency):
-
BRAVE_API_KEY
-
EXA_API_KEY
-
TAVILY_API_KEY
-
SERPER_API_KEY
-
SEARCHAPI_API_KEY
-
GOOGLE_API_KEY +
GOOGLE_CX
-
BAIDU_API_KEY
-
MOJEEK_API_KEY (optional — without it uses HTML scraping)
Core capabilities
1. Search failover
Default provider order:
brave → exa → tavily → duckduckgo → bing_html → mojeek → serper → searchapi → google_cse → baidu → wikipedia
First successful non-empty result returns immediately.
2. Task-level multi-query search
- - Expands one goal into multiple targeted queries
- Aggregates + deduplicates results
- Prefix presets:
- default:
workers=1
-
@dual ... →
workers=2
-
@deep ... →
workers=3 + deeper query coverage
3. Quota intelligence
- - Per-provider daily tracking
- Real quota retrieval where supported (Tavily, SearchAPI, Brave via probe)
- Auto concurrency reduction at 80% quota saturation
4. Provider health monitoring
- - Tracks success rate, latency, and error types per provider over time
- Computes health scores (success 50%, latency 30%, freshness 20%)
- Smart ordering: auto-promotes healthy providers, demotes degraded ones
- View dashboard: INLINECODE28
5. Result quality optimization
- - Relevance scoring (query-title-snippet token overlap)
- Enhanced dedup: URL + title similarity (Jaccard threshold)
- Domain diversity: limits same-domain results (default max 3)
- Automatic filtering of low-quality results (short titles, missing URLs)
6. Source auto-discovery
- - Probes all configured providers for availability
- Scans candidate search engines (Marginalia, Wiby, public SearXNG instances)
- Validates response format, latency, and result quality
- Generates recommendations for new sources to integrate
- Run: INLINECODE29
7. Managed persistence
- - INLINECODE30
- INLINECODE31
- INLINECODE32
Quick commands
CODEBLOCK1
Provider setup guides
Bing RSS (bing_html) — No key needed
Uses Bing's built-in RSS endpoint (
format=rss) — bypasses bot detection. Works out of the box.
Mojeek — No key needed (API key optional)
Out-of-the-box HTML scraping. For higher quotas/stability:
- 1. Register at https://www.mojeek.com/services/search/api/
- Set
MOJEEK_API_KEY → automatically switches to JSON API mode
Wikipedia — No key needed
Multilingual support — change
lang in
providers.yaml:
CODEBLOCK2
Exa.ai — API key required
- 1. Register at https://exa.ai/
- Set INLINECODE38
- Free tier: 1000 searches/month (~33/day)
Google Custom Search — API key + CX required
- 1. Get API key: https://developers.google.com/custom-search/v1/introduction
- Create search engine: https://programmablesearchengine.google.com/
- Set
GOOGLE_API_KEY and INLINECODE40 - Free tier: 100 queries/day
Baidu Qianfan — API key required
- 1. Register at https://cloud.baidu.com/
- Set INLINECODE41
- Best for Chinese-language content
SearXNG — Self-hosted instance required
Public instances rate-limit server-to-server requests. Use your own:
docker run -d -p 8080:8080 searxng/searxng
Then in
providers.yaml:
searxng:
endpoint: http://localhost:8080
enabled: true
Post-install self-check
CODEBLOCK5
Output contract (stable)
- - Search:
query, provider, results[], meta.attempted, INLINECODE47 - Task search:
task, queries[], grouped_results[], merged_results[], INLINECODE52 - Quota:
date, providers[], totals; with --real: INLINECODE57
Operator notes
- - Default mode:
workers=1 — conservative for cost control - Use
@dual / @deep only for research tasks - INLINECODE61 and
YaCy are enabled: false by default (self-hosted only) - INLINECODE64 is optional — provider gracefully falls back to HTML scraping
- Provider health data stored in INLINECODE65
- Discovery results stored in INLINECODE66
- Run
python -m free_search doctor after setup to verify everything works - Run
python -m free_search discover periodically to find new search sources
免费搜索聚合器
为OpenClaw提供可靠、供应商多样化的网络搜索,具有高可用性 + 低运维成本。
为什么使用此技能
- - 12个搜索提供商,其中6个完全无需API密钥
- 自动故障转移:如果一个提供商失败,立即尝试下一个
- 配额感知:跟踪每日使用量,在80%时发出警告,跳过已耗尽的提供商
- 任务搜索模式,用于多角度研究查询
- 内置存储生命周期(缓存/索引/报告),无工作区混乱
- 自我修复:基于运行状况的智能路由自动提升可靠提供商
- 质量优化:相关性评分、模糊去重、域名多样性、重新排序
- 自动发现:探测候选搜索引擎和SearXNG实例以获取新来源
- 自我诊断:doctor和setup命令实现零摩擦上手
提供商概览
| 提供商 | 需要密钥 | 免费配额 | 索引来源 | 备注 |
|---|
| brave | BRAVEAPIKEY | 2000/天 | Brave独立索引 | 高质量,注重隐私 |
| exa |
EXA
APIKEY | ~33/天(1000/月) | 神经+网络 | 语义搜索,独特发现 |
| tavily | TAVILY
APIKEY | 1000/天 | 网络(AI优化) | 专为AI代理设计 |
| duckduckgo | 无 | ~500/天 | Bing + 自有 | 无需密钥,注重隐私 |
| bing_html | 无 | ~300/天 | Microsoft Bing RSS | 无需密钥,稳定XML源 |
| mojeek | 无(或MOJEEK
APIKEY) | 200/天 | Mojeek独立索引 | 非Google/Bing索引 |
| serper | SERPER
APIKEY | 2500/天 | Google | 高配额免费层级 |
| searchapi | SEARCHAPI
APIKEY | 100/月 | Google / Bing | 多引擎 |
| google
cse | GOOGLEAPI
KEY + GOOGLECX | 100/天 | Google | 官方Google API |
| baidu | BAIDU
APIKEY | 200/天 | 百度 | 最适合中文内容 |
| wikipedia | 无 | 1000/天 | 维基百科 | 事实/百科类查询 |
| searxng | 无 | 无限(自托管) | 元(所有引擎) | 需要自己的实例 |
每日总配额(所有密钥已配置):8400+次请求/天
凭证模型(重要)
- - 无强制API密钥 — DuckDuckGo + Bing RSS + Mojeek + Wikipedia开箱即用。
- 需要API密钥的提供商在密钥缺失时优雅降级(AuthError → 跳过,不消耗配额,无延迟):
- BRAVE
APIKEY
- EXA
APIKEY
- TAVILY
APIKEY
- SERPER
APIKEY
- SEARCHAPI
APIKEY
- GOOGLE
APIKEY + GOOGLE_CX
- BAIDU
APIKEY
- MOJEEK
APIKEY(可选 — 无此密钥则使用HTML抓取)
核心能力
1. 搜索故障转移
默认提供商顺序:
brave → exa → tavily → duckduckgo → binghtml → mojeek → serper → searchapi → googlecse → baidu → wikipedia
第一个成功的非空结果立即返回。
2. 任务级多查询搜索
- - 将一个目标扩展为多个针对性查询
- 聚合+去重结果
- 前缀预设:
- 默认:workers=1
- @dual ... → workers=2
- @deep ... → workers=3 + 更深查询覆盖
3. 配额智能
- - 按提供商每日跟踪
- 支持实时配额检索(Tavily、SearchAPI、Brave通过探测)
- 配额饱和度达到80%时自动降低并发
4. 提供商运行状况监控
- - 随时间跟踪每个提供商的成功率、延迟和错误类型
- 计算运行状况评分(成功率50%,延迟30%,新鲜度20%)
- 智能排序:自动提升健康提供商,降级退化提供商
- 查看仪表板:python -m free_search health
5. 结果质量优化
- - 相关性评分(查询-标题-摘要令牌重叠)
- 增强去重:URL + 标题相似度(Jaccard阈值)
- 域名多样性:限制同域结果(默认最多3个)
- 自动过滤低质量结果(短标题、缺少URL)
6. 来源自动发现
- - 探测所有已配置提供商的可用性
- 扫描候选搜索引擎(Marginalia、Wiby、公共SearXNG实例)
- 验证响应格式、延迟和结果质量
- 生成新来源集成建议
- 运行:python -m free_search discover
7. 托管持久化
- - memory/search-cache/YYYY-MM-DD/.json
- memory/search-index/search-index.jsonl
- memory/search-reports/YYYY-MM-DD/.md
快速命令
bash
普通搜索
scripts/search 最新AI代理框架2026 --max-results 5
任务搜索(多查询,并行)
scripts/search task @dual 比较Claude与GPT-4的代码生成能力 --max-results 5
深度研究模式
scripts/search task @deep 自动驾驶安全2026 --max-results 8 --max-queries 10
配额状态
scripts/status
从提供商API获取实时配额
scripts/remaining --real
清理缓存
python3 -m free_search gc --cache-days 14
提供商运行状况仪表板
python3 -m free_search health
发现新的搜索来源
python3 -m free_search discover
系统诊断
python3 -m free_search doctor
设置状态与建议
python3 -m free_search setup
提供商设置指南
Bing RSS(bing_html)— 无需密钥
使用Bing内置的RSS端点(format=rss)— 绕过机器人检测。开箱即用。
Mojeek — 无需密钥(API密钥可选)
开箱即用的HTML抓取。如需更高配额/稳定性:
- 1. 在https://www.mojeek.com/services/search/api/注册
- 设置MOJEEKAPIKEY → 自动切换到JSON API模式
维基百科 — 无需密钥
多语言支持 — 在providers.yaml中更改lang:
yaml
wikipedia:
lang: it # en | zh | it | de | fr | ja ...
Exa.ai — 需要API密钥
- 1. 在https://exa.ai/注册
- 设置EXAAPIKEY
- 免费层级:每月1000次搜索(约33次/天)
Google自定义搜索 — 需要API密钥 + CX
- 1. 获取API密钥:https://developers.google.com/custom-search/v1/introduction
- 创建搜索引擎:https://programmablesearchengine.google.com/
- 设置GOOGLEAPIKEY和GOOGLE_CX
- 免费层级:每天100次查询
百度千帆 — 需要API密钥
- 1. 在https://cloud.baidu.com/注册
- 设置BAIDUAPIKEY
- 最适合中文内容
SearXNG — 需要自托管实例
公共实例会限制服务器到服务器的请求。使用自己的实例:
bash
docker run -d -p 8080:8080 searxng/searxng
然后在providers.yaml中:
yaml
searxng:
endpoint: http://localhost:8080
enabled: true
安装后自检
bash
1) 确认提供商加载
scripts/status --compact
2) 冒烟测试(使用duckduckgo/bing/mojeek开箱即用)
scripts/search openclaw --max-results 3 --compact
3) 验证存储路径
ls -la /home/openclaw/.openclaw/workspace/memory/search-cache/ | tail -n 5
4) 检查实时配额(可选)
scripts/remaining --real --compact
输出契约(稳定)
- - 搜索:query、provider、results[]、meta.attempted、meta.quota
- 任务搜索:task、qu