基于每小时收录的抖音、微博、B站、快手、知乎、头条、百度等7大平台热点数据,聚合全网最热TOP10热点。支持回溯近7天热点。不支持具体热点的查询。
---
name: trending-hub-top10
description: 基于每小时收录的抖音、微博、B站、快手、知乎、头条、百度等7大平台热点数据,聚合全网最热TOP10热点。支持回溯近7天热点。不支持具体热点的查询。
dependency:
python:
- python-dateutil==2.8.2
system:
- mkdir -p output
---
# 全网聚合热点榜
## 任务目标
- 本 Skill 用于:聚合抖音、微博、B站、快手、知乎、头条、百度等多个平台的热点数据,提供跨平台热点分析和趋势预测
- 核心价值
解决内容创作者、市场运营者在热点追踪中的三大痛点:
热点分散难整合:无需逐个平台查看,一次聚合7大平台热榜
跨平台对比困难:自动识别同一事件在不同平台的讨论差异和热度表现,对热点进行快览分析
趋势判断模糊:基于热度值、上榜时长、平台覆盖等维度智能预测热点走势
订阅推送服务:定时推送最新热榜/昨日热榜
- 触发条件:用户查询"热点榜"、"今日热点"、"全网热点榜"、"昨日热榜",请求"导出报告",或订阅推送服务
- **不支持**:该技能不支持查询特定热词详情,仅提供全网热点榜聚合查询
核心能力
功能模块 能力描述 核心价值
🔍 全网热榜聚合 实时抓取7大平台热搜数据 一键获取全网热点,告别逐平台查看
🔗 跨平台事件识别 智能识别同一事件在不同平台的表述 自动归并相似话题,避免重复统计
📊 热度趋势预测 基于热度值、时长、平台覆盖预测走势 提前判断热点生命周期,把握创作窗口
📈 TOP10榜单提供 按综合热度排序输出TOP10热点 快速定位高价值选题
💬 跨平台讨论分析 展示不同平台的讨论焦点和差异 深度洞察舆论生态,精准定位受众
📄 HTML报告导出 生成美观的可视化报告 支持图片导出,便于分享存档
⏰ 订阅推送服务 定时推送最新热榜/昨日热榜 持续追踪热点动态,不错过关键机会
## 前置准备
- 依赖说明:scripts脚本依赖 python-dateutil 库
- 非标准文件准备:当前路径视为相对于Skill目录的父目录
### 鉴权
#### 获取 API Key
请前往 [红狐hub](https://redfox.hk/settings/api-keys?source=clawhub) 获取API KEY
#### 配置 API Key
方案1: 以OpenClaw为例,将REDFOX_API_KEY添加到~/.openclaw/openclaw.json中,部分内容如下:
```bash
{ "env": { "REDFOX_API_KEY": "ak_xxxx..." } }
```
方案2: 终端配置
```bash
export REDFOX_API_KEY="ak_xxxx..."
```
## 操作步骤
**重要原则:智能体完成数据分析并保存JSON后,直接生成HTML报告,不在对话中输出详细榜单。**
- 标准流程:
1. 获取热点数据 — 脚本调用
- 脚本调用:`python scripts/fetch_hotspot.py --output json`
- 返回JSON数据结构见下方"数据结构说明"
2. **智能体分析数据并保存JSON** — 智能体根据JSON数据进行热点事件识别、排序,保存结构化数据
- 执行热点事件识别(见下方"热点事件总结规则")
- 按热度值降序排列,取TOP10
- 将分析结果保存为 `structured_report.json`(格式见下方"结构化报告JSON格式")
- **discussions必须覆盖所有在榜平台**:`platforms` 列表中的每个平台都必须在 `discussions` 数组中有对应条目
3. **自动生成HTML报告** — JSON保存完成后立即执行,不询问用户
- 脚本调用:`python scripts/generate_html_report.py --input structured_report.json --output 热点榜报告.html`
4. **对话中输出简要信息** — 按顺序输出:标题 > 统计时间 > HTML报告 > 订阅推送服务询问
- 输出格式:
```markdown
# 🔥 全网热点榜
> 📅 统计时间:{start_date} 至 {end_date}
⚡ **HTML报告已生成**
• 点击下方下载HTML报告文件,可在浏览器中打开查看,支持导出图片
📬 **订阅推送服务**
想持续追踪热点动态?
可以订阅最新热榜,向您推送前1小时的最新数据
或者订阅昨日热榜,一键获取全网热点
还支持您定制近30天任意时间段的数据~追热点快人一步
```
- 可选分支:
- 当用户需要趋势预测:智能体参考 [references/prediction-logic.md](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数据结构如下,智能体需据此填充模板:
```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 | 接口分组关键词 | 仅供参考,不用于输出 |
### 可分析维度
基于新增字段,可进行以下分析:
1. **热度排行**:按 `maxHotScore` 排序,展示热度最高的热点
2. **热度持续性**:根据 `topOfTheDayTime` 判断热点生命周期
- 停留<3小时:短期热点,快速衰减
- 停留3-10小时:中等持续
- 停留>10小时:长期热点,持续发酵
3. **排名表现**:`maxPosition` 越小说明热度峰值越高
4. **时效性判断**:对比 `firstRankTime` 和当前时间,判断热点新鲜度
5. **趋势预测**:结合热度值、停留时长、排名进行趋势判断
### 结构化报告JSON格式
智能体完成分析后,将结果保存为 `structured_report.json`(内部中间文件,不展示给用户),供HTML报告脚本读取。
**关键原则**:
1. HTML报告脚本只负责模板渲染,不进行任何数据分析或事件识别
2. JSON中的数据必须与对话中输出的内容完全一致
3. 智能体在对话中输出什么,JSON就保存什么,HTML就渲染什么
```json
{
"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 最新热榜(默认)
要求最新、当下等实时热榜时,自动查询当前时间前一个小时的数据:
```bash
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 历史热榜查询
支持查询昨天的热度峰值最高的热搜数据:
```bash
# 查询昨日热榜(假设今天是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日热榜,输出两份数据进行对比
**对比查询执行方式**:
```bash
# 对比昨天和今天的热榜(假设今天是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报告文件。**
#### 步骤一:获取数据
```bash
python scripts/fetch_hotspot.py --start-date "..." --end-date "..." > raw_data.json
```
#### 步骤二:对话中输出报告并同步保存JSON
- 智能体读取JSON数据,完成热点事件识别、指标计算、趋势预测
- **直接在对话中输出完整报告**,同时将分析结果同步保存为 `structured_report.json`(内部中间文件,不展示给用户)
- **discussions必须覆盖所有在榜平台**:`platforms` 列表中的每个平台都必须在 `discussions` 数组中有对应条目,不可遗漏
- 输出格式参考 [references/output-templates.md](references/output-templates.md)
#### 步骤三:自动生成HTML报告
- 直接读取已保存的 `structured_report.json` 生成HTML,**不询问用户是否生成**
```bash
python scripts/generate_html_report.py --input structured_report.json --output 热点榜报告.html
```
- **自检**:确认JSON数据与对话输出一致
#### 输出注意事项
1. **排序规则(最重要)**:TOP10表格必须按热度值(maxHotScore)降序排列,热度最高的排第1位。
- **强制检查**:输出表格前,逐一核对热度值是否满足:第1名 > 第2名 > 第3名 > ... > 第10名
- 如果发现乱序,立即重新排序后再输出
- 正确示例:| 1 | 事件A | 938万 | | | 2 | 事件B | 876万 | | | 3 | 事件C | 654万 |
- 错误示例:| 1 | 事件A | 654万 | | | 2 | 事件B | 938万 | ← 热度值倒挂,必须修正
2. **统计时间**:使用脚本返回的 `query_range.start_date` 和 `end_date`,格式为"开始时间 至 结束时间"
3. **热度换算**:`maxHotScore // 10000`(整数除法),结果拼接"万"。例如:9384468 → 938万。**格式必须是"数字+万",禁止任何其他字符**
4. **持续时长显示**:topOfTheDayTime 为 0 或 "0" 时显示"刚上热搜",否则显示"{N}h"(如 3h、14h)
5. **URL链接**:标题有 `url` 时显示为超链接 `[标题](url)`,无URL时仅显示文本
6. **平台图标**:使用emoji区分平台(微博🌐、抖音🎵、知乎📚、B站📺、快手🎬、头条📰、百度🔍)
7. **跨平台讨论差异**:
- 每个平台行首加全角空格缩进符( )
- **必须输出该事件全部在榜平台的讨论差异,不可遗漏**(遗漏会导致平台数与"上榜平台"数量不一致)
- 仅展示该事件实际在榜的平台,未上榜平台不输出
- 根据该事件在该平台的所有话题标题综合总结讨论焦点,不少于10个字
- **必须展示2-3个具体话题标题**(如该平台只有1条数据则展示1条),有URL则显示为超链接格式「[{标题}]({url})」,无URL则显示为纯文本「{标题}」
8. **综合预测**:
- 根据话题类型(突发事件/娱乐八卦/社会民生/行业动态)、热度值、上榜时长、平台覆盖表现综合分析
- 预测内容不少于30字
- **综合预测标题前emoji必须按热度值选择**(对话输出和HTML报告统一规则):
- 🔥🔥🔥 热度 ≥ 1000万(爆款)
- 🔥🔥 热度 500-999万(高热)
- 🔥 热度 100-499万(中等)
- 📉 热度 < 100万(低热)
9. **不支持热词查询**:该技能不支持查询特定热词,仅支持全网热点榜查询
## 使用示例
- 示例1: 查询今日热点
- 场景/输入: 用户输入"热点榜"或"今日热点"
- 执行步骤:
1. 调用 `python scripts/fetch_hotspot.py` 获取数据
2. 智能体分析数据,识别热点事件,保存 `structured_report.json`
3. 调用 `python scripts/generate_html_report.py --input structured_report.json` 生成HTML
4. 对话中输出:标题 > 统计时间 > HTML报告 > 订阅推送服务询问
- 预期产出: 用户看到简要信息、HTML文件下载链接、订阅推送服务提示
- 关键要点: 输出顺序为标题→统计时间→HTML报告→订阅推送服务
- 示例2: 导出HTML报告
- 场景/输入: 用户输入"导出报告"或"生成HTML报告"
- 预期产出: 生成美观的HTML报告文件,告知用户文件路径
- 关键要点: 调用 `generate_html_report.py` 脚本生成HTML
## 资源索引
- 脚本:见 [scripts/fetch_hotspot.py](scripts/fetch_hotspot.py)(用途与参数:从API获取热点数据)
- 脚本:见 [scripts/generate_html_report.py](scripts/generate_html_report.py)(用途与参数:读取structured_report.json生成HTML报告,参数--input JSON路径 --output输出路径)
- 参考:见 [references/output-templates.md](references/output-templates.md)(何时读取:HTML报告格式参考)
- 参考:见 [references/prediction-logic.md](references/prediction-logic.md)(何时读取:生成热度趋势预测时参考预测规则)
- 资产:见 [assets/report-template.html](assets/report-template.html)(直接用于生成:HTML报告模板)
## 注意事项
- **【重要】排序规则(必须严格遵守)**:
- TOP10必须按热度值(maxHotScore)降序排列,热度最高的排第1位
- **保存JSON前必须检查**:确认热度值从第1名到第10名依次递减,严禁乱序
- 示例:第1名938万 > 第2名876万 > 第3名654万 > ... > 第10名123万
- **【重要】热点事件识别必须执行**:
- 必须从所有标题中识别和归纳热点事件,不能直接使用原标题
- 必须合并描述同一事件的不同标题
- 必须为每个事件提炼简洁的热词(5-15个字)
- **执行流程**:
1. 获取数据 → 2. 智能体分析并保存JSON → 3. 对话输出简要信息 → 4. 生成HTML报告
- 对话中仅输出:标题、统计时间、订阅推送服务提示
- 详细内容(TOP10表格、热点快览分析)在HTML报告中展示
- **JSON数据完整性**:
- **discussions必须覆盖所有在榜平台**:`platforms` 列表中的每个平台都必须在 `discussions` 数组中有对应条目
- discussions 中不得包含 platforms 列表以外的平台
- **热度值格式**:hot_score必须为"数字+万"格式(如"938万"),禁止包含其他字符
- prediction 字段为纯文字内容,prediction_emoji 字段存🔥emoji
- **禁止行为**:
- 在对话中输出详细的TOP10表格和热点快览分析(这些内容只在HTML报告中展示)
- 直接使用原标题作为热点名称(必须归纳事件热词)
- 不合并相似标题(必须识别同一事件的不同表述)
- 仅在需要时读取参考文档,保持上下文简洁
- 数据获取通过脚本调用真实API,确保数据实时性
don't have the plugin yet? install it then click "run inline in claude" again.