xiaohongshu-search · diff
git:20260527.85299a9 to git:20260602.08c4de8
237 added, 117 removed. Audit A to A.
---
name: xiaohongshu-search
description: 小红书热门笔记搜索工具,支持关键词搜索获取热门内容数据,基于数据评分排序推荐热门笔记,助力创作者发现热门趋势、获取创作灵感。仅在主Agent中执行,不派发给子Agent。
dependency:
python: []
system:
---
# 小红书爆款笔记查询
- ## 核心功能
+ ## 1. 简介
- 小红书热门笔记搜索工具,支持关键词搜索获取热门内容数据,基于数据评分排序推荐热门笔记,助力创作者发现热门趋势、获取创作灵感。
+ 小红书热门笔记搜索工具,支持按关键词搜索小红书热门爆款笔记,并基于相关性、热度、时效三维评分智能排序推荐。同时提供热门笔记推荐和细分赛道引导,助力创作者、品牌方和 MCN 机构发现热门趋势、获取创作灵感。注意:本工具仅在主 Agent 中执行,不派发给子 Agent。
- ## 鉴权
+ ## 2. 功能特性
- - 凭证:需要配置环境变量 `REDFOX_API_KEY`(红狐数据 API Key)
+ - 🔍 **关键词智能搜索** — 支持关键词精确搜索、多关键词组合(逗号分隔)、全站热门查询(空关键词)
+ - 📊 **三维评分排序** — 有关键词时按相关性(满分10分)、热度(满分3分)、时效(满分2分)加权计算总分(满分15分),全站热门按互动数排序
+ - 🧠 **精细意图理解** — 优先从用户描述中提取细分方向词,识别泛化词并自动推荐 10 个细分方向
+ - ⏱️ **灵活时间范围** — 默认查询最近7天,数据不足时自动扩展时间范围(1天→3天→7天→30天),每日早上7点更新
+ - 🔥 **热门笔记推荐** — 结果较少时自动展示近期热门推荐笔记和热门话题标签
+ - 📈 **细分赛道引导** — 每次查询后主动推荐 10 个相关细分方向,帮助用户深入探索
+ - 🏷️ **拓词推荐** — 脚本返回 relatedSearches 字段,自动展示相关搜索建议
+ - 📩 **定时订阅推送** — 支持创建日历订阅任务,到达设定时间自动推送最新热门笔记
+ - 📄 **HTML 报告生成** — 自动生成 `{keyword}_热门数据.html` 可视化文件
+ - 🛡️ **强数据说明** — 热门笔记收录标准为互动数1000+,顶部展示数据说明和排序依据
- ### 获取 API Key
+ ## 3. 一键安装
+ ### 鉴权
+
+ #### 获取 API Key
+
请前往 [红狐hub](https://redfox.hk/settings/api-keys?source=github) 获取API KEY
- ### 配置 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..."
```
- ## 重要数据说明
+ ### 依赖安装
- - 数据库仅包含昨天至30天前的数据
- - 默认时间范围为最近7天(today-6天)
- - 数据不足自动扩展范围,并提示用户
+ 本 Skill 使用 Python 3 标准库,无需额外安装第三方依赖。确保系统中已安装 Python 3.x 即可。
- ## ⚠️ 核心执行规则(必须遵守)
+ ### 环境变量配置
+ | 环境变量 | 说明 | 是否必填 | 获取方式 |
+ | -------- | ---- | -------- | -------- |
+ | `REDFOX_API_KEY` | 红狐数据 API Key | 是 | [红狐hub](https://redfox.hk/settings/api-keys?source=github) |
+
+ ## 4. 使用指南
+
+ ### ⚠️ 核心执行规则(必须遵守)
+
1. **泛化词必须先询问再查询**:当识别到泛化词时,**绝对禁止直接调用脚本**,必须先输出细分词推荐并等待用户选择后再执行查询
2. **正确执行顺序**:关键词提取 → 判断是否泛化词 → 是泛化词则询问用户 → 用户回复后再调用脚本
3. **强制等待规则**:输出细分词推荐后,必须停止执行,等待用户下一轮对话回复「拓展」或「不拓展」,**不得在同一次对话中继续执行任何脚本调用**
**常见泛化词**:
泛词:抽象层级高、覆盖范围广的概括性词汇,无具体场景/属性修饰,行业分类等,可包含多个子类。特征:①语义上为上位概念(如"美妆"包含"粉底液/口红";"运动"包含"跑步/瑜伽";如AI);②上下文中常搭配"领域""类型"等概括词(如"美妆领域""运动类型")。
+
**常见具体词**:
- 具体词:抽象层级低、指向明确的实例化词汇,含具体场景/属性修饰,属于某泛词的直接子类。特征:①语义上为下位概念(如"粉底液"是"美妆产品"子类;"生酮饮食"是"饮食方式"子类);②词语结构多含修饰成分(如"春日"→"春日穿搭";"生酮"→"生酮饮食");
+ 具体词:抽象层级低、指向明确的实例化词汇,含具体场景/属性修饰,属于某泛词的直接子类。特征:①语义上为下位概念(如"粉底液"是"美妆产品"子类;"生酮饮食"是"饮食方式"子类);②词语结构多含修饰成分(如"春日"→"春日穿搭";"生酮"→"生酮饮食")。
- ## 操作步骤
+ ---
- ### 功能一:热门笔记搜索
+ ### 基础使用(3 步完成查询)
- **核心功能**:输入关键词,获取最匹配的小红书热门内容
+ **Step 1 — 提取关键词**:从用户自然语言描述中提取搜索关键词。优先提取细分方向词(含具体场景/属性修饰),而非泛化大类词。
- #### 步骤1:用户意图理解(查询脚本前)
+ **Step 2 — 调用脚本**:
+ ```bash
+ python scripts/fetch_xhs_hot_articles.py --keyword <关键词> --start-date <日期>
+ ```
+
+ - 有赛道关键词:`python scripts/fetch_xhs_hot_articles.py --keyword <关键词> --start-date <日期>`
+ - 无赛道关键词(查询全站热门):`python scripts/fetch_xhs_hot_articles.py --keyword "" --start-date <日期>`
+ - 多个关键词用逗号分隔:`python scripts/fetch_xhs_hot_articles.py --keyword "减脂餐,职场穿搭,健身" --start-date <日期>`
+ - 分页参数:`--page-num 1 --page-size 50`
+
+ **Step 3 — 查看结果**:脚本返回结构化 JSON,按本指南规定的展示策略输出结果。
+
+ ---
+
+ ### 高级使用
+
+ #### 用户意图理解(查询脚本前)
+
**⚠️ 核心规则:应该语意理解,优先提取用户描述中的细分方向词,而非泛化的大类词**
- 1. **判断用户是否提到赛道关键词**:
- - **无赛道关键词**(如"最近的热门笔记有哪些"、"最近有什么热门内容"、"看看热门数据")→ 直接调用脚本,关键词传空字符串 `""`,查询全站热门
- - **有赛道关键词** → 继续提取和判断
+ **1. 判断用户是否提到赛道关键词**:
+ - **无赛道关键词**(如"最近的热门笔记有哪些"、"最近有什么热门内容"、"看看热门数据")→ 直接调用脚本,关键词传空字符串 `""`,查询全站热门
+ - **有赛道关键词** → 继续提取和判断
- 2. **提取精确搜索关键词**(仅当用户提到赛道时执行):
- - **分析用户描述**:从用户自我介绍或需求描述中提取明确的细分领域词
- - 示例分析:
- - 用户输入:"我是一个文艺类自媒体万粉小红书博主,平时会发小众电影审美积累、书评、乐评、港台文化等相关内容,帮我找电影领域热门话题"
- - 分析结果:用户提到的细分方向 = 小众电影、书评、乐评、港台文化
- - 将前文场景和"电影"相关,得到细分词 = 小众电影、港台电影、电影乐评
- - 搜索关键词:小众电影、港台电影、电影乐评
- - ❌ 错误做法:只提取泛化词「电影」去搜索
+ **2. 提取精确搜索关键词**(仅当用户提到赛道时执行):
+ - **分析用户描述**:从用户自我介绍或需求描述中提取明确的细分领域词
+ - 示例分析:
+ - 用户输入:"我是一个文艺类自媒体万粉小红书博主,平时会发小众电影审美积累、书评、乐评、港台文化等相关内容,帮我找电影领域热门话题"
+ - 分析结果:用户提到的细分方向 = 小众电影、书评、乐评、港台文化
+ - 将前文场景和"电影"相关,得到细分词 = 小众电影、港台电影、电影乐评
+ - 搜索关键词:小众电影、港台电影、电影乐评
+ - ❌ 错误做法:只提取泛化词「电影」去搜索
- 3. **关键词类型判断**(仅当提取到关键词时执行):
- - **细分词/垂直赛道**(含具体场景/属性修饰的词,如"职场穿搭"、"减脂餐"、"小个子穿搭")→ 直接搜索,无需拓展询问
- - **泛化词/分类**(纯大类词,如"穿搭"、"美食"、"美妆",无任何修饰)→ 执行拓展策略(步骤2)
- - **判断原则**:有修饰词(场景/人群/风格/意图)= 细分词,直接搜索;无修饰词 = 泛化词,需要拓展
+ **3. 关键词类型判断**(仅当提取到关键词时执行):
+ - **细分词/垂直赛道**(含具体场景/属性修饰的词,如"职场穿搭"、"减脂餐"、"小个子穿搭")→ 直接搜索,无需拓展询问
+ - **泛化词/分类**(纯大类词,如"穿搭"、"美食"、"美妆",无任何修饰)→ 执行拓展策略
+ - **判断原则**:有修饰词(场景/人群/风格/意图)= 细分词,直接搜索;无修饰词 = 泛化词,需要拓展
---
- #### 步骤2:泛化词拓展策略
+ #### 泛化词拓展策略
1. **泛化词处理流程(⚠️ 必须等待用户明确回复后再调用脚本!)**:
- 1. **第一步:生成细分词**(禁止调用脚本搜索数据)
- - 拓展词生成原则:
- - **词的大小适中**:词语不要加组合,避免过细(如"中产穿搭"太细,查不到数据),
- - **必须覆盖不同场景**:趋势词、人群词、场景词、意图词各2-3个
- - 输出示例:
+ **第一步:生成细分词**(禁止调用脚本搜索数据)
- ```
- 我识别到「中产」是较大的分类,已查询近期热门趋势,推荐以下细分方向:
- 老钱、轻奢、品质生活、松弛感、高级感穿搭、体面、法式穿搭、律师、医生、品质家居
- 回复「拓展」将同时搜索这10个词,回复「不拓展」将继续搜索「中产」
- ```
+ 拓展词生成原则:
+ - **词的大小适中**:词语不要加组合,避免过细(如"中产穿搭"太细,查不到数据)
+ - **必须覆盖不同场景**:趋势词、人群词、场景词、意图词各2-3个
- 2. **第二步:等待用户回复**
- - ❌ **禁止**:用户未回复时调用脚本
- - ✅ **正确**:只等待用户明确回复「拓展」或「不拓展」后再执行
- 3. **第三步:根据用户明确回复执行**
- - 用户回复「拓展」 → 调用脚本搜索10个细分词
- - 用户回复「不拓展」或「继续」 → 调用脚本搜索原关键词
- - 用户未回复或回复其他内容 → 识别对应意图
+ 输出示例:
+ ```
+ 我识别到「中产」是较大的分类,已查询近期热门趋势,推荐以下细分方向:
+ 老钱、轻奢、品质生活、松弛感、高级感穿搭、体面、法式穿搭、律师、医生、品质家居
+ 回复「拓展」将同时搜索这10个词,回复「不拓展」将继续搜索「中产」
+ ```
- #### 步骤 3:时间范围与数据查询
+ **第二步:等待用户回复**
+ - ❌ **禁止**:用户未回复时调用脚本
+ - ✅ **正确**:只等待用户明确回复「拓展」或「不拓展」后再执行
+ **第三步:根据用户明确回复执行**
+ - 用户回复「拓展」 → 调用脚本搜索10个细分词
+ - 用户回复「不拓展」或「继续」 → 调用脚本搜索原关键词
+ - 用户未回复或回复其他内容 → 识别对应意图
+
+ ---
+
+ #### 时间范围与数据查询
+
**时间范围**:
- 数据库只包含昨天至30天前的数据
- **"最近"的默认定义**:最近7天(startDate = 今天 - 7天)
- **日期计算**(将用户表达转换为 startDate):
- 今天:直接用昨天日期,startDate = 昨天
- 最近/近7天:startDate = 今天 - 7天
- 近N天:startDate = 今天 - N天
- 示例:用户说"近15天" → startDate = 今天 - 15天
**数据不足时的自动调整(⚠️ 优先扩展时间,禁止换词!)**:
- **处理原则**:数据不足时,只能扩展时间范围,不能更换或拓展关键词
- **调整顺序**:按以下顺序自动扩展时间范围
1. 近1天 → 近3天
2. 近3天 → 近7天
3. 近7天 → 近30天
- **告知用户**:自动调整时告知用户:"该关键词近X天数据较少,已自动扩展时间范围至近Y天"
- **禁止行为**:❌ 不可因为数据不足就更换关键词、推荐其他词或触发泛化词拓展流程
**超出范围或未更新数据的道歉说明**:
- 用户说"今天/今日"时:回答"非常抱歉,今天的数据暂未更新,已为您展示最近可用的数据"
- 用户要求的时间超出30天时:回答"非常抱歉,当前仅支持最近30天的数据,已为您展示最接近的数据"
- **执行命令**:
-
- - 有赛道关键词:`python scripts/fetch_xhs_hot_articles.py --keyword <关键词> --start-date <日期>`
- - 无赛道关键词(查询全站热门):`python scripts/fetch_xhs_hot_articles.py --keyword "" --start-date <日期>`
- - 多个关键词用逗号分隔:`python scripts/fetch_xhs_hot_articles.py --keyword "减脂餐,职场穿搭,健身" --start-date <日期>`
- - 分页参数:`--page-num 1 --page-size 50`
-
**输出文件**:
- 筛选后推荐数据:`{keyword}_热门数据.html`
---
- ### 步骤 4:数据展示策略(核心)
+ #### 前置说明(在展示数据前必须告知用户)
+ - **数据说明**:热门笔记范围为互动数1000以上的文章,每日早上7点更新昨日数据。文章互动数据截止为入库时间,不是实时数据,入库后互动数据可能持续增长。
+ - **排序说明**(有关键词搜索时):根据相关性(满分10分)、热度(满分3分)、时效(满分2分)三个维度加权计算,总分共15分
+ - **排序说明**(全站热门/无关键词时):按互动数排序,无评分字段
+
+ ---
+
+ #### 数据展示策略(核心)
+
**⚠️ 强制输出规则**:
- ✅ 必须严格按照本步骤规定的格式输出
- ❌ 禁止在输出前添加任何分析或解读
- ❌ 禁止自作主张给建议或方案
- ❌ 禁止询问用户的真实目的或需求
- ✅ 直接读取脚本返回的JSON数据,按照对应策略输出即可
**数据字段说明**:
- **articles**:正常笔记数据(主要展示内容)
- **latestHotArticles**:推荐热门笔记(辅助内容,默认展示10条,表格不含评分字段)
- **hotTopics**:热门话题(接口返回,仅供参考,不在对话中展示)
- **展示规则**(基于articles数量判断,total以实际返回条数为准):
-
- #### A. articles数量 ≥ 10条
+ ##### A. articles数量 ≥ 10条
展示内容:
1. **时间范围说明**:必须告知用户查询的时间范围,如"📅 查询时间范围:5月8日 - 5月19日"
2. 正常笔记数据(有关键词时按totalScore降序排序,全站热门时按互动数排序)
3. 拓词推荐(relatedSearches)
**Markdown表格格式**:
⚠️ **表格字段顺序必须严格按以下顺序展示**:
有关键词时:
| 笔记标题 | 作者 | 互动数 | 发布时间 | 相关性 | 热度 | 时效 | **总分** |
全站热门时(无评分字段):
| 笔记标题 | 作者 | 互动数 | 发布时间 |
**注意**:总分字段需要加粗显示(使用`**分数**`格式)
示例(有关键词):
📅 查询时间范围:5月8日 - 5月19日
| 笔记标题 | 作者 | 互动数 | 发布时间 | 相关性 | 热度 | 时效 | **总分** |
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------- | ------ | ---------- | ------ | ---- | ---- | -------- |
| [职场新人必看:5个让你快速融入团队的技巧](https://www.xiaohongshu.com/explore/xxx) | [职场成长社](https://www.xiaohongshu.com/user/profile/xxx) | 10.0w | 2026-05-15 | 9.8 | 3.0 | 2.0 | **14.8** |
示例(全站热门):
📅 查询时间范围:5月8日 - 5月19日
| 笔记标题 | 作者 | 互动数 | 发布时间 |
| ------------------------------------------------------- | ------------------------------------------------------ | ------ | ---------- |
| [热门笔记标题](https://www.xiaohongshu.com/explore/xxx) | [作者名](https://www.xiaohongshu.com/user/profile/xxx) | 10.0w | 2026-05-15 |
---
**🔤 拓词推荐**:职场沟通、职场晋升、打工人
- #### B. articles数量 < 10条但 > 0
+ ##### B. articles数量 < 10条但 > 0
展示内容:
1. **时间范围说明**:必须告知用户查询的时间范围,如"📅 查询时间范围:5月8日 - 5月19日"
2. **提示信息**:"💡当前关键词当前时间段仅找到 X 条结果,您可以尝试拓展词或者拓展时间,我们还为您推荐了近期的热门笔记"
3. 正常笔记数据
4. 拓词推荐(relatedSearches)
5. 推荐热门笔记(latestHotArticles,带"推荐热门笔记"标题分区,默认展示10条)
6. 推荐热门话题
**Markdown格式示例**:
📅 爆款笔记收录原则为互动数1000以上的文章, 查询时间范围:5月8日 - 5月19日
> **当前关键词当前时间段仅找到 3 条结果:**
有关键词时:
| 笔记标题 | 作者 | 互动数 | 发布时间 | 相关性 | 热度 | 时效 | **总分** |
|---------|------|--------|----------|--------|------|------|------|
| [笔记1](url) | [作者1](https://www.xiaohongshu.com/user/profile/xxx) | 10.0w | 2026-05-15 | 9.8 | 3.0 | 2.0 | **14.8** |
全站热门时(无评分字段):
| 笔记标题 | 作者 | 互动数 | 发布时间 |
|---------|------|--------|----------|
| [笔记1](url) | [作者1](https://www.xiaohongshu.com/user/profile/xxx) | 10.0w | 2026-05-15 |
**🔤 拓展词推荐**:职场沟通、职场晋升、打工人
**💡我们为您推荐了近期的热门笔记供参考,或许对您有帮助**:
⚠️ 推荐热门笔记表格不需要评分字段,格式为:
| 笔记标题 | 作者 | 互动数 | 发布时间 |
|---------|------|--------|----------|
| [热门笔记1](url) | [作者A](https://www.xiaohongshu.com/user/profile/xxx) | 8.5w | 2026-05-14 |
| [热门笔记2](url) | [作者B](https://www.xiaohongshu.com/user/profile/xxx) | 6.2w | 2026-05-13 |
**📈 您还可以尝试搜索以下热门赛道:**:
穿搭、美食、彩妆、影视、职场、萌宠、家居、旅行、交通、兴趣、科技、互联网、医疗保健、星座情感、婚庆婚礼、拍摄、教育、亲子育儿、个人护理、潮流鞋包、生活、科学探索、新闻资讯、运动
- #### C. articles数量 = 0
+ ##### C. articles数量 = 0
**⚠️ 必须严格按照以下格式输出,禁止自作主张给建议或分析**
展示内容:
```
**🔍抱歉,爆款笔记收录原则为互动数1000以上的文章,该搜索词在查询时间范围(5月8日 - 5月19日)内太小众,未找到与"XXX"直接相关的内容,你可以尝试用更短/宽泛的关键词重试。**
**推荐搜索词**:从脚本返回的relatedSearches字段中提取推荐词,以加粗形式展示;
💡我们为您推荐了近期的热门笔记供参考,或许对您有帮助:
⚠️ 推荐热门笔记表格不需要评分字段,格式为:
| 笔记标题 | 作者 | 互动数 | 发布时间 |
|---------|------|--------|----------|
| [热门笔记1](url) | [作者A](https://www.xiaohongshu.com/user/profile/xxx) | 8.5w | 2026-05-14 |
| [热门笔记2](url) | [作者B](https://www.xiaohongshu.com/user/profile/xxx) | 6.2w | 2026-05-13 |
📈 您还可以尝试搜索以下热门赛道:
穿搭、美食、彩妆、影视、职场、萌宠、家居、旅行、交通、兴趣、科技、互联网、医疗保健、星座情感、婚庆婚礼、拍摄、教育、亲子育儿、个人护理、潮流鞋包、生活、科学探索、新闻资讯、运动
-
+ ```
**输出规则**:
- ✅ 必须直接输出上述格式内容
- ❌ 禁止添加额外的分析或建议
- ❌ 禁止解释为什么搜不到数据
- ❌ 禁止主动提供其他搜索方案
- ❌ 禁止询问用户的真实目的
---
- ### 步骤 5:展示逻辑
+ #### 展示逻辑(分页)
**当articles数量 > 10条时**:
1. 初始默认只展示前10条数据
2. 必须提示用户:
```
-
💡 当前共找到 X 条相关笔记(X为实际返回条数),已展示前10条。是否需要查看全部?
-
```
3. 等待用户回复:
- 用户回复"是"/"查看全部"/"全部" → 展示全部数据
- 用户回复"否"/"不用"/"不需要" → 不展示更多
**展示全部数据时的格式**:
```
-
📊 全部结果(共X条,X为实际返回条数):
有关键词时:
| 笔记标题 | 作者 | 互动数 | 发布时间 | 相关性 | 热度 | 时效 | **总分** |
全站热门时:
| 笔记标题 | 作者 | 互动数 | 发布时间 |
| ...(全部数据)...
-
```
---
- ### 步骤6:订阅服务询问(必须执行)
+ #### 订阅服务询问(必须执行)
**当articles数量 > 0时,结果输出完成后必须询问**:
```
-
📬 订阅服务
1️⃣ 是否需要订阅当前搜索条件笔记,订阅后将定时推送给您?
2️⃣ 暂不需要
-
```
**处理用户回复**:
- 用户选择1️⃣ → 使用 `calendar_create` 工具创建日程,订阅当前搜索条件
- 用户选择2️⃣ → 结束当前对话
**订阅实现步骤**:
1. **告知数据更新时间并询问推送时间**:
```
-
📅 数据更新时间:每日早上7点更新昨日数据
请告诉我您希望推送的具体时间~
-
```
2. **用户选择后,调用 `calendar_create` 工具**:
- **title**:`小红书热门笔记订阅:{关键词}`
- **description**:记录当前搜索参数(关键词、时间范围)
- **start_time**:根据用户选择的时间设置
- **remind_type**:设置为定期提醒
- 其他参数使用当前查询参数
3. **订阅成功后提示**:
-
```
-
✅ 订阅创建成功!
📌 订阅信息:
- 关键词:{关键词}
- 时间范围:{当前时间范围}
- 推送时间:{用户选择的时间}
- 数据更新:每日早上7点更新昨日数据
到达设定时间后,将自动为您推送最新的小红书热门笔记。
-
```
**⚠️ 强制规则**:
- ✅ 必须在结果输出完成后立即询问
- ✅ 用户选择订阅时,必须使用 `calendar_create` 工具
- ✅ 参数必须使用当前查询参数(关键词、时间范围等)
- ❌ 禁止跳过此步骤
- ❌ 禁止在展示结果前询问
---
- ### 步骤 7:前置说明(必须展示)
-
- **在展示数据前,必须告知用户**:
-
- - **数据说明**:热门笔记范围为互动数1000以上的文章,每日早上7点更新昨日数据。文章互动数据截止为入库时间,不是实时数据,入库后互动数据可能持续增长。
- - **排序说明**(有关键词搜索时):根据相关性(满分10分)、热度(满分3分)、时效(满分2分)三个维度加权计算,总分共15分
- - **排序说明**(全站热门/无关键词时):按互动数排序,无评分字段
-
- #### 步骤8:推荐细分赛道(⚠️ 展示数据后必须执行)
+ #### 推荐细分赛道(⚠️ 展示数据后必须执行)
**核心规则**:展示完热门数据后,**必须主动询问用户是否需要查询更具体的细分赛道**
1. **推荐细分词生成**:
- 基于当前查询的关键词,生成10个相关的细分方向词
- **生成原则**:
- **词的大小适中**:避免过细(查不到数据)或过泛(范围太大)
- **覆盖不同维度**:场景词、人群词、风格词、意图词各2-3个
- **参考数据表现**:优先推荐近期热度较高的方向
2. **输出格式**:
-
```
-
以上是「{当前关键词}」的热门数据。
如需深入了解某个细分方向,可以从以下赛道中选择:
{细分词1}、{细分词2}、{细分词3}、{细分词4}、{细分词5}、 {细分词6}、{细分词7}、{细分词8}、{细分词9}、{细分词10}
回复具体关键词,我将为您查询该赛道的热门笔记。
-
```
3. **示例输出**:
-
```
-
以上是「减脂餐」的热门数据。
如需深入了解某个细分方向,可以从以下赛道中选择:
早餐减脂、减脂便当、低卡晚餐、减脂零食、学生党减脂、一周食谱、减脂沙拉、减脂主食、控糖减脂、懒人减脂餐
回复具体关键词,我将为您查询该赛道的热门笔记。
-
- ````
+ ```
4. **特殊情况处理**:
- 如果用户查询的是非常细分的词(如"减脂餐一周食谱"),可不再推荐更细的方向;已经拓展过的词不需要再询问拓展
- 如果用户查询的是空关键词(全站热门),**直接使用热门赛道列表**推荐,格式如下:
-
```
以上是全站热门数据。
如需深入了解某个细分赛道,可以从以下热门赛道中选择:
穿搭、美食、彩妆、影视、职场、萌宠、家居、旅行、交通、兴趣、科技、互联网、医疗保健、星座情感、婚庆婚礼、拍摄、教育、亲子育儿、个人护理、潮流鞋包、生活、科学探索、新闻资讯、运动
回复具体关键词,我将为您查询该赛道的热门笔记。
```
- #### 步骤9: 输出前自检【必须执行】
+ ---
+ #### 输出前自检【必须执行】
+
在输出前,逐项检查输出格式的每一个字段是否完整:
- - []**意图识别**:是否准确识别用户搜索意图?
- - []**笔记数据**:是否如实展示脚本返回的所有筛选结果(max_items=10时展示10条),每条包含序号(加粗)、笔记标题、作品链接、作者名、作者链接、发布时间、互动数、推荐理由(加粗)?
- - []**HTML卡片**:是否包含html卡片?
- - []**推荐细分词**:是否列出10个细分词?
+ - [] **意图识别**:是否准确识别用户搜索意图?
+ - [] **笔记数据**:是否如实展示脚本返回的所有筛选结果(max_items=10时展示10条),每条包含序号(加粗)、笔记标题、作品链接、作者名、作者链接、发布时间、互动数、推荐理由(加粗)?
+ - [] **HTML卡片**:是否包含html卡片?
+ - [] **推荐细分词**:是否列出10个细分词?
如有任何字段遗漏或不完整,必须补齐后再输出。
- ## 使用示例
+ ---
- - 示例1:
- - 场景/输入: 用户询问"最近有什么热门的穿搭内容"
- - 预期产出: 返回穿搭领域的热门笔记数据,包含10条筛选结果,每条包含标题、作者、互动数、推荐理由等
- - 关键要点: 需判断"穿搭"是否为泛化词,如是则先推荐细分词
+ ### 常用命令速查表
- - 示例2:
- - 场景/输入: 用户询问"小个子穿搭有什么热门笔记"
- - 预期产出: 返回"小个子穿搭"相关热门笔记数据
- - 关键要点: "小个子穿搭"为细分词,可直接搜索
+ | 场景 | 命令 |
+ | ---- | ---- |
+ | 关键词搜索(默认近7天) | `python scripts/fetch_xhs_hot_articles.py --keyword "关键词" --start-date <日期>` |
+ | 全站热门 | `python scripts/fetch_xhs_hot_articles.py --keyword "" --start-date <日期>` |
+ | 多关键词搜索 | `python scripts/fetch_xhs_hot_articles.py --keyword "词1,词2,词3" --start-date <日期>` |
+ | 分页查询 | `python scripts/fetch_xhs_hot_articles.py --keyword "关键词" --start-date <日期> --page-num 1 --page-size 50` |
+ | 生成 HTML 报告 | 脚本自动生成 `{keyword}_热门数据.html` |
+ | 订阅创建 | 回复1️⃣后使用 `calendar_create` 工具创建定时任务 |
- ## 资源索引
+ ## 5. 使用场景
- - 脚本: 见 [scripts/fetch_xhs_hot_articles.py](scripts/fetch_xhs_hot_articles.py)(用途:调用API获取热门笔记数据并生成HTML报告)
- - 参考: 见 [references/xhs_hot_article_format.md](references/xhs_hot_article_format.md)(何时读取:了解数据字段格式和输出规范)
+ ### 场景一:小红书博主寻找选题灵感
- ## 注意事项
+ - **角色**:小红书内容创作者
+ - **需求**:想了解近期"减脂餐"领域有哪些热门笔记,为下一篇笔记找选题方向
+ - **使用方式**:输入细分关键词「减脂餐」,系统返回高评分热门笔记列表,展示后自动推荐 10 个细分方向(如"早餐减脂""减脂便当"等)
+ - **预期收益**:通过三维评分排序快速锁定高价值选题,同时获取细分赛道灵感,提升内容产出质量
- - 仅在需要时读取参考文档,保持上下文简洁。
- - 操作脆弱时优先调用脚本并校验结果。
- - 充分利用智能体能力,避免为简单任务编写脚本。
- ````
+ ### 场景二:品牌方市场调研
+
+ - **角色**:品牌市场人员
+ - **需求**:了解"穿搭"赛道的整体热门趋势,但不确定具体细分方向
+ - **使用方式**:输入泛化词「穿搭」后,系统推荐 10 个细分方向(如"小个子穿搭""法式穿搭""职场穿搭"等),回复「拓展」批量搜索所有方向
+ - **预期收益**:一次性覆盖多个细分领域,全面掌握赛道热度分布,为品牌内容营销策略提供数据支撑
+
+ ### 场景三:MCN 机构达人内容规划
+
+ - **角色**:MCN 机构内容总监
+ - **需求**:需要一次性查看多个领域(减脂餐、健身、职场穿搭)的热门笔记,规划旗下达人矩阵内容排期
+ - **使用方式**:使用逗号分隔多关键词 `--keyword "减脂餐,健身,职场穿搭"` 进行跨领域查询
+ - **预期收益**:一个命令覆盖多个品类,高效获取跨领域热门趋势,提升内容规划效率
+
+ ### 场景四:每日热门笔记定时推送
+
+ - **角色**:小红书运营人员
+ - **需求**:希望每天上午自动收到特定赛道的热门笔记列表,持续追踪趋势
+ - **使用方式**:搜索关键词后选择「1️⃣ 订阅」,设置推送时间,创建日历定时任务
+ - **预期收益**:无需手动重复搜索,每日定时获取最新热门笔记,持续跟踪赛道动态,保持创作敏感度
+
+ ## 6. 项目架构
+
+ ### 目录结构
+
+ ```
+ xiaohongshu-search/
+ ├── SKILL.md # Skill 定义与使用文档(本文件)
+ ├── scripts/
+ │ └── fetch_xhs_hot_articles.py # 核心搜索脚本,调用红狐 API 获取小红书热门笔记
+ └── references/
+ └── xhs_hot_article_format.md # 数据字段格式参考文档
+ ```
+
+ ### 技术栈
+
+ | 组件 | 技术 | 说明 |
+ | ---- | ---- | ---- |
+ | 运行环境 | Python 3.x | 标准库,无第三方依赖 |
+ | 数据接口 | 红狐 API (Redfox) | 通过 REDFOX_API_KEY 鉴权 |
+ | 输出格式 | JSON (stdout) + HTML (文件) | JSON 通过 stdout 输出供 AI 解析,HTML 为可视化报告文件 |
+ | 展示格式 | Markdown 表格 | AI 代理将 JSON 渲染为表格展示 |
+ | 执行限制 | 仅主 Agent | 不在子 Agent 中执行 |
+
+ ### 核心模块说明
+
+ | 模块 | 路径 | 功能 |
+ | ---- | ---- | ---- |
+ | 搜索脚本 | `scripts/fetch_xhs_hot_articles.py` | 调用红狐 API 获取小红书热门笔记,支持 --keyword、--start-date、--page-num、--page-size 参数,自动生成 HTML 报告 |
+ | 数据格式参考 | `references/xhs_hot_article_format.md` | 详细说明接口返回的数据字段格式和输出规范 |
+ | SKILL 定义 | `SKILL.md` | 定义 Skill 元数据、意图理解规则、泛化词拓展策略、展示策略、订阅逻辑、自检清单 |
+
+ ### 资源索引
+
+ - **核心脚本**:`scripts/fetch_xhs_hot_articles.py` — 调用红狐 API 获取小红书热门笔记数据并生成 HTML 报告
+ - **参考文档**:`references/xhs_hot_article_format.md` — 何时读取:需要了解数据字段格式和输出规范时
+
+ ## 7. 常见问答
+
+ ### 安装
+
+ **Q: 需要安装哪些依赖?**
+ A: 本工具使用 Python 3 标准库,无需额外安装第三方依赖。确保系统已安装 Python 3.x 即可。
+
+ **Q: 如何获取 API Key?**
+ A: 请访问 [红狐hub](https://redfox.hk/settings/api-keys?source=github) 注册并获取 API Key,按本文"一键安装"章节配置环境变量。
+
+ ### 使用
+
+ **Q: 泛化词和细分词有什么区别?**
+ A: 泛化词是抽象层级高、覆盖范围广的概括性词汇(如"美妆""穿搭"),无具体场景/属性修饰;细分词含有具体修饰成分(如"粉底液""小个子穿搭")。泛化词会触发拓展策略,细分词直接搜索。
+
+ **Q: 数据的时间范围是什么?**
+ A: 数据库仅包含昨天至30天前的数据。默认查询最近7天,数据不足时自动扩展时间(1天→3天→7天→30天)。每日早上7点更新昨日数据。
+
+ **Q: 为什么有的表格有评分字段、有的没有?**
+ A: 有关键词搜索时按 totalScore(相关性+热度+时效)排序,展示评分字段;全站热门按互动数排序,无评分字段。推荐热门笔记表格也不含评分。
+
+ **Q: 如何查看超过 10 条的完整结果?**
+ A: 当结果超过 10 条时,系统会提示「是否需要查看全部?」。回复「是」「查看全部」或「全部」即可展示完整数据。
+
+ **Q: 为什么每次查询后都会推荐细分赛道?**
+ A: 这是设计功能 — 帮助用户从当前查询结果中进一步发现更精准的细分方向,深入挖掘数据价值。如果查询的已是细分词,系统会智能判断是否跳过推荐。
+
+ ### 故障排除
+
+ **Q: 搜索结果为空怎么办?**
+ A: 热门笔记收录标准为互动数1000+。如果关键词太小众或时间范围太短,可能无数据。系统会自动扩展时间范围,也可从 relatedSearches 推荐的搜索词中选择重试。
+
+ **Q: 提示"今天的数据暂未更新"?**
+ A: 数据库每日早上7点更新昨日数据,当天数据尚未入库。系统会自动展示最近可用的数据。
+
+ **Q: 脚本执行报错?**
+ A: 常见原因:(1) REDFOX_API_KEY 未配置或已过期;(2) Python 版本低于 3.x;(3) 网络连接问题。请逐一排查。
+
+ ### 安全许可
+
+ **Q: API Key 如何安全存储?**
+ A: 推荐使用方案 1(配置到 openclaw.json 的 env 字段中),避免在终端历史中泄露。请勿将 API Key 硬编码在脚本中或上传到公开仓库。
+
+ **Q: 数据来源和版权?**
+ A: 数据来源于红狐 API 收录的小红书公开笔记。笔记版权归原作者所有,本工具仅供学习和内容创作参考使用。
+
+ **Q: 为什么要在主 Agent 中执行?**
+ A: 小红书搜索工具涉及完整的意图理解、泛化词拓展和数据展示策略,流程复杂且依赖全局上下文判断,仅在主 Agent 中执行以确保行为一致和规则完整。