整理视频为笔记(video-note)
整理视频为笔记的维护记录。下面「翻译之外的改动」记的是 2026-10-17 拆分之前那版,拆分本身见最后一节。
- 上游:Rimagination/bili-note1,作者署名 Bili Note contributors,MIT,许可证原文不随附。上游是给 Codex 写的,命令都是 Windows PowerShell,和作者的另一个 skill DyNote(抖音笔记)共用 Qwen3-ASR 环境
- commit:钉在
08fe812(2026-09-22),2026-10-16 读时仍是最新 - 跳过:
agents/openai.yaml:Codex 的界面元数据(显示名、一句话简介、默认 prompt),不是 Claude Code 插件里的 agentREADME.md、.gitignore、assets/bili-note-logo.png(README 用的 logo)、tests/下 9 个测试- 网页 AI 字幕整条路线:
fetch_browser_ai_subtitles.py、edge_cdp.py。它让已登录 B站的浏览器页面自己请求/x/player/wbi/v2拿 AI 字幕地址,要带图形界面的浏览器开远程调试端口,Chrome 版还依赖外部的 web-access skill;Agent 跑在无图形界面的服务器上用不上,没字幕直接转写 - 本地 ASR:
setup_qwen_asr_env.py、run_qwen_asr.py和extract_bilibili.py里 Qwen3-ASR、faster-whisper、openai-whisper、FunASR 四个后端;yt-dlp 和 B站playurl接口两条下载路线
- 翻译之外的改动:
SKILL.md改名index.md;name改成「视频笔记」,description由英文改写成什么时候用、做什么;开头补一段这个 skill 解决什么问题,页尾加维护记录的链接- 正文原本就是中文,按新路线重排:PowerShell 命令改成 bash,
$env:USERPROFILE\.codex\skills\bili-note改成入口页一句话指向整包video-note.tar.gz,调用不到 2 次就远程逐个取;命令一律写相对 skill 根的scripts/xxx.py;「B站字幕注意事项」「B站图文注意事项」两节合成「各平台的坑」的 B站一节;Chrome / Edge 两条网页字幕的命令和--browser-target等参数删掉 - 加一条:预检显示没有公开字幕时直接转写,下载狗额度和转写费用事后报,不停下来问(2026-10-17 改;原先是和关键帧一起问用户)
- 下载视频改走 解析分享链接:
extract_bilibili.py按?p=N解析分P,核对直链里的cid,解析失败重试 3 次;视频缓存在工作目录的video/,转写和extract_video_keyframes.py共用,同一个分P只扣一次额度。关键帧脚本删掉--video-source、--cookies-from-browser - 抽关键帧的 ffmpeg 把
-ss挪到-i前面:上游从播放接口拿 480p,从片头解码到每个时间点还不算慢;下载狗给的是 1080p,50 分钟的课抽 12 帧要 21 分钟,改完 1.6 秒,画面逐像素一样 - 转写改走 转录音频:ffmpeg 抽 16 kHz 单声道 32 kbps mp3,默认 10 分钟一块,请求带
verbose_json、词级时间戳和diarization;单人讲话一块只回一个 segment,所以按词级时间戳和标点重新切成字幕行。参数换成--transcribe、--asr-language、--asr-chunk-seconds,原来的--download-audio和--asr-*、--qwen-*、--whisper-*都删掉 - 转写结果另写
transcript_manifest.json,archive_materials.py优先读它:上游只记在run_summary.json里,总入口重跑提取那一步会把它覆盖成空,转写就归档不进去 run_video_note.py加转写阶段:--transcribe只在没有公开字幕时转,排在轻量预检之前,预检的字幕密度把转写字数算进去;--subtitle-mode去掉browsercheck_environment.py重写能力判断:只查 Python、脚本齐不齐、B站公开接口、ffmpeg 和 ffprobe、MY_API_KEY有没有设置(不打印值)references/bilibili-api-notes.md由英文译成中文;「音频」「本地转写」两节换成「音视频」「转写」,写新路线的接口要点;「字幕」一节补上ai-zh地址为空不等于没有字幕- 2026-10-17 从 B站专用改成通用的视频笔记:目录
bili-note改video-note,run_bili_note.py、archive_bili_materials.py、score_bili_note.py改成run_video_note.py、archive_materials.py、score_note.py。取材分两条,B站链接照旧,其余分享链接走新增的extract_share_link.py:下载狗给标题、简介和点赞、评论、收藏数,解析完马上下载(抖音直链一小时左右过期),ffprobe 读时长,按一个分P写成和 B站相同的工作目录,后面的流程不分平台 - 分享链接解析、下载、抽音频、转写从
extract_bilibili.py挪进agent_io.py,两条取材共用;解析成功一次扣一次额度,所以只在失败时重试 - 关键帧脚本不再调 B站接口,改读工作目录的
metadata.json;--force只重抽帧、不重下视频,分享链接重下要再扣额度;竖屏视频抽 540×960 的帧,联系图格子也竖排,横屏照旧 960×540 - 预算:没有播放量时互动倍率取 1.0,点赞等计数照记;不到 3 分钟的视频记为
clip,下限从 1200 字降到 400 字、按关键帧数加字,入口页配一套短视频的精简结构;既没字幕也没转写的视频画面依赖至少记 medium - 归档修两处:B站公开字幕清单是列表,路径直接写在每一项上、不在
files里,原来一条都归档不进去,最后在manifest.get上报错退出;公开字幕清单和无字幕的视频都不带时长,预算按 0 分钟算,改从metadata.json的分P时长补 b23.tv短链不带 BV 号,原来报找不到 BVID 退出,现在交给通用取材
2026-10-17 拆成三段
用户觉得 agent-io 对各家链接怎么取讲不清,全被包在视频笔记里,定下「视频笔记拆成下载、分析、输出几个环节,agent-io 提供底层接口和稍微封装的中级脚本,视频笔记改名整理视频为笔记」。
- 下载并进 agent-io 的解析分享链接:
extract_bilibili.py、extract_bilibili_opus.py、extract_share_link.py和agent_io.py里解析、下载的部分并进那边的脚本;references/bilibili-api-notes.md改写成那边的 B 站页,旧地址加了跳转 - 分析并进 agent-io 的阅读视频:
extract_video_keyframes.py和agent_io.py里转写的部分变成video_read.py,见它的维护记录 - 输出段留在这里:1347 行的
archive_materials.py换成约 300 行的prepare_note.py。原来大半代码在适配旧工作目录的各种清单;新文件夹各平台一个形状,读起来简单得多- 照搬:篇幅预算公式、互动质量倍率(0.85–1.4,没有播放量取 1.0)、画面依赖判断、字幕证据 550 字或 14 行一块、
P01@时:分:秒-时:分:秒和KF-P01-03、C<rpid>的编号、学习型 13 节结构和短视频精简结构 - 改了:图文证据
O<id>-E001改成A-001,新加图片IMG-01;不足 1500 字的短图文另有一条公式,原来按长文章算,456 字的小红书帖子要写 900 字 - 删了:
update_note_budget_section.py(把预算写回笔记正文,已发布的笔记没用上);check_environment.py(agent-io 的脚本缺 ffmpeg 或 key 会直接报);run_video_note.py的「先预检、问要不要开关键帧、再重跑」(用户定下花钱不打断,分析段默认就抽帧);把材料复制进另一个归档目录(下载段的文件夹本身就是归档)
- 照搬:篇幅预算公式、互动质量倍率(0.85–1.4,没有播放量取 1.0)、画面依赖判断、字幕证据 550 字或 14 行一块、
- 证据脚注:原来正文写
[1][2]、单列一节「证据脚注」链到归档目录;和写作规范的[^名]脚注、已发布笔记的写法打架,统一成[^名],脚注写证据 ID 加原视频时间点,全文在材料文件夹的note/evidence.md - 端到端验收后改的:新 agent 只拿「把这个视频整理成学习笔记,按本wiki的方法来」和那条抖音教程,三段走通,笔记打分
ok,证据 14 条全用上。它报的问题对应改了:打分不再把 frontmatter、HTML 标签、图片属性算进字数,用了写作规范推荐的并排图就超预算的问题没了;证据写成区间也算区间里的每一条;口播里有「指令」「提示词」「描述词」「这段」这类指向画面的词,画面依赖至少判「中」,原来这条 46 秒教程判成「低」;画面上的提示词、命令允许照原文抄;写明笔记放哪、visual_review.md怎么用、抖音没有按秒跳转的链接;转写的坑补上平台名听错(「即梦」转成「小梦」)。它看补抽的帧发现已发布那篇笔记的两处事实写错(标题不是等花开完才浮现、16 积分不是一张图的价),核对关键帧后改了
-
Rimagination/bili-note @ 08fe812,2026-10-16 读。 ↩