dongchedi-user-search · git:20261010.fb24549 · 2026-10-10 · sha256 045dfb7ff9b7cf83

dongchedi-user-search git:20261010.fb24549A

Immutable. This exact content never changes and is served at /api/v1/blob/045dfb7ff9b7cf83.

---
name: dongchedi-user-search
description: 懂车帝用户搜索和作品订阅工具。输入关键词就能搜到懂车帝上的用户(作者)账号,粉丝数、简介一眼看清;选中想看的用户即可拉取他的作品列表,标题、类型、阅读、点赞、评论、收藏、发布时间全部呈现,每条作品点一下就能跳转原页;还支持订阅用户,每天自动推送 TA 昨日更新的作品。当用户需要搜索懂车帝用户、查找懂车帝作者/达人、查看懂车帝用户作品列表、订阅懂车帝用户更新、研究懂车帝创作者内容时使用。触发词:懂车帝、懂车帝用户、懂车帝作者、懂车帝作品、懂车帝账号、懂车帝搜索、懂车帝达人、懂车帝用户搜索、懂车帝订阅。
---

# 懂车帝用户搜索和作品订阅

## 📝 简介

输入关键词就能搜到懂车帝上的用户(作者)账号,粉丝数、简介一目了然;选中想看的用户,立即拉取他的作品列表,标题、类型、阅读、点赞、评论、收藏、发布时间全部呈现,每条作品都能点链接跳转原页。

## ✨ 功能特性

| 功能模块 | 能力描述 | 核心价值 |
|---------|---------|---------|
| 用户关键词搜索 | 输入关键词搜索懂车帝用户(作者) | 精准发现目标用户 |
| 用户数据展示 | 昵称、粉丝数、简介、主页链接 | 快速评估账号影响力 |
| 作品列表查询 | 选中用户后获取其作品列表(标题/类型/阅读/点赞/评论/收藏/发布时间),默认展示最新 20 条,可查看全部 | 一览内容表现 |
| 作品直达 | 每条作品附可点击链接 | 一键跳转查看原作品 |
| 翻页浏览 | 用户列表支持多页翻看 | 不遗漏任何一个候选用户 |
| 订阅推送 | 订阅用户后每天 9:00 自动推送 TA 昨日更新的作品 | 持续追踪,不错过更新 |

## 🎯 适用对象

- 🔍 **内容创作者** — 找汽车领域对标账号,研究他们的选题方向和内容表现。
- 📊 **运营 / 数据分析** — 摸清某个品牌/车型在懂车帝上有哪些活跃创作者。
- 🏢 **品牌 / MCN** — 筛选汽车领域潜在合作达人,按粉丝量和作品数据评估价值。
- 🚗 **汽车行业从业者** — 追踪喜欢的车评人,快速浏览其近期全部作品。

## 🔑 鉴权

### 获取 API Key

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

### 配置 API Key

方案1: 以 OpenClaw 为例,将 REDFOX_API_KEY 添加到 `~/.openclaw/openclaw.json` 中:

```bash
{ "env": { "REDFOX_API_KEY": "ak_xxxx..." } }
```

方案2: 终端配置

```bash
export REDFOX_API_KEY="ak_xxxx..."
```

## 🔄 工作流程

### Step 1:理解用户意图,提取关键词

**⚠️ 核心规则:语义理解优先,优先提取细分方向词(品牌、车型、领域词)**

**1. 提取关键词**

- 从用户描述中提取 2~6 字的细分关键词,如品牌名("比亚迪")、车型("理想L8")、领域词("越野""车评")
- **过滤冗余修饰词**:用户说的"xx用户""xx作者""xx账号""xx达人""xx博主",搜索关键词仅取核心部分 **xx**,去除末尾的类别修饰词。例如"小米作者" → 搜索"小米","越野达人" → 搜索"越野"
- 若用户意图模糊(如"帮我搜懂车帝用户"),主动询问:「请问你想搜索哪个方向或领域的懂车帝用户?」
- 不得在用户未提供关键词时擅自猜测并调用脚本

**2. 识别页码参数**(用户未指定时使用默认值)

- **页码**(`--page`):默认 `1`
  - 用户提到"下一页"、"第2页" → 对应页码
  - 用户提到"上一页" → 当前页 - 1
  - 未提及页码 → `1`(默认)

### Step 2:调用用户搜索脚本

```bash
python3 ~/.agents/skills/dongchedi-user-search/scripts/search_user.py "<关键词>" [--page 页码]
```

**参数说明:**

| 参数     | 可选值     | 含义                  |
| -------- | ---------- | --------------------- |
| keyword  | 任意字符串 | 搜索关键词             |
| `--page` | 正整数     | 页码,从1开始(默认1) |

脚本以 JSON 格式输出:

| 字段          | 说明                                |
| ------------- | ----------------------------------- |
| `users`       | 匹配的用户列表(保持接口原始顺序)       |
| `page`        | 当前页码                            |
| `has_next`    | 是否有下一页(true/false)            |
| `next_offset` | 下一页偏移量(翻页信息,无需展示给用户)  |
| `total`       | 当前页返回条数                        |

每个用户字段:

| 字段          | 说明       |
| ------------- | ---------- |
| `nickname`    | 用户昵称    |
| `user_id`     | 用户ID(Step 4 拉取作品列表时使用) |
| `followers`   | 粉丝数      |
| `bio`         | 用户简介    |
| `avatar`      | 头像URL     |
| `profile_url` | 主页链接    |

**⚠️ 完整数据读取规则:** 脚本输出 JSON 数据量较大时,终端可能截断中间内容并显示 `// This is the omitted part`。此时必须读取 Bash 输出中提示的完整文件路径(如 `Full output saved to: /path/to/file`),使用 Read 工具获取完整 JSON 后再生成表格,确保所有字段数据完整可见,不遗漏任何记录。

### Step 3:判断结果并展示用户列表

#### 情况 A:users 数量 > 0(有匹配结果)

**A1. 告知用户查询范围**

> 📊 关键词「**XXX**」查询到 **N 个**懂车帝用户(第 {page} 页),以下是详细数据:

**A2. 渲染 Markdown 表格(全部展示)**

```markdown
| #   | 用户昵称         | 粉丝数  | 简介                        | 用户ID       | 主页链接                |
| --- | ---------------- | ------- | --------------------------- | ------------ | ----------------------- |
| 1   | 小米公司         | 359.8w  | 小米公司官方信息发布账号。    | 3446334881   | [访问主页](profile_url) |
```

**格式化规则:**
- 粉丝数:`< 10000` 用原始数字(如 `320`);`≥ 10000` 且 `< 1亿` 用 `x.xw` 格式(如 `1.2w`、`359.8w`);`≥ 1亿` 用 `x.x亿` 格式(如 `1.2亿`)
- 昵称:完整展示,不截断
- 简介:最多展示 40 字,超出以 `...` 结尾;为空时显示 `—`
- 用户ID:完整展示
- 主页链接:固定显示文字 `[访问主页](profile_url)`,点击可跳转至懂车帝用户主页

**A3. 翻页提示(⚠️ 紧接在表格之后,不可省略,每次必须输出)**

- 若 `has_next` 为 true:

> 📄 当前第 **{page}** 页。回复「下一页」继续查看。

- 若 `has_next` 为 false(已是最后一页):

> 📄 当前第 **{page}** 页,已无更多数据。

**翻页时「下一页」调用规则:** 若用户回复「下一页」,调用脚本时递增页码:

```bash
python3 ~/.agents/skills/dongchedi-user-search/scripts/search_user.py "<关键词>" --page {page+1}
```

**A4. 引导选择用户(⚠️ 必须输出,不可省略)**

> 👉 想看谁的作品列表?直接回复序号或昵称即可(如「2」或「小米公司」)。

**⚠️ A1~A4 缺一不可,必须在同一轮输出中连续完成。若缺少 A3 或 A4,视为执行错误,必须重新补充输出。**

#### 情况 B:users 数量 = 0(无匹配结果)

**B1. 抱歉提示**

> 😔 抱歉,未找到与「**XXX**」相关的懂车帝用户,可以换个关键词试试(如品牌名、车型或领域词)。

**⚠️ B1 必须在同一轮输出中完成,不得中断。**

### Step 4:识别用户选择并调用作品列表脚本

**1. 匹配用户**

- 用户回复**序号**(如「2」)→ 匹配上一轮用户表格中该序号对应的用户
- 用户回复**昵称** → 在上一轮用户表格中按昵称匹配
- 若无法匹配或存在歧义(如多个相似昵称),询问用户确认具体想看哪个用户

**2. 调用作品列表脚本**

```bash
python3 ~/.agents/skills/dongchedi-user-search/scripts/work_list.py "<user_id>"
```

**参数说明:**

| 参数       | 可选值     | 含义                              |
| ---------- | ---------- | --------------------------------- |
| user_id    | 字符串     | 用户ID(来自用户搜索结果的 `user_id`) |
| `--date`   | `YYYY-MM-DD` / `yesterday` / `today` | 按发布时间筛选指定日期的作品;订阅推送时传 `yesterday`,默认不筛选 |

**⚠️ 作品查询不支持分页:** `cursor` 固定传 `0`,单次返回该用户收录的全部作品(最多约 100 条封顶),不存在翻页参数,也不具备更早作品的翻页能力。

脚本以 JSON 格式输出:

| 字段       | 说明                     |
| ---------- | ------------------------ |
| `user_id`  | 用户ID                   |
| `date`     | 日期筛选值(未筛选时为空字符串) |
| `total_count` | 该用户收录的作品总数(筛选前) |
| `count`    | 当前返回的作品数(筛选后)  |
| `works`    | 作品列表(保持接口原始顺序,按发布时间从新到旧) |

每个作品字段:

| 字段                | 说明                             |
| ------------------- | -------------------------------- |
| `work_id`           | 作品ID                           |
| `title`             | 作品标题/描述(已做 Markdown 清理) |
| `work_type`         | 作品类型(1/2/7/9)               |
| `work_type_label`   | 类型中文名:文章 / 视频 / 图文动态   |
| `publish_time`      | 发布时间(Unix 时间戳,秒)        |
| `publish_time_str`  | 发布时间格式化结果(YYYY-MM-DD HH:MM) |
| `read_count`        | 阅读数                           |
| `like_count`        | 点赞数                           |
| `comment_count`     | 评论数                           |
| `collect_count`     | 收藏数                           |
| `duration_seconds`  | 视频时长(秒),视频类型时有值      |
| `cover_url`         | 封面图URL                        |
| `image_urls`        | 图片列表(图文类型时包含多张图片)  |
| `video_id`          | 视频ID,视频类型时有值            |
| `work_url`          | 作品详情页链接                    |
| `author_name`       | 作者昵称                         |
| `author_id`         | 作者ID                          |

**⚠️ 完整数据读取规则:** 同 Step 2,若终端输出被截断,必须读取提示的完整文件路径获取完整 JSON 后再生成表格。

### Step 5:判断结果并展示作品列表

#### 情况 A:works 数量 > 0(有作品)

**A1. 告知用户查询范围**

- 常规查询(`date` 为空):

> 📊 用户「**XXX**」共收录 **N 条**作品,以下是详细数据:

- 日期筛选查询(`date` 非空,如订阅推送):

> 📊 用户「**XXX**」在 **{date}** 更新了 **N 条**作品,以下是详细数据:

**A2. 渲染 Markdown 表格(保持接口原始顺序,禁止二次排序)**

- 常规查询(`date` 为空):默认仅展示前 **20** 条;`count` ≤ 20 时全部展示
- 日期筛选查询(`date` 非空,如订阅推送):不设条数限制,全部展示

```markdown
| #   | 发布时间            | 作品标题                               | 类型     | 阅读   | 点赞 | 评论 | 收藏 |
| --- | ------------------ | ------------------------------------- | -------- | ------ | ---- | ---- | ---- |
| 1   | 2026-10-09 17:11   | [13万价位,后驱,激光雷达,磁流变悬架...](work_url) | 图文动态 | 6706   | 2    | 0    | 0    |
```

**格式化规则:**
- 作品标题:使用 `[标题](work_url)` 超链接格式;超过 30 字截断并以 `...` 结尾
- 类型:直接使用 `work_type_label` 字段(文章 / 视频 / 图文动态)
- 发布时间:直接使用 `publish_time_str` 字段
- 数字(阅读/点赞/评论/收藏):`< 10000` 用原始数字;`≥ 10000` 且 `< 1亿` 用 `x.xw` 格式(如 `1.2w`、`12.5w`);`≥ 1亿` 用 `x.x亿` 格式

**A3. 查看全部提示(⚠️ 常规查询且 `count` > 20 时必须输出)**

> 📄 已展示前 **20** 条(共 **N 条**作品),回复「查看全部」查看所有作品。

**A4. 订阅提示(⚠️ 必须输出)**

> 📬 想持续追踪 TA 吗?订阅「**XXX**」后每天 9:00 自动推送 TA **昨日更新的作品**,回复「订阅」即可创建。

**A5. 看完作品后的引导(⚠️ 必须输出)**

> 👉 需要查看其他用户的作品或搜索其他关键词吗?直接告诉我即可。

#### 情况 B:works 数量 = 0(无作品)

**B1. 提示(按场景区分)**

- 日期筛选且 `total_count` > 0(订阅推送 / 指定日期场景):

> 😔 用户「**XXX**」在 **{date}** 无更新作品。(订阅推送时可表述为「昨日无更新作品」)

- 常规查询或 `total_count` = 0:

> 😔 用户「**XXX**」暂无收录作品(红狐未收录该用户的公开作品,或作品较少),可以换个用户看看。

**⚠️ B1 必须在同一轮输出中完成,不得中断。**

#### 查看全部处理(用户回复「查看全部」时)

**触发条件:** 用户在作品列表展示后表达继续查看作品的意图(如「查看全部」「全部」「查看所有作品」「下一页」等)时执行。

**1. 展示方式**

- **作品查询不支持分页**:不得按「下一页」方式分批展示(如每次 20 条),也不输出任何「下一页」式翻页提示;继续查看一律**一次性**展示全部剩余作品
- 基于上一轮已获取的完整作品数据,**续接展示**第 21 条起的所有剩余作品(相同表格格式与格式化规则,编号从 21 连续递增,保持接口原始顺序,禁止二次排序),直至全部展示完毕
- 数据优先复用上一轮脚本输出;若上一轮输出被截断,按「完整数据读取规则」读取 Bash 输出中提示的完整文件路径获取
- **不发起新的接口请求**;仅当上一轮完整数据确实不可获取时,才重新执行一次相同脚本命令
- 若回复「查看全部」时作品已全部展示(如 `count` ≤ 20),直接说明已展示全部作品即可,无需重复输出
- 若用户在日期筛选展示(订阅推送)后要求「查看全部」,则对该用户执行一次常规查询(不带 `--date`)并完整展示其全部作品(不再套用前 20 条限制)

**2. 后续输出**

- 续接展示完成后,仅输出引导语(A5),订阅提示与查看全部提示不再重复输出

### Step 6:订阅处理

**触发条件:** 用户在作品列表展示后回复「订阅」(或明确表达订阅当前用户的意向)时,为其创建每日推送任务。

- 若用户未先展示作品、直接要求订阅(如「订阅懂车帝的小米公司」),先按 Step 1~4 定位到唯一用户(存在歧义时先请用户确认),再执行本步骤。

> **静默执行原则:** 任务查询、创建/更新等中间步骤不得向用户输出过程性提示(如「正在创建订阅」),仅展示最终订阅成功提示。

**1. 查询现有订阅任务**

使用 `automation_update mode=list` 获取「懂车帝订阅」相关任务,读取各任务中已订阅的用户与对应 userId。

**2. 判断追加 / 新建**

| 条件 | 操作 |
| ---- | ---- |
| 现有订阅用户数 + 新用户 ≤ 10 | 追加:`automation_update mode=update`,在现有任务 prompt 中追加该用户的拉取命令(去重) |
| 超过 10 | 新建:`automation_update mode=create`,新建独立每日任务「懂车帝订阅作品日报 #2」 |
| 用户要求取消订阅 | 从对应任务 prompt 中移除该用户的命令;若任务中已无用户,则删除该任务 |

**3. 任务配置**

- 执行时间:每天 9:00(`FREQ=DAILY;BYHOUR=9;BYMINUTE=0`)
- automation prompt 模板(每个订阅用户一条命令,多用户依次罗列):

```text
拉取懂车帝订阅用户昨日更新的作品并展示给用户(保持接口原始顺序,禁止二次排序;某用户昨日无更新时输出「{昵称}:昨日无更新作品」):
python3 ~/.agents/skills/dongchedi-user-search/scripts/work_list.py "{user_id}" --date yesterday
```

- `--date yesterday` 由脚本内部按发布时间筛选「昨日」数据,无需手工比对时间

**4. 订阅成功提示(唯一对外输出)**

> ✅ 订阅成功!每天 9:00 自动推送「**XXX**」昨日更新的作品。如昨日无更新,会提示「XXX:昨日无更新作品」。

### Step 7:结束输出

全部内容展示完毕后,不等待、立刻结束输出。

## 📌 注意事项

- 作品查询不支持分页,`cursor` 固定传 `0`;单次拉取红狐收录的该用户作品(最多约 100 条封顶),不具备更早作品的翻页能力
- 日期筛选(`--date`)由脚本内部按发布时间(本地时区)比对完成,仅在本次单次拉取返回的作品范围内筛选
- 作品数据保持接口返回顺序(按发布时间从新到旧),禁止二次排序
- 常规查询作品列表默认展示前 20 条;唯一续接逻辑为用户回复「查看全部」后,基于已获取数据一次性展示全部剩余作品(编号从 21 起),不发起新的接口请求,不输出「下一页」式翻页提示
- 所有数据来自红狐收录,部分用户可能存在作品未收录或收录滞后的情况