
Multi Search
Run web research with automatic engine fallback, quota-aware APIs, and VPN-friendly network detection from a single Python entrypoint.
Overview
Multi-Search is a journey-wide agent skill that performs web search with automatic DuckDuckGo, Tavily, Bing API, and Bing crawler fallback, quota management, and network adaptation.
Install
npx skills add https://github.com/nex-zmh/agent-websearch-skill --skill multi-searchWhat is this skill?
- Engine chain: quality mode Tavily → DuckDuckGo → Bing API → Bing crawler; balance mode DuckDuckGo first
- Monthly quota awareness for Tavily and Bing API with unlimited DuckDuckGo and crawler fallbacks
- 5-minute network detection cache plus force_network_check after VPN changes
- search_skills helper with quality-first behavior for OpenClaw-style skill discovery
- Python deps: requests, tavily, duckduckgo_search; optional TAVILY_API_KEY and BING_API_KEY
- 4-tier engine fallback chain
- Tavily and Bing API documented at 1000 calls/month each
Adoption & trust: 664 installs on skills.sh; 9 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need reliable web search in an agent workflow but APIs fail, quotas expire, or your network path changes when you toggle VPN.
Who is it for?
Agent builders who want one search import with engine failover and optional Tavily/Bing keys for higher-quality research.
Skip if: Users who need a single-vendor compliant enterprise search appliance with no crawler fallback or local-only retrieval.
When should I use this skill?
User needs web search with automatic engine selection, network adaptation, quota management, or when 需要进行网络搜索、自动切换引擎、配额管理或网络环境可能变化.
What do I get? / Deliverables
search() or search_skills() returns results from the best reachable engine with optional forced network re-check and documented monthly limits on paid APIs.
- Ranked search result sets from the selected engine
- Optional skill-focused result set via search_skills
Recommended Skills
Journey fit
Useful at every journey phase - explore requirements and options before committing to a direction.
Where it fits
Scan competitor positioning and pricing pages without stopping when one search API is down.
Pull recent articles to sanity-check feature scope before building a prototype.
Fetch current third-party API docs while implementing an SDK integration.
Research keyword and SERP patterns ahead of a landing page refresh.
Gather sources for a changelog or blog post with quality-first Tavily when keys are set.
How it compares
An orchestrated multi-engine Python skill—not a bare DuckDuckGo snippet or a dedicated MCP search server.
Common Questions / FAQ
Who is multi-search for?
Solo builders running OpenClaw-style agents who need resilient public web search without hand-picking an engine each session.
When should I use multi-search?
Use it in Idea research for market scans, in Validate for competitor checks, in Build when fetching docs, in Launch/Grow for SEO and distribution research, and whenever automatic engine switching or quota management is required.
Is multi-search safe to install?
It performs outbound search and may use API keys; review the Security Audits panel on this page, scope keys with least privilege, and note crawler fallbacks touch third-party web endpoints.
SKILL.md
READMESKILL.md - Multi Search
# Multi-Search Skill - 智能多引擎搜索 本技能整合多个搜索引擎,自动检测网络环境,智能选择最佳可用引擎。 ## 引擎优先级 ### 质量优先模式 (prefer_quality=True) 1. Tavily API (1000次/月) - 质量最高,需 API Key 2. DuckDuckGo (无限免费) - 无需 API Key 3. Bing Web Search API (1000次/月) - 需 API Key 4. Bing 爬虫 (无限免费) - 最终回退 ### 平衡模式 (prefer_quality=False, 默认) 1. DuckDuckGo (无限免费) - 优先免费引擎 2. Tavily API (1000次/月) - 如果配置了 API Key 3. Bing Web Search API (1000次/月) 4. Bing 爬虫 (无限免费) ## 核心能力 - 智能网络检测与引擎切换 - 自动配额管理(Tavily/Bing API) - 支持网页内容抓取 - 5分钟网络检测缓存 ## 使用方式 ### 基本搜索 ```python from multi_search import search # 平衡模式 - 优先免费引擎 results = search("Python tutorial", max_results=5) # 质量优先模式 - 优先使用 Tavily results = search("AI research", max_results=5, prefer_quality=True) # 强制重新检测网络(切换 VPN 后使用) results = search("OpenClaw skills", max_results=5, force_network_check=True) ``` ### 搜索技能(自动质量优先) ```python from multi_search import search_skills results = search_skills("OpenClaw AI agent automation", max_results=10) ``` ### 查看系统状态 ```python from multi_search import get_status status = get_status() # 使用缓存 status = get_status(force_network_check=True) # 强制重新检测 ``` ### 抓取网页详细内容 ```python from multi_search import search, fetch_web_content, fetch_search_results_content # 搜索并抓取第一个结果的详细内容 results = search("OpenClaw new features", max_results=3) if results: content = fetch_web_content(results[0]['href'], max_length=3000) # content['title'], content['content'], content['success'] # 批量抓取所有搜索结果的详细内容 enriched_results = fetch_search_results_content(results, max_length=2000) for r in enriched_results: if r.get('full_content'): # 使用 summarize 技能总结内容 pass ``` ### 与 Summarize 技能结合使用 ``` OpenClaw 工作流: 1. 使用 multi-search 搜索关键词 2. 选择感兴趣的搜索结果 3. 使用 fetch_web_content() 抓取网页内容 4. 使用 summarize 技能总结网页内容 5. 将摘要呈现给用户 ``` ## 返回结果格式 ```python [ { 'title': '结果标题', 'href': 'https://example.com', 'body': '结果摘要...', 'source': 'duckduckgo' # 或 'tavily', 'bing_api', 'bing_scraper' } ] ``` ## 参数说明 - `query`: 搜索关键词 - `max_results`: 最大结果数(默认5) - `prefer_quality`: 是否优先质量(默认False) - `force_network_check`: 是否强制重新检测网络(默认False) ## 注意事项 - DuckDuckGo: 免费无限,但某些网络环境无法访问 - Tavily: 质量高,需要 API key,1000次/月 - Bing API: 官方稳定,需要 Azure 账号,1000次/月 - Bing 爬虫: 免费无限,但可能受反爬影响 # Python __pycache__/ *.py[cod] *$py.class *.so .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg # Virtual Environment .venv/ venv/ ENV/ env/ # IDE .idea/ .vscode/ *.swp *.swo *~ # API Keys and Secrets - IMPORTANT: Never commit real API keys! # Use api_keys.example.json as template, then rename to api_keys.json api_keys.json !api_keys.example.json # Cache and Data files (auto-generated on first run) # Use .example files as templates quota.json network_cache.json !quota.example.json !network_cache.example.json *.cache # OS generated files .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db # Logs *.log logs/ # Testing .pytest_cache/ .coverage htmlcov/ { "tavily": { "used": 0, "month": 1 }, "bing_api": { "used": 0, "month": 1 }, "last_reset": "2026-01-01T00:00:00.000000" } GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2026 Nex-ZMH This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your op