$npx -y skills add SpaceZephyr/creator-buddy --skill xhs-hotnotes小红书热门笔记搜索工具,支持关键词搜索获取热门内容数据,基于数据评分排序推荐热门笔记,助力创作者发现热门趋势、获取创作灵感。仅在主Agent中执行,不派发给子Agent。
| 1 | # 小红书爆款笔记查询 |
| 2 | |
| 3 | ## 1. 简介 |
| 4 | |
| 5 | 小红书热门笔记搜索工具,支持按关键词搜索小红书热门爆款笔记,并基于相关性、热度、时效三维评分智能排序推荐。同时提供热门笔记推荐和细分赛道引导,助力创作者、品牌方和 MCN 机构发现热门趋势、获取创作灵感。注意:本工具仅在主 Agent 中执行,不派发给子 Agent。 |
| 6 | |
| 7 | ## 2. 功能特性 |
| 8 | |
| 9 | - 🔍 **关键词智能搜索** — 支持关键词精确搜索、多关键词组合(逗号分隔)、全站热门查询(空关键词) |
| 10 | - 📊 **三维评分排序** — 有关键词时按相关性(满分10分)、热度(满分3分)、时效(满分2分)加权计算总分(满分15分),全站热门按互动数排序 |
| 11 | - 🧠 **精细意图理解** — 优先从用户描述中提取细分方向词,识别泛化词并自动推荐 10 个细分方向 |
| 12 | - ⏱️ **灵活时间范围** — 默认查询最近7天,数据不足时自动扩展时间范围(1天→3天→7天→30天),每日早上7点更新 |
| 13 | - 🔥 **热门笔记推荐** — 结果较少时自动展示近期热门推荐笔记和热门话题标签 |
| 14 | - 📈 **细分赛道引导** — 每次查询后主动推荐 10 个相关细分方向,帮助用户深入探索 |
| 15 | - 🏷️ **拓词推荐** — 脚本返回 relatedSearches 字段,自动展示相关搜索建议 |
| 16 | - 📩 **定时订阅推送** — 支持创建日历订阅任务,到达设定时间自动推送最新热门笔记 |
| 17 | - 📄 **HTML 报告生成** — 自动生成 `{keyword}_热门数据.html` 可视化文件 |
| 18 | - 🛡️ **强数据说明** — 热门笔记收录标准为互动数1000+,顶部展示数据说明和排序依据 |
| 19 | |
| 20 | ## 3. 一键安装 |
| 21 | |
| 22 | ### 鉴权 |
| 23 | |
| 24 | #### 获取 API Key |
| 25 | |
| 26 | 请前往 [红狐hub](https://redfox.hk/settings/api-keys?source=skillhub) 获取API KEY |
| 27 | |
| 28 | #### 配置 API Key |
| 29 | |
| 30 | 方案1: 以OpenClaw为例,将REDFOX_API_KEY添加到~/.openclaw/openclaw.json中: |
| 31 | |
| 32 | ```bash |
| 33 | { "env": { "REDFOX_API_KEY": "your_api_key_here" } } |
| 34 | ``` |
| 35 | |
| 36 | 方案2: 终端配置 |
| 37 | |
| 38 | ```bash |
| 39 | export REDFOX_API_KEY="your_api_key_here" |
| 40 | ``` |
| 41 | |
| 42 | ### 依赖安装 |
| 43 | |
| 44 | 本 Skill 使用 Python 3 标准库,无需额外安装第三方依赖。确保系统中已安装 Python 3.x 即可。 |
| 45 | |
| 46 | ### 环境变量配置 |
| 47 | |
| 48 | | 环境变量 | 说明 | 是否必填 | 获取方式 | |
| 49 | | -------- | ---- | -------- | -------- | |
| 50 | | `REDFOX_API_KEY` | 红狐数据 API Key | 是 | [红狐hub](https://redfox.hk/settings/api-keys?source=skillhub) | |
| 51 | |
| 52 | ## 4. 使用指南 |
| 53 | |
| 54 | ### ⚠️ 核心执行规则(必须遵守) |
| 55 | |
| 56 | 1. **泛化词必须先询问再查询**:当识别到泛化词时,**绝对禁止直接调用脚本**,必须先输出细分词推荐并等待用户选择后再执行查询 |
| 57 | 2. **正确执行顺序**:关键词提取 → 判断是否泛化词 → 是泛化词则询问用户 → 用户回复后再调用脚本 |
| 58 | 3. **强制等待规则**:输出细分词推荐后,必须停止执行,等待用户下一轮对话回复「拓展」或「不拓展」,**不得在同一次对话中继续执行任何脚本调用** |
| 59 | |
| 60 | **常见泛化词**: |
| 61 | 泛词:抽象层级高、覆盖范围广的概括性词汇,无具体场景/属性修饰,行业分类等,可包含多个子类。特征:①语义上为上位概念(如"美妆"包含"粉底液/口红";"运动"包含"跑步/瑜伽";如AI);②上下文中常搭配"领域""类型"等概括词(如"美妆领域""运动类型")。 |
| 62 | |
| 63 | **常见具体词**: |
| 64 | 具体词:抽象层级低、指向明确的实例化词汇,含具体场景/属性修饰,属于某泛词的直接子类。特征:①语义上为下位概念(如"粉底液"是"美妆产品"子类;"生酮饮食"是"饮食方式"子类);②词语结构多含修饰成分(如"春日"→"春日穿搭";"生酮"→"生酮饮食")。 |
| 65 | |
| 66 | --- |
| 67 | |
| 68 | ### 基础使用(3 步完成查询) |
| 69 | |
| 70 | **Step 1 — 提取关键词**:从用户自然语言描述中提取搜索关键词。优先提取细分方向词(含具体场景/属性修饰),而非泛化大类词。 |
| 71 | |
| 72 | **Step 2 — 调用脚本**: |
| 73 | |
| 74 | ```bash |
| 75 | python scripts/fetch_xhs_hot_articles.py --keyword <关键词> --start-date <日期> |
| 76 | ``` |
| 77 | |
| 78 | - 有赛道关键词:`python scripts/fetch_xhs_hot_articles.py --keyword <关键词> --start-date <日期>` |
| 79 | - 无赛道关键词(查询全站热门):`python scripts/fetch_xhs_hot_articles.py --keyword "" --start-date <日期>` |
| 80 | - 多个关键词用逗号分隔:`python scripts/fetch_xhs_hot_articles.py --keyword "减脂餐,职场穿搭,健身" --start-date <日期>` |
| 81 | - 分页参数:`--page-num 1 --page-size 50` |
| 82 | |
| 83 | **Step 3 — 查看结果**:脚本返回结构化 JSON,按本指南规定的展示策略输出结果。 |
| 84 | |
| 85 | --- |
| 86 | |
| 87 | ### 高级使用 |
| 88 | |
| 89 | #### 用户意图理解(查询脚本前) |
| 90 | |
| 91 | **⚠️ 核心规则:应该语意理解,优先提取用户描述中的细分方向词,而非泛化的大类词** |
| 92 | |
| 93 | **1. 判断用户是否提到赛道关键词**: |
| 94 | - **无赛道关键词**(如"最近的热门笔记有哪些"、"最近有什么热门内容"、"看看热门数据")→ 直接调用脚本,关键词传空字符串 `""`,查询全站热门 |
| 95 | - **有赛道关键词** → 继续提取和判断 |
| 96 | |
| 97 | **2. 提取精确搜索关键词**(仅当用户提到赛道时执行): |
| 98 | - **分析用户描述**:从用户自我介绍或需求描述中提取明确的细分领域词 |
| 99 | - 示例分析: |
| 100 | - 用户输入:"我是一个文艺类自媒体万粉小红书博主,平时会发小众电影审美积累、书评、乐评、港台文化等相关内容,帮我找电影领域热门话题" |
| 101 | - 分析结果:用户提到的细分方向 = 小众电影、书评、乐评、港台文化 |
| 102 | - 将前文场景和"电影"相关,得到细分词 = 小众电影、港台电影、电影乐评 |
| 103 | - 搜索关键词:小众电影、港台电影、电影乐评 |
| 104 | - ❌ 错误做法:只提取泛化词「电影」去搜索 |
| 105 | |
| 106 | **3. 关键词类型判断**(仅当提取到关键词时执行): |
| 107 | - **细分词/垂直赛道**(含具体场景/属性修饰的词,如"职场穿搭"、"减脂餐"、"小个子穿搭")→ 直接搜索,无需拓展询问 |
| 108 | - **泛化词/分类**(纯大类词,如"穿搭"、"美食"、"美妆",无任何修饰)→ 执行拓展策略 |
| 109 | - **判断原则**:有修饰词(场景/人群/风格/意图)= 细分词,直接搜索;无修饰词 = 泛化词,需要拓展 |
| 110 | |
| 111 | --- |
| 112 | |
| 113 | #### 泛化词拓展策略 |
| 114 | |
| 115 | 1. **泛化词处理流程(⚠️ 必须等待用户明确回复后再调用脚本!)**: |
| 116 | |
| 117 | **第一步:生成细分词**(禁止调用脚本搜索数据) |
| 118 | |
| 119 | 拓展词生成原则: |
| 120 | - **词的大小适中**:词语不要加组合,避免过细(如"中产穿搭"太细,查不到数据) |
| 121 | - **必须覆盖不同场景**:趋势词、人群词、场景词、意图词各2-3个 |
| 122 | |
| 123 | 输出示例: |
| 124 | ``` |
| 125 | 我识别到「中产」是较大的分类,已查询近期热门趋势,推荐以下细分方向: |
| 126 | 老钱、轻奢、品质生活、松弛感、高级感穿搭、体面、法式穿搭、律师、医生、品质家居 |
| 127 | 回复「拓展」将同时搜索这10个词,回复「不拓展」将继续搜索「中产」 |
| 128 | ``` |
| 129 | |
| 130 | **第二步:等待用户回复** |
| 131 | - ❌ **禁止**:用户未回复时调用脚本 |
| 132 | - ✅ **正确**:只等待用户明确回复「拓展」或「不拓展」后再执行 |
| 133 | |
| 134 | **第三步:根据用户明确回复执行** |
| 135 | - 用户回复「拓展」 → 调用脚本搜索10个细分词 |
| 136 | - 用户回复「不拓展」或「继续」 → 调用脚本搜索原关键词 |
| 137 | - 用户未回复或回复其他内容 → 识别对应意图 |
| 138 | |
| 139 | --- |
| 140 | |
| 141 | #### 时间范围与数据查询 |
| 142 | |
| 143 | **时间范围**: |
| 144 | |
| 145 | - 数据库只包含昨天至30天前的数据 |
| 146 | - **"最近"的默认定义**:最近7天(startDate = 今天 - 7天) |
| 147 | - **日期计算**(将用户表达转换为 startDate): |
| 148 | - 今天:直接用昨天日期,startDate = 昨天 |
| 149 | - 最近/近7天:startDate = 今天 - 7天 |
| 150 | - 近N天:startDate = 今天 - N天 |
| 151 | - 示例:用户说"近15天" → startDate = 今天 - 15天 |
| 152 | |
| 153 | **数据不足时的自动调整(⚠️ 优先扩展时间,禁止换词!)**: |
| 154 | |
| 155 | - **处理原则**:数据不足时,只能扩展时间范围,不能更换或拓展关键词 |
| 156 | - **调整顺序**:按以下顺序自动扩展时间范围 |
| 157 | 1. 近1天 → 近3天 |
| 158 | 2. 近3天 → 近7天 |
| 159 | 3. 近7天 → 近30天 |
| 160 | - **告知用户**:自动调整时告知用户:"该关键词近X天数据较少,已自动扩展时间范围至近Y天" |
| 161 | - **禁止行为**:❌ 不可因为数据不足就更换关键词、推荐其他词或触发泛化词拓展流程 |
| 162 | |
| 163 | **超出范围或未更新数据的道歉说明**: |
| 164 | |
| 165 | - 用户说"今天/今日"时:回答"非常抱歉,今天的数据暂未更新,已为您展示最近可用的数据" |
| 166 | - 用户要求的时间超出30天时:回答"非常抱歉,当前仅支持最近30天的数据,已为您展示最接近的数据" |
| 167 | |
| 168 | **输出文件**: |
| 169 | |
| 170 | - 筛选后推荐数据:`{keyword}_热门数据.html` |
| 171 | |
| 172 | --- |
| 173 | |
| 174 | #### 前置说明(在展示数据前必须告知用户) |
| 175 | |
| 176 | - **数据说明**:热门笔记范围为互动数1000以上的文章,每日早上7点更新昨日数据。文章互动数据截止为入库时间,不是实时数据,入库后互动数据可能持续增长。 |
| 177 | - **排序说明**(有关键词搜索时):根据相关性(满分10分)、热度(满分3分)、时效(满分2分)三个维度加权计算,总分共15分 |
| 178 | - **排序说明**(全站热门/无关键词时):按互动数排序,无评分字段 |
| 179 | |
| 180 | --- |
| 181 | |
| 182 | #### 数据展示策略(核心) |
| 183 | |
| 184 | **⚠️ 强制输出规则**: |
| 185 | |
| 186 | - ✅ 必须严格按照本步骤规定的格式输出 |
| 187 | - ❌ 禁止在输出前添加任何分析或解读 |
| 188 | - ❌ 禁止自作主张给建议或方案 |
| 189 | - ❌ 禁止询问用户的真实目的或需求 |
| 190 | - ✅ 直接读取脚本返回的JSON数据,按照对应策略输出即可 |
| 191 | |
| 192 | **数据字段说明**: |
| 193 | |
| 194 | - **articles**:正常笔记数据(主要展示内容) |
| 195 | - **latestHotArticles**:推荐热门笔记(辅助内容,默认展示10条,表格不含评分字段) |
| 196 | - **hotTopics**:热门话题(接口返回,仅供参考,不在对话中展示) |
| 197 | |
| 198 | ##### A. articles数量 ≥ 10条 |
| 199 | |
| 200 | 展示内容: |
| 201 | |
| 202 | 1. **时间范围说明**:必须告知用户查询的时间范围,如"📅 查询时间范围:5月8日 - 5月19日" |
| 203 | 2. 正常笔记数据(有关键词时按t |