---
slug: "web-search-skill"
source_type: "skill_md"
source_url: "https://cdn.jsdelivr.net/gh/yejinlei/web-search-skill@main/SKILL.md"
repo: "https://github.com/yejinlei/web-search-skill"
source_file: "SKILL.md"
branch: "main"
---
---
name: web-search
description: 通用网络搜索技能，支持多引擎搜索（百度、必应、DuckDuckGo），无需API密钥即可获取实时信息
version: 1.3.0
author: yejinlei
license: MIT
tags:
  - search
  - web
  - internet
  - baidu
  - bing
---

# Web Search Skill

A powerful web search skill supporting multiple search engines without requiring API keys.

## Features

- 🔍 **Multi-Engine Support**: Baidu (Playwright), Bing, DuckDuckGo
- 🌐 **No API Key Required**: Uses browser automation and web scraping
- 🔄 **Smart Fallback**: Automatically switches engines when one fails
- 📊 **Structured Results**: Returns clean search results with title, URL, and snippet
- 🚀 **High Performance**: Async support with Playwright browser automation

## Usage

### Basic Search

```python
result = main({
    "action": "search",
    "query": "Python tutorial",
    "num_results": 5
})
```

### Deep Search

```python
result = main({
    "action": "deep_search",
    "query": "machine learning latest research",
    "num_results": 5
})
```

### Web Page Crawling

```python
result = main({
    "action": "crawl",
    "url": "https://example.com"
})
```

## Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| action | string | Yes | Operation type: "search", "deep_search", or "crawl" |
| query | string | Conditional | Search query (required for search/deep_search) |
| url | string | Conditional | Target URL (required for crawl) |
| num_results | int | No | Number of results, default 5, max 20 |
| region | string | No | Region code, default 'cn-zh' |

## Output Format

### Search Result

```python
{
    "success": True,
    "query": "search query",
    "engine": "baidu+playwright",
    "num_results": 5,
    "results": [
        {
            "title": "Result title",
            "href": "https://...",
            "body": "Snippet content"
        }
    ],
    "message": "Search completed"
}
```

### Deep Search Result

```python
{
    "success": True,
    "query": "search query",
    "search_results": [...],
    "detailed_info": {
        "extracted_content": "..."
    },
    "message": "Deep search completed"
}
```

## Execution

**type**: script
**script_path**: scripts/web_search.py
**entry_point**: main
**dependencies**: 
  - uv>=0.1.0
  - requests>=2.28.0
  - baidusearch>=1.0.3
  - crawl4ai>=0.8.0
  - playwright>=1.40.0

## Search Strategy

1. **Primary**: `baidusearch` library (fastest, no browser)
2. **Secondary**: Playwright + Baidu (most reliable, bypasses anti-bot)
3. **Tertiary**: DuckDuckGo (privacy-focused)
4. **Fallback**: Bing (international)

## Notes

1. **First Run**: Playwright will download Chromium browser on first use (~100MB)
2. **Rate Limiting**: Be mindful of search frequency to avoid temporary blocks
3. **Network**: Requires internet connection
4. **Results**: May vary based on search engine algorithms and location

## Error Handling

- Returns `{"success": False, "message": "..."}` on errors
- Automatically retries with fallback engines
- Graceful degradation when optional dependencies are missing
