Skill: yuanyi-github/wechat-original-hot (version 1.0.2)

--- name: wechat-original-hot description: 全网持续收录每日公众号原创热门文章内容，向用户推送公众号原创热门文章；当用户需要获取全领域的公众号原创热门文章、或订阅每日原创热门文章推送时使用 --- # 公众号热门原创文章 ## 任务目标 - **本Skill必须调用脚本获取数据，禁止AI自行生成任何内容。未调用脚本=功能失效。** - 本Skill用于：获取公众号原创爆款文章 - 能力包含：爆文数据获取、分类查询、日期查询、HTML页面生成、PDF导出 - 触发条件："原创爆文"、"爆文推荐"、"今日爆文"等词语 - **核心功能**：主要推送原创爆文文章，支持按分类和日期筛选，末尾询问用户是否需要查看更多或订阅每日推送 - **默认查询时间**：当用户提到"最近"、"最新"等无明确时间说法时，默认查询过去7天数据 - **文章数量提示**：当文章少于10篇时，提示"xx赛道10w+文章较少，您可以拓展过去30天或者看看综合10w+文章~" - **输出规范**： 1. 对话文本输出：完整榜单数据（**必须展示所有文章，禁止截断或省略**） 2. HTML文件输出：对话输出完成后生成HTML（用于可视化展示和PDF导出） - **执行顺序**：先完成对话中的完整文章输出 → 再生成HTML文件 - **禁止行为**：禁止自行生成文章内容、写作建议、爆文规律分析，本Skill只输出榜单数据 ## 启动提示 - Skill加载后，提示用户："技能已加载完成。是否为您推送最新的原创爆款文章？" ## 视觉规范（重要） 生成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标准库（json、argparse、os、sys、urllib、ssl），无需额外安装 - API说明：调用公众号原创爆款文章API，使用原生 urllib.request + ssl（verify=False）发起 POST 请求 ### 鉴权 #### 获取 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..." ``` ## 数据时间说明 - **数据同步时间**：每日19:30同步 - **同步数据范围**：前一天（T-1）的数据 - **查询数据范围**： - 当前时间 < 19:30：查询 T-2 数据（前天） - 当前时间 >= 19:30：查询 T-1 数据（昨天） - **输出标注**：数据更新时间=T-1日期，查询数据日期=T-2日期 - **默认查询时间**：当用户提到"最近"、"最新"等无明确时间说法时，默认查询过去7天 ## 操作步骤 ### 1. 用户意图识别（智能体处理） 智能体首先识别用户输入的意图类型： - **分类查询**：用户输入具体分类（如"科技"、"健康养生"、"财经"等） → 匹配分类，输出该分类 Top20 → 参考 [分类映射表](references/category_mapping.md) 进行分类匹配 - **日期查询**：用户输入具体日期（如"5月3日的原创爆款"、"昨日爆文"） → 输出指定日期的爆文Top20 - **时间范围查询**：用户输入"最近"、"最新"等无明确时间说法 → 默认查询过去7天的数据，输出Top20 - **直接查询**：用户输入类似以下词语： - "今日爆文"、"今日原创文章"、"原创文章" - "最新爆文"、"爆文推荐"、"原创爆文" - "热门爆文"、"每日爆文"、"爆文榜单" → 输出最新原创爆款文章 Top20 - **模糊输入**：用户输入不明确 → 直接推送今日原创热门文章 ### 2. 获取爆文数据（脚本执行，必须调用脚本并将输出原样展示给用户） **【强制】无论用户怎么输入，智能体必须先调用fetch_articles.py获取数据，然后原样展示。没有调用脚本的输出一律视为无效。** 调用 `scripts/fetch_articles.py` 获取爆款内容数据 **【核心输出规则】**： - **必须调用脚本**：智能体必须调用fetch_articles.py脚本，不能自己生成文章内容 - **禁止输出脚本文件路径或代码**：智能体不得向用户展示任何脚本路径、代码内容或执行命令 - **必须原样展示脚本输出**：智能体必须将脚本的stdout输出内容原样展示给用户，不得省略、修改、重新格式化或隐藏任何部分 - **【关键】禁止截断或省略**：脚本输出多少条文章，对话中就必须展示多少条。如 limit=20 就必须输出全部 20 条，**严禁使用"..."、省略号、或只展示前 N 条**。每一条文章的序号、作者、标题、阅读数都必须完整展示 - **禁止修改数据**：不得修改、重新格式化、美化或隐藏脚本输出的任何部分 - **禁止自行生成数据**：不得使用输出示例中的数据，必须使用脚本实际返回的数据 - **脚本输出即最终输出**：脚本输出的内容（数据说明、原创爆文推荐表格、询问用户是否看剩余内容、询问订阅）就是展示给用户的最终内容，智能体不需要再做任何处理 - **【重要】询问部分不可省略**：脚本输出的最后部分"共获取到XX条..."和订阅服务必须完整展示，不得省略 **【强制执行步骤 — 防止文章丢失】**： 1. 执行 fetch_articles.py 后，脚本 stdout 中的「表格部分」（从 `| 序号 | 作者 | 标题 | 阅读数 |` 开始到订阅服务之前的所有行）**必须逐行完整复制到对话回复中**，一行都不能少 2. **严禁使用以下话术代替实际数据**：「如上完整展示」「详见上方」「参考脚本输出」「已展示完毕」等 — 这些都是文章丢失的直接原因 3. **第2步的对话回复是文章的唯一展示窗口**，如果这一步没有逐条输出文章，文章就永远丢失了（HTML 只是辅助文件，不能替代对话输出） 4. 生成 HTML 之前必须自检：对话中显示的表格行数是否等于 --limit 参数值？不等于则**禁止生成 HTML**，先补上缺失的文章 **接口信息**： - 接口URL：`https://redfox.hk/story/api/cozeSkill/getWxDataByCategoryAndTime` - 请求方式：POST（JSON body） - 认证方式：X-API-KEY header，值从 `REDFOX_API_KEY` 环境变量获取 - 参数： - `type`：分类名称（如"科技数码"、"总排名"等） - `startDate`：开始日期（YYYY-MM-DD格式） - `endDate`：结束日期（YYYY-MM-DD格式） - `source`："公众号文章原创之王"（固定值） **脚本调用方式**（智能体内部执行，用户不可见）： **分类查询**： ```bash python scripts/fetch_articles.py --type "科技数码" --limit 20 ``` - `--type`：从用户输入中匹配的分类名称（参考分类映射表） - 如用户输入"科技类原创爆款"，智能体匹配到"科技数码"，传入`--type "科技数码"` **总榜查询**： ```bash python scripts/fetch_articles.py --type "总排名" --limit 20 ``` - 或不传 `--type`，默认为"总排名" **日期查询**： ```bash python scripts/fetch_articles.py --type "总排名" --start_date "2026-05-03" --limit 20 ``` - `--start_date`：用户指定的日期（YYYY-MM-DD格式） - 脚本会自动计算 `endDate` = `startDate` + 1天 **时间参数说明**： - 用户未指定日期时，脚本根据当前时间自动判断： - 当前时间 < 18:30：查询 T-2 数据（前天） - 当前时间 >= 18:30：查询 T-1 数据（昨天） - 用户指定日期时，使用用户指定的日期 **【输出格式】** **文章概览表格**：输出Markdown表格，包含序号、作者、标题、阅读数四列，作者和标题包含链接 ``` | 序号 | 作者 | 标题 | 阅读数 | |------|------|------|--------| | 1 | [夜听](https://open.weixin.qq.com/qr/code?username=yetingfm) | [【夜听】有一种感情，叫不再联系](https://mp.weixin.qq.com/s?...) | 10w+ | | 2 | [罗辑思维](https://open.weixin.qq.com/qr/code?username=luojisw) | [李璞：普通人如何实现财务自由？](https://mp.weixin.qq.com/s?...) | 10w+ | ``` **输出示例**（仅展示格式，实际数据以脚本返回为准）： **最新一期数据**： ``` 💡 数据说明 公众号原创文章推荐将在每日19点30分准时更新昨日文章数据，以下数据为获取时间时的快照，和实时数据有所差别。 非常抱歉🙏，最新的是前天的数据，我将为您查询最接近您需求的2026年05月12日原创文章。 📊 原创爆文推荐 最近30天的原创爆款文章 | 序号 | 作者 | 标题 | 阅读数 | |------|------|------|--------| | 1 | [作者A](链接) | [文章标题](链接) | 10w+ | ... 导出功能：输出生成HTML榜单页面，表格内容支持导出 PDF 格式，自动生成并打开 共获取到50条爆款原创热门文章,当前展示前20条。 📬 订阅服务 是否需要订阅具体赛道的账号表现？我们支持： 人文资讯、知识百科、健康养生、时尚潮流、美食餐饮、乐活生活、旅游出行、搞笑幽默、情感心理、体育娱乐、美容美体、文摘精选、民生资讯、财富理财、科技数码、创投商业、汽车交通、房产楼市、职场发展、教育考试、学术研究、企业品牌、总排名 订阅推送 — 每天19点30分推送最新公众号原创文章 暂不需要 — 仅本次查询 ``` **指定日期查询**（日期在有效范围内）： ``` 💡 数据说明 公众号原创文章推荐将在每日19点30分准时更新昨日文章数据，以下数据为获取时间时的快照，和实时数据有所差别。 📊 原创爆文推荐 2026年05月03日当天的原创爆款文章 | 序号 | 作者 | 标题 | 阅读数 | |------|------|------|--------| | 1 | [作者A](链接) | [文章标题](链接) | 10w+ | ... ``` **用户查询"今日爆款"**（今日数据未更新）： ``` 💡 数据说明 公众号原创文章推荐将在每日19点30分准时更新昨日文章数据，以下数据为获取时间时的快照，和实时数据有所差别。 非常抱歉🙏，最新的是前天的数据，我将为您查询最接近您需求的2026年05月12日原创文章。 📊 原创爆文推荐 2026年05月12日当天的原创爆款文章 | 序号 | 作者 | 标题 | 阅读数 | |------|------|------|--------| | 1 | [作者A](链接) | [文章标题](链接) | 10w+ | ... ``` **用户查询"最近7天"**（查询时间范围超出最新数据）： ``` 💡 数据说明 公众号原创文章推荐将在每日19点30分准时更新昨日文章数据，以下数据为获取时间时的快照，和实时数据有所差别。 非常抱歉🙏，最新的是前天的数据，我将为您查询最接近您需求的时间范围。 📊 原创爆文推荐 2026年05月06日至2026年05月12日的原创爆款文章 | 序号 | 作者 | 标题 | 阅读数 | |------|------|------|--------| | 1 | [作者A](链接) | [文章标题](链接) | 10w+ | ... ``` **特殊情况 - 用户查询时间早于回溯日期**： ``` 💡 数据说明 公众号原创文章推荐将在每日19点30分准时更新昨日文章数据，以下数据为获取时间时的快照，和实时数据有所差别。 非常抱歉🙏，最新的是昨天的数据，我将为您查询最接近您需求的2026年05月08日原创文章。 📊 原创爆文推荐 2026年05月08日当天的原创爆款文章 | 序号 | 作者 | 标题 | 阅读数 | |------|------|------|--------| | 1 | [作者A](链接) | [文章标题](链接) | 10w+ | ... ``` **特殊情况 - 用户查询时间早于回溯日期**： ``` 💡 数据说明 公众号原创文章推荐将在每日19点30分准时更新昨日文章数据，以下数据为获取时间时的快照，和实时数据有所差别。 非常抱歉🙏，目前最多支持回溯「过去30天」（最早至2026年04月15日），我将为您查询最接近您需求的时间范围~ 📊 原创爆文推荐 2026年04月15日当天的原创爆款文章 | 序号 | 作者 | 标题 | 阅读数 | |------|------|------|--------| | 1 | [作者A](链接) | [文章标题](链接) | 10w+ | ... ``` **【重要】必须使用脚本实际返回的数据，不得使用上述示例数据！** **【重要】只要数据查询日期和用户询问日期不一致，就必须在数据说明后显示提示信息：** - 查询日期 > 最新日期：`非常抱歉🙏，最新的是{查询日期}的数据，我将为您查询最接近您需求的{查询日期}原创文章。` - 查询日期 < 回溯日期：`非常抱歉🙏，目前最多支持回溯「过去30天」（最早至{回溯日期}），我将为您查询最接近您需求的时间范围~` ### 3. 生成HTML页面（对话输出完成后执行） **【执行顺序】先在对话中完整输出所有文章数据 → 再生成HTML页面并打开。禁止在对话输出完成前生成HTML。** **【HTML生成前置条件】生成 HTML 前必须自检：对话回复中是否已逐条展示了 --limit 指定数量的文章？例如 limit=20 则必须能看到 20 个带序号的表格行。未通过自检则禁止生成 HTML，必须先补全文章。** **【重要】每次对话中完整输出表格数据并通过自检后，自动调用generate_hot_html.py生成HTML页面并打开，无需用户额外触发。** 调用脚本读取临时JSON文件数据，填充HTML模板，生成公众号风格的HTML页面： **脚本位置**：`scripts/generate_hot_html.py` **参数说明**： - `temp_file`: 临时JSON文件路径（默认：`temp_articles.json`） - `output`: 输出文件路径（建议：`{分类}_热门榜单.html`） - `display_count`: 要展示的文章数量（**重要**：必须与对话中展示的数量一致） **命令示例**： ```bash python scripts/generate_hot_html.py --temp_file temp_articles.json --output "原创爆文_榜单.html" --display_count 20 ``` ### 4. 订阅服务 **主动询问用户**是否需要订阅特定分类： ``` 是否需要订阅具体赛道的账号表现？我们支持： 人文资讯、知识百科、健康养生、时尚潮流、美食餐饮、乐活生活、旅游出行、搞笑幽默、情感心理、体育娱乐、美容美体、文摘精选、民生资讯、财富理财、科技数码、创投商业、汽车交通、房产楼市、职场发展、教育考试、学术研究、企业品牌、总排名 ``` 用户选择订阅后： - 订阅成功后：每天19:30推送最新一期原创爆文数据 - 暂不需要 - 仅本次查询 ## 注意事项 - **【核心规则】禁止向用户输出脚本路径、代码或执行命令，直接展示脚本运行结果** - 榜单数据为实时获取，可能因网络或API状态有所延迟 - 首次展示前20条，超过20条时提示用户是否全部展示 - 分类冷门时提示"该领域暂无爆款数据，建议换个方向或查看最新原创爆文" - **HTML内容一致性**：HTML中的文章内容必须与对话中展示的内容完全一致 - **数据说明**：输出时必须注明数据库更新日期和查询的日期 ## 资源索引 - 脚本: 见 [scripts/fetch_articles.py](scripts/fetch_articles.py)（用途: 获取原创爆款文章数据，支持分类查询和日期查询） - 脚本: 见 [scripts/generate_hot_html.py](scripts/generate_hot_html.py)（用途: 从临时JSON文件读取数据，生成公众号风格HTML页面） - 参考: 见 [references/category_mapping.md](references/category_mapping.md)（用途: 分类映射表，包含22个标准分类和泛化关键词） ## 使用示例 **示例1：直接查询最新原创爆文** ``` 用户输入：最新原创爆文 智能体识别：直接查询 智能体调用： python scripts/fetch_articles.py --type "总排名" --limit 20 输出结果： 数据说明：本次查询的数据更新时间为 2026年05月08日（数据每日18:30同步），查询的是 2026年05月07日 的原创爆文数据，与实时数据存在差异。 📊 原创爆文推荐 最近30天的原创爆款文章 | 序号 | 作者 | 标题 | 阅读数 | |------|------|------|--------| | 1 | [一个坏土豆](链接) | [这次报应来的太快！日本刚刚遭遇迎头暴击](链接) | 10w+ | ... 共获取到50条爆款原创热门文章,当前展示前20条。 📬 订阅服务 是否需要订阅具体赛道的账号表现？我们支持： 人文资讯、知识百科、健康养生、时尚潮流、美食餐饮、乐活生活、旅游出行、搞笑幽默、情感心理、体育娱乐、美容美体、文摘精选、民生资讯、财富理财、科技数码、创投商业、汽车交通、房产楼市、职场发展、教育考试、学术研究、企业品牌、总排名 订阅推送 — 每天19点30分推送最新公众号原创文章 暂不需要 — 仅本次查询 ``` **示例2：分类查询** ``` 用户输入：科技类原创爆款 智能体识别：分类查询 智能体匹配分类："科技数码" 智能体调用： python scripts/fetch_articles.py --type "科技数码" --limit 20 输出结果： 数据说明：本次查询的数据更新时间为 2026年05月08日（数据每日18:30同步），查询的是 2026年05月07日 的原创爆文数据，与实时数据存在差异。 📊 原创爆文推荐 最近30天的原创爆款文章 | 序号 | 作者 | 标题 | 阅读数 | |------|------|------|--------| | 1 | [作者A](链接) | [科技文章标题1](链接) | 10w+ | ... ``` **示例3：日期查询** ``` 用户输入：5月3日的原创爆款 智能体识别：日期查询 智能体调用： python scripts/fetch_articles.py --type "总排名" --start_date "2026-05-03" --limit 20 输出结果： 数据说明：查询的是 2026年05月03日 的原创爆文数据，与实时数据存在差异。 📊 原创爆文推荐 2026年05月03日当天的原创爆款文章 | 序号 | 作者 | 标题 | 阅读数 | |------|------|------|--------| | 1 | [作者A](链接) | [文章标题1](链接) | 10w+ | ... ``` **示例4：分类+日期查询** ``` 用户输入：5月3日科技类的原创爆款 智能体识别：分类+日期查询 智能体匹配分类："科技数码" 智能体调用： python scripts/fetch_articles.py --type "科技数码" --start_date "2026-05-03" --limit 20 输出结果： 数据说明：查询的是 2026年05月03日 的原创爆文数据，与实时数据存在差异。 📊 原创爆文推荐 2026年05月03日当天的原创爆款文章 | 序号 | 作者 | 标题 | 阅读数 | |------|------|------|--------| | 1 | [作者A](链接) | [科技文章标题1](链接) | 10w+ | ... ```


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