multi-search

智能多引擎搜索,自动检测网络环境并按优先级切换:DuckDuckGo -> Tavily -> Bing API -> Bing爬虫。支持自动配额管理和网络缓存。Invoke when user needs web search with automatic engine selection and network adaptation.

Skill file

Preview skill file
---
name: multi-search
description: 智能多引擎搜索,自动检测网络环境并按优先级切换:DuckDuckGo -> Tavily -> Bing API -> Bing爬虫。支持自动配额管理和网络缓存。Invoke when user needs web search with automatic engine selection and network adaptation.
trigger: 当需要进行网络搜索、需要自动切换引擎、需要配额管理或网络环境可能变化时触发。
metadata: {"openclaw":{"emoji":"🔍","requires":{"python":["requests","tavily","duckduckgo_search"],"env":["TAVILY_API_KEY","BING_API_KEY"]},"install":[{"id":"pip","kind":"pip","package":"requests tavily duckduckgo_search","label":"Install dependencies (pip)"}]}}
---

# 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 爬虫: 免费无限,但可能受反爬影响

Source

Creator's repository · nex-zmh/agent-websearch-skill

View on GitHub

Security

Security checks in progress
Results will appear here once audits complete
What this skill can do
Reads your filesConnects to the internetRuns code on your machine
Checked by 3 independent security firms
Does it try to trick the AI?Not yet checkedPending · Gen Agent Trust Hub
Does it sneak in hidden code?Not yet checkedPending · Socket
Does it have known bugs?Not yet checkedPending · Snyk