---
name: wechat-10w-hot
description: 全网持续收录每日超过1000+公众号10w+文章内容，向用户推送公众号达到10w+阅读的热门文章；当用户需要获取全领域的公众号热门文章、或订阅每日10w+文章推送、特定领域爆款文章时使用
---

# 公众号10w+文章

## 任务目标

- 本Skill用于：获取今日公众号10w+阅读文章
- 能力包含：爆款数据获取、互动排序**HTML页面生成、PDF导出**
- 触发条件："最热公众号文章"、"最新爆文"、"10w+文章"等词语
- **核心功能**：主要推送全领域的10w+阅读文章，末尾询问用户是否需要订阅具体领域
- **输出规范**：
  1. 文本输出：榜单数据（重要） + 爆款规律分析（**避免生成文档文件**）
  2. 文件输出：HTML文件（用于可视化展示和PDF导出）

## 启动提示

- Skill加载后，提示用户："技能已加载完成。是否为您推送最新的10w+阅读文章。"

## 视觉规范（重要）

生成HTML页面时，必须遵循以下样式规范：

**主题色调**：

- 主色：`rgb(0, 179, 84)`（微信绿）
- 辅助色：`#0088ff`（阅读数、用户名称蓝色）
- 背景色：`#fff`（纯白）

**布局结构**：

- 序号（🥇🥈🥉/数字）放在标题左边
- 用户、类型、阅读数、发布时间四项目之间用浅灰色竖线分隔 `|`
- 竖线高度缩短一半，垂直居中对齐
- 阅读量排序标签 + 导出PDF按钮 放在标题右侧
- **头部不含"爆款研究院"等品牌标签**，保持简洁

**图标规范**：

- 用户图标：`👤`（无背景）
- 阅读数图标：`📖`
- 发布时间图标：`📅`

**元素样式**：

- 用户名称：`#0088ff`，可点击跳转公众号名片（链接：`https://open.weixin.qq.com/qr/code?username={accountId}`）
- 阅读数：`#0088ff`
- 爆款分析区块：无左边框，纯白背景 + 浅绿底色

**PDF导出**：

- 使用 html2pdf.js 生成
- 按钮位于标题右侧，紧邻阅读量排序标签
- 按钮样式：蓝色渐变背景，白色文字，12px字号
- **自适应单页模式**：PDF尺寸根据内容实际大小自动调整，所有内容在一页完整展示，禁用分页分割
- PDF配置要点：`pagebreak: { mode: 'none' }`、`margin: 0`、根据内容高度/宽度计算纸张尺寸、添加 `page-break-inside: avoid` 样式

## 前置准备

- 无需额外依赖，脚本使用Python标准库（urllib.request）

### 鉴权

#### 获取 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. **用户意图识别**（智能体处理）

   智能体首先识别用户输入的意图类型：
   - **总榜请求（主要功能）**：用户输入类似以下词语：
     - "今日爆文"、"今日10w+文章"、"10w+文章"
     - "爆文推荐"、"推荐爆文"、"最新爆文"
     - "热门爆文"、"每日爆文"、"爆文榜单"
       → 直接推送前天10w+阅读文章TOP50（因为数据库是当日下午6:30同步昨日的数据，所以查询前天数据以确保数据完全同步）

   - **领域关键词查询（附加功能）**：用户输入具体领域关键词（如"AI编程"、"财经"、"健康饮食"）
     → 使用用户输入的关键词调用API，输出该领域TOP10

   - **模糊输入**：用户输入不明确
     → 引导用户输入具体领域关键词或直接推送近7天的10w+阅读文章

2. **获取爆文数据**（**脚本执行** - **必须调用脚本并将输出原样展示给用户**）

   调用 `scripts/fetch_hot_articles.py` 获取爆款内容数据

   **参数说明**：
   - `type`：分类名称（智能体负责识别，直接传入标准分类名称，默认：总排名）
   - `start_date`：**必传**，开始日期（YYYY-MM-DD 格式，如：2026-05-13）
   - `end_date`：**必传**，结束日期（YYYY-MM-DD 格式，如：2026-05-14）
   - `source`：数据源（固定值："公众号10w+阅读文章推荐"）
   - `mode`：输出模式，preview=预览（前10条），full=全部
   - `limit`：预览模式下显示的数量（默认10条）
   - `temp_file`：临时数据文件路径（默认temp_articles.json）

   **智能体分类识别规则**：
   - 智能体根据用户意图识别分类，直接传入标准分类名称（如：--type "科技数码"）
   - 参见 [references/category-mapping.md](references/category-mapping.md) 获取分类泛化映射规则
   - 无分类关键词 → 默认"总排名"
   - 标准23分类：人文资讯、知识百科、健康养生、时尚潮流、美食餐饮、乐活生活、旅游出行、搞笑幽默、情感心理、体育娱乐、美容美体、文摘精选、民生资讯、财富理财、科技数码、创投商业、汽车交通、房产楼市、职场发展、教育考试、学术研究、企业品牌、总排名

   **时间参数规则（重要）**：
   - `start_date` 和 `end_date` 都是**必传参数**
   - **数据更新时间**：每天 **18:30** 同步前一日数据
   - **时间判断逻辑**：智能体必须根据当前时间和数据更新时间（18:30）自动计算正确的查询日期

   **时间参数格式**：
   - 接口时间参数是**区间格式**，例如查询昨天的数据：`start_date=2026-05-13, end_date=2026-05-14`
   - 区间含义：查询从 start_date 00:00:00 到 end_date 23:59:59 的数据

   **时间计算规则**：
   - **当前时间 < 18:30**：昨天的数据还未更新，查询昨天数据时应使用前天区间（因为前天数据已更新）
   - **当前时间 >= 18:30**：昨天的数据已更新，查询昨天数据时直接使用昨天区间

   **典型场景示例**（假设今天是2026-05-14）：
   | 用户询问 | 当前时间 | 实际查询区间 | 原因 |
   |---------|---------|-------------|------|
   | 今日文章 | 11:19 | start_date=2026-05-12, end_date=2026-05-13 | 昨天数据未更新，查前天区间 |
   | 今日文章 | 19:30 | start_date=2026-05-13, end_date=2026-05-14 | 昨天数据已更新，查昨天区间 |
   | 昨天文章 | 11:19 | start_date=2026-05-12, end_date=2026-05-13 | 昨天数据未更新，但前天数据已更新，查前天区间 |
   | 昨天文章 | 19:30 | start_date=2026-05-13, end_date=2026-05-14 | 昨天数据已更新，查昨天区间 |

   **默认时间规则**：
   - 当用户提到"最近"、"最新"等**无明确时间说法**时，默认查询**过去7天**的数据
   - 示例：用户问"最近有什么热门文章" → 查询过去7天区间

   **订阅推送时间参数**：
   - 订阅推送时间：每天19:30
   - 此时昨天的数据已更新完成（18:30已同步）
   - 订阅推送查询：昨天的数据（T-1）

   **文章数量较少提示规则**：
   - 当某赛道某日的10w+文章**少于10篇**时，在统计信息后提示：
   - 「💡 xx日xx赛道10w+文章较少，您可以拓展过去30天或者看看综合10w+文章~」

   **时间不一致提示规则**：
   - 用户询问"今天的数据"，实际查询昨天的数据 → 提示：「非常抱歉🙏，今天的数据要明天才会更新，我将为您查询昨天的xx月xx日10W+文章。」
   - 用户询问"昨天的数据"，实际查询前天的数据 → 提示：「非常抱歉🙏，昨天的数据还未更新，我将为您查询前天的xx月xx日10W+文章。」
   - 用户询问时间早于回溯日期 → 提示：「非常抱歉🙏，目前最多支持回溯过去30天，我将为您查询最接近您需求的时间范围~」

   **参数示例**（假设今天是2026-05-14）：
   - 用户询问"今日文章"，当前时间11:19（< 18:30）：`--start_date 2026-05-12 --end_date 2026-05-13`（今天数据要明天才更新，查昨天区间，需提示）
   - 用户询问"今日文章"，当前时间19:30（>= 18:30）：`--start_date 2026-05-13 --end_date 2026-05-14`（今天数据要明天才更新，查昨天区间，需提示）
   - 用户询问"昨天的文章"，当前时间11:19（< 18:30）：`--start_date 2026-05-12 --end_date 2026-05-13`（昨天数据未更新，查前天区间，需提示）
   - 用户询问"昨天的文章"，当前时间19:30（>= 18:30）：`--start_date 2026-05-13 --end_date 2026-05-14`（昨天数据已更新，查昨天区间，无需提示）

   **重要说明**：
   - **必须调用脚本**：智能体必须调用fetch_hot_articles.py脚本，不能自己生成文章内容
   - **必须原样展示脚本输出**：智能体必须将脚本的stdout输出内容原样展示给用户，不得省略、修改、重新格式化或隐藏任何部分
   - **脚本输出即最终输出**：脚本输出的内容（数据说明、文章概览表格、文章详情、统计信息）就是展示给用户的最终内容，智能体不需要再做任何处理
   - **禁止省略**：文章概览表格和文章详情都必须完整展示，不得只展示其中一部分
   - **输出顺序**：脚本会按照以下顺序自动输出：数据说明 → 文章概览表格 → 文章详情 → 统计信息

   **总榜请求参数示例**（假设今天是2026-05-14，当前时间11:19 < 18:30）：
   - `type`: "总排名"（默认为总排名）
   - `start_date`: "2026-05-12"（前天，因为数据未更新）
   - `end_date`: "2026-05-13"（前天后一天，形成前天区间）
   - `mode`: "preview"（首次预览模式，只展示前10条）
   - `limit`: 10（首次展示10条）
   - 示例命令：`python scripts/fetch_hot_articles.py --type "总排名" --start_date 2026-05-12 --end_date 2026-05-13 --mode preview --limit 10`
   - 说明：查询前天（2026-05-12 00:00:00 ~ 2026-05-13 23:59:59）的10w+文章数据

   **领域查询参数示例**（假设今天是2026-05-14，当前时间19:30 >= 18:30）：
   - `type`: 智能体识别的标准分类名称（如：科技数码、健康养生、财富理财等）
   - `start_date`: "2026-05-13"（昨天，因为数据已更新）
   - `end_date`: "2026-05-14"（昨天后一天，形成昨天区间）
   - `mode`: "preview"（首次预览模式，只展示前10条）
   - `limit`: 10（首次展示10条）
   - 示例命令：`python scripts/fetch_hot_articles.py --type "科技数码" --start_date 2026-05-13 --end_date 2026-05-14 --mode preview --limit 10`
   - 说明：查询昨天（2026-05-13 00:00:00 ~ 2026-05-14 23:59:59）的科技数码类10w+文章数据

   脚本调用API接口：`https://redfox.hk/story/api/cozeSkill/getWxDataByCategoryAndTime`
   请求方式：GET（使用 urllib.request 原生请求，不跳过 SSL 证书验证）
   请求头包含：`Content-Type: application/json`, `X-API-KEY`（从环境变量 `REDFOX_API_KEY` 获取）
   从返回数据的 `tenWReadingRank` 字段中提取文章列表

   **分页展示逻辑**（智能体处理）：
   - 首次展示：调用脚本时使用 `--mode preview --limit 10`，只展示前10条数据
   - 如果数据超过10条：在底部提示"还有X条数据未展示，可继续查看"
   - 用户要求拓展：调用脚本时使用 `--mode full`，展示所有数据
   - 如果数据不超过10条：直接展示所有数据，无需询问

   **总榜请求**：获取TOP50条数据
   **领域查询**：获取TOP50条数据

   **筛选执行**：
   1. **读取筛选后数据**：脚本生成的 `temp_articles.json` 包含已排序和筛选的数据
   2. **基于意图筛选**：根据用户意图识别文章的内容相关性，要围绕用户想搜索的关键词，优先展示与用户搜索关键词最相关的文章，从候选数据中选择最合适的10条做初步展示
   3. **如实展示数量**：少于10条就展示实际数量，禁止凑数/编造

   **数据存储**：
   - 脚本将API返回的数据保存到临时JSON文件：`temp_articles.json`
   - 后续生成HTML时直接读取临时JSON文件数据进行填充

   **输出格式**（按顺序输出）：
   1. **文章概览表格**：在最前面输出Markdown表格，包含序号、标题、作者、阅读数四列，直观展示文章列表
   2. **文章详情**：每篇文章的详细信息（序号、标题、作者、阅读数、发布时间、内容分析）

   **文章概览表格格式**：

   ```
   | 序号 | 标题 | 作者 | 阅读数 |
   |------|------|------|--------|
   | 1 | 2026年4月1日起，燃油车新规实施... | 作者名称 | 5w+ |
   | 2 | WSBK赛场横扫进口品牌，张雪机车... | 作者名称 | 1.5w+ |
   | 3 | 最新存款利率调整，这三类人影响最大 | 作者名称 | 4w+ |
   ```

   **文章详情格式**：
   每篇文章按以下格式输出：

   ```
   **序号、[标题](文章链接)**
   📄 作者：[作者名称](公众号名片链接)
   👀 阅读数：阅读数
   ⏰ 发布时间：发布时间
   🔍 内容分析：基于四维度规则的分析内容
   ---
   ```

   文章标题使用Markdown链接格式，点击可跳转到文章详情页
   作者名称使用Markdown链接格式，点击可跳转到公众号名片页

   **内容分析规则**：
   内容分析必须基于以下四个维度，每篇文章的分析必须涵盖所有维度，输出为一段连贯的文字：
   - 内容概述：简明扼要地概括文章核心内容
   - 热点利用：分析文章借用了哪些热点话题或趋势
   - 传播作用：阐述内容起到的作用（如：满足用户需求、引发情感共鸣、提供实用价值）
   - 达成效果：说明内容达到的效果（如：提升品牌认知、完成用户转化、促进信息传播）

   **数据说明与提示规则**：
   **只要用户询问的时间和实际查询的时间不一致，就需要在数据说明后提示用户**：
   - 用户询问"今天的数据"，实际查询昨天的数据 → 提示：「非常抱歉🙏，今天的数据要明天才会更新，我将为您查询昨天的xx月xx日10W+文章。」
   - 用户询问"昨天的数据"，实际查询前天的数据 → 提示：「非常抱歉🙏，昨天的数据还未更新，我将为您查询前天的xx月xx日10W+文章。」
   - 用户询问时间早于回溯日期 → 提示：「非常抱歉🙏，目前最多支持回溯过去30天，我将为您查询最接近您需求的时间范围~」

   **无需提示的情况**：用户询问的时间和实际查询的时间一致（如用户问昨天的数据，实际也查昨天的数据）

   **输出格式示例（正常情况）**：

   ```
   💡 数据说明
   10w+阅读爆文推荐将在每日19点30分准时更新昨日文章数据。
   ------------------------------------------------------------

   📊 文章概览

   | 序号 | 标题 | 作者 | 阅读数 |
   |------|------|------|--------|
   | 1 | [2026年4月1日起，燃油车新规实施 年检、加油、卖车全变天 有些坑千万别踩](https://mp.weixin.qq.com/s?...) | [作者名称] (https://open.weixin.qq.com/qr/code?username=xxx)| 5w+ |
   | 2 | [WSBK赛场横扫进口品牌，张雪机车却被实名举报侵权](https://mp.weixin.qq.com/s?...) | [作者名称](https://open.weixin.qq.com/qr/code?username=xxx) | 1.5w+ |
   | 3 | [最新存款利率调整，这三类人影响最大](https://mp.weixin.qq.com/s?...) | [作者名称](https://open.weixin.qq.com/qr/code?username=xxx) | 4w+ |

   📝 文章详情

   **1、[2026年4月1日起，燃油车新规实施 年检、加油、卖车全变天 有些坑千万别踩](https://mp.weixin.qq.com/s?...)**
   📄 作者：[作者名称](https://open.weixin.qq.com/qr/code?username=xxx)
   👀 阅读数：5w+
   ⏰ 发布时间：2026-03-24 08:08:57
   🔍 内容分析：本文聚焦2026年4月1日即将实施的燃油车新规，详细阐述年检、加油、卖车等环节的全面变化并警示相关风险。文章借助政策实施这一时效性热点，精准切中车主群体的信息盲区，起到风险预警和知识普及的作用，成功唤起用户的关注度并引发转发传播。
   ---

   **2、[WSBK赛场横扫进口品牌，张雪机车却被实名举报侵权](https://mp.weixin.qq.com/s?...)**
   📄 作者：[作者名称](https://open.weixin.qq.com/qr/code?username=xxx)
   👀 阅读数：1.5w+
   ⏰ 发布时间：2026-04-06 06:49:51
   🔍 内容分析：本文报道张雪机车在WSBK赛场的优异成绩与被实名举报侵权的争议事件，通过对比手法展现国产品牌的崛起与知识产权问题。文章借力国产替代和产业竞争的社会热点，激发民族自豪感和关注争议的双重情绪，在提升品牌影响力的同时引发公众对知识产权的讨论。
   ---

   **3、[最新存款利率调整，这三类人影响最大](https://mp.weixin.qq.com/s?...)**
   📄 作者：[作者名称](https://open.weixin.qq.com/qr/code?username=xxx)
   👀 阅读数：4w+
   ⏰ 发布时间：2026-04-05 09:30:00
   🔍 内容分析：本文解读最新存款利率调整政策，明确指出三类受影响人群并提供应对建议。文章抓住财富管理这一持续热点，满足储户对资产保值增值的信息需求，起到专业指导和决策参考的作用，有效增强了用户对理财话题的关注度。
   ---

   ============================================================

   共获取到 3 条10w+热门文章数据（已全部展示）
   ```

   **输出格式示例（时间不一致，需提示）**：

   ```
   💡 数据说明
   10w+阅读文章推荐将在每日19点30分准时更新昨日文章数据。
   非常抱歉🙏，最新的是前天的数据，我将为您查询最接近您需求的5月12日10W+文章。
   ------------------------------------------------------------


   📊 文章概览

   | 序号 | 标题 | 作者 | 阅读数 |
   |------|------|------|--------|
   | 1 | [标题1](https://mp.weixin.qq.com/s?...) | [作者名称](https://open.weixin.qq.com/qr/code?username=xxx) | 5w+ |
   ...

   📝 文章详情
   ...

   ============================================================

   共获取到 X 条10w+热门文章数据，当前展示前 10 条
   💡 提示：还有 X 条数据未展示，是否需要全部展示？
   ```

3. **爆款规律分析**（智能体处理，**在榜单数据展示后执行**）

   **重要**：在完整展示推荐榜单数据后，再执行规律分析

   **分析原则**：
   - **必须基于实际文章数据**：所有结论必须从当前榜单文章中提炼，禁止使用固定示例
   - **专业且通俗**：语言简洁专业，表达清晰易懂，避免过于口语化或AI化
   - **具体可感**：用实际文章标题、数据说话，让用户能直接理解

   **分析维度**：
   - 标题特征：从榜单文章标题中总结共性和亮点
   - 内容主题：分析文章话题类型、传播价值
   - 发布时间：分析发布时段规律
   - 公众号特征：分析账号类型和内容定位特点

   **输出格式**：

   ```
   📊 爆款规律分析

   标题特征：
   - （根据实际文章标题总结，如：标题普遍采用数字+场景词组合，如"XX天"、"XX元"，信息明确,不要计算占比）
   - （从标题里找亮点，如：标题多含"千万别"、"注意"等提示词，激发用户避险心理）

   内容主题：
   - （分析文章话题，如：主要聚焦XX领域，XX、XX等话题关注度较高,不要计算占比）
   - （分析传播价值，如：内容为用户日常场景但认知盲区，实用性强）

   发布时间：
   - （从发布时间找规律，如：集中在早8点-9点发布，符合用户通勤阅读习惯）
   - （其他发现，如：工作日发布占比更高，周末流量相对分散）

   公众号特征：
   - （账号类型，如：这次上榜的主要是XX类、XX类的账号）
   - （账号特点，如：粉丝量都不算特别大，但内容接地气，表达真实）
   ```

4. **询问用户是否订阅**（**在规律分析后立即执行**）

   在完成推荐榜单数据展示和爆款规律分析后，**主动询问用户**是否需要订阅特定领域。

   ```
   📬 订阅服务

   是否需要订阅具体赛道的账号表现？我们支持：
   人文资讯、知识百科、健康养生、时尚潮流、美食餐饮、乐活生活、旅游出行、搞笑幽默、情感心理、体育娱乐、美容美体、文摘精选、民生资讯、财富理财、科技数码、创投商业、汽车交通、房产楼市、职场发展、教育考试、学术研究、企业品牌、总排名

   订阅推送 - 每天19点30分推送最新10w+公众号爆文
   暂不需要 - 仅本次查询
   ```

   **注意**：此时仅询问用户选择，暂不执行订阅逻辑，等待用户回复后再判断。

5. **生成HTML页面**（**在订阅询问后立即执行，不等待用户回复**）

   调用脚本读取临时JSON文件数据，填充HTML模板，生成公众号风格的HTML页面：

   **脚本位置**：`scripts/generate_hot_html.py`

   **参数说明**：
   - `temp_file`: 临时JSON文件路径（默认：`temp_articles.json`）
   - `output`: 输出文件路径（建议：`{关键词}_热门榜单.html`）
   - `display_count`: 要展示的文章数量（**重要**：必须与对话中展示的数量一致）
     - 首次展示（preview模式）：`--display_count 10`（展示前10条）
     - 拓展展示（full模式）：不传此参数或使用 `--display_count 50`（展示所有数据）
     - **关键规则**：HTML中展示的文章数量必须与对话中实际展示的数量完全一致

   **命令示例**：

   ```bash
   # 首次展示（对话中展示前10条）
   python scripts/generate_hot_html.py --temp_file temp_articles.json --output "热门文章_榜单.html" --display_count 10

   # 拓展展示（对话中展示所有50条）
   python scripts/generate_hot_html.py --temp_file temp_articles.json --output "热门文章_榜单.html" --display_count 50
   ```

   **HTML页面规范**：
   - 主题色：`rgb(0, 179, 84)`
   - 用户名称/阅读数：`#0088ff`
   - 序号1-3使用🥇🥈🥉，4往后使用数字
   - 用户名称左侧带👤图标，可点击跳转公众号名片
   - 用户|阅读数|发布时间用竖线分隔
   - 导出PDF按钮位于标题右侧，紧邻阅读量排序标签（无【】包裹）
   - **头部不含品牌标签块**，保持简洁
   - 底部文字：「公众号10w+阅读文章，每日更新最新爆文内容」+「备注：互动数据为入库快照，实时数据可能持续增长」
   - **防分页CSS**：article-item、article-list、content 等容器添加 `page-break-inside: avoid` 和 `break-inside: avoid`

   **生成前检查**：
   - 确认对话中实际展示的文章数量（如10条或50条）
   - 使用 `--display_count` 参数指定HTML中要展示的文章数量
   - **关键规则**：HTML中的文章数量必须与对话中实际展示的数量完全一致
     - 首次展示10条：使用 `--display_count 10`，HTML中也展示10条
     - 拓展展示全部：使用 `--display_count 50`，HTML中也展示50条
     - 数据不超过10条：使用 `--display_count N`（N为实际数量），HTML中也展示N条
   - 确认HTML中的文章信息（标题、作者、阅读数、发布时间）与对话中展示的完全一致
   - 确保所有文章的平台信息（账号名称、账号ID、阅读数等）完全一致

   **生成后必须**：
   1. 使用 preview_url 工具预览HTML
   2. 告知用户文件位置
   3. 询问是否需要调整样式

6. **处理用户订阅选择**（**在用户回复订阅询问后执行**）

   根据用户对步骤4中订阅问题的回复，执行相应的订阅逻辑：

   **订阅处理流程**：
   - 用户选择"订阅推送"：引导用户输入领域关键词
     - 用户输入领域关键词后：调用领域查询逻辑，输出该领域TOP50 + 爆款规律分析
     - 订阅成功后：每天19点30分推送该领域最新10w+阅读文章TOP50
     - **推送数据规则**：订阅推送查询的是昨天的数据（当前时间的上一天），使用 `--start_date yesterday` 参数
       - 示例：今天是2026-04-20，推送时查询2026-04-19的数据
       - 原因：数据库在当日下午6:30同步前一日数据，到19点30分推送时，昨天的数据已完全同步
   - 用户选择"暂不需要"：结束本次交互

## 可选操作

- 用户可以点击链接跳转到对应热点页面
- 可随时发送"取消订阅"停止推送

## 注意事项

- **输出前自检**：智能体在输出内容前必须进行自检，确保输出严格按照SKILL.md中的"标准流程"进行，不得跳过任何步骤
  - 步骤1：用户意图识别（智能体处理）
  - 步骤2：获取爆文数据（**必须调用脚本，必须将脚本输出原样展示给用户**，包括文章概览表格和文章详情）
  - 步骤3：爆款规律分析（**必须在步骤2完成后执行**，等待脚本输出完成）
  - 步骤4：询问用户是否订阅（**必须在步骤3完成后执行**）
  - 步骤5：生成HTML页面（**必须在步骤4完成后执行**）
  - 步骤6：处理用户订阅选择（**必须在用户回复后执行**）
- **脚本调用规则**：
  - **必须调用**：步骤2必须调用fetch_hot_articles.py脚本，不能跳过或自行生成内容
  - **必须原样展示**：脚本的stdout输出必须原样展示给用户，不得省略、修改、重新格式化
  - **完整展示**：文章概览表格和文章详情都必须完整展示，不得只展示其中一部分
  - **脚本输出即最终输出**：脚本输出的内容就是展示给用户的最终内容，智能体不需要再做任何格式化处理
- 榜单数据为实时获取，可能因网络或API状态有所延迟
- 总榜请求输出TOP50，领域查询输出TOP50
- 爆款规律分析基于当前榜单数据，仅供参考
- **无数据处理**：当查询结果为空时，提示用户"未查询到相关10w+阅读文章数据"
- **输出规范**：
  - 文本输出：文章概览表格 + 文章详情 + 爆款规律分析（避免生成文档文件）
  - 文件输出：HTML文件（用于可视化展示和PDF导出）
- **订阅提醒**：规律分析后询问用户是否需要订阅特定领域，订阅选择不影响已输出内容
- **分页展示**：首次展示前10条，超过10条时提示用户是否全部展示
- **数据存储**：脚本自动保存数据到temp_articles.json，HTML生成时直接读取
- **时间参数计算规则**：智能体必须根据当前时间和数据更新时间（18:30）自动计算正确的查询日期
  - **数据更新时间**：每天18:30同步前一日数据
  - **判断逻辑**：当前时间 < 18:30 → 查T-2（前天）；当前时间 >= 18:30 → 查T-1（昨天）
  - **示例**（今天是2026-05-14）：
    - 当前时间11:19（< 18:30），用户问"今日文章" → 查2026-05-12 ~ 2026-05-13
    - 当前时间19:30（>= 18:30），用户问"今日文章" → 查2026-05-13 ~ 2026-05-14
- **订阅推送时间参数**：订阅推送（每天19:30）查询昨天的数据
  - 原因：18:30数据已同步，19:30推送时昨天的数据已完全同步
- **HTML内容一致性**：HTML中的文章内容必须与对话中展示的Markdown格式文章完全一致
  - **关键规则**：使用 `--display_count` 参数控制HTML中展示的文章数量
  - 文章数量必须一致（对话中展示10篇，HTML中使用 `--display_count 10`，HTML中也展示10篇）
  - 文章信息必须一致（标题、作者、阅读数、发布时间）
  - 平台信息必须一致（账号名称、账号ID、链接）
  - 如果用户拓展查看全部数据，HTML中使用 `--display_count 50`，HTML中也展示50条
  - **重要**：即使临时文件有50条数据，也要根据对话中实际展示的数量来生成HTML

## 资源索引

- 脚本: 见 [scripts/fetch_hot_articles.py](scripts/fetch_hot_articles.py)(用途: 根据分类和时间获取10w+热门文章数据，生成摘要表格和详情列表，保存到临时JSON文件)
- 脚本: 见 [scripts/generate_hot_html.py](scripts/generate_hot_html.py)(用途: 从临时JSON文件读取数据，生成公众号风格HTML页面)
- 参考: 见 [references/api-spec.md](references/api-spec.md)(何时读取: 查看API接口规范时使用)
- 参考: 见 [references/category-mapping.md](references/category-mapping.md)(何时读取: 查看分类泛化映射规则时使用)

## 使用示例

**示例1：总榜请求（主要功能）**

```
用户输入：今日爆文
智能体识别：总榜请求
智能体处理：
- type: "总排名"
- start_date: "2026-05-12"（前天，假设今天是2026-05-14）
- end_date: "2026-05-13"（前天的后一天）
- mode: "preview"（首次预览）
- limit: 10
- 调用脚本获取最新10w+热门文章，数据自动保存到 temp_articles.json
- 输出文章概览表格（前10条）
- 输出文章详情（前10条）
- 输出爆款规律分析
- 询问用户是否需要订阅特定领域
- 调用脚本读取 temp_articles.json 生成HTML页面（使用 --display_count 10，确保HTML中只展示10条）
- 预览HTML页面
命令示例：
python scripts/fetch_hot_articles.py \
  --type "总排名" \
  --start_date 2026-05-12 \
  --end_date 2026-05-13 \
  --mode preview \
  --limit 10
输出结果：
💡 数据说明
10w+阅读爆文推荐将在每日19点30分准时更新昨日文章数据。
------------------------------------------------------------

📊 文章概览

| 序号 | 标题 | 作者 | 阅读数 |
|------|------|------|--------|
| 1 | 2026年4月1日起，燃油车新规实施... | 作者A | 5w+ |
| ... | ... | ... | ... |
| 10 | 最新存款利率调整... | 作者J | 4w+ |

📝 文章详情
[前10条文章详情...]

📊 爆款规律分析
[爆款规律分析内容...]

📬 订阅服务

订阅推送 - 每天19点30分推送最新10w+公众号爆文
暂不需要 - 仅本次查询

[HTML页面预览]

共获取到 50 条10w+热门文章数据，当前展示前 10 条
💡 提示：还有 40 条数据未展示，是否需要全部展示？
```

**示例2：领域关键词查询**

```
用户输入：推荐科技类的文章
智能体识别：领域关键词查询
智能体匹配分类："科技" → "科技数码"
智能体处理：
- type: "科技数码"（根据关键词匹配）
- start_date: "2026-05-13"（昨天，假设今天是2026-05-14）
- end_date: "2026-05-14"（今天）
- mode: "preview"（首次预览）
- limit: 10
- 调用脚本获取科技数码领域文章，只展示前10条
- 输出文章概览表格（前10条）
- 输出文章详情（前10条）
- 输出爆款规律分析
- 询问用户是否需要订阅特定领域
- 调用脚本读取 temp_articles.json 生成HTML页面（使用 --display_count 10，确保HTML中只展示10条）
- 预览HTML页面
命令示例：
python scripts/fetch_hot_articles.py \
  --type "科技数码" \
  --start_date 2026-05-13 \
  --end_date 2026-05-14 \
  --mode preview \
  --limit 10
输出结果：
💡 数据说明
10w+阅读爆文推荐将在每日19点30分准时更新昨日文章数据。
------------------------------------------------------------

📊 文章概览

| 序号 | 标题 | 作者 | 阅读数 |
|------|------|------|--------|
| 1 | 美伊战争大反转... | 作者A | 10w+ |
| ... | ... | ... | ... |
| 10 | 战争背后的经济逻辑... | 作者J | 10w+ |

📝 文章详情
[前10条文章详情...]

📊 爆款规律分析
[爆款规律分析内容...]

📬 订阅服务

订阅推送 - 每天19点30分推送最新10w+公众号爆文
暂不需要 - 仅本次查询

[HTML页面预览]

共获取到 50 条10w+热门文章数据，当前展示前 10 条
💡 提示：还有 40 条数据未展示，是否需要全部展示？
```

**示例3：用户要求查看全部数据**

```
[承接示例1，用户回复"是"或"全部展示"]
智能体处理：
- 调用脚本，mode: "full"，展示所有50条数据
命令示例：
python scripts/fetch_hot_articles.py \
  --type "总排名" \
  --start_date 2026-05-12 \
  --end_date 2026-05-13 \
  --mode full
输出结果：
💡 数据说明
10w+阅读爆文推荐将在每日19点30分准时更新昨日文章数据。
------------------------------------------------------------

📊 文章概览

| 序号 | 标题 | 作者 | 阅读数 |
|------|------|------|--------|
| 1 | 2026年4月1日起，燃油车新规实施... | 作者A | 5w+ |
| ... | ... | ... | ... |
| 50 | 最新科技新闻汇总... | 作者Z | 3w+ |

📝 文章详情
[全部50条文章详情...]

共获取到 50 条10w+热门文章数据（已全部展示）
```

**示例4：数据不超过10条**

```
用户输入：某个冷门领域
智能体处理：
- type: 智能体匹配分类
- 调用脚本获取数据
- 智能体判断：只获取到5条数据
- 直接展示所有5条数据，无需询问是否拓展
命令示例：
python scripts/fetch_hot_articles.py \
  --type "学术研究" \
  --start_date 2026-05-13 \
  --end_date 2026-05-14 \
  --mode preview
输出结果：
💡 数据说明
10w+阅读爆文推荐将在每日19点30分准时更新昨日文章数据。
------------------------------------------------------------

📊 文章概览

| 序号 | 标题 | 作者 | 阅读数 |
|------|------|------|--------|
| 1 | 冷门领域文章1 | 作者A | 10w+ |
| ... | ... | ... | ... |
| 5 | 冷门领域文章5 | 作者E | 10w+ |

📝 文章详情
[全部5条文章详情...]

📊 爆款规律分析
[爆款规律分析内容...]

📬 订阅服务

订阅推送 - 每天19点30分推送最新10w+公众号爆文
暂不需要 - 仅本次查询

[HTML页面预览]

共获取到 5 条10w+热门文章数据（已全部展示）
```

**示例5：无数据情况**

```
用户输入：某个完全不存在的冷门关键词
智能体处理：
- 调用脚本，返回空数据
- 提示"未查询到相关10w+阅读文章数据"
- 推荐除了该领域的其他所有领域关键词
输出结果：
该领域在该时间段太冷门，暂无10w+文章，您可尝试查看综合10w+文章或者查看其他分类，如人文资讯、知识百科、健康养生、时尚潮流、美食餐饮、乐活生活、旅游出行、搞笑幽默、情感心理、体育娱乐、美容美体、文摘精选、民生资讯、财富理财、科技数码、创投商业、汽车交通、房产楼市、职场发展、教育考试、学术研究


## 资源索引
- 脚本: 见 [scripts/fetch_hot_articles.py](scripts/fetch_hot_articles.py)(用途: 获取10w+热门文章数据，生成摘要表格和详情列表，保存到临时JSON文件)
- 脚本: 见 [scripts/generate_hot_html.py](scripts/generate_hot_html.py)(用途: 从临时JSON文件读取数据，生成公众号风格HTML页面)
- 参考: 见 [references/api-spec.md](references/api-spec.md)(何时读取: 查看API接口规范时使用)

## 注意事项
- 榜单数据可能因网络或API状态有所延迟
- 总榜请求输出TOP50，领域查询输出TOP50
- 爆款规律分析基于当前榜单数据，仅供参考
- **输出规范**：
  - 文本输出：文章概览表格 + 文章详情 + 爆款规律分析（避免生成文档文件）
  - 文件输出：HTML文件（用于可视化展示和PDF导出）
- **订阅提醒**：规律分析后询问用户是否需要订阅特定领域，订阅选择不影响已输出内容
- **分页展示**：首次展示前10条，超过10条时提示用户是否全部展示
- **数据存储**：脚本自动保存数据到temp_articles.json，HTML生成时直接读取
```
