用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/CNife/bilibili-transcript --skill bilibili-transcript命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | bilibili-transcript |
| disable-model-invocation | true |
| description | 把哔哩哔哩直播回放(单 P 视频)转成时间线回顾(Recap)。输入 BV 号或视频 URL。 |
把哔哩哔哩直播回放转成按时间线组织、按主题分组的 Recap Markdown。
领域语言见 CONTEXT.md;形态决策见 docs/adr/。
Video → Audio → Transcript → Recap
transcript.json + meta.json)Transcript 是缓存层:同一 BV 已生成则跳过 ASR。重跑 Recap 时步骤 2 直接缓存命中,不重下载、不重转录。
后端三选一,禁止静默替用户决定、禁止自动降级:
| backend | 含义 | 依赖 extra | 费用 |
|---|---|---|---|
cpu | 本地 SenseVoice,CPU | cpu | 免费 |
rocm | 本地 SenseVoice,ROCm GPU | rocm | 免费 |
aliyun | 云端 Paraformer-v2 | aliyun + .env 凭证 | 按量 |
解析顺序:
.bilibili-transcript.json 且含合法 backend → 采用之,向用户确认本次沿用(一句话即可)uv run bili-prepare --probe
根据 JSON(suggested、rocm_available、aliyun_ready 等)给出建议,询问用户选 cpu / rocm / aliyun。
3. 用户确认后写入项目根(该文件已 gitignore):
{
"backend": "cpu"
}
可用 shell 写入,例如:
printf '%s\n' '{"backend":"cpu"}' > .bilibili-transcript.json
rocm 但 GPU 不可用、选 aliyun 缺凭证)→ 硬失败;向用户解释错误,征得同意后改配置/参数再跑,不要擅自换后端重试。在项目根目录同步执行(不要后台):
uv run bili-prepare <BV号或URL> --backend <cpu|rocm|aliyun> [--force]
--backend;推荐显式传入以便日志与用户预期一致.cache/<BV>/:transcript.json(segments [{start, end, text}],秒)、meta.json(元信息 + ASR 统计)--force 重下载并重跑 ASR完成标准:exit 0,transcript.json 非空(≥1 段),meta.json 可读且含 backend、duration_s、title。
读 .cache/<BV>/transcript.json 的全部 segments(整段喂入,不做 map-reduce)与 meta.json(title、uploader、duration_s)。
超长分支:转录文本超出上下文窗口时,按时间顺序切块,每块按同一契约归纳,再按时间合并;任何块不得整块丢弃。
Recap Markdown 契约:
# {视频标题}## {主题} (start-end),时间戳 MM:SS,时间戳只出现在段级标题,条目内不加示例:
# 老木匠直播20260808(弹幕版)
## 开场闲聊 (00:00-05:00)
开场打招呼说早上变冷了,和弹幕聊了会儿天气,气氛轻松。
## 木工话题 (05:00-30:00)
开始讲今天的木工活:准备做一张桌子,先交代木料选择和尺寸规划。
完成标准(全部可检查):
duration_s - 60,尾段不得遗漏MM:SS-MM:SS 区间,与段内内容的时间范围一致;段内正文无时间戳写 recaps/{标题}.md(recaps/ 在项目根,不存在则创建;标题取 meta.json 的 title,把 /\:*?"<>| 替换为 _,去掉首尾空白)。
告知用户:Recap 路径 + ASR 统计(backend、耗时、成本,取自 meta.json)。