---
name: bilibili-auto-transcript
version: "3.1.0"
description: "B站视频转录+收藏夹自动扫描二合一。手动发链接转写文本（三级降级：CC字幕→AI字幕→Whisper），或定时扫描收藏夹自动转录+AI摘要+通知。基于 @54lynnn/bilibili-transcript。"
homepage: https://clawhub.ai/54lynnn/bilibili-transcript
metadata:
  {
    "openclaw":
      {
        "emoji": "📼",
        "requires": { "bins": ["yt-dlp", "ffmpeg", "curl"] },
        "install":
          [
            {
              "id": "pip",
              "kind": "pipx",
              "package": "openai-whisper",
              "bins": ["whisper"],
              "label": "Install Whisper (STT)",
            },
          ],
      },
  }
---

# 📼 Bilibili 视频转录 & 收藏夹自动扫描

**双模式技能** — 可以手动转录单个视频，也可以定时扫描收藏夹自动处理。

## 模式一：手动转录

当你给我一个 B站链接时，我会自动执行转录。

**用法：**
```bash
bash scripts/bilibili_transcript.sh "https://www.bilibili.com/video/BVxxxxx/"
```

**转录优先级（自动降级）：**
1. ✅ **人工CC字幕**（zh-CN, zh-TW, en, ja 等）→ 100%准确，秒出
2. ✅ **AI字幕**（ai-zh, ai-en, ai-ja 等9种语言）→ 85-90%准确，秒出
3. ✅ **Whisper medium** 语音转文字 → ~95%准确，需GPU

**输出：** 结构化 TXT 文件，含元数据 + 摘要占位符 + 完整原文。我会阅读全文后写结构化摘要。

---

## 模式二：收藏夹自动扫描

定时检查 B站收藏夹，发现新视频后自动完成「转录 → AI 摘要 → 保存 → 通知」全流程。

### 工作流

```
定时触发 → 扫描收藏夹API → 对比已处理列表
  → 发现新视频 → 转录（三级降级）
  → AI读全文、写结构化摘要
  → 覆盖TXT中的摘要占位符
  → 记录avid到已处理列表
  → 通知用户（标题/作者/时长/转录来源/摘要/TXT文件）
```

### 首次设置

#### 1. 创建收藏夹
B站新建一个收藏夹，设为**公开**。

#### 2. 获取收藏夹ID
URL 中 `fid=` 后面的数字。

#### 3. 修改扫描脚本
编辑 `scripts/bilibili_scanner.py`，改 `FAV_MEDIA_ID` 为你的收藏夹ID。

#### 4. Chromium 登录B站（获取Cookie）
```bash
chromium-browser &
# 打开 bilibili.com 并登录
```

#### 5. 检查依赖
```bash
yt-dlp --version    # 必需
ffmpeg -version     # 必需
whisper --help      # 可选，无字幕视频降级用
opencc --version    # 可选，繁转简
```

#### 6. 配置定时任务（推荐每6小时）
```bash
openclaw cron add \
  --name bilibili-scan \
  --every 21600000 \
  --message "运行扫描脚本：bash scripts/bilibili_scanner.py"
```

### 扫描脚本输出格式

```
COLLECTION_TOTAL:20
PROCESSED:15
NEW_VIDEOS:3
  - BVID:BVxxxxx
    TITLE:视频标题
    DURATION:12分34秒
    UPPER:UP主名
```

无新视频时输出：
```
ALL_CAUGHT_UP
```

---

## 公共部分

### 转录脚本
`scripts/bilibili_transcript.sh` — 两个模式共享同一个引擎。

### 依赖
- `yt-dlp` — 视频下载、字幕获取
- `ffmpeg` — 音频处理（Whisper 模式）
- `whisper` (openai-whisper) — 语音转文字（降级）
- `opencc` — 繁转简（可选）
- `chromium-browser` — Cookie 支持（B站AI字幕）

### 输出文件格式
```
================================================================================
B站视频转录文档
================================================================================

📹 视频标题：xxx
🔗 B站链接：xxx
👤 作者：xxx
📅 发布时间：xxx
⏱️  视频时长：xxx
📝 转录来源：xxx
⏰ 转录时间：xxx

================================================================================
第一部分：视频摘要（AI生成）
================================================================================

【结构化摘要 — 我会阅读全文后替换此占位符】

================================================================================
第二部分：完整原文
================================================================================

（完整转录内容...）

================================================================================
文档结束
================================================================================
```

### 配置参数

| 参数 | 默认值 | 说明 |
|------|--------|------|
| 收藏夹ID | （需设置） | URL `fid=` 的数字 |
| 输出目录 | `~/workspace/Bilibili auto-transcript/` | TXT存放路径 |
| 已处理记录 | `~/.openclaw/workspace/.auto-transcript-state/processed_videos.txt` | 去重文件（每行一个avid） |
| 扫描间隔 | 每6小时 | 自动模式定时 |

### B站收藏夹API
```
GET https://api.bilibili.com/x/v3/fav/resource/list?media_id={ID}&ps=20&pn=1
```
- `ps` 最大20（脚本已设 ps=20）
- 公开收藏夹无需Cookie

### avid vs bvid
- `id` = avid（数字）→ 去重追踪用
- `bvid` / `bv_id` = BV号 → 构建转录URL用

### 注意事项
1. **同文件覆盖** — 同一BV号多次转录覆盖旧文件，已处理列表防重复
2. **需要Cookie** — 通过 Chromium cookie 获取 AI 字幕，需先B站登录
3. **Whisper 耗时** — medium模型约耗时视频时长的30-50%
4. **B站API ps上限20** — 超过需分页
5. **摘要由AI生成** — 我会阅读全文后替换文件中的占位符
