Back to skills
extension
Category: OtherNo API key required

全引擎和舆情搜索

全能搜索skill - 全平台聚合搜索 & 社交舆情分析引擎 v3.0。 支持搜索聚合、跨平台信息对比、社交舆情分析、相似性/相关性分析, 内置 MinHash+LSH 近似去重 (O(n))、分词缓存、时间新鲜度衰减、相对时间解析、自动降级。 输出结构化 Markdown 报告 + JSON 摘要 + 断点续跑。

personAuthor: user_6455574ahubcommunity

全能搜索skill — 全平台聚合搜索分析器 v3.0

概述

一键聚合搜索 + 智能分析。输入一个关键词,输出一份涵盖各大搜索引擎、 新闻平台、社交媒体的结构化报告,包含去重、相关性评分(含时间新鲜度)、 相似度矩阵、平台分布统计、性能报告、中间结果持久化。

v3.0 新增优化:

  • --max-items 参数:控制输入上限(默认 2000),防止大输入内存飙升
  • 相对时间解析:从 snippet 正则提取"刚刚""X分钟前""X小时前""X天前""昨天""X月X日"等
  • 中间结果持久化:自动保存 .md 报告 + .json 摘要 + .checkpoint.jsonl 断点
  • 搜索阶段建议 10s 超时:避免某引擎响应慢阻塞整体
  • 提升时间戳提取成功率,减轻时间因子恒为 0.5 的问题

v2.0 已有优化:

  • MinHash + LSH 近似去重 → 复杂度从 O(n²) 降至 O(n)
  • 分词缓存 → 相同文本不重复分词
  • 扩展停用词至 200+ 词(含时间词/语气词/常见动词)
  • 时间新鲜度衰减因子 → 近期内容权重更高(半衰期 7 天)
  • Top 50 截断 → 相似度矩阵限制计算规模
  • tqdm 进度反馈 → 大输入不再黑盒

触发场景

当用户说出以下任一意图时必须加载此技能:

  • "帮我搜一下 XXX 在全平台的情况"
  • "查一下 XXX 的热度/舆情"
  • "关于 XXX,各个平台都在说什么"
  • "聚合搜索 XXX" / "全能搜索 XXX"
  • "搜索 XXX,看看抖音、小红书、微信上都有什么"
  • "分析 XXX 在各大平台的相似信息"
  • 任何涉及多平台、跨平台搜索/舆情/信息聚合的需求

核心工作流

Step 0: 技能安装检查

首次使用需安装依赖:

cd <skill_dir>/scripts
pip install jieba scikit-learn numpy datasketch tqdm

依赖说明: | 依赖 | 用途 | 可选? | |------|------|--------| | jieba | 中文分词 | 必需 | | scikit-learn | TF-IDF + Cosine 相似度 | 可选(降级为 Jaccard) | | numpy | 数值计算 | 可选 | | datasketch | MinHash + LSH 近似去重 | 强烈推荐(无则降级 O(n²)) | | tqdm | 进度条显示 | 可选(无则打印简单日志) |

Step 1: 理解需求

向用户确认:

  1. 关键词 — 要搜什么
  2. 平台范围 — 全平台还是指定平台(默认全平台)
  3. 时间范围 — 近期(默认7天内)还是不限
  4. 输出格式 — Markdown报告(默认)还是Excel

如果用户需求已经很明确,跳过此步直接执行。

Step 2: 多引擎并行搜索(建议超时 10s)

使用 WebSearch 工具同时对以下引擎发起搜索(并行调用,节省时间):

| 目标 | 搜索策略 | 优先级 | 超时建议 | |------|---------|--------|---------| | 百度 | WebSearch(query="关键词") 不加站点限定 | 必选 | 10s | | 微信公众平台 | WebSearch(query="关键词 site:mp.weixin.qq.com") | 必选 | 10s | | 今日头条 | WebSearch(query="关键词 site:toutiao.com") | 必选 | 10s | | 知乎 | WebSearch(query="关键词 site:zhihu.com") | 必选 | 10s | | 新浪新闻 | WebSearch(query="关键词 site:sina.com.cn") | 推荐 | 10s | | 腾讯新闻 | WebSearch(query="关键词 site:news.qq.com") | 推荐 | 10s | | 网易新闻 | WebSearch(query="关键词 site:163.com") | 推荐 | 10s | | B站 | WebSearch(query="关键词 site:bilibili.com") | 推荐 | 10s | | 微博 | WebSearch(query="关键词 site:weibo.com") | 推荐 | 10s | | 360搜索 | WebSearch(query="关键词") 不加站点限定 | 可选 | 10s | | 搜狗 | WebSearch(query="关键词") 不加站点限定 | 可选 | 10s |

并行策略: 每个搜索请求之间无依赖关系,一次性发出所有 WebSearch 调用。 超时策略: ⏱ 如果某个引擎响应超过 10 秒,建议放弃该引擎的搜索结果, 继续处理其他引擎的返回,避免阻塞整体流程。

WebSearch 参数优化:

  • 设置 topic: "news" 获取最新资讯
  • 可组合 query_keyword_groups 覆盖多角度搜索
  • 时间范围通过搜索词暗示(如"关键词 2025")

Step 3: 封闭平台处理(抖音、小红书)

⚠️ v2.0 优化策略: 抖音、小红书、微信搜一搜等封闭平台直接使用 WebSearch 间接搜索, 不再尝试 WebFetch 直连(反爬率高、成功率低)。

| 封闭平台 | 搜索策略 | |---------|---------| | 抖音 | WebSearch(query="关键词 抖音") | | 小红书 | WebSearch(query="关键词 小红书") | | 微信搜一搜 | WebSearch(query="关键词 site:mp.weixin.qq.com") |

兜底策略: WebFetch 仅用于第三方聚合站(如搜狗微信搜索公开页), 如果返回验证码/登录页则立即放弃,不做重试。

Step 4: 数据格式化

将所有搜索结果统一转为 JSONL 格式,每行一个 JSON 对象:

{"platform": "百度", "title": "...", "url": "...", "snippet": "...", "content": "", "source_engine": "WebSearch", "timestamp": "2026-06-06"}
{"platform": "微信", "title": "...", "url": "...", "snippet": "...", "content": "", "source_engine": "WebSearch", "timestamp": "2026-06-06"}

timestamp 字段用于时间新鲜度衰减计算。即使 snippet 中没有明确日期, v3.0 引擎也会尝试从 snippet 中提取相对时间("3小时前""昨天""6月1日"等)。

保存到临时文件供分析脚本使用,例如:

.workbuddy/tmp/agg_search_关键词.jsonl

Step 5: 运行分析脚本(v3.0)

调用 scripts/aggregate_search.py 进行:

# 基本用法
python scripts/aggregate_search.py "关键词" "输入jsonl路径" "输出文件前缀"

# 限制输入条数(默认2000)
python scripts/aggregate_search.py "关键词" "输入.jsonl" "report" --max-items 1000

# 从 checkpoint 恢复
python scripts/aggregate_search.py "关键词" "data.checkpoint.jsonl" "report"

脚本输出三个文件:

  • {前缀}.md — Markdown 报告
  • {前缀}.json — JSON 分析摘要
  • {前缀}.checkpoint.jsonl — 原始数据断点(可重新输入跑分析)

分析功能:

  • 输入截断--max-items 控制输入上限,超限自动截断并提示
  • 去重 — 默认 MinHash + LSH (O(n)),无 datasketch 降级为传统相似度矩阵 (O(n²))
  • 相关性评分 — 基于关键词密度+覆盖度+子串匹配+时间新鲜度的综合评分 (0~1)
  • 相对时间解析 — 从 snippet 提取"刚刚""X分钟前""X小时前""X天前""昨天""X月X日"等
  • 相似度矩阵 — TF-IDF + Cosine 相似度(限制 Top 50)
  • Top 10 排序 — 按相关性从高到低排列
  • 平台分布统计 — 各平台结果数量 + 平均相关性/新鲜度
  • 性能统计 — 耗时、去重率、分词缓存命中数
  • 中间结果持久化 — 自动保存报告+摘要+断点,防止分析过程崩溃丢失数据

Step 6: 呈现报告

  1. 读取生成的 Markdown 报告
  2. 使用 open_result_view 呈现给用户
  3. 如果用户需要导出,使用 deliver_attachments 发送报告文件(.md + .json + .checkpoint.jsonl)

输出示例结构

报告包含以下章节:

  1. 总体概览 — 各平台结果数 + 平均相关性 + 平均新鲜度
  2. 高相关结果 Top 10 — 最相关的10条结果详情(含新鲜度标识 🆕/📅/📦)
  3. 内容相似性分析 — Top N 之间的相似度矩阵 + 最相似/差异最大对
  4. 平台来源分布 — 按平台统计
  5. 性能统计 — 耗时、去重率、分词缓存命中、算法类型

失败备选方案

| 问题 | 方案 | |------|------| | 某平台搜索无结果 | 跳过该平台,注明"无有效结果" | | 封闭平台反爬 | 跳过 WebFetch,改用 WebSearch 间接搜索("关键词 + 平台名") | | 分析脚本依赖未安装 | 自动 pip install,如安装失败则手动用文本分析 | | 无 datasketch | 降级为传统相似度矩阵去重,提示用户安装 | | jieba 分词效果差 | 改用直接转写(无需分词,直接用原文做 Jaccard) | | 数据量过大(>500条) | MinHash 自动处理;矩阵分析截断至 Top 50;--max-items 控制输入 | | Python 环境问题 | 在系统 Python 中尝试,或直接由 WorkBuddy 做文本分析 | | 结果太少(不足5条) | 放宽搜索范围,去除站点限定 | | 分析过程崩溃 | 使用 checkpoint 断点恢复(再次传入 .checkpoint.jsonl) |

相似性兜底计算(无Python环境时)

如果 Python 脚本无法运行,WorkBuddy 可手动计算 Jaccard 相似度:

  1. 提取两条内容的共同词汇数量 ∩
  2. 提取两条内容的总词汇数量 ∪
  3. 相似度 = |∩| / |∪|
  4. 相关性 = 关键词在内容中出现的比例 × 0.85 + 新鲜度 × 0.15

捆绑资源说明

  • scripts/aggregate_search.py — 核心分析引擎 v3.0(去重+相关性+相似度+报告生成+断点续跑)
  • scripts/install_deps.bat — 一键依赖安装(含 datasketch、tqdm)
  • references/platform_targets.md — 各平台搜索策略和数据格式参考(含第三方聚合站)