git:20260527.20d0351 to git:20260602.08c4de8

184 added, 133 removed. Audit A to A.

---
name: wechat-search
description: 公众号搜索工具,支持按关键词搜索爆款文章,展示推荐热门文章,助力内容创作者把握趋势与获取灵感;当用户需要搜索公众号文章、查找爆款内容、获取创作灵感时使用
dependency:
python:
- 无第三方依赖(纯标准库:urllib.request, json, os, sys, argparse, datetime)
---
# 公众号热门文章查询
- ## 任务目标
+ ## 1. 简介
- - 本 Skill 用于:查询公众号热门爆款文章,获取创作灵感
- - 能力包含:关键词搜索、数据评分排序、智能结果展示
- - 触发条件:用户需要查询公众号热门内容、分析爆款规律、寻找选题灵感
+ 公众号热门爆款文章查询工具,支持按关键词搜索微信公众号爆款文章,并基于相关性、热度、时效三维评分智能排序推荐。专注服务于公众号内容创作者、新媒体运营者和自媒体团队,帮助用户快速发现热门选题、分析爆款规律、获取创作灵感。
- ## 前置准备
+ ## 2. 功能特性
- - 依赖说明:Python 3.13+(纯标准库,无第三方依赖)
- - 输出文件:JSON数据文件、HTML可视化文件
+ - 🔍 **关键词智能搜索** — 支持关键词精确搜索和多关键词组合查询(逗号分隔),覆盖全品类公众号文章
+ - 📊 **三维评分排序** — 基于相关性(满分10分)、热度(满分3分)、时效(满分2分)加权计算总分(满分15分),智能排序推荐
+ - ⏱️ **灵活时间范围** — 默认查询最近7天,支持自动拓展时间(1天→7天→30天),数据每日早上7点更新
+ - 🧠 **赛道词识别与拓展** — 自动识别泛化赛道词并推荐10个细分方向,帮助用户精准定位
+ - 🔥 **热门推荐文章** — 结果较少时自动展示近期热门推荐文章和热门话题
+ - 📩 **定时订阅推送** — 支持创建日历订阅任务,到达设定时间自动推送最新爆款文章
+ - 📄 **HTML 报告生成** — 可选生成 HTML 可视化文件,方便独立查看和分享
+ - 📋 **数字智能格式化** — 万级以上阅读数自动转换(如 `10.0w`),总分字段加粗突出显示
+ ## 3. 一键安装
+
### 鉴权
#### 获取 API Key
请前往 [红狐hub](https://redfox.hk/settings/api-keys?source=github) 获取API KEY
#### 配置 API Key
- 方案1: 以OpenClaw为例,将REDFOX_API_KEY添加到~/.openclaw/openclaw.json中,部分内容如下:
+ 方案1: 以OpenClaw为例,将REDFOX_API_KEY添加到~/.openclaw/openclaw.json中:
```bash
{ "env": { "REDFOX_API_KEY": "ak_xxxx..." } }
```
方案2: 终端配置
```bash
export REDFOX_API_KEY="ak_xxxx..."
```
- ## 操作步骤
+ ### 依赖安装
- ### 步骤 1:关键词理解与处理
+ 本 Skill 使用 Python 3.13+ 纯标准库(urllib.request、json、os、sys、argparse、datetime),无需安装任何第三方依赖。
- **关键词提取**:
+ ### 环境变量配置
- - 用户输入关键词后,先进行理解,识别是否为赛道关键词
- - 赛道关键词:较大的分类词,如"职场"、"情感"、"亲子"、"美妆"等
- - 非赛道关键词:具体细分词,如"职场沟通技巧"、"异地恋怎么维持"等
+ | 环境变量 | 说明 | 是否必填 | 获取方式 |
+ | -------- | ---- | -------- | -------- |
+ | `REDFOX_API_KEY` | 红狐数据 API Key | 是 | [红狐hub](https://redfox.hk/settings/api-keys?source=github) |
- **赛道词处理流程**(仅当识别为赛道词时执行):
+ ## 4. 使用指南
- 1. **第一步:识别并询问用户(⚠️ 仅当用户明确要求时才执行)**
- ```
- 我识别到「职场」是较大的分类,已查询近期热门趋势,推荐以下细分方向:
- 工作、打工人、职场穿搭、职场干货、成长、冷门职业、向上管理、职场焦虑、升职、财务自由
- 回复「拓展」将同时搜索这10个词,回复「不拓展」将继续搜索「职场」
- ```
- 2. **第二步:等待用户回复**
- - ❌ **禁止**:用户未回复时调用脚本
- - ❌ **禁止**:自动执行拓展搜索(必须等用户明确回复「拓展」)
- - ✅ **正确**:只等待用户明确回复后再执行
- 3. **第三步:根据用户明确回复执行**
- - 用户回复「拓展」 → 调用脚本搜索10个细分词
- - 用户回复「不拓展」或「继续」 → 调用脚本搜索原关键词
- - 用户未回复或回复其他内容 → 识别对应意图
+ ### 基础使用(3 步完成查询)
- ### 步骤 2:时间范围与数据查询
+ **Step 1 — 提取关键词**:从用户描述中提取搜索关键词,判断是赛道词还是细分词。
+ - **赛道词**:较大的分类词,如"职场""情感""亲子""美妆"等
+ - **非赛道词**:具体细分词,如"职场沟通技巧""异地恋怎么维持"等
+
+ **Step 2 — 调用脚本**:
+
+ ```bash
+ 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 <日期>`
+ - 多个关键词用逗号分隔:`python scripts/fetch_gzh_trends.py --keyword "职场沟通,恋爱技巧,亲子教育" --start-date <日期>`
+
+ **⚠️ 防重复调用规则(强制)**:
+
+ - ❌ **禁止**先用 `head`/`tail`/`2>/dev/null | head -5` 等方式"试运行"或"预览"脚本输出
+ - ❌ **禁止**在同一次查询中对同一参数多次调用脚本
+ - ✅ **每次查询只执行一次脚本命令**,直接读取完整的 stdout 输出
+ - ✅ 唯一允许多次调用的场景:数据不足时按规定的自动拓展时间(近1天→近7天→近30天),每次使用不同的 `--start-date`
+
+ **Step 3 — 查看结果**:脚本返回结构化 JSON 数据,按本指南规定的展示策略输出结果。
+
+ ---
+
+ ### 高级使用
+
+ #### 赛道词处理流程(仅当识别为赛道词时执行)
+
+ **第一步:识别并询问用户(⚠️ 仅当用户明确要求时才执行)**
+
+ ```
+ 我识别到「职场」是较大的分类,已查询近期热门趋势,推荐以下细分方向:
+ 工作、打工人、职场穿搭、职场干货、成长、冷门职业、向上管理、职场焦虑、升职、财务自由
+ 回复「拓展」将同时搜索这10个词,回复「不拓展」将继续搜索「职场」
+ ```
+
+ **第二步:等待用户回复**
+ - ❌ **禁止**:用户未回复时调用脚本
+ - ❌ **禁止**:自动执行拓展搜索(必须等用户明确回复「拓展」)
+ - ✅ **正确**:只等待用户明确回复后再执行
+
+ **第三步:根据用户明确回复执行**
+ - 用户回复「拓展」 → 调用脚本搜索10个细分词
+ - 用户回复「不拓展」或「继续」 → 调用脚本搜索原关键词
+ - 用户未回复或回复其他内容 → 识别对应意图
+
+ ---
+
+ #### 时间范围与数据查询
+
**时间范围**:
- 数据库只包含昨天至30天前的数据
- **"最近"的默认定义**:最近7天(startDate = 今天 - 7天)
- **日期计算**(将用户表达转换为 startDate):
- 今天:直接用昨天日期,startDate = 昨天
- 最近/近7天:startDate = 今天 - 7天
- 近N天:startDate = 今天 - N天
- 示例:用户说"近15天" → startDate = 今天 - 15天
**数据不足时的自动拓展时间**:
- - ✅ 当articles数量不足时,自动按顺序拓展时间范围:近1天 → 近7天 → 近30天
+ - ✅ 当 articles 数量不足时,自动按顺序拓展时间范围:近1天 → 近7天 → 近30天
- ✅ 每次拓展后重新调用脚本查询,直到获取到数据或拓展到30天为止
- ❌ **禁止自动扩展关键词搜索**:搜索结果不足10条时,禁止用拓展词/相关词/同义词再次调用接口搜索
- ❌ **禁止自动尝试相关搜索建议**
- - ✅ 拓展时间后仍无数据,直接返回articles=0的结果
+ - ✅ 拓展时间后仍无数据,直接返回 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:数据展示策略(核心)
+ #### 前置说明(在展示数据前必须告知用户)
+ - **数据说明**:爆款文章范围为阅读数5000+以上的文章,每日早上7点更新昨日数据。文章互动数据截止为入库时间,不是实时数据,入库后互动数据可能持续增长。
+ - **排序说明**(有关键词搜索时):根据相关性(满分10分)、热度(满分3分)、时效(满分2分)三个维度加权计算,总分共15分
+ - **排序说明**(全站热门/无关键词时):按阅读数排序
+
+ ---
+
+ #### 数据展示策略(核心)
+
**⚠️ 强制输出规则**:
- ✅ 必须严格按照本步骤规定的格式输出
- ❌ 禁止在输出前添加任何分析或解读
- ❌ 禁止自作主张给建议或方案
- ❌ 禁止询问用户的真实目的或需求
- ✅ 直接读取脚本返回的JSON数据,按照对应策略输出即可
**数据字段说明**:
- **articles**:正常文章数据(主要展示内容)
- **latestHotArticles**:推荐热门文章(辅助内容,默认展示10条,表格不含评分字段)
- **hotTopics**:热门话题(接口返回,仅供参考,不在对话中展示)
- **展示规则**(基于articles数量判断):
-
- #### A. articles数量 ≥ 10条
+ ##### A. articles数量 ≥ 10条
展示内容:
1. **时间范围说明**:必须告知用户查询的时间范围,如"📅 查询时间范围:5月8日 - 5月19日"
2. 正常文章数据(按totalScore降序排序)
3. 拓词推荐(relatedSearches)
**Markdown表格格式**:
⚠️ **表格字段顺序必须严格按以下顺序展示**:
| 文章标题 | 作者 | 阅读数 | 发布时间 | 相关性 | 热度 | 时效 | **总分** |
**注意**:总分字段需要加粗显示(使用`**分数**`格式)
示例:
📅 查询时间范围:5月8日 - 5月19日
| 文章标题 | 作者 | 阅读数 | 发布时间 | 相关性 | 热度 | 时效 | **总分** |
| ------------------------------------------------------------------------- | ---------- | ------ | ---------- | ------ | ---- | ---- | -------- |
| [职场新人必看:5个让你快速融入团队的技巧](https://mp.weixin.qq.com/s/xxx) | 职场成长社 | 10.0w | 2026-05-15 | 9.8 | 3.0 | 2.0 | **14.8** |
---
**🔤 拓词推荐**:职场沟通、职场晋升、打工人
- #### B. articles数量 < 10条但 > 0
+ ##### B. articles数量 < 10条但 > 0
展示内容:
1. **时间范围说明**:必须告知用户查询的时间范围,如"📅 查询时间范围:5月8日 - 5月19日"
2. **提示信息**:"💡当前关键词当前时间段仅找到 X 条结果,您可以尝试拓展词或者拓展时间,我们还为您推荐了近期的热门文章"
3. 正常文章数据
4. 推荐热门文章(latestHotArticles,带"推荐热门文章"标题分区,默认展示10条)
5. 推荐热门话题
6. 拓词推荐(relatedSearches)
**Markdown格式示例**:
📅 查询时间范围:5月8日 - 5月19日
> 💡当前关键词当前时间段仅找到 3 条结果,
| 文章标题 | 作者 | 阅读数 | 发布时间 | 相关性 | 热度 | 时效 | **总分** |
| ------------ | ----- | ------ | ---------- | ------ | ---- | ---- | -------- |
| [文章1](url) | 作者1 | 10.0w | 2026-05-15 | 9.8 | 3.0 | 2.0 | **14.8** |
**您可以尝试拓展词或者拓展时间,我们还为您推荐了近期的热门文章供参考**:
⚠️ 推荐热门文章表格不需要评分字段,格式为:
| 文章标题 | 作者 | 阅读数 | 发布时间 |
|---------|------|--------|----------|
| [热门文章1](url) | 作者A | 8.5w | 2026-05-14 |
| [热门文章2](url) | 作者B | 6.2w | 2026-05-13 |
**📈 推荐热门话题**:
您可以尝试搜索以下热门赛道:
人文、知识、养生、时尚、美食、生活、旅游、搞笑、情感、体育娱乐、美妆、文摘、民生资讯、财富理财、科技数码、创投商业、汽车、房产楼市、职场、教育考试、学术
- #### C. articles数量 = 0
+ ##### C. articles数量 = 0
**⚠️ 必须严格按照以下格式输出,禁止自作主张给建议或分析**
展示内容:
```
🔍 抱歉,爆款文章收录原则为阅读数5000+以上的文章,该搜索词在查询时间范围(5月8日 - 5月19日)内太小众,未找到与"XXX"直接相关的内容,你可以尝试用更短/宽泛的关键词重试 。
💡 或者您可以尝试搜索以下热门赛道:
人文、知识、养生、时尚、美食、生活、旅游、搞笑、情感、体育娱乐、美妆、文摘、民生资讯、财富理财、科技数码、创投商业、汽车、房产楼市、职场、教育考试、学术
我们为您推荐近期最热门的文章,您也可以关注~
```
在以上内容之后,展示latestHotArticles数据(如果有),热门推荐表格不需要评分字段:
| 文章标题 | 作者 | 阅读数 | 发布时间 |
| ---------------- | ----- | ------ | ---------- |
| [热门文章1](url) | 作者A | 8.5w | 2026-05-14 |
| [热门文章2](url) | 作者B | 6.2w | 2026-05-13 |
**输出规则**:
- ✅ 必须直接输出上述格式内容
- ❌ 禁止添加额外的分析或建议
- ❌ 禁止解释为什么搜不到数据
- ❌ 禁止主动提供其他搜索方案
- ❌ 禁止询问用户的真实目的
---
- ### 步骤 4:展示逻辑)
+ #### 展示逻辑(分页)
**当articles数量 > 10条时**:
1. 初始默认只展示前10条数据
2. 必须提示用户:
```
💡 当前共找到 X 条相关文章,已展示前10条。是否需要查看全部?
```
3. 等待用户回复:
- 用户回复"是"/"查看全部"/"全部" → 展示全部数据
- 用户回复"否"/"不用"/"不需要" → 不展示更多
**展示全部数据时的格式**:
```
📊 全部结果(共X条):
| 文章标题 | 作者 | 阅读数 | 发布时间 | 相关性 | 热度 | 时效 | **总分** |
|---------|------|--------|----------|--------|------|------|------|
| ...(全部数据)...
```
---
- ### 步骤 5:订阅服务询问(必须执行)
+ #### 智能筛选热门内容(可选)
+ **⚠️ 此步骤为可选,仅在用户明确要求"筛选"、"推荐"时执行**
+
+ **筛选原则**:
+
+ - **统一排序**:脚本已自动将所有数据按totalScore排序
+ - **目标数量**:最多10条,如实展示实际数据量
+
+ ---
+
+ #### 订阅服务询问(必须执行)
+
**当articles数量 > 0时,结果输出完成后必须询问**:
```
📬 订阅服务
1️⃣ 是否需要订阅当前搜索条件文章,订阅后将定时推送给您?
2️⃣ 暂不需要
```
**处理用户回复**:
- 用户选择1️⃣ → 使用 `calendar_create` 工具创建日程,订阅当前搜索条件
- 用户选择2️⃣ → 结束当前对话
**订阅实现步骤**:
1. **告知数据更新时间并询问推送时间**:
```
📅 数据更新时间:每日早上7点更新昨日数据
请告诉我您希望推送的具体时间~
```
2. **用户选择后,调用 `calendar_create` 工具**:
- **title**:`公众号趋势订阅:{关键词}`
- **description**:记录当前搜索参数(关键词、时间范围)
- **start_time**:根据用户选择的时间设置
- **remind_type**:设置为定期提醒
- 其他参数使用当前查询参数
3. **订阅成功后提示**:
```
✅ 订阅创建成功!
📌 订阅信息:
- 关键词:{关键词}
- 时间范围:{当前时间范围}
- 推送时间:{用户选择的时间}
- 数据更新:每日早上7点更新昨日数据
到达设定时间后,将自动为您推送最新的公众号爆款文章。
```
**⚠️ 强制规则**:
- ✅ 必须在结果输出完成后立即询问
- ✅ 用户选择订阅时,必须使用 `calendar_create` 工具
- ✅ 参数必须使用当前查询参数(关键词、时间范围等)
- ❌ 禁止跳过此步骤
- ❌ 禁止在展示结果前询问
---
- ### 步骤 6:前置说明(必须展示)
-
- **在展示数据前,必须告知用户**:
-
- - **数据说明**:爆款文章范围为阅读数5000+以上的文章,每日早上7点更新昨日数据。文章互动数据截止为入库时间,不是实时数据,入库后互动数据可能持续增长。
- - **排序说明**(有关键词搜索时):根据相关性(满分10分)、热度(满分3分)、时效(满分2分)三个维度加权计算,总分共15分
- - **排序说明**(全站热门/无关键词时):按阅读数排序
-
- ---
+ ### 常用命令速查表
- ### 步骤 7:智能筛选热门内容(可选)
+ | 场景 | 命令 |
+ | ---- | ---- |
+ | 关键词搜索(默认近7天) | `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 "词1,词2,词3" --start-date <日期>` |
+ | 指定时间范围 | `python scripts/fetch_gzh_trends.py --keyword "关键词" --start-date 2026-05-08` |
+ | 生成 HTML 报告 | 脚本自动生成 `{keyword}_趋势数据.html` |
+ | 订阅创建 | 回复1️⃣后使用 `calendar_create` 工具创建定时任务 |
- **⚠️ 此步骤为可选,仅在用户明确要求"筛选"、"推荐"时执行**
+ ## 5. 使用场景
- **筛选原则**:
+ ### 场景一:公众号创作者寻找选题灵感
- - **统一排序**:脚本已自动将所有数据按totalScore排序
- - **目标数量**:最多10条,如实展示实际数据量
+ - **角色**:公众号内容创作者
+ - **需求**:想了解近期"职场"领域有哪些爆款文章,寻找下一篇选题灵感
+ - **使用方式**:输入赛道词「职场」后,系统推荐 10 个细分方向(如"职场穿搭""向上管理"等),回复「拓展」批量搜索
+ - **预期收益**:通过三维评分排序快速锁定高价值选题方向,了解同赛道爆款文章的内容特征
- ---
+ ### 场景二:新媒体运营竞品分析
- ## 使用示例
+ - **角色**:新媒体运营经理
+ - **需求**:需要分析竞品公众号近期发布了哪些爆款文章,了解其内容策略
+ - **使用方式**:搜索竞品公众号名称或相关领域关键词,查看按 totalScore 排序的文章列表
+ - **预期收益**:系统了解竞品的内容选题、标题套路和发布节奏,为自身运营策略提供数据支撑
- ### 示例1:查询职场热门文章
+ ### 场景三:自媒体矩阵内容规划
- **场景**:用户说"帮我查一下最近职场相关的爆款文章"
+ - **角色**:MCN 机构内容总监
+ - **需求**:需要一次性查看多个领域(职场、情感、亲子)的近期爆款文章,规划矩阵内容排期
+ - **使用方式**:使用逗号分隔多关键词 `--keyword "职场,情感,亲子"` 进行跨领域查询
+ - **预期收益**:一个命令覆盖多个领域,高效获取跨品类热门趋势,提升内容规划效率
- **执行流程**:
+ ### 场景四:每日爆文定时推送
- 1. 识别"职场"为赛道关键词
- 2. 推荐细分方向,等待用户回复
- 3. 用户回复"不拓展" → 执行查询
- 4. 调用脚本:`python scripts/fetch_gzh_trends.py --keyword "职场" --start-date 2026-05-08`
- 5. 读取JSON数据,提取articles字段
- 6. 根据articles数量判断展示策略
- 7. 以Markdown表格形式展示给用户(默认前10条)
- 8. 如果articles > 10条,提示用户是否查看全部
- 9. 展示订阅服务询问
+ - **角色**:自媒体博主
+ - **需求**:希望每天上午自动收到特定领域的公众号爆款文章列表
+ - **使用方式**:搜索关键词后选择「1️⃣ 订阅」,设置推送时间,创建日历定时任务
+ - **预期收益**:无需手动重复搜索,每日定时获取最新爆款文章,持续跟踪赛道动态
- **预期产出**:
+ ## 6. 项目架构
- - JSON数据文件包含完整文章信息
- - 对话中展示Markdown表格(默认前10条)
- - 如用户选择查看全部,展示全部数据
- - 展示订阅服务询问
- - HTML卡片文件(可选)
+ ### 目录结构
- **关键要点**:
+ ```
+ wechat-search/
+ ├── SKILL.md # Skill 定义与使用文档(本文件)
+ ├── scripts/
+ │ └── fetch_gzh_trends.py # 核心搜索脚本,调用红狐 API 获取公众号爆款文章
+ └── references/
+ └── gzh_trend_data_format.md # 数据字段格式参考文档
+ ```
- - 赛道词需要先询问用户是否拓展
- - 时间范围默认近7天
- - 数据按总分排序展示
- - 结果超过10条时询问是否查看全部
- - 结果展示完成后必须询问订阅服务
+ ### 技术栈
- ### 示例2:查询具体细分词
+ | 组件 | 技术 | 说明 |
+ | ---- | ---- | ---- |
+ | 运行环境 | Python 3.13+ | 纯标准库,无第三方依赖 |
+ | 标准库 | urllib.request, json, os, sys, argparse, datetime | 用于 HTTP 请求、JSON 处理、参数解析、日期计算 |
+ | 数据接口 | 红狐 API (Redfox) | 通过 REDFOX_API_KEY 鉴权 |
+ | 输出格式 | JSON (stdout) + HTML (文件) | JSON 通过 stdout 输出供 AI 解析,HTML 为可选可视化文件 |
+ | 展示格式 | Markdown 表格 | AI 代理将 JSON 渲染为表格展示 |
- **场景**:用户说"查一下职场沟通技巧的文章"
+ ### 核心模块说明
- **执行流程**:
+ | 模块 | 路径 | 功能 |
+ | ---- | ---- | ---- |
+ | 搜索脚本 | `scripts/fetch_gzh_trends.py` | 调用红狐接口获取公众号爆款文章,支持 --keyword、--start-date、--max-items、--output-format 参数 |
+ | 数据格式参考 | `references/gzh_trend_data_format.md` | 详细说明接口返回的数据字段格式和含义 |
+ | SKILL 定义 | `SKILL.md` | 定义 Skill 元数据、工作流程、展示策略、订阅逻辑 |
- 1. 识别"职场沟通技巧"为非赛道关键词
- 2. 直接查询,无需拓展询问
- 3. 调用脚本:`python scripts/fetch_gzh_trends.py --keyword "职场沟通技巧" --start-date 2026-05-08`
- 4. 根据返回数据判断展示策略
+ ### 资源索引
- **预期产出**:
+ - **核心脚本**:`scripts/fetch_gzh_trends.py` — 调用红狐 API 获取公众号爆款文章数据,参数:--keyword(必需)、--start-date(可选)、--max-items(可选)、--output-format(可选)
+ - **参考文档**:`references/gzh_trend_data_format.md` — 何时读取:需要了解接口数据格式、字段说明时
- - 精准匹配的文章列表
- - 可能触发"部分结果"策略(<10条)
+ ## 7. 常见问答
- **关键要点**:
+ ### 安装
- - 非赛道词直接查询
- - 结果少时展示推荐热门文章
+ **Q: 需要安装哪些依赖?**
+ A: 本工具使用 Python 3.13+ 纯标准库(urllib.request、json、os、sys、argparse、datetime),无需安装任何第三方依赖。确保系统已安装 Python 3.13 或更高版本。
- ### 示例3:多关键词查询
+ **Q: 如何获取 API Key?**
+ A: 请访问 [红狐hub](https://redfox.hk/settings/api-keys?source=github) 注册并获取 API Key,按本文"一键安装"章节配置环境变量。
- **场景**:用户说"帮我查职场、情感、亲子三个领域的爆款"
+ ### 使用
- **执行流程**:
+ **Q: 赛道词和非赛道词有什么区别?**
+ A: 赛道词是较大分类词(如"职场""情感"),识别后会触发拓展策略;非赛道词是具体细分词(如"职场沟通技巧"),直接搜索无需拓展询问。
- 1. 识别多个关键词
- 2. 调用脚本:`python scripts/fetch_gzh_trends.py --keyword "职场,情感,亲子" --start-date 2026-05-08`
- 3. 合并三个关键词的查询结果
- 4. 按总分统一排序展示
+ **Q: 数据的时间范围是什么?**
+ A: 数据库仅包含昨天至30天前的数据,默认查询最近7天。数据不足时会自动拓展时间范围(1天→7天→30天)。每日早上7点更新昨日数据。
- **预期产出**:
+ **Q: 为什么表格中有些字段有评分、有些没有?**
+ A: 有关键词搜索时按 totalScore(相关性+热度+时效)排序,展示评分字段;全站热门按阅读数排序,无评分字段。推荐热门文章表格也不含评分。
- - 跨分类的文章列表
- - 包含各领域热门文章
+ **Q: 如何查看超过 10 条的完整结果?**
+ A: 当结果超过 10 条时,系统会提示「是否查看全部?」。回复「是」「查看全部」或「全部」即可展示完整数据。
- **关键要点**:
+ ### 故障排除
- - 多关键词用逗号分隔
- - 结果合并去重
- - 统一排序展示
+ **Q: 脚本执行返回空结果?**
+ A: 爆款文章收录原则为阅读数5000+以上。如果关键词太小众或时间范围太短,可能无数据。系统会自动拓展时间范围,若拓展到30天仍无数据则返回空。可尝试更短/更宽泛的关键词。
- ---
+ **Q: 提示"今天的数据暂未更新"?**
+ A: 数据库每日早上7点更新昨日数据,当天数据尚未入库。系统会自动展示最近可用的数据。
- ## 资源索引
+ **Q: 脚本报错怎么办?**
+ A: 常见原因:(1) REDFOX_API_KEY 未配置或已过期;(2) Python 版本 < 3.13;(3) 网络问题。请逐一排查。
- - 脚本:见 [scripts/fetch_gzh_trends.py](scripts/fetch_gzh_trends.py)
- - 用途:调用接口获取数据、排序处理、生成HTML
- - 参数:--keyword(必需)、--start-date(可选)、--max-items(可选)、--output-format(可选)
- - 参考:见 [references/gzh_trend_data_format.md](references/gzh_trend_data_format.md)
- - 何时读取:需要了解接口数据格式、字段说明时
+ ### 安全许可
- ## 注意事项
+ **Q: API Key 如何安全存储?**
+ A: 推荐使用方案 1(配置到 openclaw.json 的 env 字段中),避免在终端历史中泄露。请勿将 API Key 硬编码在脚本中或上传到公开仓库。
- - **数据源说明**:数据来源于公众号热门文章接口,包含阅读数、互动数、评分等,每日早上7点更新昨日数据
- - **展示策略**:根据articles数量智能判断,确保用户体验
- - **评分排序**:关键词搜索时按totalScore(相关性+热度+时效)降序排序,总分共15分;全站热门按阅读数排序
- - **前置说明**:展示数据前必须告知用户数据说明和排序说明
- - **HTML文件**:卡片样式,适合独立查看和分享
+ **Q: 数据来源和版权?**
+ A: 数据来源于红狐 API 收录的公众号公开文章。文章版权归原作者所有,本工具仅供学习和内容创作参考使用。