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
This commit is contained in:
OpenClaw Agent
2026-02-06 19:14:24 +08:00
parent f26d4d8f7f
commit 7e0acef4f9
118 changed files with 12293 additions and 0 deletions
@@ -0,0 +1,92 @@
# B站插件调研 - Phase 1.1 官方开放平台调研
**调研时间**: 2026-02-06
**调研人**: 阿里巴巴助手
---
## 1. 官方开放平台概览
### 平台地址
- 主站:https://openhome.bilibili.com/
- 文档中心:https://open.bilibili.com/doc/
- 直播开放平台:https://open-live.bilibili.com/
### 关键发现 ⚠️
**暂不开放个人开发者申请**
> 根据幂简集成文档:"暂未开通个人开发者的申请入驻"
这是官方开放平台的最大门槛 —— 只接受企业/机构开发者,个人开发者无法直接申请。
---
## 2. 开发者类型对比
| 类型 | 是否开放 | 适用场景 | 限制 |
|------|----------|----------|------|
| **企业开发者** | ✅ 开放 | 机构、UP主、品牌服务商 | 需企业资质 |
| **个人开发者** | ❌ 暂不开放 | - | 无法申请 |
| **直播个人开发者** | ✅ 开放 | 直播相关应用 | 仅限直播API |
### 直播开放平台特例
直播子平台有个人开发者入口:https://open-live.bilibili.com/open-register-form/personal
- 可以申请,但API范围仅限于直播相关功能
- 无法获取用户关注列表、视频数据等核心功能
---
## 3. 官方API能力(企业开发者)
### 认证方式
- OAuth 2.0 授权码模式
- 需要申请 appkey + appsecret
### API分类
根据文档结构,官方提供:
1. **基础服务** - 用户信息、视频信息
2. **行业解决方案** - 针对不同行业的定制方案
3. **直播服务** - 直播间管理、弹幕等
### 申请流程(企业)
1. 注册/登录开放平台账号
2. 身份认证(企业资质)
3. 创建应用,填写申请理由
4. 等待审核
5. 获取 appkey/appsecret
6. 调用API
---
## 4. 限制与门槛总结
### 硬性门槛
- ❌ 个人开发者无法申请
- ❌ 需要企业营业执照等资质
- ❌ 申请理由需详细说明应用场景
### 软限制
- 审核周期不确定
- API调用可能有频率限制
- 某些敏感数据可能需要额外权限
---
## 5. 结论
**官方开放平台对个人的可行性:低**
对于个人用户或小型项目:
- 无法直接申请官方API
- 必须通过第三方方案或企业合作
**推荐替代方案**:
1. **bili-auth** - 私信鉴权的第三方OAuth
2. **bilibili-API-collect** - 已归档但仍有参考价值
3. **直播开放平台** - 如果仅需直播功能
---
## 6. 下一步调研
进入 Phase 1.2 - 第三方方案调研(bili-auth 实现原理)
+128
View File
@@ -0,0 +1,128 @@
# B站插件调研 - Phase 1.2 第三方方案调研(bili-auth)
**调研时间**: 2026-02-06
**调研人**: 阿里巴巴助手
---
## 1. bili-auth 项目概览
### 项目信息
- **GitHub**: https://github.com/icyux/bili-auth
- **描述**: 第三方哔哩哔哩 OAuth 2.0 API,基于私信鉴权
- **核心卖点**: 无需官方开发者申请,任何用户都可使用
### 技术栈
- 后端: Python + Flask
- 协议: OAuth 2.0 标准流程
- 鉴权方式: B站私信(普通用户API)
---
## 2. 实现原理
### 核心流程
```
用户访问第三方应用
↓
应用重定向到 bili-auth 授权页
↓
用户按指引发送一条特定私信给机器人账号
↓
机器人验证私信内容,完成鉴权
↓
返回 OAuth 2.0 标准授权码
↓
应用用授权码换取 access_token
```
### 私信鉴权机制
- 用户需要向指定的B站账号发送一条私信
- 私信内容包含临时验证码或特定指令
- 机器人账号读取私信,确认用户身份
- 整个过程模拟正常用户行为
### 部署方式
- 提供 Docker 镜像一键部署
- 只需一个能收发私信的B站账号作为"机器人"
- 支持自定义 OAuth 应用管理
---
## 3. 与官方方案对比
| 维度 | bili-auth (第三方) | B站官方开放平台 |
|------|-------------------|----------------|
| **准入门槛** | ✅ 极低,有B站号即可 | ❌ 仅企业开发者 |
| **开发成本** | ✅ 低,标准OAuth 2.0 | ⚠️ 中,需申请审核 |
| **用户体验** | ⚠️ 需发私信,多一步操作 | ✅ 标准授权页 |
| **功能范围** | ⚠️ 仅限普通用户API | ✅ 全量官方API |
| **稳定性** | ❌ 非官方,接口可能变动 | ✅ 官方保障 |
| **合规风险** | ❌ 灰色地带 | ✅ 完全合规 |
| **账号安全** | ❌ 有被封风险 | ✅ 官方支持 |
---
## 4. 风险评估
### 4.1 账号封禁风险
#### 风险来源
- 机器人账号频繁收发私信,触发风控
- 短时间内大量鉴权请求,被判定为异常行为
- B站更新私信API,导致功能失效
#### 风险等级
| 场景 | 风险等级 | 说明 |
|------|----------|------|
| 个人自用(<10次/天) | 🟡 低 | 行为接近正常用户 |
| 小范围使用(<100次/天) | 🟠 中 | 可能触发轻度风控 |
| 大规模部署(>1000次/天) | 🔴 高 | 极易被封号/封私信 |
#### 缓解策略
- 使用小号作为机器人,避免主号风险
- 控制鉴权频率,模拟真人操作间隔
- 实现优雅降级,接口失效时提醒用户
- 准备备用账号,主号被封可快速切换
### 4.2 API 限制
#### 数据获取能力
- ✅ 可获取:用户基础信息、关注列表、视频信息、搜索
- ❌ 无法获取:敏感数据(如私信内容、手机号)、官方限制接口
#### 频率限制
- 依赖B站普通用户的API限制
- 未登录/低等级账号限制更严格
- 建议实现本地缓存,减少API调用
### 4.3 长期维护风险
- 项目作者可能停止维护
- B站可能调整私信API
- 法律合规性存疑
---
## 5. 结论
### 可行性评估
- **短期(个人使用)**: ✅ **可行**
- **中期(小范围分享)**: 🟡 **有条件可行**
- **长期(大规模部署)**: ❌ **不推荐**
### 推荐方案
对于 OpenClaw 技能开发:
1. **采用 bili-auth 方案** 作为个人用户的临时解决方案
2. **明确风险提示**,让用户知晓账号封禁可能性
3. **设计降级方案**,接口失效时不影响核心功能
4. **持续关注** 官方开放平台动态,如有个人开发者通道,及时迁移
### 下一步建议
进入 Phase 2 - 数据获取能力调研,验证 bili-auth 能获取到哪些具体数据。
---
## 参考资料
- bili-auth GitHub: https://github.com/icyux/bili-auth
- bili-auth 作者博客: https://blog.icyu.me/post/1626001
@@ -0,0 +1,140 @@
# B站插件调研 - Phase 1.3 授权方案对比与推荐
**调研时间**: 2026-02-06
**调研人**: 阿里巴巴助手
---
## 方案对比总表
| 评估维度 | B站官方开放平台 | bili-auth 第三方方案 |
|----------|----------------|---------------------|
| **准入门槛** | ❌ 仅企业开发者 | ✅ 任何B站用户 |
| **申请流程** | 复杂(注册→认证→审核→开发)| 简单(部署即用)|
| **授权体验** | ✅ 标准OAuth页面 | ⚠️ 需发送私信 |
| **功能完整性** | ✅ 全量API | ⚠️ 普通用户API |
| **稳定性** | ✅ 官方保障 | ❌ 依赖非公开接口 |
| **合规性** | ✅ 100%合规 | ❌ 灰色地带 |
| **账号风险** | ✅ 无风险 | 🟡 有小号风险 |
| **开发成本** | 高(需企业资质)| 低(Docker一键部署)|
| **维护成本** | 低(官方维护)| 中(需关注接口变动)|
| **扩展性** | 强 | 弱 |
---
## 决策矩阵
### 场景分析
| 使用场景 | 推荐方案 | 理由 |
|----------|----------|------|
| 企业/机构项目 | **官方开放平台** | 合规、稳定、功能完整 |
| 个人学习/实验 | **bili-auth** | 门槛低,快速验证想法 |
| 小团队内部工具 | **bili-auth** | 成本可控,风险可接受 |
| 商业产品/大规模 | **官方开放平台** | 合规要求,长期稳定 |
| OpenClaw 技能 | **bili-auth** | 用户即开即用,无需企业资质 |
---
## 推荐方案(OpenClaw 技能)
### 主方案: bili-auth 私信鉴权
**推荐理由:**
1. ✅ **零门槛**:用户无需申请开发者资质
2. ✅ **快速可用**:部署后即可使用
3. ✅ **标准协议**:OAuth 2.0,与官方体验接近
4. ✅ **成本可控**:只需一个小号作为机器人
**风险控制:**
1. ⚠️ **小号策略**:明确告知用户使用小号,避免主号风险
2. ⚠️ **频率限制**:技能内建限流,避免触发风控
3. ⚠️ **降级设计**:接口失效时优雅降级,不崩溃
4. ⚠️ **免责声明**:明确说明非官方方案,用户自担风险
### 备选方案: 手动Cookie模式
**适用场景:**
- bili-auth 不可用时
- 用户不愿授权第三方服务
**实现方式:**
- 用户从浏览器复制Cookie
- 技能直接调用B站API
- 无需机器人账号
**风险:**
- Cookie泄露风险
- 有效期短,需频繁更新
- 同样存在封号风险
---
## 技术架构建议
### 推荐架构
```
用户 → OpenClaw 技能
↓
[授权模块]
↓
├─→ bili-auth 服务(自建或公共)
│ ↓
│ B站私信鉴权
│ ↓
└─← access_token
↓
[数据获取模块]
↓
B站公开API调用
↓
返回数据给OpenClaw
```
### MVP 功能范围(bili-auth 方案)
**Phase 1 - 基础功能**
- [ ] 用户授权(bili-auth 集成)
- [ ] 获取关注列表
- [ ] 获取UP主动态
- [ ] 视频搜索
**Phase 2 - 扩展功能**
- [ ] 视频详情获取
- [ ] 播放历史(如有权限)
- [ ] 收藏列表(如有权限)
**Phase 3 - 高级功能**
- [ ] 自动追更提醒
- [ ] 数据分析
---
## Go / No-Go 决策
### 结论: ✅ Go
**理由:**
1. bili-auth 方案技术可行
2. 风险可控(小号策略+频率限制)
3. 能满足核心需求(获取关注列表、追更)
4. 用户价值明确(解决无法官方API的问题)
**前提条件:**
1. 明确告知用户风险
2. 使用小号作为机器人
3. 实现频率限制
4. 准备降级方案
---
## 下一步行动
进入 **Phase 2 - 数据获取能力调研**,验证以下API是否可用:
- 用户信息获取
- 关注列表获取
- 视频搜索
- 视频详情
同时开始 **Phase 5 - 原型开发** 的准备工作。
+218
View File
@@ -0,0 +1,218 @@
# B站插件调研 - Phase 2 数据获取能力调研
**调研时间**: 2026-02-06
**调研人**: 阿里巴巴助手
**数据来源**: bili-auth 项目文档、B站Web API分析、社区经验
---
## 2.1 用户数据API能力
### ✅ 可获取数据
| 数据类型 | API端点 | 说明 | 是否需要登录 |
|----------|---------|------|-------------|
| **用户基础信息** | `api.bilibili.com/x/space/acc/info` | 用户名、头像、等级、签名 | 否 |
| **用户状态数** | `api.bilibili.com/x/relation/stat` | 关注数、粉丝数 | 否 |
| **关注列表** | `api.bilibili.com/x/relation/followings` | 用户的关注列表(分页)| 是(Cookie)|
| **粉丝列表** | `api.bilibili.com/x/relation/followers` | 用户的粉丝列表 | 是 |
| **UP主动态** | `api.bilibili.com/x/polymer/web-dynamic/v1/feed/space` | 用户发布的动态 | 否 |
| **投稿视频** | `api.bilibili.com/x/space/arc/search` | 用户上传的视频列表 | 否 |
### ❌ 无法获取(需特殊权限)
| 数据类型 | 说明 |
|----------|------|
| **观看历史** | 需登录态,且仅限本人 |
| **收藏列表** | 需登录态,且仅限本人 |
| **稍后再看** | 需登录态,且仅限本人 |
| **私信内容** | 隐私数据,无法获取 |
| **手机号/邮箱** | 敏感信息,无法获取 |
| **实名信息** | 隐私数据,无法获取 |
---
## 2.2 视频数据API能力
### ✅ 可获取数据
| 数据类型 | API端点 | 说明 |
|----------|---------|------|
| **视频详情** | `api.bilibili.com/x/web-interface/view` | 标题、描述、播放量、点赞数等 |
| **视频搜索** | `api.bilibili.com/x/web-interface/search/type` | 关键词搜索视频 |
| **热门视频** | `api.bilibili.com/x/web-interface/popular` | 全站热门榜单 |
| **排行榜** | `api.bilibili.com/x/web-interface/ranking/v2` | 分区排行榜 |
| **视频流** | `api.bilibili.com/x/web-interface/index/top` | 首页推荐 |
| **分P信息** | `api.bilibili.com/x/player/pagelist` | 多P视频的分集信息 |
| **弹幕** | `api.bilibili.com/x/v1/dm/list.so` | 视频弹幕(XML格式)|
| **评论** | `api.bilibili.com/x/v2/reply` | 视频评论列表 |
### 视频详情字段示例
```json
{
"bvid": "BV1xx411c7mD",
"title": "视频标题",
"desc": "视频描述",
"owner": {
"mid": 123456,
"name": "UP主名称"
},
"stat": {
"view": 100000, // 播放量
"like": 5000, // 点赞
"coin": 1000, // 投币
"favorite": 2000, // 收藏
"share": 500, // 分享
"reply": 300 // 评论
},
"duration": 600, // 时长(秒)
"pubdate": 1609459200 // 发布时间
}
```
---
## 2.3 互动数据API能力
### ✅ 可获取数据
| 数据类型 | 说明 | 限制 |
|----------|------|------|
| **评论列表** | 视频的评论及回复 | 公开数据 |
| **弹幕列表** | 视频的弹幕内容 | 公开数据,需解析XML |
| **点赞/投币/收藏数** | 视频的互动统计 | 公开数据 |
| **分享数** | 视频被分享次数 | 公开数据 |
### ❌ 无法获取
| 数据类型 | 说明 |
|----------|------|
| **用户是否点赞** | 需登录态 |
| **用户是否投币** | 需登录态 |
| **用户是否收藏** | 需登录态 |
| **用户播放进度** | 隐私数据 |
---
## 2.4 API限制与风控
### 频率限制
| 场景 | 限制 | 说明 |
|------|------|------|
| **未登录请求** | 约 100次/分钟 | IP级别限制 |
| **登录后请求** | 约 300次/分钟 | 账号级别限制 |
| **搜索接口** | 约 30次/分钟 | 较严格 |
| **评论接口** | 约 60次/分钟 | 防刷机制 |
### 反爬机制
| 机制 | 触发条件 | 应对策略 |
|------|----------|----------|
| **412 Precondition Failed** | 请求过快、UA异常 | 降低频率、使用正常UA |
| **-412 风控** | IP被封 | 更换IP、使用代理 |
| **验证码** | 异常行为 | 人工介入或暂停 |
| **-401 未登录** | Cookie失效 | 重新授权 |
### 请求头要求
```
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Referer: https://www.bilibili.com
Origin: https://www.bilibili.com
```
---
## 2.5 bili-auth 授权后可获取的数据范围
### 通过 bili-auth 获得的凭证
bili-auth 提供标准 OAuth 2.0 流程,返回:
- `access_token` - 访问令牌
- `refresh_token` - 刷新令牌(可选)
- `expires_in` - 过期时间
### 实际可用数据
bili-auth 本身**不提供额外的API能力**,它只是一个授权桥梁。获得 access_token 后,实际能调用的API仍然是 B站公开API。
**关键限制**:
- bili-auth 不直接提供 Cookie
- 某些 API 需要 SESSDATA 等 Cookie 字段
- 部分用户数据(如观看历史)需要完整的登录态
### 推荐的数据获取策略
```
方案A: bili-auth + 公开API(推荐)
- 使用 bili-auth 获取用户身份
- 调用公开 API 获取视频数据、UP主动态
- 无需处理 Cookie
方案B: bili-auth + Cookie 模拟(进阶)
- 从授权流程中提取 Cookie
- 获取更全面的用户数据
- 风险更高,需更谨慎
```
---
## 2.6 数据获取能力总结
### ✅ 可实现的 MVP 功能
| 功能 | 数据支持 | 可行性 |
|------|----------|--------|
| **关注UP主列表** | ✅ 关注列表 API | 高 |
| **UP主动态监控** | ✅ 空间动态 API | 高 |
| **新视频提醒** | ✅ 投稿列表 API | 高 |
| **视频搜索** | ✅ 搜索 API | 高 |
| **视频详情查看** | ✅ 视频详情 API | 高 |
| **热门/排行榜** | ✅ 排行榜 API | 高 |
### ⚠️ 受限的功能
| 功能 | 限制 | 替代方案 |
|------|------|----------|
| **观看历史同步** | 需完整登录态 | 仅支持公开数据 |
| **收藏夹同步** | 需完整登录态 | 仅支持公开收藏 |
| **一键三连** | 需登录态+风控 | 不支持 |
| **发送评论/弹幕** | 需登录态+风控 | 不支持 |
### ❌ 无法实现的功能
| 功能 | 原因 |
|------|------|
| **查看私信** | 隐私数据,无API |
| **修改个人资料** | 需完整登录态 |
| **投稿视频** | 需完整登录态+上传接口 |
| **直播操作** | 需直播开放平台权限 |
---
## 2.7 技术实现建议
### API 调用最佳实践
1. **缓存策略**
- 视频详情缓存 1小时
- 用户资料缓存 24小时
- 动态列表缓存 5分钟
2. **错误处理**
- 412 错误 → 自动降速 + 重试
- -401 错误 → 提示重新授权
- 网络错误 → 指数退避重试
3. **频率控制**
- 单账号请求 < 200次/分钟
- 添加随机延迟 100-500ms
- 使用队列管理请求
---
## 下一步行动
进入 **Phase 3 - 风险评估**(已完成大部分,需整理文档)和 **Phase 4 - 对标分析**
@@ -0,0 +1,337 @@
# 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站插件调研的补充材料*