全网聚合热点榜
任务目标
- 本 Skill 用于:聚合抖音、微博、B站、快手、知乎、头条、百度等多个平台的热点数据,提供跨平台热点分析和趋势预测
- 核心价值 解决内容创作者、市场运营者在热点追踪中的三大痛点: 热点分散难整合:无需逐个平台查看,一次聚合7大平台热榜 跨平台对比困难:自动识别同一事件在不同平台的讨论差异和热度表现,对热点进行快览分析 趋势判断模糊:基于热度值、上榜时长、平台覆盖等维度智能预测热点走势 订阅推送服务:定时推送最新热榜/昨日热榜
- 触发条件:用户查询"热点榜"、"今日热点"、"全网热点榜"、"昨日热榜",请求"导出报告",或订阅推送服务
- 不支持:该技能不支持查询特定热词详情,仅提供全网热点榜聚合查询
核心能力 功能模块 能力描述 核心价值 🔍 全网热榜聚合 实时抓取7大平台热搜数据 一键获取全网热点,告别逐平台查看 🔗 跨平台事件识别 智能识别同一事件在不同平台的表述 自动归并相似话题,避免重复统计 📊 热度趋势预测 基于热度值、时长、平台覆盖预测走势 提前判断热点生命周期,把握创作窗口 📈 TOP10榜单提供 按综合热度排序输出TOP10热点 快速定位高价值选题 💬 跨平台讨论分析 展示不同平台的讨论焦点和差异 深度洞察舆论生态,精准定位受众 📄 HTML报告导出 生成美观的可视化报告 支持图片导出,便于分享存档 ⏰ 订阅推送服务 定时推送最新热榜/昨日热榜 持续追踪热点动态,不错过关键机会
前置准备
- 依赖说明:scripts脚本依赖 python-dateutil 库
- 非标准文件准备:当前路径视为相对于Skill目录的父目录
鉴权
获取 API Key
请前往 红狐hub 获取API KEY
配置 API Key
方案1: 以OpenClaw为例,将REDFOX_API_KEY添加到~/.openclaw/openclaw.json中,部分内容如下:
{ "env": { "REDFOX_API_KEY": "ak_xxxx..." } }
方案2: 终端配置
export REDFOX_API_KEY="ak_xxxx..."
操作步骤
重要原则:智能体完成数据分析并保存JSON后,直接生成HTML报告,不在对话中输出详细榜单。
-
标准流程:
- 获取热点数据 — 脚本调用
- 脚本调用:
python scripts/fetch_hotspot.py --output json - 返回JSON数据结构见下方"数据结构说明"
- 脚本调用:
- 智能体分析数据并保存JSON — 智能体根据JSON数据进行热点事件识别、排序,保存结构化数据
- 执行热点事件识别(见下方"热点事件总结规则")
- 按热度值降序排列,取TOP10
- 将分析结果保存为
structured_report.json(格式见下方"结构化报告JSON格式") - discussions必须覆盖所有在榜平台:
platforms列表中的每个平台都必须在discussions数组中有对应条目
- 自动生成HTML报告 — JSON保存完成后立即执行,不询问用户
- 脚本调用:
python scripts/generate_html_report.py --input structured_report.json --output 热点榜报告.html
- 脚本调用:
- 对话中输出简要信息 — 按顺序输出:标题 > 统计时间 > HTML报告 > 订阅推送服务询问
-
输出格式:
# 🔥 全网热点榜 > 📅 统计时间:{start_date} 至 {end_date} ⚡ **HTML报告已生成** • 点击下方下载HTML报告文件,可在浏览器中打开查看,支持导出图片 📬 **订阅推送服务** 想持续追踪热点动态? 可以订阅最新热榜,向您推送前1小时的最新数据 或者订阅昨日热榜,一键获取全网热点 还支持您定制近30天任意时间段的数据~追热点快人一步
-
- 获取热点数据 — 脚本调用
-
可选分支:
- 当用户需要趋势预测:智能体参考 references/prediction-logic.md 生成趋势预测
- 当用户订阅推送:智能体按照订阅模板进行交互
热点事件总结规则
核心原则:完全忽略接口返回的keyword和分类,独立从所有标题中识别并归纳具体热点事件。
【重要】必须执行以下步骤,不能跳过任何一步:
识别流程(必须按顺序执行)
步骤1:收集所有标题
- 遍历API返回的
hotspots数组 - 提取每条数据的
title和platName - 将所有标题放在一个列表中,忽略原有的keyword分组
步骤2:识别具体事件
- 阅读每一条标题,判断哪些标题描述的是同一个事件
- 判断依据:
- 相同主体(人名、地名、机构名、事件名)
- 相同事件核心(比赛、发布会、案件、政策等)
- 时间连续性(同一时间段的热点)
步骤3:归纳事件热词
- 为每个识别出的事件提炼一个简洁的热词(5-15个字)
- 热词必须描述具体事件,不能是泛化概念
- ✅ 正确:U20女足中日对决、2026大学排名发布、德国留学生迷奸案
- ❌ 错误:中国相关热点、体育新闻、社会事件
步骤4:按热度值排序
- 按热度值降序排列,取TOP10
正确示例
接口返回的原始数据(忽略keyword分组):
抖音标题:["U20女足中国vs日本", "中国U20女足0:2日本", "2026软科中国大学排名发布"]
头条标题:["无缘决赛!U20女足中国0-2日本", "2026中国大学排名", "中国钨出口管制对日本影响"]
微博标题:["在德读硕中国小伙多次下药迷奸女友"]
知乎标题:["福特CEO称中国车进入美国市场我们就完蛋"]
AI识别并归纳的事件:
| 排名 | 热词 | 平台数 | 词条数 | 热度值 | 综合热度 |
|---|---|---|---|---|---|
| 1 | U20女足中日对决 | 2 | 3 | 938万 | 2038万 |
| 2 | 2026大学排名发布 | 2 | 2 | 442万 | 2442万 |
| 3 | 德国留学生迷奸案 | 1 | 1 | 320万 | 1320万 |
| 4 | 中国钨出口管制 | 1 | 1 | 280万 | 1280万 |
| 5 | 福特CEO谈中国车 | 1 | 1 | 150万 | 1150万 |
注意:原来5条标题被归纳为5个事件,而不是直接使用原标题作为热点名称。
数据来源
直接读取 hotspots 数组中每个热点项的 title、platName、url 等字段。
URL跳转
每个热点项包含 url 字段,支持跳转到对应平台查看详情:
- 有URL的热点:输出时可添加跳转链接
- 无URL的热点(url为空字符串):不提供跳转
数据结构说明
脚本返回的JSON数据结构如下,智能体需据此填充模板:
{
"status": "success",
"stat_time": "2026-04-16 08:30:00",
"query_range": {
"type": "realtime",
"start_date": "2026-04-16 07:00:00",
"end_date": "2026-04-16 08:00:00"
},
"total_count": 50,
"hotspots": [
{
"hotId": "0DFEC94708F044A64E88818174FDD003",
"title": "匈牙利总理用"三个最"描述中国",
"platName": "头条",
"plat": 11,
"url": "https://www.toutiao.com/trending/7628053353528033321/",
"firstRankTime": "2026-04-15 21:00:00",
"latestRankDate": "2026-04-16 00:00:00",
"maxHotScore": 4427099,
"maxPosition": 15,
"topOfTheDayTime": "3",
"source_keyword": "中国"
},
{
"hotId": "566756798B468EC8665BE99EE5EBF83A",
"title": "中国U20女足0:2日本",
"platName": "抖音",
"plat": 10,
"url": "https://www.douyin.com/search/中国U20女足0:2日本",
"firstRankTime": "2026-04-16 00:00:00",
"latestRankDate": "2026-04-16 00:00:00",
"maxHotScore": 9384468,
"maxPosition": 8,
"topOfTheDayTime": "14",
"source_keyword": "中国"
}
]
}
字段说明
| 字段 | 含义 | 可分析维度 |
|---|---|---|
| hotId | 热点唯一ID | - |
| title | 热点标题 | 事件识别、跨平台归并 |
| platName | 平台名称(抖音、头条、微博等) | 平台覆盖分析 |
| plat | 平台代码 | - |
| url | 跳转链接 | 查看详情、跳转访问 |
| firstRankTime | 首次上榜时间 | 热点发酵起点、时效性 |
| latestRankDate | 最新上榜日期 | 热点是否仍在榜 |
| maxHotScore | 最高热度值 | 热度排行、热度对比 |
| maxPosition | 最高排名位置 | 热度峰值、排名变化 |
| topOfTheDayTime | 榜单停留时长(小时) | 热度持续性、生命周期预测 |
| source_keyword | 接口分组关键词 | 仅供参考,不用于输出 |
可分析维度
基于新增字段,可进行以下分析:
- 热度排行:按
maxHotScore排序,展示热度最高的热点 - 热度持续性:根据
topOfTheDayTime判断热点生命周期- 停留<3小时:短期热点,快速衰减
- 停留3-10小时:中等持续
- 停留>10小时:长期热点,持续发酵
- 排名表现:
maxPosition越小说明热度峰值越高 - 时效性判断:对比
firstRankTime和当前时间,判断热点新鲜度 - 趋势预测:结合热度值、停留时长、排名进行趋势判断
结构化报告JSON格式
智能体完成分析后,将结果保存为 structured_report.json(内部中间文件,不展示给用户),供HTML报告脚本读取。
关键原则:
- HTML报告脚本只负责模板渲染,不进行任何数据分析或事件识别
- JSON中的数据必须与对话中输出的内容完全一致
- 智能体在对话中输出什么,JSON就保存什么,HTML就渲染什么
{
"query_range": {
"start_date": "2026-04-16 00:00:00",
"end_date": "2026-04-16 08:00:00"
},
"hotspots": [
{
"rank": 1,
"title": "归纳的事件热词",
"hot_score": "938万",
"platform_count": 4,
"duration": "14h",
"max_position": 3,
"platforms": ["微博", "抖音", "头条", "快手"],
"discussions": [
{
"platform": "微博",
"focus": "讨论焦点描述,不少于10个字",
"topics": [
{ "title": "原始标题1", "url": "https://..." },
{ "title": "原始标题2", "url": "" }
]
},
{
"platform": "抖音",
"focus": "讨论焦点描述",
"topics": [{ "title": "原始标题3", "url": "https://..." }]
}
],
"prediction": "预测内容文字",
"prediction_emoji": "🔥🔥🔥"
}
]
}
字段说明:
| 字段 | 说明 | 要求 |
|---|---|---|
| title | 事件热词 | 与对话中TOP10表格的热点事件一致 |
| hot_score | 热度值 | 格式为"数字+万"(如"938万"),禁止包含其他字符 |
| platform_count | 上榜平台数 | 与对话中一致 |
| duration | 持续时长 | 0h时填"刚上热搜",否则填"Nh",与对话中一致 |
| max_position | 最高排名 | 数字,越小排名越高 |
| platforms | 在榜平台列表 | 仅包含实际在榜的平台 |
| discussions | 跨平台讨论差异 | 必须覆盖platforms中所有在榜平台,每个平台一个条目,不可遗漏 |
| discussions.focus | 讨论焦点 | 与对话中各平台讨论焦点文字一致 |
| discussions.topics | 原始标题 | 2-3条,有url时填写,无url填空字符串 |
| prediction | 综合预测内容 | 纯文字,不含🔥emoji |
| prediction_emoji | 综合预测标题前的emoji | 必须与对话输出中综合预测标题前的🔥emoji完全一致:🔥🔥🔥/🔥🔥/🔥/📉 |
1. 获取热榜数据
1.1 最新热榜(默认)
要求最新、当下等实时热榜时,自动查询当前时间前一个小时的数据:
python scripts/fetch_hotspot.py
实时查询规则:
- 自动计算当前时间的前一个小时作为查询范围
- 例如:当前时间为
2026-04-16 08:30:00,则查询2026-04-16 07:00:00到2026-04-16 08:00:00的数据
1.2 历史热榜查询
支持查询昨天的热度峰值最高的热搜数据:
# 查询昨日热榜(假设今天是2026-04-16)
python scripts/fetch_hotspot.py --start-date "2026-04-15 00:00:00" --end-date "2026-04-16 00:00:00"
日期范围规则:
- 时间格式为
YYYY-MM-DD HH:MM:SS - 日期范围是 [start_date, end_date) 左闭右开区间
- 例如:
--start-date "2026-04-01 00:00:00" --end-date "2026-04-02 00:00:00"查询的是4月1日当天的数据 - 例如:
--start-date "2026-04-09 00:00:00" --end-date "2026-04-16 00:00:00"查询的是4月9日至4月15日共7天的数据
参数说明:
--start-date:开始时间(包含),格式YYYY-MM-DD HH:MM:SS,也可简写为YYYY-MM-DD(自动补全为 00:00:00)--end-date:结束时间(不包含),格式YYYY-MM-DD HH:MM:SS,也可简写为YYYY-MM-DD(自动补全为 00:00:00)- 最长查询范围:7天
1.3 智能体判断逻辑
根据用户意图自动选择查询方式(假设今天日期为T,当前时间为T HH:MM:SS):
今日热点查询:
- "今日热榜" / "今日热点" / "今天热榜" → 查询今日0:00到当前时间的整点
- 脚本调用:
python scripts/fetch_hotspot.py --start-date "T 00:00:00" --end-date "T {当前小时}:00:00" - 示例:当前时间
2026-04-16 08:30:00,则查询--start-date "2026-04-16 00:00:00" --end-date "2026-04-16 08:00:00"
最新热点查询:
- "最新热榜" / "最新热点" / "热榜" / "热点榜" → 查询当前时间前一小时
- 脚本调用:
python scripts/fetch_hotspot.py--start-date "T {当前小时-1}:00:00" --end-date "T {当前小时}:00:00"` - 自动计算当前时间的前一个小时作为查询范围
- 示例:当前时间
2026-04-16 08:30:00,则查询2026-04-16 07:00:00到2026-04-16 08:00:00
历史热点查询:
- "昨日热榜" / "昨天热榜" / "昨日热点" →
--start-date "T-1 00:00:00" --end-date "T 00:00:00" - "近7天热榜" / "一周热榜" →
--start-date "T-7 00:00:00" --end-date "T 00:00:00" - "X月X日热榜" →
--start-date "X月X日 00:00:00" --end-date "X月X日+1天 00:00:00"
对比查询场景: 当用户需要对比多天数据时,需分别查询多天的热榜,而非合并查询:
- "对比昨天和今天的热榜" → 分别查询昨日热榜和今日热榜,输出两份数据进行对比
- "对比4月1日和4月2日的热榜" → 分别查询4月1日热榜和4月2日热榜,输出两份数据进行对比
对比查询执行方式:
# 对比昨天和今天的热榜(假设今天是2026-04-16)
python scripts/fetch_hotspot.py --start-date "2026-04-15 00:00:00" --end-date "2026-04-16 00:00:00" # 昨日
python scripts/fetch_hotspot.py --start-date "2026-04-16 00:00:00" --end-date "2026-04-17 00:00:00" # 今日实时
2. 输出处理流程
核心原则:报告内容直接在对话中输出,输出结束后再调用脚本生成HTML报告文件。
步骤一:获取数据
python scripts/fetch_hotspot.py --start-date "..." --end-date "..." > raw_data.json
步骤二:对话中输出报告并同步保存JSON
- 智能体读取JSON数据,完成热点事件识别、指标计算、趋势预测
- 直接在对话中输出完整报告,同时将分析结果同步保存为
structured_report.json(内部中间文件,不展示给用户) - discussions必须覆盖所有在榜平台:
platforms列表中的每个平台都必须在discussions数组中有对应条目,不可遗漏 - 输出格式参考 references/output-templates.md
步骤三:自动生成HTML报告
- 直接读取已保存的
structured_report.json生成HTML,不询问用户是否生成
python scripts/generate_html_report.py --input structured_report.json --output 热点榜报告.html
- 自检:确认JSON数据与对话输出一致
输出注意事项
- 排序规则(最重要):TOP10表格必须按热度值(maxHotScore)降序排列,热度最高的排第1位。
- 强制检查:输出表格前,逐一核对热度值是否满足:第1名 > 第2名 > 第3名 > ... > 第10名
- 如果发现乱序,立即重新排序后再输出
- 正确示例:| 1 | 事件A | 938万 | | | 2 | 事件B | 876万 | | | 3 | 事件C | 654万 |
- 错误示例:| 1 | 事件A | 654万 | | | 2 | 事件B | 938万 | ← 热度值倒挂,必须修正
- 统计时间:使用脚本返回的
query_range.start_date和end_date,格式为"开始时间 至 结束时间" - 热度换算:
maxHotScore // 10000(整数除法),结果拼接"万"。例如:9384468 → 938万。格式必须是"数字+万",禁止任何其他字符 - 持续时长显示:topOfTheDayTime 为 0 或 "0" 时显示"刚上热搜",否则显示"{N}h"(如 3h、14h)
- URL链接:标题有
url时显示为超链接[标题](url),无URL时仅显示文本 - 平台图标:使用emoji区分平台(微博🌐、抖音🎵、知乎📚、B站📺、快手🎬、头条📰、百度🔍)
- 跨平台讨论差异:
- 每个平台行首加全角空格缩进符( )
- 必须输出该事件全部在榜平台的讨论差异,不可遗漏(遗漏会导致平台数与"上榜平台"数量不一致)
- 仅展示该事件实际在榜的平台,未上榜平台不输出
- 根据该事件在该平台的所有话题标题综合总结讨论焦点,不少于10个字
- 必须展示2-3个具体话题标题(如该平台只有1条数据则展示1条),有URL则显示为超链接格式「{标题}」,无URL则显示为纯文本「{标题}」
- 综合预测:
- 根据话题类型(突发事件/娱乐八卦/社会民生/行业动态)、热度值、上榜时长、平台覆盖表现综合分析
- 预测内容不少于30字
- 综合预测标题前emoji必须按热度值选择(对话输出和HTML报告统一规则):
- 🔥🔥🔥 热度 ≥ 1000万(爆款)
- 🔥🔥 热度 500-999万(高热)
- 🔥 热度 100-499万(中等)
- 📉 热度 < 100万(低热)
- 不支持热词查询:该技能不支持查询特定热词,仅支持全网热点榜查询
使用示例
- 示例1: 查询今日热点
- 场景/输入: 用户输入"热点榜"或"今日热点"
- 执行步骤:
- 调用
python scripts/fetch_hotspot.py获取数据 - 智能体分析数据,识别热点事件,保存
structured_report.json - 调用
python scripts/generate_html_report.py --input structured_report.json生成HTML - 对话中输出:标题 > 统计时间 > HTML报告 > 订阅推送服务询问
- 调用
- 预期产出: 用户看到简要信息、HTML文件下载链接、订阅推送服务提示
- 关键要点: 输出顺序为标题→统计时间→HTML报告→订阅推送服务
- 示例2: 导出HTML报告
- 场景/输入: 用户输入"导出报告"或"生成HTML报告"
- 预期产出: 生成美观的HTML报告文件,告知用户文件路径
- 关键要点: 调用
generate_html_report.py脚本生成HTML
资源索引
- 脚本:见 scripts/fetch_hotspot.py(用途与参数:从API获取热点数据)
- 脚本:见 scripts/generate_html_report.py(用途与参数:读取structured_report.json生成HTML报告,参数--input JSON路径 --output输出路径)
- 参考:见 references/output-templates.md(何时读取:HTML报告格式参考)
- 参考:见 references/prediction-logic.md(何时读取:生成热度趋势预测时参考预测规则)
- 资产:见 assets/report-template.html(直接用于生成:HTML报告模板)
注意事项
- 【重要】排序规则(必须严格遵守):
- TOP10必须按热度值(maxHotScore)降序排列,热度最高的排第1位
- 保存JSON前必须检查:确认热度值从第1名到第10名依次递减,严禁乱序
- 示例:第1名938万 > 第2名876万 > 第3名654万 > ... > 第10名123万
- 【重要】热点事件识别必须执行:
- 必须从所有标题中识别和归纳热点事件,不能直接使用原标题
- 必须合并描述同一事件的不同标题
- 必须为每个事件提炼简洁的热词(5-15个字)
- 执行流程:
- 获取数据 → 2. 智能体分析并保存JSON → 3. 对话输出简要信息 → 4. 生成HTML报告
- 对话中仅输出:标题、统计时间、订阅推送服务提示
- 详细内容(TOP10表格、热点快览分析)在HTML报告中展示
- JSON数据完整性:
- discussions必须覆盖所有在榜平台:
platforms列表中的每个平台都必须在discussions数组中有对应条目 - discussions 中不得包含 platforms 列表以外的平台
- 热度值格式:hot_score必须为"数字+万"格式(如"938万"),禁止包含其他字符
- prediction 字段为纯文字内容,prediction_emoji 字段存🔥emoji
- discussions必须覆盖所有在榜平台:
- 禁止行为:
- 在对话中输出详细的TOP10表格和热点快览分析(这些内容只在HTML报告中展示)
- 直接使用原标题作为热点名称(必须归纳事件热词)
- 不合并相似标题(必须识别同一事件的不同表述)
- 仅在需要时读取参考文档,保持上下文简洁
- 数据获取通过脚本调用真实API,确保数据实时性