BO-OpenSearch

Other

普适网页搜索。当用户说"搜索"、"查一下"、"查查"、"search"或发起信息查询时,接收用户查询,抓取真实网页内容,按相关性排序,剔除广告与噪音,只返回有价值的信息。

Install

openclaw skills install bo-opensearch

Bo OpenSearch 技能

一种用于普适网页搜索的技能。能够接收任意主题的查询,抓取真实内容,过滤广告与噪音,输出干净结果。


使用场景模型

典型场景

1. 学术 / 知识查询:
   场景特征:用户问"什么是 X"、"X 的原理"、"X 的研究进展"
   期望返回:权威来源、定义清晰、引用充分
   易踩的坑:被内容农场(content farm)SEO 抢占首页

2. 实时新闻 / 事件:
   场景特征:用户问"X 现在怎么样"、"今天 X 发生了什么"
   期望返回:发布时间近、来源多样、可交叉验证
   易踩的坑:旧文被算法重新置顶、单一来源偏见

3. 代码 / 技术问题:
   场景特征:用户问报错信息、API 用法、最佳实践
   期望返回:StackOverflow / 官方文档 / GitHub Issue 优先
   易踩的坑:被翻译站和 SEO 农场镜像污染

4. 商品 / 服务比较:
   场景特征:用户问"X 和 Y 哪个好"、"X 值不值得买"
   期望返回:独立评测、用户反馈、不含联盟营销链接
   易踩的坑:整页都是广告软文,难以分辨真实评价

5. 操作教程 / How-to:
   场景特征:用户问"怎么做 X"、"X 的步骤"
   期望返回:步骤明确、有截图或代码、版本明确
   易踩的坑:教程版本过期、步骤断裂

核心工作流(强制要求)

Step 1 — Web Search

规则:
  - 必须使用用户原始查询调用 WebSearch
  - 不得擅自改写查询,除非长度小于 3 个词

实施方式:
  - 收集所有结果(title + URL + snippet)
  - 不在此步过滤,留到后续步骤判断

仅当 query 过短时改写:
  原 query: "react hook"
  改写后: "react hook 用法 教程 示例"
  说明:必须告知用户已扩写,并展示扩写后的 query

Step 2 — Fetch Each Result

规则:
  - 尽可能多地 fetch,能成功的全部保留
  - 需要登录 / 交互的页面:列出但标注"需登录"
  - 失败的页面:列出但标注"无法打开"

实施方式:
  对每个 URL 调用 WebFetch
  并行执行以加快速度

并行抓取模板:
  "正在抓取 N 个来源 ..."
  完成后输出:成功 X / 失败 Y / 需登录 Z

Step 3 — Rank Results

规则:
  - 对每个成功 fetch 的页面打分
  - 按用户查询的原始顺序保留排名信息
  - 评分维度统一:相关性 / 内容深度 / 时效性

打分实施:
  相关性 = 是否直接回答 query
  深度   = 是否含具体事实、数据、步骤
  时效性 = 内容是否仍然准确(视主题而定)

结果分级:
  High   = 三项均为高 或 相关性高 + 深度高
  Medium = 相关性高但深度或时效一般
  Low    = 相关性低 或 内容空洞

Step 4 — Filter Content

强制移除:
  - 无法打开的页面(404 / 403 / 超时)
  - 纯广告页与软文(整页推销且与 query 无关)
  - 已被识别为内容农场镜像的结果

保留但标注:
  - 需登录页面
  - 被 paywall 遮挡的页面
  - 评分为 Low 但用户明确要求时

不可移除:
  - 来源 URL(任何情况下都必须可追溯)
  - 与 query 立场相反的合理内容

Step 5 — Present Results

输出格式:
  ## Search Results for: <user's query>

  ### 1. <Title> — <Source Name>  [High / Medium / Low]
  <URL>
  <2–5 句关于有用内容的总结>

  ### 2. <Title> — <Source Name>  [...]
  ...

  ---
  抓取概况:成功 X / 失败 Y / 需登录 Z

总结撰写规则:
  - 用平实语言,不照搬营销文案
  - 多源冲突时必须明确指出"来源 A 与来源 B 不一致"
  - 不补全没读到的内容,宁可写"该页未提及"

专属搜索策略

学术 / 知识查询

优先来源:
  - 维基百科、官方文档、权威机构站点(.edu / .gov / 官方组织)
  - 学术出版商(arxiv / nature / springer 等)

降权来源:
  - 内容农场(多语种镜像、机器翻译痕迹)
  - 答题站点的 SEO 长尾页

响应模板:
  "以下结果偏重权威来源。如需通俗解释,请加一句"通俗讲解"。"

实时新闻 / 事件

强制要求:
  - 必须读取页面发布时间
  - 超过 query 隐含时间范围的旧文降为 Low
  - 至少呈现 2 个独立来源以便交叉验证

响应模板:
  "由于事件在持续发展,以下结果来自 N 个来源,发布时间在 X 至 Y 之间。"

代码 / 技术问题

优先来源:
  - 官方文档、GitHub Issue、StackOverflow
  - 项目维护者的博客

降权来源:
  - 内容站镜像的 StackOverflow 翻译版
  - 不附版本信息的旧教程

响应模板:
  "以下结果优先来自官方文档与 StackOverflow。代码版本:[X]。"

商品 / 服务比较

强制要求:
  - 必须区分"评测"与"软文"
  - 含联盟链接的页面必须在总结中标注"含推广"
  - 至少 1 个独立来源(用户社区、Reddit 等)

响应模板:
  "以下结果中:独立评测 X 篇 / 含推广 Y 篇 / 用户反馈 Z 条。"

操作教程 / How-to

强制要求:
  - 总结必须包含:版本、前置条件、关键步骤数
  - 步骤断裂或截图缺失的教程降为 Medium

响应模板:
  "以下教程基于版本 [X]。如版本不匹配请告知。"

检测与筛选示例

示例 1 — 普通学术查询

输入:"什么是 RAG"

执行轨迹:
  Step 1: WebSearch → 10 条结果
  Step 2: Fetch → 成功 8 / 失败 1 / 需登录 1
  Step 3: 评分 → High 3 / Medium 4 / Low 1
  Step 4: 移除 1 条纯广告
  Step 5: 输出 7 条干净结果

呈现:
  "## Search Results for: 什么是 RAG
   ### 1. RAG: Retrieval-Augmented Generation — Meta AI [High]
   ..."

示例 2 — 含噪音的商品查询

输入:"2026 年最好的笔记本"

执行轨迹:
  Step 1: WebSearch → 10 条结果,多数为带联盟链接的"榜单文"
  Step 2: Fetch → 成功 9 / 失败 1
  Step 3: 评分 → High 1 / Medium 3 / Low 5(含推广 5 篇)
  Step 4: 不移除推广,但全部标注"含推广"
  Step 5: 输出时附说明:"独立评测 1 / 含推广 5 / 用户反馈 3"

呈现:
  "提示:本主题大量结果为含推广榜单。独立评测仅 1 篇,建议补充 Reddit 等社区反馈。"

执行清单

搜索前

□ 确认 query 是否清晰(过短则扩写并告知用户)
□ 判断属于哪类场景(学术 / 新闻 / 代码 / 商品 / 教程)
□ 选择对应的专属策略

搜索中

□ 用原始 query 调用 WebSearch
□ 并行 fetch 所有可达 URL
□ 记录失败与需登录的 URL
□ 按统一维度打分

搜索后

□ 移除广告与无法打开的页面
□ 多源冲突时显式标注
□ 输出附抓取概况(成功 / 失败 / 需登录)
□ 不编造任何未读到的内容

日志与缓存

记录项:
  - 原始 query 与(如有)扩写后的 query
  - 抓取的 URL 列表与各自状态
  - 每条结果的评分
  - 处置结果(保留 / 移除 / 标注)
  - 时间戳

告警条件:
  - 同一 query 连续 3 次结果质量均为 Low
  - 抓取成功率低于 30%
  - 全部结果均为含推广内容

集成技能

技能集成功能
summarize对长篇结果做二次浓缩
cite-source为输出补充规范引用格式
fact-check多源冲突时调用以判断哪个更可信
translate命中外语权威源时自动翻译关键段落

禁止事项

❌ 编造 URL 或来源名
❌ 隐藏来源链接
❌ 把广告软文伪装为独立评测
❌ 在多源冲突时只呈现单一观点
❌ 跳过"需登录""无法打开"的标注

修订历史

[2026-05-03] 初次创建(5 步流程)
[2026-05-03] 扩展:加入场景模型、专属策略、分级、清单、禁止事项

所有结果均在"可能含广告或噪音"的预设前提下进行处理。