Skill: redfox-data/trending-hub (version 1.0.2)

--- name: trending-hub description: 帮你把抖音、微博、B站、快手、知乎、头条、百度等7个平台的热搜聚合在一起，省得一个个平台去看。想知道今天全网都在聊什么、哪个热点值得追、趋势怎么走，问我准没错。查热榜、导报告、订阅推送都行 dependency: python: - 无第三方依赖（使用标准库 urllib.request） --- # 全网热点追踪 ## 任务目标 - 本 Skill 用于：聚合抖音、微博、B站、快手、知乎、头条、百度等多个平台的热点数据，提供跨平台热点分析和趋势预测 - 核心价值 解决内容创作者、市场运营者在热点追踪中的三大痛点: 热点分散难整合：无需逐个平台查看，一次聚合7大平台热榜 跨平台对比困难：自动识别同一事件在不同平台的讨论差异和热度表现，对热点进行快览分析 趋势判断模糊：基于热度值、上榜时长、平台覆盖等维度智能预测热点走势 订阅推送服务：定时推送最新热榜/昨日热榜 - 触发条件：用户查询"热点榜"、"今日热点"、"全网热点榜"、"昨日热榜"或订阅推送服务 - **不支持**：该技能不支持查询特定热词详情，仅提供全网热点榜聚合查询 核心能力 功能模块 能力描述 核心价值 🔍 全网热榜聚合 实时抓取7大平台热搜数据 一键获取全网热点，告别逐平台查看 🔗 跨平台事件识别 智能识别同一事件在不同平台的表述 自动归并相似话题，避免重复统计 📊 热度趋势预测 基于热度值、时长、平台覆盖预测走势 提前判断热点生命周期，把握创作窗口 📈 TOP10榜单提供 按综合热度排序输出TOP10热点 快速定位高价值选题 💬 跨平台讨论分析 展示不同平台的讨论焦点和差异 深度洞察舆论生态，精准定位受众 ⏰ 订阅推送服务 定时推送最新热榜/昨日热榜 持续追踪热点动态，不错过关键机会 ## 前置准备 - 依赖说明：scripts脚本依赖 python-dateutil 库 ### 鉴权 #### 获取 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..." ``` ## 操作步骤 - 标准流程： 1. 获取热点数据 — 脚本调用 - 脚本调用：`python scripts/fetch_hotspot.py --source "全平台热点事件"` - 参数说明： - `--source`（必传）：数据来源 - `--platforms`（可选）：平台代码列表，多个平台用逗号分隔，如`--platforms "wb,dy,bz"` - `--keywords`（可选）：关键词列表，多个关键词用逗号分隔，如`--keywords "体育,足球"` - `--expand-keywords`（可选）：是否对关键词进行泛化扩展，如用户搜"体育"会自动扩展为["体育", "足球", "篮球", "运动", "健身", "奥运", "世界杯", "NBA", "CBA", "乒乓球"] - `--start-date`/`--end-date`（可选）：时间范围 - `--output`（可选）：输出格式，默认为compact（极简输出+文件保存），可选json、markdown - **【重要】输出格式说明**： - **compact模式（默认）**：输出极简结构化数据（元信息+平台TOP3概览），**末尾附带完整数据文件路径 `dataFile: {path}`** - 智能体应该使用compact模式获取数据，避免输出被截断 - **【重要】只允许调用 1 次接口**：从 compact 输出末尾的 `dataFile` 路径读取完整 JSON 数据，禁止再用 json 模式重调接口 - 如需查看完整数据，读取 compact 输出的 dataFile 路径对应文件 - 返回数据结构见下方"数据结构说明" 2. **对话中输出报告文本** — 智能体根据JSON数据处理后，在对话中输出Markdown格式的报告文本 - **必须执行**：完整输出报告文本 - **【重要】必须严格按照输出模板格式输出，不得擅自修改格式** - **【重要】智能输出规则**： - 如果某平台没有热点数据（hotspots为空或不存在），则不展示该平台 - 如果某平台数据少于10条，则展示实际数量（如只有5条就展示5条） - 查看更多引导根据实际剩余数据动态生成： - 数据≤10条：不显示查看更多引导 - 数据>10条：显示"该平台还有{N}条数据未展示" - 输出格式模板（必须严格遵守）： ```markdown # 🔥 全网热点榜（按平台分类） > **📅 统计时间：** 小时级更新，热点上榜时间为{start_time}至{end_time} > **📊 覆盖平台：** {实际有数据的平台列表} --- ## 百度热点 | 排名 | 热点 | 热度 | | :--: | ------------------- | :------: | | 1 | [{热点标题}]({url}) | {热度}万 | | 2 | [{热点标题}]({url}) | {热度}万 | | 3 | [{热点标题}]({url}) | {热度}万 | | ... | ... | ... | | 10 | [{热点标题}]({url}) | {热度}万 | 💡 该平台还有40条数据未展示，回复「查看百度完整榜单」可查看全部数据。 --- ## 知乎热点 | 排名 | 热点 | 热度 | | :--: | ------------------- | :------: | | 1 | [{热点标题}]({url}) | {热度}万 | | ... | ... | ... | | 8 | [{热点标题}]({url}) | {热度}万 | {该平台只有8条数据，不显示查看更多引导} --- ## 微博热点 | 排名 | 热点 | 热度 | | :--: | ---- | :--: | | ... | ... | ... | 💡 该平台还有35条数据未展示，回复「查看微博完整榜单」可查看全部数据。 --- {如果某平台无数据，则完全跳过该平台，不展示标题和空表格} --- ## 📊 全网热点小总结 **今日最热**：{热度最高的热点标题}（{热度}万，来自{平台}） **跨平台热度王**：{出现在最多平台的热点标题}（覆盖{N}个平台） **上升最快**：{热度增长最快的热点标题} **值得关注**：{智能体根据热度、平台覆盖、趋势综合判断的热点} --- 📬 **订阅推送**： - 回复「订阅每日推送」，每天定时推送最新热榜 - 回复「订阅每周推送」，每周定时推送热门汇总 ``` - 完整榜单查看示例（用户回复「查看百度完整榜单」后）： ```markdown ## 百度热点完整榜单 > **📅 统计时间：** 小时级更新，热点上榜时间为{start_time}至{end_time} > **📊 覆盖平台：** {平台名称} | 排名 | 热点 | 热度 | | :--: | ------------------- | :------: | | 1 | [{热点标题}]({url}) | {热度}万 | | 2 | [{热点标题}]({url}) | {热度}万 | | ... | ... | ... | | 50 | [{热点标题}]({url}) | {热度}万 | --- 📬 **订阅推送**： - 回复「订阅每日推送」，每天定时推送最新热榜 - 回复「订阅每周推送」，每周定时推送热门汇总 ``` **智能输出逻辑说明**： - 按平台顺序遍历数据（百度 → 知乎 → 微博 → 抖音 → B站 → 快手 → 头条） - 跳过没有数据的平台（不显示空表格） - 每个平台最多展示TOP10，不足10条则展示实际数量 - 动态计算剩余数据： - 如果数据≤10条：不显示查看更多引导 - 如果数据>10条：计算剩余条数并显示"该平台还有{N}条数据未展示" ## 数据结构说明 ### API返回数据格式 ```json { "status": "success", "stat_time": "2026-05-08 07:35:15", "total_count": 330, "hotspots": [ { "title": "热点标题", "url": "https://...", "hotCount": 7904508, "index": 1, "gmtCreate": "2026-05-08 06:00:14", "platCode": "bd", "platName": "百度" } ], "query_range": { "type": "realtime", "start_date": "2026-05-08 06:00:00", "end_date": "2026-05-08 07:00:00" } } ``` ### 字段说明 | 字段 | 说明 | | --------- | ------------------------------------------- | | hotspots | 热点列表，包含所有平台的热点数据 | | title | 热点标题（已处理空格） | | url | 热点链接（空格已转为%20） | | hotCount | 热度值（纯数字，已移除"万热度"等字符） | | index | 平台内排名 | | gmtCreate | 创建时间 | | platCode | 平台代码：bd/bz/dy/ks/tt/wb/zh | | platName | 平台名称：百度/B站/抖音/快手/头条/微博/知乎 | ### 平台代码映射 - `bd`：百度 - `bz`：B站 - `dy`：抖音 - `ks`：快手 - `tt`：头条 - `wb`：微博 - `zh`：知乎 ### 1. 获取热榜数据 #### 1.1 实时热榜（默认） 要求最新、当下等实时热榜时，自动查询前一个完整小时： ```bash python scripts/fetch_hotspot.py --source "全平台热点事件" ``` **实时查询规则**： - 数据为小时级更新，自动查询前一个完整小时 - 例如：当前时间为 `2026-04-16 17:42:00`，则查询 `2026-04-16 16:00:00` 到 `2026-04-16 17:00:00` 的数据 #### 1.2 历史热榜查询 支持查询昨天的热度峰值最高的热搜数据： ```bash # 查询昨日热榜（假设今天是2026-04-16） python scripts/fetch_hotspot.py --source "全平台热点事件" --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-05-09 00:00:00"` 查询的是4月9日至5月8日共30天的数据 **参数说明**： - `--source`：数据来源，默认值："全平台热点事件"（通常无需手动指定） - `--platforms`：平台代码列表（可选），多个平台用逗号分隔，支持：bd=百度、bz=B站、dy=抖音、ks=快手、tt=头条、wb=微博、zh=知乎 - `--keywords`：关键词列表（可选），多个关键词用逗号分隔，用于筛选特定关键词的热点 - `--expand-keywords`：是否对关键词进行泛化扩展（可选），如用户搜"体育"会自动扩展为["体育", "足球", "篮球", "运动", "健身", "奥运", "世界杯", "NBA", "CBA", "乒乓球"] - `--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） - **最长查询范围：30天** **关键词泛化策略**： - 大词（如"体育"、"娱乐"、"科技"等）：自动扩展为10个泛化词，如"体育"→["体育", "足球", "篮球", "运动", "健身", "奥运", "世界杯", "NBA", "CBA", "乒乓球"] - 精确词（如"苏超"、"某明星名字"等）：直接传入原词，不进行扩展 - 支持泛化的大类：体育、娱乐、科技、财经、社会、游戏、汽车、美食、旅游、时尚等 **平台代码与接口枚举值映射**： | 平台代码 | 平台名称 | 接口枚举值 | |---------|---------|-----------| | ks | 快手 | 1 | | dy | 抖音 | 2 | | wb | 微博 | 5 | | bd | 百度 | 7 | | bz | B站 | 8 | | zh | 知乎 | 9 | | tt | 头条 | 10 | #### 1.3 智能体判断逻辑 根据用户意图自动选择查询方式（假设今天日期为T，当前时间为T HH:MM:SS）： **今日热点查询**： - "今日热榜" / "今日热点" / "今天热榜" → 查询今日0:00到当前时间的整点 - 脚本调用：`python scripts/fetch_hotspot.py --source "全平台热点事件" --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"` - 统计时间展示：**📅 统计时间：** 小时级更新，热点上榜时间为2026-04-16 00:00至2026-04-16 08:00 **最新热点查询**： - "最新热榜" / "最新热点" / "热榜" / "热点榜" → 查询前一个完整小时（默认行为） - 脚本调用：`python scripts/fetch_hotspot.py --source "全平台热点事件"`（无需指定时间参数） - 统计时间展示：**📅 统计时间：** 小时级更新，热点上榜时间为{start_time}至{end_time} **昨日热点查询**： - "昨日热榜" / "昨日热点" / "昨天热榜" → 查询昨日0:00到24:00的数据 - 脚本调用：`python scripts/fetch_hotspot.py --source "全平台热点事件" --start-date "T-1 00:00:00" --end-date "T 00:00:00"` - 示例：今天为 `2026-04-16`，则查询 `--start-date "2026-04-15 00:00:00" --end-date "2026-04-16 00:00:00"` - 统计时间展示：**📅 统计时间：** 小时级更新，热点上榜时间为2026-04-15 00:00至2026-04-16 00:00 **本周热点查询**： - "本周热榜" / "本周热点" / "这周热榜" → 查询本周一0:00到当前时间的整点 - 本周计算规则：本周一为本周开始，周日为本周结束 - 脚本调用：`python scripts/fetch_hotspot.py --source "全平台热点事件" --start-date "{本周一日期} 00:00:00" --end-date "T {当前小时}:00:00"` - 示例：今天是2026-05-09（周六），本周一为2026-05-04，当前时间为2026-05-09 15:30:00 - 查询：`--start-date "2026-05-04 00:00:00" --end-date "2026-05-09 15:00:00"` - 统计时间展示：**📅 统计时间：** 小时级更新，热点上榜时间为2026-05-04 00:00至2026-05-09 15:00 - **【重要】本周一时间计算规则**： - 正确：今天是2026-05-09（周六），本周一 = 2026-05-04 - 错误：今天是2026-05-09（周六），本周一 = 2026-05-03（往前多算了一天） - 计算公式：本周一 = 今天日期 - (今天星期几 - 1)天 **对比查询场景**： 当用户需要对比多天数据时，需**分别查询**多天的热榜，而非合并查询： - "对比昨天和今天的热榜" → 分别查询昨日热榜和今日热榜，输出两份数据进行对比 - "对比4月1日和4月2日的热榜" → 分别查询4月1日热榜和4月2日热榜，输出两份数据进行对比 **对比查询执行方式**： ```bash # 对比昨天和今天的热榜（假设今天是2026-04-16） python scripts/fetch_hotspot.py --source "全平台热点事件" --start-date "2026-04-15 00:00:00" --end-date "2026-04-16 00:00:00" # 昨日 python scripts/fetch_hotspot.py --source "全平台热点事件" --start-date "2026-04-16 00:00:00" --end-date "2026-04-17 00:00:00" # 今日实时 ``` ### 2. 输出处理流程 **核心原则：按平台分类输出，每个平台展示TOP10。** #### 步骤一：获取数据 ```bash python scripts/fetch_hotspot.py --source "全平台热点事件" --start-date "..." --end-date "..." ``` #### 步骤二：按平台分类输出 - 智能体读取JSON数据，按平台分类整理 - **每个平台输出TOP10热点**（共7个平台，每个平台展示前10条） - **输出格式**： 1. 标题：统计时间、覆盖平台 2. 各平台热搜TOP10表格（微博、抖音、B站、快手、知乎、头条、百度） 3. 全网热点小总结（今日最热、跨平台热度王、上升最快、值得关注） 4. 查看更多引导（每个平台有50条数据） 5. 订阅推送引导（每日/每周） ### 3. 热度值处理 **热度格式化规则**： - **智能判断**：如果热度值已包含单位（如"万"、"亿"），直接使用原始值，不做格式化 - 示例：知乎热度 `91 万热度` → 直接使用 `91 万热度` - **数字转换**：如果热度值为纯数字，转换为"数字+万"格式 - 示例：百度热度 `7904508` → `790万` - **特殊处理**：部分平台热度值可能带有"热度"后缀，予以保留 ### 4. 用户交互引导 #### 查看更多 当用户回复「查看{平台名}完整榜单」时： - 使用 `--platforms` 参数筛选该平台数据 - 输出该平台完整50条热点列表 - 输出格式：Markdown表格（减少数据体积，避免被截断） 示例： ```bash python scripts/fetch_hotspot.py --source "全平台热点事件" --platforms wb --output markdown ``` #### 订阅推送 - **每日推送**：每天定时推送最新热榜（如早8点、晚8点） - **每周推送**：每周定时推送热门汇总（如周一早上） - 推送格式：精简版TOP10表格 + 小总结 ### 5. 订阅推送服务 #### 5.1 订阅类型 - **每日推送**：每天定时推送最新热榜（如早8点、晚8点） - **每周推送**：每周定时推送热门汇总（如周一早上） #### 5.2 推送格式 推送消息采用精简格式，包含： - 标题：📊 今日热点榜 - 统计时间范围 - 各平台TOP3热点 - 全网热点小总结 - 查看详情引导 ## 使用示例 - 示例1: 查询今日热点 - 场景/输入: 用户输入"热点榜"或"今日热点" - 执行步骤: 1. 调用 `python scripts/fetch_hotspot.py --source "全平台热点事件"` 获取数据 2. **在对话中输出按平台分类的热点榜**（每个平台TOP10 + 小总结 + 查看更多引导 + 订阅引导） - 预期产出: 用户在对话中看到完整报告内容 - 关键要点: 确保输出完整的TOP10热点分析 ## 资源索引 - 脚本:见 [scripts/fetch_hotspot.py](scripts/fetch_hotspot.py)(用途与参数:从API获取热点数据，支持平台筛选) - 参考:见 [references/output-templates.md](references/output-templates.md)(何时读取:对话输出时参考格式模板) ## 注意事项 - **【重要】输出格式必须严格遵守**： - 智能体输出结果必须严格按照 [references/output-templates.md](references/output-templates.md) 中的模板格式输出 - 不得擅自修改、调整或简化模板格式 - 必须按平台分类输出，每个平台展示TOP10 - 平台展示格式：二级标题为平台名，三级标题为"{平台名}热点" - 必须包含全网热点小总结 - 必须包含查看更多引导和订阅推送引导 - **【重要】平台顺序**：百度 → 知乎 → 微博 → 抖音 → B站 → 快手 → 头条 - **【重要】热度值格式**： - 热度值格式必须为"数字+万"（如"938万"），禁止包含其他字符 - 换算规则：`hotCount // 10000`（整数除法） - 错误示例："938万4"、"938.5万"、"热度938万" - 正确示例："938万" - **热点标题格式**： - 标题显示为超链接：`[{标题}]({url})` - 无URL的标题仅显示文本 - **交互引导**： - 每个平台有50条数据，提示用户可查看完整榜单 - 提供每日/每周订阅选项


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)