Back to skills
SkillHub ClubShip Full StackFull StackBackend

free-search

完全免费的网页搜索,使用 Bing 搜索结果。无需 API key,完全免费使用。当用户需要搜索网页、查找信息时使用此命令。

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
3,129
Hot score
99
Updated
March 20, 2026
Overall rating
C0.0
Composite score
0.0
Best-practice grade
B77.6

Install command

npx @skill-hub/cli install openclaw-skills-ddg-free

Repository

openclaw/skills

Skill path: skills/ipdoctor961051-cyber/ddg-free

完全免费的网页搜索,使用 Bing 搜索结果。无需 API key,完全免费使用。当用户需要搜索网页、查找信息时使用此命令。

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack, Backend.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: openclaw.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install free-search into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/openclaw/skills before adding free-search to shared team environments
  • Use free-search for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: free-search
description: "完全免费的网页搜索,使用 Bing 搜索结果。无需 API key,完全免费使用。当用户需要搜索网页、查找信息时使用此命令。"
metadata: { "openclaw": { "emoji": "🔍", "requires": { "bins": ["python3"] } } }
---

# Free Search

完全免费的网页搜索,使用 Bing 搜索结果。

## 何时使用

✅ **使用此命令当:**
- 用户需要搜索网页
- 查找最新信息
- 查找资料或文档
- 需要网络搜索结果

## 使用方法

```bash
python3 /Users/liruozhen/openclaw/skills/ddg-free/scripts/search.py --query "搜索关键词" --max-results 5
```

## 输出格式

返回 JSON 格式,包含:
- `query`: 搜索词
- `results`: 结果数组,每个包含:
  - `title`: 标题
  - `url`: 链接
  - `snippet`: 摘要

## 示例

```bash
python3 /Users/liruozhen/openclaw/skills/ddg-free/scripts/search.py --query "人工智能最新发展" --max-results 3
```

## 特点

- ✅ 完全免费,无需注册
- ✅ 无需 API key
- ✅ 无使用限制
- ✅ 支持中英文搜索
- ✅ 使用 Bing 搜索结果


---

## Skill Companion Files

> Additional files collected from the skill directory layout.

### _meta.json

```json
{
  "owner": "ipdoctor961051-cyber",
  "slug": "ddg-free",
  "displayName": "Ddg Free",
  "latest": {
    "version": "1.0.0",
    "publishedAt": 1772503120247,
    "commit": "https://github.com/openclaw/skills/commit/048034890469a334d3ce680d0c5baee1035a6afb"
  },
  "history": []
}

```

### scripts/search.py

```python
#!/usr/bin/env python3
import requests
import sys
import json
import argparse
from urllib.parse import quote_plus, unquote
from bs4 import BeautifulSoup


def search(query, max_results=5):
    url = f"https://cn.bing.com/search?q={quote_plus(query)}"

    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.5",
    }

    try:
        resp = requests.get(url, headers=headers, timeout=15)
        resp.raise_for_status()

        soup = BeautifulSoup(resp.text, "html.parser")

        results = []

        for item in soup.select(".b_algo"):
            title_elem = item.select_one("h2 a")
            snippet_elem = item.select_one(".b_caption p")

            if title_elem:
                title = title_elem.get_text(strip=True)
                url = title_elem.get("href", "")

                snippet = ""
                if snippet_elem:
                    snippet = snippet_elem.get_text(strip=True)

                if title and url and not url.startswith("http"):
                    url = "https://www.bing.com" + url

                if url.startswith("http"):
                    results.append({"title": title, "url": url, "snippet": snippet})

                    if len(results) >= max_results:
                        break

        output = {"query": query, "results": results}

        print(json.dumps(output, ensure_ascii=False, indent=2))

    except Exception as e:
        print(json.dumps({"error": str(e)}), file=sys.stderr)
        sys.exit(1)


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--query", required=True)
    parser.add_argument("--max-results", type=int, default=5)
    args = parser.parse_args()
    search(args.query, args.max_results)

```