git:20260527.20d0351 to git:20260602.08c4de8

235 added, 350 removed. Audit A to A.

---
name: trending-hub-top10
description: 基于每小时收录的抖音、微博、B站、快手、知乎、头条、百度等7大平台热点数据,聚合全网最热TOP10热点。支持回溯近7天热点。不支持具体热点的查询。
dependency:
python:
- python-dateutil==2.8.2
system:
- mkdir -p output
---
# 全网聚合热点榜
- ## 任务目标
+ ## 1. 简介
- - 本 Skill 用于:聚合抖音、微博、B站、快手、知乎、头条、百度等多个平台的热点数据,提供跨平台热点分析和趋势预测
- - 核心价值
- 解决内容创作者、市场运营者在热点追踪中的三大痛点:
- 热点分散难整合:无需逐个平台查看,一次聚合7大平台热榜
- 跨平台对比困难:自动识别同一事件在不同平台的讨论差异和热度表现,对热点进行快览分析
- 趋势判断模糊:基于热度值、上榜时长、平台覆盖等维度智能预测热点走势
- 订阅推送服务:定时推送最新热榜/昨日热榜
- - 触发条件:用户查询"热点榜"、"今日热点"、"全网热点榜"、"昨日热榜",请求"导出报告",或订阅推送服务
- - **不支持**:该技能不支持查询特定热词详情,仅提供全网热点榜聚合查询
+ **一句话定位**:全网聚合热点TOP10榜,基于每小时收录的7大平台热点数据,通过智能事件识别和跨平台归并,输出综合热度最高的TOP10热点事件。
- 核心能力
- 功能模块 能力描述 核心价值
- 🔍 全网热榜聚合 实时抓取7大平台热搜数据 一键获取全网热点,告别逐平台查看
- 🔗 跨平台事件识别 智能识别同一事件在不同平台的表述 自动归并相似话题,避免重复统计
- 📊 热度趋势预测 基于热度值、时长、平台覆盖预测走势 提前判断热点生命周期,把握创作窗口
- 📈 TOP10榜单提供 按综合热度排序输出TOP10热点 快速定位高价值选题
- 💬 跨平台讨论分析 展示不同平台的讨论焦点和差异 深度洞察舆论生态,精准定位受众
- 📄 HTML报告导出 生成美观的可视化报告 支持图片导出,便于分享存档
- ⏰ 订阅推送服务 定时推送最新热榜/昨日热榜 持续追踪热点动态,不错过关键机会
+ **核心价值**:解决内容创作者、市场运营者在热点追踪中的三大痛点:
+ - **热点分散难整合**:无需逐个平台查看,一次聚合7大平台热榜
+ - **跨平台对比困难**:自动识别同一事件在不同平台的讨论差异和热度表现
+ - **趋势判断模糊**:基于热度值、上榜时长、平台覆盖等维度智能预测热点走势
- ## 前置准备
+ **适用对象**:内容创作者、市场运营人员、媒体编辑、品牌策划、数据分析师。
- - 依赖说明:scripts脚本依赖 python-dateutil 库
- - 非标准文件准备:当前路径视为相对于Skill目录的父目录
+ **不支持**:该技能不支持查询特定热词详情,仅提供全网热点榜聚合查询。
+ ## 2. 功能特性
+
+ ### 核心功能
+
+ | 功能模块 | 能力描述 | 核心价值 |
+ |----------|----------|----------|
+ | 🔍 全网热榜聚合 | 实时抓取7大平台热搜数据 | 一键获取全网热点,告别逐平台查看 |
+ | 🔗 跨平台事件识别 | 智能识别同一事件在不同平台的表述 | 自动归并相似话题,避免重复统计 |
+ | 📊 热度趋势预测 | 基于热度值、时长、平台覆盖预测走势 | 提前判断热点生命周期,把握创作窗口 |
+ | 📈 TOP10榜单提供 | 按综合热度排序输出TOP10热点 | 快速定位高价值选题 |
+ | 💬 跨平台讨论分析 | 展示不同平台的讨论焦点和差异 | 深度洞察舆论生态,精准定位受众 |
+ | 📄 HTML报告导出 | 生成美观的可视化报告 | 支持图片导出,便于分享存档 |
+ | ⏰ 订阅推送服务 | 定时推送最新热榜/昨日热榜 | 持续追踪热点动态,不错过关键机会 |
+
+ ### 特色亮点
+
+ - **智能事件识别**:从所有标题中独立识别和归纳具体热点事件,不直接使用原标题
+ - **可视化HTML报告**:自动生成精美HTML报告,支持PDF/图片导出
+ - **跨平台讨论对比**:展示同一事件在不同平台的讨论焦点和差异
+ - **热度趋势预测**:综合分析热度值、上榜时长、排名变化,输出趋势预测
+
+ ## 3. 一键安装
+
### 鉴权
#### 获取 API Key
请前往 [红狐hub](https://redfox.hk/settings/api-keys?source=github) 获取API KEY
#### 配置 API Key
方案1: 以OpenClaw为例,将REDFOX_API_KEY添加到~/.openclaw/openclaw.json中,部分内容如下:
```bash
{ "env": { "REDFOX_API_KEY": "ak_xxxx..." } }
```
- 方案2: 终端配置
+ 方案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分组
+ ```bash
+ pip install python-dateutil==2.8.2
+ mkdir -p output
+ ```
- **步骤2:识别具体事件**
+ ### 环境变量配置
- - 阅读每一条标题,判断哪些标题描述的是同一个事件
- - 判断依据:
- - 相同主体(人名、地名、机构名、事件名)
- - 相同事件核心(比赛、发布会、案件、政策等)
- - 时间连续性(同一时间段的热点)
+ | 变量名 | 说明 | 必填 |
+ |--------|------|------|
+ | `REDFOX_API_KEY` | 红狐 API Key | 是 |
- **步骤3:归纳事件热词**
+ ## 4. 使用指南
- - 为每个识别出的事件提炼一个简洁的热词(5-15个字)
- - 热词必须描述具体事件,不能是泛化概念
- - ✅ 正确:U20女足中日对决、2026大学排名发布、德国留学生迷奸案
- - ❌ 错误:中国相关热点、体育新闻、社会事件
+ ### 基础使用
- **步骤4:按热度值排序**
+ #### 查询最新热榜(默认)
- - 按热度值降序排列,取TOP10
+ ```bash
+ python scripts/fetch_hotspot.py --output json
+ ```
- ### 正确示例
+ 自动计算当前时间的前一个小时作为查询范围。例如:当前时间为 `2026-04-16 08:30:00`,则查询 `2026-04-16 07:00:00` 到 `2026-04-16 08:00:00` 的数据。
- **接口返回的原始数据(忽略keyword分组)**:
+ #### 查询历史热榜
- ```
- 抖音标题:["U20女足中国vs日本", "中国U20女足0:2日本", "2026软科中国大学排名发布"]
- 头条标题:["无缘决赛!U20女足中国0-2日本", "2026中国大学排名", "中国钨出口管制对日本影响"]
- 微博标题:["在德读硕中国小伙多次下药迷奸女友"]
- 知乎标题:["福特CEO称中国车进入美国市场我们就完蛋"]
+ ```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"
```
- **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个事件,而不是直接使用原标题作为热点名称。
+ **日期范围规则**:
+ - 时间格式为 `YYYY-MM-DD HH:MM:SS`,也可简写为 `YYYY-MM-DD`(自动补全为 00:00:00)
+ - 日期范围是 `[start_date, end_date)` 左闭右开区间
+ - 最长查询范围:**7天**
- ### 数据来源
+ ### 高级使用
- 直接读取 `hotspots` 数组中每个热点项的 `title`、`platName`、`url` 等字段。
+ #### 标准执行流程
- ### URL跳转
+ **重要原则:智能体完成数据分析并保存JSON后,直接生成HTML报告,不在对话中输出详细榜单。**
- 每个热点项包含 `url` 字段,支持跳转到对应平台查看详情:
+ 1. **获取热点数据**:调用脚本获取原始JSON数据
+ 2. **智能体分析并保存JSON**:执行热点事件识别,按热度值降序排列取TOP10,保存为 `structured_report.json`
+ 3. **自动生成HTML报告**:`python scripts/generate_html_report.py --input structured_report.json --output 热点榜报告.html`
+ 4. **对话中输出简要信息**:标题 > 统计时间 > HTML报告 > 订阅推送服务询问
- - 有URL的热点:输出时可添加跳转链接
- - 无URL的热点(url为空字符串):不提供跳转
+ #### 智能体时间判断逻辑
- ## 数据结构说明
+ | 用户意图 | 查询方式 |
+ |----------|----------|
+ | "今日热榜" / "今日热点" | 查询今日0:00到当前整点:`--start-date "T 00:00:00" --end-date "T {当前小时}:00:00"` |
+ | "最新热榜" / "热点榜" | 查询当前时间前一小时:`--start-date "T {当前小时-1}:00:00" --end-date "T {当前小时}: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"` |
- 脚本返回的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": "中国"
- }
- ]
- }
+ ```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" # 今日实时
```
- ### 字段说明
+ #### 热点事件识别规则
- | 字段 | 含义 | 可分析维度 |
- | --------------- | ------------------------------ | ------------------------ |
- | hotId | 热点唯一ID | - |
- | title | 热点标题 | 事件识别、跨平台归并 |
- | platName | 平台名称(抖音、头条、微博等) | 平台覆盖分析 |
- | plat | 平台代码 | - |
- | url | 跳转链接 | 查看详情、跳转访问 |
- | firstRankTime | 首次上榜时间 | 热点发酵起点、时效性 |
- | latestRankDate | 最新上榜日期 | 热点是否仍在榜 |
- | maxHotScore | 最高热度值 | 热度排行、热度对比 |
- | maxPosition | 最高排名位置 | 热度峰值、排名变化 |
- | topOfTheDayTime | 榜单停留时长(小时) | 热度持续性、生命周期预测 |
- | source_keyword | 接口分组关键词 | 仅供参考,不用于输出 |
+ **核心原则:完全忽略接口返回的keyword和分类,独立从所有标题中识别并归纳具体热点事件。**
- ### 可分析维度
+ 识别流程(必须按顺序执行):
+ 1. **收集所有标题**:遍历 `hotspots` 数组,提取 `title` 和 `platName`
+ 2. **识别具体事件**:判断标题是否描述同一事件(相同主体、相同事件核心、时间连续性)
+ 3. **归纳事件热词**:为每个事件提炼简洁热词(5-15个字)
+ - ✅ 正确:U20女足中日对决、2026大学排名发布
+ - ❌ 错误:中国相关热点、体育新闻
+ 4. **按热度值排序**:取TOP10
- 基于新增字段,可进行以下分析:
+ #### 热度值处理与输出规范
- 1. **热度排行**:按 `maxHotScore` 排序,展示热度最高的热点
- 2. **热度持续性**:根据 `topOfTheDayTime` 判断热点生命周期
- - 停留<3小时:短期热点,快速衰减
- - 停留3-10小时:中等持续
- - 停留>10小时:长期热点,持续发酵
- 3. **排名表现**:`maxPosition` 越小说明热度峰值越高
- 4. **时效性判断**:对比 `firstRankTime` 和当前时间,判断热点新鲜度
- 5. **趋势预测**:结合热度值、停留时长、排名进行趋势判断
+ - **热度换算**:`maxHotScore // 10000`(整数除法),拼接"万"。例如:9384468 → 938万
+ - **热度值格式**:必须是"数字+万",禁止包含其他字符
+ - **持续时长**:`topOfTheDayTime` 为 0 时显示"刚上热搜",否则显示"{N}h"
+ - **URL链接**:有 `url` 时显示为超链接,无URL时仅显示文本
+ - **平台图标**:使用emoji区分(微博🌐、抖音🎵、知乎📚、B站📺、快手🎬、头条📰、百度🔍)
- ### 结构化报告JSON格式
+ #### 综合预测规则
- 智能体完成分析后,将结果保存为 `structured_report.json`(内部中间文件,不展示给用户),供HTML报告脚本读取。
+ | 热度范围 | 预测emoji | 说明 |
+ |----------|-----------|------|
+ | ≥ 1000万 | 🔥🔥🔥 | 爆款 |
+ | 500-999万 | 🔥🔥 | 高热 |
+ | 100-499万 | 🔥 | 中等 |
+ | < 100万 | 📉 | 低热 |
- **关键原则**:
+ 预测内容不少于30字,需根据话题类型(突发事件/娱乐八卦/社会民生/行业动态)、热度值、上榜时长、平台覆盖表现综合分析。
- 1. HTML报告脚本只负责模板渲染,不进行任何数据分析或事件识别
- 2. JSON中的数据必须与对话中输出的内容完全一致
- 3. 智能体在对话中输出什么,JSON就保存什么,HTML就渲染什么
+ #### 结构化报告JSON格式
+ 智能体完成分析后保存为 `structured_report.json`:
+
```json
{
- "query_range": {
- "start_date": "2026-04-16 00:00:00",
- "end_date": "2026-04-16 08:00:00"
- },
+ "query_range": { "start_date": "...", "end_date": "..." },
"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://..." }]
+ "topics": [{"title": "原始标题1", "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` 的数据
+ **关键规则**:
+ - `discussions` 必须覆盖 `platforms` 中所有在榜平台
+ - `hot_score` 必须为"数字+万"格式
+ - 每个平台的讨论焦点不少于10个字
+ - 每个平台展示2-3个具体话题标题
- #### 1.2 历史热榜查询
+ ### 命令速查表
- 支持查询昨天的热度峰值最高的热搜数据:
+ | 场景 | 命令 |
+ |------|------|
+ | 最新热榜 | `python scripts/fetch_hotspot.py --output json` |
+ | 今日热榜 | `python scripts/fetch_hotspot.py --start-date "T 00:00:00" --end-date "T HH:00:00" --output json` |
+ | 昨日热榜 | `python scripts/fetch_hotspot.py --start-date "T-1 00:00:00" --end-date "T 00:00:00" --output json` |
+ | 生成HTML报告 | `python scripts/generate_html_report.py --input structured_report.json --output 热点榜报告.html` |
- ```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"
+ ### 数据结构说明
+ ```json
+ {
+ "status": "success",
+ "stat_time": "2026-04-16 08:30:00",
+ "query_range": { "type": "realtime", "start_date": "...", "end_date": "..." },
+ "total_count": 50,
+ "hotspots": [
+ {
+ "hotId": "0DFEC...",
+ "title": "匈牙利总理用三个最描述中国",
+ "platName": "头条",
+ "plat": 11,
+ "url": "https://www.toutiao.com/trending/...",
+ "firstRankTime": "2026-04-15 21:00:00",
+ "latestRankDate": "2026-04-16 00:00:00",
+ "maxHotScore": 4427099,
+ "maxPosition": 15,
+ "topOfTheDayTime": "3",
+ "source_keyword": "中国"
+ }
+ ]
+ }
```
- **日期范围规则**:
-
- - 时间格式为 `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天的数据
-
- **参数说明**:
+ | 字段 | 含义 | 可分析维度 |
+ |------|------|-----------|
+ | hotId | 热点唯一ID | - |
+ | title | 热点标题 | 事件识别、跨平台归并 |
+ | platName | 平台名称 | 平台覆盖分析 |
+ | plat | 平台代码 | - |
+ | url | 跳转链接 | 查看详情、跳转访问 |
+ | firstRankTime | 首次上榜时间 | 热点发酵起点、时效性 |
+ | latestRankDate | 最新上榜日期 | 热点是否仍在榜 |
+ | maxHotScore | 最高热度值 | 热度排行、热度对比 |
+ | maxPosition | 最高排名位置 | 热度峰值、排名变化 |
+ | topOfTheDayTime | 榜单停留时长(小时) | 热度持续性、生命周期预测 |
+ | source_keyword | 接口分组关键词 | 仅供参考,不用于输出 |
- - `--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天**
+ **可分析维度**:
+ - 停留<3小时:短期热点,快速衰减
+ - 停留3-10小时:中等持续
+ - 停留>10小时:长期热点,持续发酵
- #### 1.3 智能体判断逻辑
+ ## 5. 使用场景
- 根据用户意图自动选择查询方式(假设今天日期为T,当前时间为T HH:MM:SS):
+ ### 场景一:内容创作者选题决策
- **今日热点查询**:
+ **角色**:短视频/自媒体创作者
+ **需求**:每天早晨快速了解全网最热的10个话题,判断哪个值得创作
+ **使用方式**:输入"今日热点",获取TOP10聚合热点 + HTML可视化报告
+ **预期收益**:5分钟内定位高价值选题,提升内容曝光率
- - "今日热榜" / "今日热点" / "今天热榜" → 查询今日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"`
+ ### 场景二:品牌舆情监测
- **最新热点查询**:
+ **角色**:品牌公关经理
+ **需求**:快速了解当前最热事件中是否涉及自家品牌或竞品
+ **使用方式**:查看全网聚合TOP10,关注跨平台讨论差异
+ **预期收益**:第一时间发现潜在舆情信号,及时制定应对策略
- - "最新热榜" / "最新热点" / "热榜" / "热点榜" → 查询当前时间前一小时
- - 脚本调用:`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`
+ ### 场景三:热点趋势研究
- **历史热点查询**:
+ **角色**:数据分析师/研究员
+ **需求**:分析近期热点演变趋势,输出热点研究报告
+ **使用方式**:查询近7天热榜数据,生成HTML报告用于分享汇报
+ **预期收益**:基于数据的热点趋势分析,支持决策和报告撰写
- - "昨日热榜" / "昨天热榜" / "昨日热点" → `--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"`
+ ### 场景四:运营活动策划
- **对比查询场景**:
- 当用户需要对比多天数据时,需**分别查询**多天的热榜,而非合并查询:
+ **角色**:活动运营策划
+ **需求**:借势当前最热话题策划营销活动
+ **使用方式**:查看TOP10热点 + 热度趋势预测,选择处于上升期的热点借力
+ **预期收益**:精准借势热点,提升活动参与度和传播效果
- - "对比昨天和今天的热榜" → 分别查询昨日热榜和今日热榜,输出两份数据进行对比
- - "对比4月1日和4月2日的热榜" → 分别查询4月1日热榜和4月2日热榜,输出两份数据进行对比
+ ## 6. 项目架构
- **对比查询执行方式**:
+ ### 目录结构
- ```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" # 今日实时
```
+ trending-hub-top10/
+ ├── SKILL.md # 技能描述文件
+ ├── scripts/
+ │ ├── fetch_hotspot.py # 热点数据获取脚本
+ │ └── generate_html_report.py # HTML报告生成脚本
+ ├── references/
+ │ ├── output-templates.md # 输出格式模板参考
+ │ └── prediction-logic.md # 热度趋势预测规则
+ └── assets/
+ └── report-template.html # HTML报告模板
+ ```
- ### 2. 输出处理流程
+ ### 技术栈
- **核心原则:报告内容直接在对话中输出,输出结束后再调用脚本生成HTML报告文件。**
+ | 组件 | 技术 | 说明 |
+ |------|------|------|
+ | 脚本语言 | Python 3 | 数据获取与报告生成 |
+ | 外部依赖 | python-dateutil | 日期处理 |
+ | 数据接口 | Redfox API | 多平台热点数据聚合 |
+ | 报告模板 | HTML/CSS/JS | 可视化HTML报告 |
+ | 输出格式 | JSON / HTML | 结构化数据和可视化报告 |
- #### 步骤一:获取数据
+ ### 核心模块说明
- ```bash
- python scripts/fetch_hotspot.py --start-date "..." --end-date "..." > raw_data.json
- ```
+ | 模块 | 功能 |
+ |------|------|
+ | `fetch_hotspot.py` | 从API获取多平台热点数据,支持时间范围查询 |
+ | `generate_html_report.py` | 读取 structured_report.json 生成HTML报告(参数:--input JSON路径 --output输出路径) |
+ | `output-templates.md` | HTML报告格式参考模板 |
+ | `prediction-logic.md` | 热度趋势预测规则参考 |
+ | `report-template.html` | HTML报告模板,用于渲染最终报告 |
- #### 步骤二:对话中输出报告并同步保存JSON
+ ### 资源索引
- - 智能体读取JSON数据,完成热点事件识别、指标计算、趋势预测
- - **直接在对话中输出完整报告**,同时将分析结果同步保存为 `structured_report.json`(内部中间文件,不展示给用户)
- - **discussions必须覆盖所有在榜平台**:`platforms` 列表中的每个平台都必须在 `discussions` 数组中有对应条目,不可遗漏
- - 输出格式参考 [references/output-templates.md](references/output-templates.md)
+ - 脚本: 见 [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报告模板)
- #### 步骤三:自动生成HTML报告
+ ## 7. 常见问答
- - 直接读取已保存的 `structured_report.json` 生成HTML,**不询问用户是否生成**
+ ### 安装相关
- ```bash
- python scripts/generate_html_report.py --input structured_report.json --output 热点榜报告.html
- ```
+ **Q: 脚本运行报错 "ModuleNotFoundError: No module named 'dateutil'"**
+ A: 请安装依赖:`pip install python-dateutil==2.8.2`
- - **自检**:确认JSON数据与对话输出一致
+ **Q: 提示 "REDFOX_API_KEY not found"**
+ A: 请确保已配置环境变量 `REDFOX_API_KEY`,可参考上方鉴权章节配置。
- #### 输出注意事项
+ ### 使用相关
- 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. **不支持热词查询**:该技能不支持查询特定热词,仅支持全网热点榜查询
+ **Q: TOP10的排序依据是什么?**
+ A: 按热度值(maxHotScore)降序排列,热度最高的排第1位。排序前必须逐一核对热度值是否递减。
- ## 使用示例
+ **Q: 为什么有些热点只在一个平台出现?**
+ A: 这是正常现象。不同平台有不同用户群体和内容偏好,一些热点可能只在特定平台发酵。
- - 示例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
+ **Q: 对话中为什么看不到详细榜单?**
+ A: 本技能设计为对话中仅输出简要信息(标题、统计时间、订阅提示),详细内容在HTML报告中展示,方便分享和导出。
- ## 资源索引
+ **Q: 支持查询多久之前的数据?**
+ A: 最长查询范围为7天。
- - 脚本:见 [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报告模板)
+ ### 故障排除
- ## 注意事项
+ **Q: HTML报告生成失败?**
+ A: 请检查:1) `structured_report.json` 是否存在且格式正确;2) `discussions` 是否覆盖了所有platforms中的平台;3) 热度值格式是否正确("数字+万")。
- - **【重要】排序规则(必须严格遵守)**:
- - 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,确保数据实时性
+ **Q: 报告中的热度值与对话不一致?**
+ A: 请确保 `structured_report.json` 中的数据与对话输出完全一致。HTML报告脚本只负责模板渲染,不进行数据分析。
+
+ **Q: 事件识别不准确?**
+ A: 热点事件识别由AI完成。如果识别不准确,请尝试使用更具体的时间范围查询,或使用 trending-hub 技能查看按平台分类的榜单。