---
name: B站搜账号下作品集
description: B站账号作品列表实时查询工具。根据B站UP主的UID实时调用 Redfox 接口获取该UP主发布的视频作品列表，支持游标翻页浏览更多作品。返回实时数据（非缓存/历史数据）。当用户想查看某个B站UP主的作品列表、B站账号视频、UP主投稿列表时使用。触发词：B站作品列表、B站UP主作品、B站账号视频、B站投稿列表、bilibili作品、B站UP主投稿、B站搜账号下作品集。
---

# B站搜账号下作品集

## 📝 简介

B站账号作品列表实时查询工具，根据B站UP主的UID实时调用 Redfox 接口获取该UP主发布的视频作品列表，返回实时数据（非缓存/历史数据）。支持游标翻页浏览更多作品。

## ✨ 功能特性

| 功能模块 | 能力描述 | 核心价值 |
|---------|---------|---------|
| 实时查询 | 输入UID实时获取UP主作品列表 | 获取非缓存的实时数据 |
| 游标翻页 | 支持cursor游标逐页浏览 | 深入浏览UP主更多作品 |
| 数据排序 | 返回结果按播放量降序排列 | 快速定位爆款作品 |

## 🔑 鉴权

### 获取 API Key

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

### 配置 API Key

方案1: 以 Qoder 为例，将 REDFOX_API_KEY 添加到 `~/.openclaw/openclaw.json` 中：

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

方案2: 终端配置

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

## 🔄 工作流程

### Step 1：理解用户意图，提取UID

**1. 提取B站UID**

- 从用户描述中提取B站UP主的UID（纯数字，如 `946974`）
- 若用户提供了UP主昵称而非UID，告知用户：「B站作品列表查询需要UID（纯数字），请在B站UP主主页URL中找到UID后告诉我，例如 bilibili.com/space/946974 中的 946974」
- 不得在用户未提供UID时擅自猜测并调用脚本

**2. 识别翻页参数**（用户未指定时使用默认值）

- **游标**（`--cursor`）：默认不传（第一页）
  - 用户提到"下一页"、"更多" → 传上次返回的 cursor 值
  - 首次查询 → 不传 cursor

### Step 2：调用作品列表查询脚本

```bash
python ".qoder/skills/B站搜账号下作品集/scripts/fetch_bili_user_works.py" "<UID>" [--cursor 翻页游标]
```

**参数说明：**

| 参数       | 可选值     | 含义                                    |
| ---------- | ---------- | --------------------------------------- |
| uid        | 纯数字字符串 | B站UP主的UID                           |
| `--cursor` | 游标字符串 | 翻页参数，第一页不传，传上次返回的cursor值 |

脚本以 JSON 格式输出：

| 字段          | 说明                          |
| ------------- | ----------------------------- |
| `user_info`        | UP主基础信息（昵称、UID等）   |
| `works`            | 作品列表（按播放量降序）      |
| `cursor`           | 下一页游标（空字符串表示无下一页） |
| `has_next`         | 是否有下一页（true/false）    |
| `total_count`      | 本页作品数量                  |
| `total_work_count` | UP主总作品数                  |

每条作品字段：

| 字段              | 说明                        |
| ----------------- | --------------------------- |
| `title`           | 视频标题                    |
| `author`          | UP主昵称                    |
| `danmaku_count`   | 弹幕数                      |
| `comment_count`   | 评论数                      |
| `collect_count`   | 收藏数                      |
| `play_count`      | 播放量                      |
| `work_url`        | 视频链接（直接可用）         |
| `publish_time`    | 发布时间（格式化）           |
| `cover_url`       | 封面图（https协议）          |
| `bv_id`           | BV号                        |
| `tags`            | 视频标签（逗号分隔）         |
| `category`        | 视频分区名称                 |
| `duration`        | 视频时长                    |

### Step 3：判断结果并展示

#### 情况 A：works 数量 > 0（有作品数据）

**A1. 展示UP主信息 + 告知查询结果**

> 📊 UP主「**昵称**」（UID: XXX）共有 **total_work_count** 部作品，当前展示 **N 条**（API返回N条），以下是详细数据：

**A2. 渲染 Markdown 表格（⚠️ 必须逐条全部展示，严禁截断）**

```markdown
| #   | 视频标题             | 播放量  | 弹幕数 | 时长     | 发布时间   |
| --- | -------------------- | ------- | ------ | -------- | ---------- |
| 1   | [标题文字](视频链接) | 105.2w  | 1.2w   | 15:21:04 | 2026-06-20 |
```

**⚠️ 序号连续规则：**
- 第1页序号从1开始，第2页从21开始，第N页从 `(N-1)*20+1` 开始
- 在上下文中记录当前页码，翻页时自动递增

**⚠️ 展示纪律（强制执行）：**
- 每页必须完整渲染 `works` 数组中的全部条目，严禁因篇幅原因截断或省略
- 标准页满20条，最后一页可不足20条，但有多少展示多少
- 表格行数必须与 `total_count` 字段一致，若不一致视为执行错误

**数字格式化规则：**
- `< 10000`：原始数字（如 `320`）
- `≥ 10000`：`x.xw` 格式（如 `1.2w`）

**标题规则：** `[标题](work_url)`；超过 30 字截断并加 `...`

**A3. 翻页提示（紧接在表格之后，每次必须输出）**

- 若 `has_next` 为 true：
> 📄 还有更多作品。回复「下一页」继续查看。

- 若 `has_next` 为 false：
> 📄 已展示全部作品，无更多数据。

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

#### 情况 B：works 数量 = 0（无作品数据）

> 😔 抱歉，未查询到UID「**XXX**」的作品数据。可能原因：1) 该账号暂无公开投稿 2) 账号UID不正确 3) 账号已注销。请核实UID后重试。

### Step 4：记录游标和页码（内部逻辑，不展示给用户）

将本次返回的 `cursor` 值和当前**页码**记录在上下文中。当用户回复「下一页」时，使用该 cursor 值再次调用脚本获取下一页数据，页码 +1。
- 首次查询：页码 = 1
- 每次翻页：页码 +1
