Smart Web Search

Other

智能联网搜索工具,国内外自动切换引擎,Query 意图优化,双层内容抓取,适合中文和英文查询

Install

openclaw skills install free-smart-web-search

smart-web-search

智能联网搜索工具,整合多项优化能力:

核心特性

1. 区域自动切换(HTTP 优先,cookies 兜底)

  • 国内网络: 自动使用 Bing 国内版(HTTP 直连优先)
    • 结果不足 3 条时,启动有头浏览器获取 cookies 后立即关闭,用 cookies 重试 HTTP
    • 浏览器只用于获取 session cookies,搜索仍走 HTTP 通道
  • 国际网络: 自动使用 DuckDuckGo HTML(纯 HTTP,速度快)
  • 兜底策略: 主引擎无结果时自动切换备用引擎
  • 架构优势: 主路径基于 HTTP 请求,速度快、资源占用低

2. Query 智能改写

基于搜索意图自动优化关键词,提升结果相关性:

输入示例改写后说明
深圳有什么好玩的深圳 景点城市游玩查询
深圳美食深圳 美食推荐城市美食查询
今日金价金价去掉模糊时间词
Python 是什么Python 介绍知识类查询
Python 教程Python 教程教程类(标准化)
怎么做蛋糕蛋糕 做法方法类查询
xxx 怎么样xxx 评价评价类查询
xxx 靠谱吗xxx 评价评价类查询
A和B哪个好A B 对比对比类查询
Python vs JavaPython Java 对比VS对比查询
xxx 下载xxx 官方下载下载类查询
xxx 官网xxx 官网官网查询
最新xxx消息xxx 最新资讯类查询

可通过 --no-rewrite 跳过改写。

3. 双层内容抓取

搜索后自动抓取前 N 条 URL 的正文内容:

  • 第 1 层: 轻量 HTTP + cheerio(秒出,不启动浏览器)
    • 支持 JSON API、JSON-LD、Next.js 数据提取
    • 自动处理 GBK 编码
  • 第 2 层: Playwright headed 浏览器兜底(支持 JS 渲染页面)

4. 低质量域名过滤

可选参数 --filter,自动过滤:

  • 百度经验/知道/贴吧/文库
  • 知乎(可选)

使用示例

# 基础搜索(自动检测区域,抓取前3条正文)
node scripts/search.js "Claude Code 教程"

# 指定区域
node scripts/search.js "最新科技新闻" --region=cn

# 只搜索不抓正文
node scripts/search.js "React hooks" --no-fetch

# 过滤低质量域名
node scripts/search.js "编程入门" --filter

# 跳过 Query 改写
node scripts/search.js "今日金价" --no-rewrite

# 抓取前5条正文
node scripts/search.js "AI 发展趋势" --fetch=5

# 最多返回20条结果
node scripts/search.js "开源项目" --max=20

安装

自动安装(推荐)

cd smart-web-search
bash scripts/setup.sh   # Linux/macOS

Windows PowerShell:

cd smart-web-search
npm install
npx playwright install chromium

依赖

依赖用途大小必需
Node.js >= 18运行时-
cheerioHTML 解析
commanderCLI 参数
iconv-liteGBK 编码
playwright正文抓取(仅 fetch.js 使用)50MB
ChromiumPlaywright 浏览器(仅正文抓取兜底)150MB

说明

  • 搜索功能完全基于 HTTP,无需浏览器
  • 正文抓取优先用 HTTP,失败时 Playwright 兜底(需要 Chromium)
  • 如果只使用 --no-fetch(不抓正文),可以不安装 Chromium

国内用户安装时自动使用镜像源加速。

参数说明

参数类型默认值说明
querystring-搜索关键词(必填)
--maxinteger10最大结果数(1-30)
--regionstringauto区域:auto/cn/intl
--fetchinteger3抓取前N条正文(0=不抓)
--max-leninteger6000单页最大字符数
--no-fetchflag-禁用正文抓取
--filterflag-过滤低质量域名
--no-rewriteflag-跳过 Query 改写

性能优化

  • 复用浏览器守护进程(提速约70%)
  • 国内/海外引擎智能选择
  • HTTP 优先,Playwright 兜底
  • 并行抓取多个 URL

已知限制

  • Bing 即时答案卡片(天气、计算器)不返回网页链接,会触发补词重试
  • DDG 国内访问:DuckDuckGo 在国内被墙,国内策略不使用 DDG 主引擎
  • JS 渲染页面:部分需要 JS 渲染的页面,HTTP 抓取失败时自动用 Playwright headed 重试
  • 代理环境:出口 IP 走代理可能影响区域检测,可手动指定 --region=cn/intl

技术架构

区域检测(三轮并行探测,3秒超时)
  ↓
Query 改写(意图识别规则,可选)
  ↓
搜索引擎(纯 HTTP,无浏览器)
  - 国内: Bing HTML (cn.bing.com)
  - 海外: DDG HTML (html.duckduckgo.com)
  ↓
去重(域名+路径主干) + 域名过滤(可选)
  ↓
正文抓取(默认前3条)
  - 第1层: HTTP + cheerio(秒出,JSON-LD/Next.js 数据提取)
  - 第2层: Playwright headed 兜底(处理 JS 渲染页面)
  ↓
返回 JSON 结果(title, url, snippet, content)

性能优化

  • 搜索阶段无浏览器启动,响应时间 < 3 秒
  • 正文抓取并行执行,HTTP 优先保证速度
  • 复用浏览器守护进程(如果启用),提速约 70%

与其他搜索工具的对比

特性smart-web-searchfree-web-search-jsfree-web-search (Python)
运行时Node.jsNode.jsPython 3
搜索架构纯 HTTPPlaywright headlessPlaywright headless
区域检测✅ 三轮并行✅ 三轮并行❌ 固定国内
Query 改写✅ 7条规则❌ 无✅ 7条规则
域名过滤✅ 可选❌ 无✅ 可选
正文抓取✅ HTTP → PW 两层✅ HTTP → PW 两层❌ 单层 PW
headless 问题✅ 无(搜索用 HTTP)⚠️ 有(Bing 可能检测)⚠️ 有
速度⚡ 极快(<3s)🟡 慢(需启动浏览器)🟡 慢

推荐使用场景

  • 本工具 (smart-web-search): 需要快速稳定搜索,国内外环境都适用,OpenClaw 社区推荐
  • free-web-search-js: 已在项目中使用且稳定运行
  • free-web-search (Python): Python 技术栈,无 Node.js 环境

与 Claude Code 内置 WebFetch 的关系

  • 本工具侧重 搜索 + 批量抓取,适合"查资料、找教程、搜新闻"场景
  • WebFetch 侧重 单 URL 精确抓取,适合"读取已知网页内容"场景
  • 两者互补,可配合使用

验证环境

cd smart-web-search
node scripts/search.js "测试搜索" --max=2 --no-fetch

成功返回 JSON 数组即可。