公众号热门文章查询
任务目标
- 本 Skill 用于:查询公众号热门爆款文章,获取创作灵感
- 能力包含:关键词搜索、数据评分排序、智能结果展示
- 触发条件:用户需要查询公众号热门内容、分析爆款规律、寻找选题灵感
前置准备
- 依赖说明:Python 3.13+(纯标准库,无第三方依赖)
- 输出文件:JSON数据文件、HTML可视化文件
鉴权
获取 API Key
请前往 红狐hub 获取API KEY
配置 API Key
方案1: 以OpenClaw为例,将REDFOX_API_KEY添加到~/.openclaw/openclaw.json中,部分内容如下:
{ "env": { "REDFOX_API_KEY": "ak_xxxx..." } }
方案2: 终端配置
export REDFOX_API_KEY="ak_xxxx..."
操作步骤
步骤 1:关键词理解与处理
关键词提取:
- 用户输入关键词后,先进行理解,识别是否为赛道关键词
- 赛道关键词:较大的分类词,如"职场"、"情感"、"亲子"、"美妆"等
- 非赛道关键词:具体细分词,如"职场沟通技巧"、"异地恋怎么维持"等
赛道词处理流程(仅当识别为赛道词时执行):
- 第一步:识别并询问用户(⚠️ 仅当用户明确要求时才执行)
我识别到「职场」是较大的分类,已查询近期热门趋势,推荐以下细分方向: 工作、打工人、职场穿搭、职场干货、成长、冷门职业、向上管理、职场焦虑、升职、财务自由 回复「拓展」将同时搜索这10个词,回复「不拓展」将继续搜索「职场」 - 第二步:等待用户回复
- ❌ 禁止:用户未回复时调用脚本
- ❌ 禁止:自动执行拓展搜索(必须等用户明确回复「拓展」)
- ✅ 正确:只等待用户明确回复后再执行
- 第三步:根据用户明确回复执行
- 用户回复「拓展」 → 调用脚本搜索10个细分词
- 用户回复「不拓展」或「继续」 → 调用脚本搜索原关键词
- 用户未回复或回复其他内容 → 识别对应意图
步骤 2:时间范围与数据查询
时间范围:
- 数据库只包含昨天至30天前的数据
- "最近"的默认定义:最近7天(startDate = 今天 - 7天)
- 日期计算(将用户表达转换为 startDate):
- 今天:直接用昨天日期,startDate = 昨天
- 最近/近7天:startDate = 今天 - 7天
- 近N天:startDate = 今天 - N天
- 示例:用户说"近15天" → startDate = 今天 - 15天
数据不足时的自动拓展时间:
- ✅ 当articles数量不足时,自动按顺序拓展时间范围:近1天 → 近7天 → 近30天
- ✅ 每次拓展后重新调用脚本查询,直到获取到数据或拓展到30天为止
- ❌ 禁止自动扩展关键词搜索:搜索结果不足10条时,禁止用拓展词/相关词/同义词再次调用接口搜索
- ❌ 禁止自动尝试相关搜索建议
- ✅ 拓展时间后仍无数据,直接返回articles=0的结果
超出范围或未更新数据的道歉说明:
- 用户说"今天/今日"时:回答"非常抱歉,今天的数据暂未更新,已为您展示最近可用的数据"
- 用户要求的时间超出30天时:回答"非常抱歉,当前仅支持最近30天的数据,已为您展示最接近的数据"
执行命令:
- 有赛道关键词:
python scripts/fetch_gzh_trends.py --keyword <关键词> --start-date <日期> - 无赛道关键词(查询全站热门):
python scripts/fetch_gzh_trends.py --keyword "" --start-date <日期> - 多个关键词用逗号分隔:
python scripts/fetch_gzh_trends.py --keyword "职场沟通,恋爱技巧,亲子教育" --start-date <日期>
⚠️ 防重复调用规则(强制):
- ❌ 禁止先用
head/tail/2>/dev/null | head -5等方式"试运行"或"预览"脚本输出 - ❌ 禁止在同一次查询中对同一参数多次调用脚本
- ✅ 每次查询只执行一次脚本命令,直接读取完整的 stdout 输出
- ✅ 唯一允许多次调用的场景:数据不足时按 SKILL.md 规定的自动拓展时间(近1天→近7天→近30天),每次使用不同的
--start-date
输出文件:
- JSON数据:输出到标准输出(stdout)
- HTML文件:
{keyword}_趋势数据.html(可选)
步骤 3:数据展示策略(核心)
⚠️ 强制输出规则:
- ✅ 必须严格按照本步骤规定的格式输出
- ❌ 禁止在输出前添加任何分析或解读
- ❌ 禁止自作主张给建议或方案
- ❌ 禁止询问用户的真实目的或需求
- ✅ 直接读取脚本返回的JSON数据,按照对应策略输出即可
数据字段说明:
- articles:正常文章数据(主要展示内容)
- latestHotArticles:推荐热门文章(辅助内容,默认展示10条,表格不含评分字段)
- hotTopics:热门话题(接口返回,仅供参考,不在对话中展示)
展示规则(基于articles数量判断):
A. articles数量 ≥ 10条
展示内容:
- 时间范围说明:必须告知用户查询的时间范围,如"📅 查询时间范围:5月8日 - 5月19日"
- 正常文章数据(按totalScore降序排序)
- 拓词推荐(relatedSearches)
Markdown表格格式:
⚠️ 表格字段顺序必须严格按以下顺序展示: | 文章标题 | 作者 | 阅读数 | 发布时间 | 相关性 | 热度 | 时效 | 总分 |
注意:总分字段需要加粗显示(使用**分数**格式)
示例: 📅 查询时间范围:5月8日 - 5月19日
| 文章标题 | 作者 | 阅读数 | 发布时间 | 相关性 | 热度 | 时效 | 总分 |
|---|---|---|---|---|---|---|---|
| 职场新人必看:5个让你快速融入团队的技巧 | 职场成长社 | 10.0w | 2026-05-15 | 9.8 | 3.0 | 2.0 | 14.8 |
🔤 拓词推荐:职场沟通、职场晋升、打工人
B. articles数量 < 10条但 > 0
展示内容:
- 时间范围说明:必须告知用户查询的时间范围,如"📅 查询时间范围:5月8日 - 5月19日"
- 提示信息:"💡当前关键词当前时间段仅找到 X 条结果,您可以尝试拓展词或者拓展时间,我们还为您推荐了近期的热门文章"
- 正常文章数据
- 推荐热门文章(latestHotArticles,带"推荐热门文章"标题分区,默认展示10条)
- 推荐热门话题
- 拓词推荐(relatedSearches)
Markdown格式示例:
📅 查询时间范围:5月8日 - 5月19日
💡当前关键词当前时间段仅找到 3 条结果,
| 文章标题 | 作者 | 阅读数 | 发布时间 | 相关性 | 热度 | 时效 | 总分 |
|---|---|---|---|---|---|---|---|
| 文章1 | 作者1 | 10.0w | 2026-05-15 | 9.8 | 3.0 | 2.0 | 14.8 |
您可以尝试拓展词或者拓展时间,我们还为您推荐了近期的热门文章供参考:
⚠️ 推荐热门文章表格不需要评分字段,格式为:
| 文章标题 | 作者 | 阅读数 | 发布时间 |
|---|---|---|---|
| 热门文章1 | 作者A | 8.5w | 2026-05-14 |
| 热门文章2 | 作者B | 6.2w | 2026-05-13 |
📈 推荐热门话题:
您可以尝试搜索以下热门赛道: 人文、知识、养生、时尚、美食、生活、旅游、搞笑、情感、体育娱乐、美妆、文摘、民生资讯、财富理财、科技数码、创投商业、汽车、房产楼市、职场、教育考试、学术
C. articles数量 = 0
⚠️ 必须严格按照以下格式输出,禁止自作主张给建议或分析
展示内容:
🔍 抱歉,爆款文章收录原则为阅读数5000+以上的文章,该搜索词在查询时间范围(5月8日 - 5月19日)内太小众,未找到与"XXX"直接相关的内容,你可以尝试用更短/宽泛的关键词重试 。
💡 或者您可以尝试搜索以下热门赛道:
人文、知识、养生、时尚、美食、生活、旅游、搞笑、情感、体育娱乐、美妆、文摘、民生资讯、财富理财、科技数码、创投商业、汽车、房产楼市、职场、教育考试、学术
我们为您推荐近期最热门的文章,您也可以关注~
在以上内容之后,展示latestHotArticles数据(如果有),热门推荐表格不需要评分字段:
| 文章标题 | 作者 | 阅读数 | 发布时间 |
|---|---|---|---|
| 热门文章1 | 作者A | 8.5w | 2026-05-14 |
| 热门文章2 | 作者B | 6.2w | 2026-05-13 |
输出规则:
- ✅ 必须直接输出上述格式内容
- ❌ 禁止添加额外的分析或建议
- ❌ 禁止解释为什么搜不到数据
- ❌ 禁止主动提供其他搜索方案
- ❌ 禁止询问用户的真实目的
步骤 4:展示逻辑)
当articles数量 > 10条时:
- 初始默认只展示前10条数据
- 必须提示用户:
💡 当前共找到 X 条相关文章,已展示前10条。是否需要查看全部? - 等待用户回复:
- 用户回复"是"/"查看全部"/"全部" → 展示全部数据
- 用户回复"否"/"不用"/"不需要" → 不展示更多
展示全部数据时的格式:
📊 全部结果(共X条):
| 文章标题 | 作者 | 阅读数 | 发布时间 | 相关性 | 热度 | 时效 | **总分** |
|---------|------|--------|----------|--------|------|------|------|
| ...(全部数据)...
步骤 5:订阅服务询问(必须执行)
当articles数量 > 0时,结果输出完成后必须询问:
📬 订阅服务
1️⃣ 是否需要订阅当前搜索条件文章,订阅后将定时推送给您?
2️⃣ 暂不需要
处理用户回复:
- 用户选择1️⃣ → 使用
calendar_create工具创建日程,订阅当前搜索条件 - 用户选择2️⃣ → 结束当前对话
订阅实现步骤:
-
告知数据更新时间并询问推送时间:
📅 数据更新时间:每日早上7点更新昨日数据 请告诉我您希望推送的具体时间~ -
用户选择后,调用
calendar_create工具:- title:
公众号趋势订阅:{关键词} - description:记录当前搜索参数(关键词、时间范围)
- start_time:根据用户选择的时间设置
- remind_type:设置为定期提醒
- 其他参数使用当前查询参数
- title:
-
订阅成功后提示:
✅ 订阅创建成功! 📌 订阅信息: - 关键词:{关键词} - 时间范围:{当前时间范围} - 推送时间:{用户选择的时间} - 数据更新:每日早上7点更新昨日数据 到达设定时间后,将自动为您推送最新的公众号爆款文章。
⚠️ 强制规则:
- ✅ 必须在结果输出完成后立即询问
- ✅ 用户选择订阅时,必须使用
calendar_create工具 - ✅ 参数必须使用当前查询参数(关键词、时间范围等)
- ❌ 禁止跳过此步骤
- ❌ 禁止在展示结果前询问
步骤 6:前置说明(必须展示)
在展示数据前,必须告知用户:
- 数据说明:爆款文章范围为阅读数5000+以上的文章,每日早上7点更新昨日数据。文章互动数据截止为入库时间,不是实时数据,入库后互动数据可能持续增长。
- 排序说明(有关键词搜索时):根据相关性(满分10分)、热度(满分3分)、时效(满分2分)三个维度加权计算,总分共15分
- 排序说明(全站热门/无关键词时):按阅读数排序
步骤 7:智能筛选热门内容(可选)
⚠️ 此步骤为可选,仅在用户明确要求"筛选"、"推荐"时执行
筛选原则:
- 统一排序:脚本已自动将所有数据按totalScore排序
- 目标数量:最多10条,如实展示实际数据量
使用示例
示例1:查询职场热门文章
场景:用户说"帮我查一下最近职场相关的爆款文章"
执行流程:
- 识别"职场"为赛道关键词
- 推荐细分方向,等待用户回复
- 用户回复"不拓展" → 执行查询
- 调用脚本:
python scripts/fetch_gzh_trends.py --keyword "职场" --start-date 2026-05-08 - 读取JSON数据,提取articles字段
- 根据articles数量判断展示策略
- 以Markdown表格形式展示给用户(默认前10条)
- 如果articles > 10条,提示用户是否查看全部
- 展示订阅服务询问
预期产出:
- JSON数据文件包含完整文章信息
- 对话中展示Markdown表格(默认前10条)
- 如用户选择查看全部,展示全部数据
- 展示订阅服务询问
- HTML卡片文件(可选)
关键要点:
- 赛道词需要先询问用户是否拓展
- 时间范围默认近7天
- 数据按总分排序展示
- 结果超过10条时询问是否查看全部
- 结果展示完成后必须询问订阅服务
示例2:查询具体细分词
场景:用户说"查一下职场沟通技巧的文章"
执行流程:
- 识别"职场沟通技巧"为非赛道关键词
- 直接查询,无需拓展询问
- 调用脚本:
python scripts/fetch_gzh_trends.py --keyword "职场沟通技巧" --start-date 2026-05-08 - 根据返回数据判断展示策略
预期产出:
- 精准匹配的文章列表
- 可能触发"部分结果"策略(<10条)
关键要点:
- 非赛道词直接查询
- 结果少时展示推荐热门文章
示例3:多关键词查询
场景:用户说"帮我查职场、情感、亲子三个领域的爆款"
执行流程:
- 识别多个关键词
- 调用脚本:
python scripts/fetch_gzh_trends.py --keyword "职场,情感,亲子" --start-date 2026-05-08 - 合并三个关键词的查询结果
- 按总分统一排序展示
预期产出:
- 跨分类的文章列表
- 包含各领域热门文章
关键要点:
- 多关键词用逗号分隔
- 结果合并去重
- 统一排序展示
资源索引
- 脚本:见 scripts/fetch_gzh_trends.py
- 用途:调用接口获取数据、排序处理、生成HTML
- 参数:--keyword(必需)、--start-date(可选)、--max-items(可选)、--output-format(可选)
- 参考:见 references/gzh_trend_data_format.md
- 何时读取:需要了解接口数据格式、字段说明时
注意事项
- 数据源说明:数据来源于公众号热门文章接口,包含阅读数、互动数、评分等,每日早上7点更新昨日数据
- 展示策略:根据articles数量智能判断,确保用户体验
- 评分排序:关键词搜索时按totalScore(相关性+热度+时效)降序排序,总分共15分;全站热门按阅读数排序
- 前置说明:展示数据前必须告知用户数据说明和排序说明
- HTML文件:卡片样式,适合独立查看和分享