xiaohongshu-top-account · git:20260527.3f7e4b5 · 2026-05-27 · sha256 9df87fc2eed2c1e5

xiaohongshu-top-account git:20260527.3f7e4b5A

Immutable. This exact content is served forever at /api/v1/blob/9df87fc2eed2c1e5.

---
name: xiaohongshu-top-account
description: 小红书账号榜单追踪分析工具,支持查询日榜周榜月榜TOP50排名和热门账号
---

# 小红书热门账号推荐

## 概述

提供小红书全品类/分品类账号每日/每周/每月的表现榜单查询。支持三大核心能力:

1. **排名查询** — 查日榜、周榜、月榜 TOP50
2. **领域查询** — 按品类筛选(美妆、美食、旅行、母婴、健身/体育锻炼等)
3. **报告下载** — 生成 HTML 可视化报告,支持导出 PDF/截图
4. **定时订阅** — 设置自动化定时推送

---

## 环境准备

无需安装第三方依赖,使用 Python 标准库 `urllib` 发送请求即可。

### 鉴权

#### 获取 API Key

请前往 [红狐hub](https://redfox.hk/settings/api-keys?source=github) 获取API KEY

#### 配置 API Key

- `REDFOX_API_KEY` 从环境变量获取,格式 `ak_xxxxxxxx`
- 若未设置,提示用户自行配置:`export REDFOX_API_KEY=<你的apikey>`;若用户不会配置,Agent应主动帮用户设置:
  - **macOS/Linux**:将 `export REDFOX_API_KEY=<值>` 追加到 `~/.zshrc`(zsh)或 `~/.bashrc`(bash),然后 `source` 对应文件使其全局生效
  - **Windows**:使用 `[Environment]::SetEnvironmentVariable("REDFOX_API_KEY", "<值>", "User")` 设置用户级永久环境变量(需重启终端生效)
  - 配置完成后应验证:`echo $REDFOX_API_KEY`(macOS/Linux)或 `echo %REDFOX_API_KEY%`(Windows),确保换一个skill也能读取到

---

## 触发词与意图识别

| 用户意图 | 典型触发词                                                | 对应操作                      |
| -------- | --------------------------------------------------------- | ----------------------------- |
| 排名查询 | 小红书日榜、周榜、月榜、TOP50、最夯账号、排行榜、最新推荐 | 调用 API 并格式化输出         |
| 领域查询 | 美妆类/美食类/旅行类/母婴类/健身类...小红书排名           | 调用 API 并按 category 筛选   |
| 报告下载 | 下载报告、导出榜单、生成报告                              | 使用 --html 参数自动生成 HTML |
| 定时订阅 | 订阅日榜/周榜/月榜、定时推送、每天发给我                  | 创建 WorkBuddy Automation     |

---

## 执行流程

### 严格输出顺序(必须按顺序执行,不得跳过)

**第一步:内容输出**

1. 调用脚本查询榜单数据(默认只查20条):
   ```bash
   python scripts/fetch_rank.py --query "用户原始问题" --limit 20 --html
   ```
2. 按标准模板格式化输出榜单数据(Markdown 表格形式,最多20条)

**第二步:询问定时订阅**

- 输出完榜单数据后,**直接**追加以下询问(不等待用户回复):
  ```
  📬 订阅服务
  1️⃣ 是否需要订阅每日/周/月的小红书账号最新排名,订阅后定时推送给您?
  2️⃣ 是否需要订阅具体赛道的账号表现?我们支持:综合全部、出行代步、休闲爱好、影视娱乐、数码科技、医疗保健、综合杂项、星座情感、时尚穿搭、婚庆婚礼、拍摄记录、学习教育、化妆美容、居家装修、旅行度假、亲子育儿、个人护理、美味佳肴、职业发展、宠物天地、潮流鞋包、日常生活、科学探索、新闻资讯、体育锻炼
  ```

**第三步:交付 HTML 报告**

- 脚本已自动生成HTML文件,使用 deliver_attachments 工具交付脚本输出的 HTML 文件路径
- 追加以下内容:
  ```
  ⚡ 更多操作
  • 点击下方下载HTML报告文件,可在浏览器中打开查看,支持一键导出PDF/高清图片
  • 本次榜单完整共50条数据,是否需要查看全部?
  ```

**用户表示需要查看全部数据时:**

> ⚠️ **强制要求**:必须同时输出 Markdown 表格和交付 HTML 报告,两者缺一不可。

1. 重新调用脚本获取完整50条数据:
   ```bash
   python scripts/fetch_rank.py --query "用户原始问题" --limit 50 --html
   ```
2. 在对话中输出完整50条数据的 Markdown 表格(按标准模板格式)
3. **必须使用 deliver_attachments 交付 HTML 文件**(关键步骤,不可遗漏),告知用户"以下是完整50条数据的 HTML 报告,可直接点击下载查看"

---

### 流程一:排名查询(推荐:自然语言模式)

**直接传入用户原始问题**,脚本自动完成全部解析:

```bash
python scripts/fetch_rank.py --query "用户原始问题" --limit 20 --html
```

**自动解析逻辑:**

#### ① 时间判断与日期计算

根据当前时间判断最新数据是否已更新:

| 榜单类型 | 更新时间         | 当前时间 < 更新时间 | 当前时间 >= 更新时间 |
| -------- | ---------------- | ------------------- | -------------------- |
| 日榜     | 每日 19:00       | 取前2天 (offset=2)  | 取前一天 (offset=1)  |
| 周榜     | 每周一 15:00     | 取前2周 (offset=2)  | 取前1周 (offset=1)   |
| 月榜     | 每月2号 上午9:00 | 取前2月 (offset=2)  | 取前1月 (offset=1)   |

**日期计算公式:**

- 日榜:`date.today() - timedelta(days=offset)`
- 周榜:`date.today() - timedelta(weeks=offset)` 后的最近周一
- 月榜:`date.today() - timedelta(days=30*offset)` 后的每月2号

**更新规则(输出时告知用户):**

- 日榜:每日 **19:00** 更新
- 周榜:每周一 **15:00** 更新
- 月榜:每月 **2号 9:00** 更新

#### ② 周期判断

自动从用户文本中识别日/周/月(无明确则默认**日榜**):

- 含"周"/"周榜"→ `week`
- 含"月"/"月榜"→ `month`
- 其余默认 → `day`

#### ③ 回溯范围校验

| 榜单类型 | 最大回溯 | 超范围处理             |
| -------- | -------- | ---------------------- |
| 日榜     | 近7天    | 自动切换至最近可用日期 |
| 周榜     | 近3周    | 自动切换至最近可用日期 |
| 月榜     | 近3个月  | 自动切换至最近可用日期 |

**超出范围时**:-若用户查询当日及未来日期的榜单,在榜单说明输出中增加:「非常抱歉🙏,我们最新的是昨日/上周/上月的数据,将为您提供最接近您需求的昨日/上周/上月热榜。」-若用户查询时间早于回溯日期,在榜单说明输出中增加回复:「非常抱歉🙏,目前榜单最多支持回溯「过去7天/过去3周/过去3月」,我将为您查询最接近您需求的时间范围~」

#### ④ 赛道(type)匹配

支持模糊匹配,映射表见 `references/api_docs.md`。

**常用映射:**
| 用户说 | 映射到 |
|--------|--------|
| 健身、运动、瑜伽 | 体育锻炼 |
| 美妆、彩妆、护肤 | 化妆美容/个人护理 |
| 美食、探店、烹饪 | 美味佳肴 |
| 旅行、旅游 | 旅行度假 |
| 母婴、育儿 | 亲子育儿 |
| 穿搭、时尚 | 时尚穿搭 |

若无法匹配,输出综合全部,并告知用户无法识别的赛道类别。

#### ⑤ 数据回退机制

**重要**:部分分类(如体育锻炼)在某些日期可能返回空数据。此时应:

1. 自动尝试前一个日期
2. 最多回退3天
3. 若仍无数据,告知用户该分类在该时间段暂无数据

---

### 流程二:报告下载

1. 查询时加 `--html --limit 50` 参数,脚本会自动生成HTML报告
2. 调用 `deliver_attachments` 交付 HTML 文件(账号名均可点击跳转小红书主页)

---

### 流程三:定时订阅

1. 询问订阅周期(每日 / 每周 / 每月)。
2. 使用 `automation_update` 创建自动化任务:
   - 每日订阅:`FREQ=DAILY;BYHOUR=8;BYMINUTE=0`
   - 每周订阅:`FREQ=WEEKLY;BYDAY=MO;BYHOUR=8;BYMINUTE=0`
   - 每月订阅:`FREQ=WEEKLY;BYDAY=MO;BYHOUR=8;BYMINUTE=0;INTERVAL=4`
3. automation prompt:`查询小红书最新{period}榜(综合全部)并推送给用户`

---

## 标准输出模板

**必须按以下顺序输出,不得跳过任何步骤:**

### 第一步:内容输出

```
📊 小红书{period_label} · {category_label}

数据日期:{date}
共 {total} 个账号上榜

💡 榜单说明:{period_update_time}更新昨日/上周/上月数据。

📐 排名算法:排名根据达人在小红书的**总粉丝数**、周期内的**粉丝增量**、**点赞增量**、**收藏增量**、**分享增量**以及**评论增量**加权计算所得,满分100分。

| 排名 | 账号名 | 综合评分 | 总粉丝数 | 新增笔记 | 新增粉丝 | 新增点赞 | 新增评论 | 新增收藏 | 新增分享 |
|:---:|--------|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|
| 🥇 1 | 账号A · 赛道 | 96 | 254.06w | 7 | 6919 | 24.64w | 6.68w | 2.53w | 13.39w |
| 🥈 2 | 账号B · 赛道 | 89 | 113.55w | 1 | 1.91w | 7.90w | 4787 | 2.18w | 3.12w |
| 🥉 3 | 账号C · 赛道 | 87 | 439.14w | 2 | 5859 | 16.51w | 993 | 7688 | 687 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |

统计概览:上榜账号 {total} · 最高互动 {max_interaction} · 总新增笔记 {total_notes}

```

### 第二步:询问定时订阅(直接追加,不等待回复)

```
📬 订阅服务
1️⃣ 是否需要订阅每日/周/月的小红书账号最新排名,订阅后定时推送给您?
2️⃣ 是否需要订阅具体赛道的账号表现?我们支持:综合全部、出行代步、休闲爱好、影视娱乐、数码科技、医疗保健、综合杂项、星座情感、时尚穿搭、婚庆婚礼、拍摄记录、学习教育、化妆美容、居家装修、旅行度假、亲子育儿、个人护理、美味佳肴、职业发展、宠物天地、潮流鞋包、日常生活、科学探索、新闻资讯、体育锻炼
```

**用户回复"需要订阅"时**,使用 `calendar_create` 工具创建日程:

- 参数:
  - `title`: 小红书{period_label}榜单推送
  - `description`: 订阅小红书{period_label}榜单,自动查询并推送最新排名数据
  - `start_time`: 根据订阅周期计算(每日08:00/每周一08:00/每月2号08:00)
  - `end_time`: start_time 后1小时
  - `reminder`: 0(不需要提醒)
- 创建成功后告知用户日程已创建

### 第三步:交付 HTML 报告(必须交付)

> ⚠️ **强制要求**:必须立即使用 deliver_attachments 交付文件,不得仅提示用户下载而不实际交付。

- 脚本已自动生成HTML文件(路径在输出末尾)
- **必须使用 deliver_attachments 交付 HTML 文件**(这是关键步骤,遗漏将导致用户看不到报告)
- 交付后追加以下提示:

```
⚡ 更多操作
• 点击下方下载HTML报告文件,可在浏览器中打开查看,支持一键导出PDF/高清图片
• 本次榜单完整共50条数据,是否需要查看全部?
```

> ⚠️ **字段说明**:
>
> - **最高互动**:互动总数 = 点赞 + 评论 + 收藏 + 分享,取榜单中互动最高的账号
> - 当前接口仅返回各细分字段(总粉丝数、新增粉丝、新增点赞、新增评论、新增收藏、新增分享)
> - 赛道展示在账号名下方,使用 "账号名 · 赛道" 格式

---

## HTML 报告模板规范

### 表格列规范

| 列名     | 说明                                       |
| -------- | ------------------------------------------ |
| 排名     | 1-3名使用金银铜牌样式,其余使用灰色徽章    |
| 账号名   | 可点击跳转小红书主页,赛道展示在账号名下方 |
| 总粉丝数 | 格式:254.06w                              |
| 新增笔记 | 整数                                       |
| 新增粉丝 | 整数或带 w 单位                            |
| 新增点赞 | 带 w 单位                                  |
| 新增评论 | 整数或带 w 单位                            |
| 新增收藏 | 整数或带 w 单位                            |
| 新增分享 | 整数或带 w 单位                            |

**注意**:不展示综合评分列,表格从11列减少到9列。

### 统计卡片规范

| 指标       | 说明                                 |
| ---------- | ------------------------------------ |
| 上榜账号   | 榜单总数,默认50                     |
| 最高互动   | 互动总数 = 点赞 + 评论 + 收藏 + 分享 |
| 总新增笔记 | 所有账号新增笔记之和                 |

### 榜单说明与排名算法

```html
<div class="notice">
  <div style="margin-bottom: 8px;">
    💡 <strong>榜单说明</strong>:{period_update_desc}更新,与实时数据存在差异。
  </div>
  <div>
    📐 <strong>排名算法</strong>:排名根据达人在小红书的
    <strong>总粉丝数</strong>、周期内的
    <strong>粉丝增量</strong
    >、<strong>点赞增量</strong>、<strong>收藏增量</strong>、<strong
      >分享增量</strong
    >
    以及 <strong>评论增量</strong> 加权计算所得。
  </div>
</div>
```

---

## API 参数说明

### 接口信息

- **URL**:`POST https://redfox.hk/story/api/xhsData/query`
- **成功码**:`code: 2000`(非0!)
- **认证方式**:`X-API-KEY` Header(从环境变量 `REDFOX_API_KEY` 获取)

### 请求头

| Header       | 值                 | 说明                                   |
| ------------ | ------------------ | -------------------------------------- |
| Content-Type | `application/json` | 必填                                   |
| X-API-KEY    | `ak_xxxxxxxx`      | 从环境变量 `REDFOX_API_KEY` 获取,必填 |

### 请求参数

| 参数名   | 类型   | 说明                             | 示例           |
| -------- | ------ | -------------------------------- | -------------- |
| dateType | int    | 榜单类型:1=日榜, 2=周榜, 3=月榜 | 1              |
| rankDate | string | 日期(格式:YYYY-MM-DD)         | "2026-04-28"   |
| type     | string | 赛道名称(中文)                 | "体育锻炼"     |
| source   | string | **必须为** `小红书指数榜`        | "小红书指数榜" |

### 各榜单日期参数

| 榜单类型 | rankDate 格式                | 示例             | offset计算                                 |
| -------- | ---------------------------- | ---------------- | ------------------------------------------ |
| 日榜     | YYYY-MM-DD(前一天或前两天) | "2026-04-28"     | 当前时间<19:00→offset=2, ≥19:00→offset=1   |
| 周榜     | YYYY-MM-DD(周一)           | "2026-04-20"     | 当前时间周一<15:00→offset=2, 否则→offset=1 |
| **月榜** | **YYYY-MM-02(每月2号)**    | **"2026-04-02"** | 当前时间2号<09:00→offset=2, 否则→offset=1  |

### 返回字段

| 字段         | 说明           |
| ------------ | -------------- |
| accountName  | 账号名         |
| category     | 赛道分类       |
| followers    | 总粉丝数       |
| newNoteCount | 新增笔记数     |
| newFans      | 新增粉丝       |
| newLikes     | 新增点赞       |
| newComments  | 新增评论       |
| newCollects  | 新增收藏       |
| newShares    | 新增分享       |
| profileUrl   | 小红书主页链接 |

---

## 使用示例

### 示例1:查询美妆类日榜

- 场景/输入:用户说"小红书美妆日榜"
- 预期产出:返回美妆类当日 TOP20 榜单数据
- 关键要点:自动解析赛道为"化妆美容",日期自动计算为最新可用日期

### 示例2:查询美食类周榜

- 场景/输入:用户说"最新美食周榜"
- 预期产出:返回美食类上周榜单
- 关键要点:自动解析周期为 week,赛道为"美味佳肴"

### 示例3:生成 HTML 报告

- 场景/输入:用户需要导出完整报告
- 预期产出:生成可下载的 HTML 文件
- 关键要点:调用 fetch_rank.py 时加 --html 参数自动生成HTML报告

---

## 资源索引

- 脚本:见 [scripts/fetch_rank.py](scripts/fetch_rank.py)(用途:查询小红书榜单数据)
- 脚本:见 [scripts/generate_report.py](scripts/generate_report.py)(用途:被 fetch_rank.py --html 调用生成 HTML)
- 参考:见 [references/api_docs.md](references/api_docs.md)(何时读取:需要查看 API 详细参数说明时)

---

## 注意事项

- 日榜默认展示 TOP 20,完整 50 条通过报告或追问查看。
- 赛道关键词支持 LLM 语义模糊匹配,实在无法识别时降级为综合全部。
- HTML 报告账号名均可点击跳转小红书主页(基于 `profileUrl` 字段)。
- 生成报告前确保 workspace 有写权限。
- **最高互动**需要根据点赞+评论+收藏+分享计算,不能直接使用接口返回的 `newInteraction` 字段(该字段值可能为0)。
- **月榜日期参数必须使用每月2号**,如查询上月榜单用 "2026-04-02"。
- **体育锻炼分类**:部分日期可能返回空数据,需要自动回退日期。