名称: openclaw-serper
描述: >
通过 Serper API 进行谷歌搜索,并使用 trafilatura 从每个结果中提取完整的网页内容。
返回干净易读的全文,而不仅仅是摘要片段。
当用户需要进行网络搜索、研究、获取时事新闻、事实核查、产品比较、技术文档查阅,或任何需要从互联网获取最新信息的问题时使用。
许可证: MIT
compatibility: 需要 Python 3、trafilatura (通过 pip install trafilatura 安装) 以及网络访问权限。
允许工具: Bash(python3:)
元数据:*
author: nesdeq
version: "3.1.1"
tags: "search, web-search, serper, google, content-extraction"
通过 Serper API 进行谷歌搜索。获取搜索结果并使用 trafilatura 读取实际网页以提取干净、完整的文本内容。不仅仅是摘要片段,而是完整的文章正文。
本技能已获取并提取完整的网页内容。请勿对由此技能返回的 URL 使用 WebFetch、web_fetch、WebSearch、浏览器工具或任何其他 URL 抓取/浏览工具。所需内容已包含在输出中。切勿再进行单独的抓取操作——所有信息都在结果里。
精心构造一个好的搜索查询。这通常就足够了。
每次调用都会返回多个包含完整页面文本的结果——通过单个查询即可获得广泛的覆盖范围。不要为了“探索”一个主题而运行多次搜索。一个精心选择、模式正确的查询足以覆盖需求。
最多调用两次,仅当用户的请求确实涉及两个截然不同的主题时(例如,“比较 X 与 Y”,其中 X 和 Y 需要分别搜索,或者针对不同方面进行一次 default 模式加一次 current 模式调用)。绝不超过两次。
禁止行为:
- 使用不同措辞运行相同查询以“获取更多结果”
- 运行连续搜索以“深入挖掘”——完整的页面内容已经足够深入
- 运行一次搜索找到某物,然后再运行一次进行跟进——请阅读你已有的内容
共有两种模式。根据查询选择正确的模式:
default 模式 — 通用搜索(全时段)current 模式 — 新闻与近期信息| 查询特征 | 模式 |
|---|---|
| “X 如何工作”、“什么是 X”、“解释 X” | default |
| 产品调研、比较、教程 | default |
| 技术文档、指南 | default |
| 历史话题、常青内容 | default |
| “新闻”、“最新”、“今天”、“本周”、“近期” | current |
| “发生了什么”、“突发”、“宣布”、“发布” | current |
| 时事、政治、体育比分、股票价格 | current |
默认为全球范围——无国家过滤器,返回英文结果。这仅适用于英文查询。
当出现以下任何情况时,你必须始终设置 --gl 和 --hl 参数:
- 用户的消息使用非英语语言
- 你构造的搜索查询使用非英语语言
- 用户提及特定的国家、城市或地区
- 用户在非英语语境下要求获取本地结果(价格、新闻、商店等)
如果用户使用德语书写,你必须传递 --gl de --hl de。没有例外。
| 场景 | 参数 |
|---|---|
| 英文查询,无特定国家目标 | (省略 --gl 和 --hl) |
| 德语查询 或 用户使用德语书写 或 目标为德国/奥地利/瑞士 | --gl de --hl de |
| 法语查询 或 用户使用法语书写 或 目标为法国 | --gl fr --hl fr |
| 任何其他非英语语言/国家 | --gl XX --hl XX (ISO 代码) |
经验法则: 如果查询字符串包含非英语单词,则将 --gl 和 --hl 设置为匹配该语言。
python3 scripts/search.py -q "查询内容" [--mode 模式] [--gl 国家代码] [--hl 语言代码]
# 英文,通用研究
python3 scripts/search.py -q "HTTPS 如何工作"
# 英文,时效性信息
python3 scripts/search.py -q "OpenAI 最新公告" --mode current
# 德语查询 — 设置区域 + 当前模式获取新闻/价格
python3 scripts/search.py -q "aktuelle Preise iPhone" --mode current --gl de --hl de
# 德语新闻
python3 scripts/search.py -q "Nachrichten aus Berlin" --mode current --gl de --hl de
# 法语产品调研
python3 scripts/search.py -q "meilleur smartphone 2026" --gl fr --hl fr
脚本输出一个 JSON 数组。第一个元素是元数据,其余是包含完整提取内容的结果:
[{"query": "...", "mode": "default", "locale": {"gl": "world", "hl": "en"}, "results": [{"title": "...", "url": "...", "source": "web"}]}
,{"title": "页面标题", "url": "https://example.com", "source": "web", "content": "完整的提取页面文本..."}
,{"title": "新闻文章", "url": "https://news.com", "source": "news", "date": "2 小时前", "content": "完整的文章文本..."}
]
| 字段 | 描述 |
|---|---|
title |
页面标题 |
url |
来源 URL |
source |
"web"、"news" 或 "knowledge_graph" |
content |
完整提取的页面文本(如果提取失败,则回退到搜索摘要片段) |
date |
可用时显示(新闻结果始终有,网页结果有时有) |
| 参数 | 描述 |
|---|---|
-q, --query |
搜索查询(必需) |
-m, --mode |
default(全时段,5个结果)或 current(过去一周+新闻,各3个) |
--gl |
国家代码(例如 de、us、fr、at、ch)。默认值:world |
--hl |
语言代码(例如 en、de、fr)。默认值:en |
{"error": "未找到结果", "query": "..."} 退出。.env 文件加载。如果缺失,脚本将退出并显示设置说明。