fusion-search

融合搜索引擎:Playwright + stealth.js 反爬 + 16引擎智能路由。支持中文/英文搜索、自动引擎选择、全文抓取、质量评分。

Audits

Pending

Install

openclaw skills install fusion-search

🔗 Fusion Search v1.0.0 — 融合搜索

概述

Fusion Search 融合了 Playwright 反爬浏览器和 16 引擎智能路由的搜索能力。

核心特性:

  • 反爬强 — Playwright 物理浏览器 + stealth.js 反检测 + 请求节流 + 退避重试
  • 引擎广 — 16个搜索引擎(7国内 + 9国际),智能路由
  • 质量高 — 多引擎合并去重 + 域名信誉评分 + 低分改写重试
  • 全文抓取 — 支持前N条结果自动全文提取
  • 结构化输出 — 统一 JSON 格式,含 source 和 score 字段

安装

pip install playwright
playwright install chromium

引擎列表

国内引擎(7个)

引擎名URL语言说明
baidubaidu.com中文百度搜索,中文首选
bing_cncn.bing.com中文Bing中国站,稳定
sogousogou.com中文搜狗搜索
so_360so.com中文360搜索
wechatwx.sogou.com中文微信搜狗
shenmam.sm.cn中文神马搜索(移动端)
bing_intbing.com英文Bing国际站,兜底用

国际引擎(9个)

引擎名URL语言说明
googlegoogle.com英文Google搜索,国际首选
duckduckgoduckduckgo.com英文隐私友好
bravesearch.brave.com英文Brave Search
yahoosearch.yahoo.com英文Yahoo Search
startpagestartpage.com英文隐私代理搜索
ecosiaecosia.org英文环保搜索
qwantqwant.com英文法国隐私引擎
wolframalphawolframalpha.com英文计算/知识引擎

智能路由规则

输入特征引擎链全文
数学/公式/计算WolframAlpha → DDG → Bing INT
中文 + 技术/深度Bing CN → Baidu → Sogou → 360 → Bing INT3条
中文 + 新闻/时效百度 → Bing CN → Sogou → Bing INT
中文(普通搜索)Baidu → Bing CN → Sogou → 360 → WeChat → Bing INT
英文 + 短查询(≤3词)Google → DDG → Brave → Yahoo
英文 + 技术/深度Google → Bing INT → DDG3条
英文 + 新闻/时效Google(tbs) → Bing INT → Brave
用户指定引擎只查指定引擎看参数

工作流程

1. 路由决策阶段
   route_query() 分析 query 特征:
   - 语言检测(中文 vs 非中文)
   - 词数判断(短查询 vs 长查询)
   - 关键词检测(技术/新闻/教程/数学)
   → 输出引擎链 + 全文配置

2. 搜索执行阶段
   Playwright 浏览器:
   - headless Chromium 启动
   - stealth.js 反检测注入
   - 引擎 URL 构建(含时效参数)
   - 请求节流(≥3s间隔)
   - 引擎切换冷却(≥2s)
   - 0结果指数退避(5s→10s→15s)
   → DOM 选择器解析 → 结构化结果

3. 评分优化阶段
   - 域名信誉评分(低质量域名-0.3)
   - 内容质量评分(含数字+0.15)
   - 权威性加分(.gov/.org+0.2)
   - 单域名集中度检测
   - 低分自动优化:
     a. 单域名排除重试
     b. 意图识别改写重试
     c. 简化query重试

4. 结果处理阶段
   - 多引擎同源去重
   - 质量评分排序
   - 低质量域名过滤
   - 全文抓取(前N条)
   → 输出 JSON 数组

输出格式

[
    {
        "title": "Python 教程 — Python 3.14.5 文档",
        "url": "https://docs.python.org/zh-cn/3/tutorial/index.html",
        "snippet": "本教程被设计为针对新入门 Python 语言的程序员...",
        "content": "索引 模块 | 下一页...(9000字全文)",
        "engine": "bing_cn",
        "score": 0.85
    }
]

CLI 用法

# 基本搜索(auto模式,自动路由)
python scripts/fusion_search.py "Python 教程" --max=5

# 指定引擎
python scripts/fusion_search.py "machine learning" --engine=google --max=3

# 全文抓取前2条
python scripts/fusion_search.py "最佳实践" --full=2

# 时效搜索
python scripts/fusion_search.py "news today" --freshness=day --max=5

# 中文搜索
python scripts/fusion_search.py "今天天气" --engine=baidu --max=3

# 禁用自动改写
python scripts/fusion_search.py "特殊查询" --no-rewrite

# 禁用低质量过滤
python scripts/fusion_search.py "论坛讨论" --no-filter

Python API

from fusion_search import search

# 基本搜索
results = search("Python 教程", max_results=5)

# 深度技术搜索 + 全文
results = search(
    "machine learning tutorial",
    max_results=5,
    full_content=3,
    engine="auto"
)

# 中文时效搜索
results = search(
    "最新科技新闻",
    max_results=10,
    freshness="day"
)

# 处理结果
for r in results:
    source = r["engine"]
    title = r["title"]
    score = r.get("score", 0)
    print(f"[{source}] {title} (评分: {score:.2f})")

引擎路由源码参考

路由决策在 router.py 中实现的 route_query() 函数:

def route_query(query, engine="auto", max_results=10, freshness=None):
    lang = detect_language(query)
    is_short = len(query.split()) <= 3
    has_math = bool(re.search(r'[\d+\-*/^=]', query))
    has_tech = bool(re.search(r'Python|API|tutorial|教程', query, re.I))
    has_trend = bool(re.search(r'news|最新|新闻', query, re.I))

    if has_math and is_short:
        return {chain: ["wolframalpha", "duckduckgo"]}
    if lang == "zh":
        if has_tech or not is_short:
            return {chain: ["bing_cn","baidu","sogou","bing_int"], full: 3}
        return {chain: ["baidu","bing_cn","sogou","bing_int"], full: 0}
    # 非中文...
    return {chain: ["google","duckduckgo","brave"], full: 0}

注意事项

  • ⚠️ 首次执行需要 playwright install chromium(约 300MB)
  • ⚠️ Google/DDG 反爬较强,CN 环境下 Google 自动降级到 Bing
  • ⚠️ 搜索耗时 10-30 秒,取决于引擎链长度和被搜索网站响应速度
  • ⚠️ 部分搜索引擎 DOM 结构会变化,选择器需不定期维护
  • ⚠️ 搜索引擎返回的 URL 可能是重定向链接,全文抓取会跟随

性能指标

操作典型耗时说明
浏览器启动1-3s首次搜索
Bing搜索(单次)5-10s包含页面加载和DOM解析
全文抓取(单页)2-5s取决于页面复杂度和网络
链式搜索(完整)15-30s2-3个引擎+质量检查

依赖

  • Python >= 3.8
  • playwright(pip install playwright)
  • Chromium(playwright install chromium)

文件结构

fusion-search/
├── SKILL.md              ← 本文档
├── metadata.json         ← 包元数据
├── CHANGELOG.md          ← 变更日志
├── scripts/
│   ├── fusion_search.py  ← 主入口脚本
│   ├── engines.py        ← 16引擎URL+选择器定义
│   ├── router.py         ← 路由决策逻辑
│   ├── stealth.js        ← 反检测JS脚本
│   └── scorer.py         ← 质量评分+query改写
├── references/
│   └── engine_list.md    ← 引擎手册
└── tests/
    └── test_basic.py     ← 单元测试

版权

MIT-0 — 无限制使用