This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
openclaw-skills/docs/research-notes/phase-2.5-favlist-deep-dive.md
T
OpenClaw Agent 7e0acef4f9 feat: add skills and workspace files
- Add complete skill set including feishu, github, ci-gen, etc.
- Add workspace documentation (AGENTS.md, SOUL.md, etc.)
- Add memory system and project context
2026-02-06 19:14:24 +08:00

338 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# B站收藏夹 API 深度调研
**调研时间**: 2026-02-06
**调研人**: 阿里巴巴助手
**文档类型**: 技术补充调研
---
## 1. 收藏夹隐私机制
### 1.1 公开 vs 私密
B站收藏夹支持两种隐私状态:
| 状态 | 说明 | 谁能查看 |
|------|------|----------|
| **公开** | 用户主动设置为公开 | 任何人(包括未登录用户)|
| **私密** | 默认状态 | 仅用户本人 |
### 1.2 设置方式
用户需要在两个地方设置才能完全公开:
1. **电脑端**: 收藏夹管理 → 编辑 → 设置公开
2. **手机端**: 设置 → 安全隐私 → 空间隐私设置 → 公开显示我的收藏
> ⚠️ **关键发现**: 很多用户不知道需要同时设置两端,导致"设置了公开但别人看不到"
### 1.3 对用户的影响
- **默认情况**: 所有收藏夹都是**私密的**
- **大多数用户**: 不会主动设置为公开
- **实际可用性**: 获取他人收藏夹内容非常有限
---
## 2. 收藏夹 API 详情
### 2.1 API 端点汇总
#### 获取用户创建的所有收藏夹列表
```
GET https://api.bilibili.com/x/v3/fav/folder/created/list-all
```
**参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| up_mid | num | 是 | 目标用户mid |
| type | num | 否 | 0=全部, 2=视频稿件 |
| rid | num | 否 | 目标内容id(查询某视频在哪些收藏夹)|
**认证**: Cookie (SESSDATA) 或 APP
**注**: 查询私密收藏夹时需要相应用户登录
#### 获取收藏夹元数据
```
GET https://api.bilibili.com/x/v3/fav/folder/info
```
**参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| media_id | num | 是 | 收藏夹完整id(fid + mid后2位)|
**返回关键字段**:
```json
{
"code": 0,
"data": {
"id": 1052622027, // 收藏夹完整id
"fid": 10526220, // 收藏夹原始id
"mid": 509372, // 创建者mid
"title": "收藏夹标题",
"cover": "封面URL",
"media_count": 100, // 内容数量
"state": 0, // 状态(0=正常)
"fav_state": 0, // 是否已收藏(需登录)
"cnt_info": {
"collect": 50, // 被收藏数
"play": 10000, // 播放量
"thumb_up": 100 // 点赞数
}
}
}
```
#### 获取收藏夹内容列表
```
GET https://api.bilibili.com/x/v3/fav/resource/list
```
**参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| media_id | num | 是 | 收藏夹完整id |
| pn | num | 否 | 页码,默认1 |
| ps | num | 否 | 每页数量,默认20 |
| keyword | str | 否 | 搜索关键词 |
| order | str | 否 | 排序:mtime=收藏时间,view=播放量 |
| type | num | 否 | 0=全部,2=视频 |
| platform | str | 否 | web |
**认证**: Cookie (SESSDATA)
**返回字段**:
```json
{
"code": 0,
"data": {
"info": { /* 收藏夹信息 */ },
"medias": [
{
"id": 583785685, // 视频avid
"type": 2, // 2=视频稿件
"title": "视频标题",
"cover": "封面URL",
"intro": "简介",
"page": 1, // 分P数
"duration": 600, // 时长(秒)
"upper": {
"mid": 123456,
"name": "UP主昵称"
},
"cnt_info": {
"play": 10000,
"danmaku": 500,
"collect": 100
},
"bv_id": "BV1xx411c7mD",
"bvid": "BV1xx411c7mD",
"pubtime": 1609459200, // 发布时间
"fav_time": 1609545600 // 收藏时间
}
]
}
}
```
#### 批量获取内容信息
```
GET https://api.bilibili.com/x/v3/fav/resource/infos
```
**参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| resources | str | 是 | 格式:`{id}:{type},{id}:{type}` |
| platform | str | 否 | web |
**resources格式**:
- `{内容id}:{内容类型}`
- 类型: 2=视频稿件, 12=音频, 21=视频合集
- 多个用逗号分隔
**示例**: `583785685:2,523:21,15664:12`
### 2.2 错误码说明
| code | 含义 | 说明 |
|------|------|------|
| 0 | 成功 | 正常返回 |
| -400 | 请求错误 | 参数缺失或格式错误 |
| -403 | 访问权限不足 | 收藏夹为私密,或Cookie无效 |
| -404 | 不存在 | 收藏夹id不存在 |
| -101 | 账号未登录 | SESSDATA失效或缺失 |
| 11201 | 收藏夹不可见 | 私密收藏夹,无权限访问 |
---
## 3. 获取收藏夹的可行性分析
### 3.1 获取他人收藏夹
**可行性**: ⚠️ **很低**
**原因**:
1. 默认私密,大多数用户不会公开
2. 即使公开,也需要用户主动在两处设置
3. 公开收藏夹通常只展示精选内容
**适用场景**:
- 分析特定UP主的公开收藏(如教程合集)
- 获取用户自己公开的收藏夹(需用户授权后)
### 3.2 获取自己的收藏夹
**可行性**: ✅ **高**
**前提条件**:
1. 获取完整的 Cookie (SESSDATA)
2. Cookie 未过期
3. 账号状态正常
**bili-auth 方案的限制**:
- bili-auth 返回 OAuth token,但**不直接提供 SESSDATA**
- 部分 API 需要完整的 Cookie,不仅仅是 access_token
- 可能需要额外步骤将 OAuth 凭证转换为可用 Cookie
### 3.3 技术路径对比
| 方案 | 可行性 | 复杂度 | 风险 |
|------|--------|--------|------|
| **OAuth + 公开收藏夹** | 🟡 低 | 低 | 低 |
| **OAuth + Cookie提取** | ✅ 中 | 高 | 中 |
| **手动Cookie输入** | ✅ 高 | 低 | 高(用户体验差)|
---
## 4. 对 OpenClaw 技能的影响
### 4.1 功能调整建议
**原规划**(包含收藏夹):
- 获取关注列表 ✅
- 监控UP主动态 ✅
- 视频搜索 ✅
- 收藏夹同步 ❌(受限)
**建议调整为**:
| 功能 | 优先级 | 说明 |
|------|--------|------|
| **我的收藏夹** | P1 → P2 | 需完整Cookie,实现复杂 |
| **UP主公开收藏** | P2 | 仅展示UP主主动公开的内容 |
| **收藏夹元数据** | P2 | 可获取标题、数量等基本信息 |
### 4.2 用户交互设计
**如果实现"我的收藏夹"功能**:
1. **授权时明确提示**:
> "获取收藏夹需要完整登录态,可能存在账号风险,建议使用小号"
2. **降级方案**:
- 如果无法获取收藏夹 → 提示用户手动输入Cookie
- 或仅展示公开收藏夹内容
3. **功能限制**:
- 仅读取,不提供"添加到收藏夹"功能
- 仅展示前N个收藏夹,避免频繁调用
### 4.3 技术实现建议
**如果决定支持收藏夹**:
```python
# 伪代码示例
async def get_fav_list(uid, cookie):
"""获取用户收藏夹列表"""
url = "https://api.bilibili.com/x/v3/fav/folder/created/list-all"
params = {"up_mid": uid}
headers = {"Cookie": cookie}
resp = await fetch(url, params, headers)
if resp.code == -403:
return {"error": "收藏夹为私密或Cookie无效"}
return resp.data
async def get_fav_content(media_id, cookie, pn=1):
"""获取收藏夹内容"""
url = "https://api.bilibili.com/x/v3/fav/resource/list"
params = {
"media_id": media_id,
"pn": pn,
"ps": 20,
"platform": "web"
}
headers = {"Cookie": cookie}
resp = await fetch(url, params, headers)
return resp.data
```
**关键注意点**:
- 缓存收藏夹列表(1小时)
- 分页获取内容,避免单次请求过大
- 错误处理:-403时友好提示用户
---
## 5. 结论与建议
### 5.1 关于收藏夹功能的结论
| 方面 | 评估 |
|------|------|
| **技术可行性** | ✅ 可实现,但需完整Cookie |
| **用户可用性** | 🟡 中(需用户理解和授权)|
| **数据完整性** | ⚠️ 受限(大部分为私密)|
| **风险等级** | 🟡 中(需处理Cookie)|
### 5.2 MVP 功能建议
**Phase 1**: 不包含收藏夹功能
- 聚焦:关注列表 + UP主动态 + 视频搜索
- 更简单,风险更低
**Phase 2**: 可选添加收藏夹(如果用户需求强烈)
- 实现"我的收藏夹"(需完整Cookie)
- 明确提示风险
- 提供降级方案
### 5.3 如果用户询问"为什么看不到收藏夹"
标准回答:
> B站收藏夹默认是私密的,大部分用户不会主动公开。如果需要获取您的收藏夹,需要:
> 1. 在B站设置中将其设为公开
> 2. 或者提供完整登录Cookie(存在风险,建议使用小号)
---
## 附录
### API 快速参考
```bash
# 获取用户收藏夹列表
curl -G 'https://api.bilibili.com/x/v3/fav/folder/created/list-all' \
--data-urlencode 'up_mid=509372' \
-b 'SESSDATA=xxx'
# 获取收藏夹内容
curl -G 'https://api.bilibili.com/x/v3/fav/resource/list' \
--data-urlencode 'media_id=1052622027' \
--data-urlencode 'pn=1' \
--data-urlencode 'ps=20' \
-b 'SESSDATA=xxx'
```
### 相关文档
- 主调研报告: [bilibili-plugin-feasibility.md](./bilibili-plugin-feasibility.md)
- 数据API调研: [phase-2-data-api.md](./research-notes/phase-2-data-api.md)
---
*本文档为 B站插件调研的补充材料*