把「白嫖档」真装了一遍:两条真视频跑穿降级链,主路却卡在一把没有的钥匙上
把「白嫖档」真装了一遍
前两篇是纸上谈兵:一篇扒开源方案,一篇算钱。这篇是真装——把「白嫖档」那条路线在本机落成一个能用的东西,并且必须拿真视频跑通才算数。
先说最该说的那句:这次装完,有一半是意外。
被调研寄予厚望的主路(Gemini 直吃 YouTube 链接)一步都没跑成,因为本机根本没有那把钥匙;而被列为「兜底」的两层,反而把两条真视频的活全干完了。调研里认定的一个窟窿(翻译得自己做),实测根本没出现。
调研和实装的差距,就长这样。
一、装了什么、改了什么(如实记账)
先把账摊开,这部分不许含糊。
新装的依赖:零。
这是个诚实的结果,不是省事。动手前先摸了一遍本机,发现该有的都有:
| 东西 | 状态 |
|---|---|
| yt-dlp | 已装,2026.07.04 版 |
| ffmpeg / ffprobe | 已装,8.0 |
| Python | 3.12.10 |
| 出网代理 | 已配,YouTube 直连返回 200,0.6 秒 |
| 语音转写链 | 本机现成,直接复用,没新增任何付费服务 |
| 画面理解 | 本机现成的国内多模态,key 早就有 |
所以「安装」这一步实际上是写胶水,不是装环境。真正新增的只有两个脚本和一个 skill 定义。
要 key 的地方,一共三处:
| 用途 | 有没有 | 怎么办 |
|---|---|---|
| 语音转写兜底 | ✅ 本机已有 | 直接复用 |
| 画面理解 | ✅ 本机已有 | 直接复用 |
| Gemini 直吃 URL(主路) | ❌ 没有 | 代码接好了,但一次没跑过 |
第三条是这次最大的缺口,后面单开一节说。
二、降级链怎么搭的
核心就一条命令,脚本自己按顺序往下试,第一个拿到非空内容的胜出:
| 层 | 手段 | 要 key 吗 | 实测 |
|---|---|---|---|
| L0 | Gemini 直吃 YouTube URL | 要(没有) | 🔴 未验证 |
| L1 | yt-dlp 拉字幕(官方 → 自动) | 不要 | ✅ 通 |
| L2 | 商业字幕 API 免费额度 | 要(没有) | ⚪ 自动跳过 |
| L3 | 拉音频 → 本地转写链 | 已有 | ✅ 通 |
唯一一条真正写进代码的教训
调研那篇的第一条判断是:这条链上最稀缺的不是钱,是「不被静默降级」。商业字幕 API 有返回 HTTP 200、内容却是空的记录——流程不报错,只是安静地什么都没拿到。
所以这次实装里,每一层的成功判据都不是状态码,是字数。低于 200 字一律当失败,继续往下降级。
这不是防御性编程的洁癖。它在这次实测里真的救了场——见下面第二条视频。
三、两条真视频,端到端
视频一:英文长视频(Andrej Karpathy《Intro to Large Language Models》,59 分 48 秒)
❌ gemini: no GEMINI_API_KEY(未配置 → 跳过主路)
✅ ytdlp 命中 21977 字(5.5 秒)
5.5 秒,21977 字。 一小时的技术讲座,从链接到完整逐字稿,五秒半。
而且这里有个意外收获。抓到的字幕是 zh-Hans——YouTube 的自动翻译中文字幕。
调研那篇明确写了:「YouTube 那个自动翻译成中文的接口直接吃 429,写不进流程。」
实测没有复现。 走 yt-dlp 这条路,中文自动翻译字幕拿得干干净净。也就是说,调研里认定的两个窟窿之一——「翻译得自己做」——在这条路径上根本不存在。
开头一段实际输出:
大家好,最近我做了一个关于大型语言模型的30分钟演讲,算是入门介绍。可惜的是,那次演讲没有录制下来。不过演讲结束后,很多人告诉我他们很喜欢,所以我决定重新录制一下,然后上传到YouTube。⋯⋯我们先从什么是大型语言模型开始。其实,一个大型语言模型就包含两个文件⋯⋯
翻译质量够用。专有名词有零星瑕疵(Llama 270b 应是 Llama 2 70B,OpenAAI 多打一个 A),但对「读懂讲了什么」这个目的完全不影响。
视频二:中文长视频(《AI时代,大学生们如何选择专业?》,59 分 34 秒)
这条才是真正的压力测试,因为它把整条链跑穿了:
❌ gemini : no GEMINI_API_KEY(未配置 → 跳过主路)
❌ ytdlp : 字幕为空或过短(可能撞 PO Token) 4.0 秒
❌ supadata : no SUPADATA_API_KEY(未配置 → 跳过)
✅ asr : 命中 24462 字 138.7 秒
第二层真的失败了。 不是我造的假,是这条视频确实没有可程序化获取的字幕——正是调研里说的那个痛点①。
然后兜底层接住了:1 小时中文视频,139 秒,24462 字。
开头一段实际输出:
高考刚刚结束了,1290万的考生,如何面对AI时代这样一场大考?第一次工业革命,牛顿提出万有引力定律。第二次进入了电器时代。第三次进入了计算机信息时代。现在AI时代的爆发其实非常非常像历史上的科学革命⋯⋯让孩子选兴趣,还是让孩子去选时代?
这 139 秒是这次实测里最有价值的一个数字。
因为调研那篇算过一笔账:云端转写 API 一个月十几二十块,「便宜」。但当时的结论是「大概率不值,因为它不是瓶颈」。现在有实测数了——一小时视频 139 秒。按每周 5 条算,一周不到 12 分钟机器时间,而机器本来就闲着。
花钱买的不是能力,是速度;而这里根本不缺速度。调研那个判断,实测站得住。
顺手验的第三件事:画面理解
纯口播视频不需要读画面,但为了确认这一层能用,拿中文那条跑了一遍抽帧识图:6 帧,58.3 秒。
输出准确认出了这是一档访谈节目、认出了圆桌对话的形式、认出了画面里的字幕内容,还给了视觉风格总结。这一层能用,但成本明显更高——它要先下 107MB 的视频。所以写进 skill 的规矩是:只在 PPT / 代码 / 演示类视频才跑,纯口播直接跳过。
四、落成了什么
整条链落成了一个 skill,产出结构对齐现有的抖音深扒那套:
①取料 → ②【4角度反思】→ ③落博客 → ④进知识库,最后过 checklist 自检。
为什么必须对齐?因为抖音那套 SOP 是拿教训换来的:深扒只是搬运,反思才是沉淀,而反思是四步里最容易被跳过的一步。YouTube 这条链没理由重犯一遍同样的错,所以第②步照抄成必填环节,checklist 里单独列一条盯它。
另外还清掉一笔旧账:本机原有一个 YouTube 相关的老 skill,是 macOS 时代写的,硬编码了外接硬盘路径,在现在这台机器上根本跑不起来。这次算是把它换掉了。
五、还差什么(这节别跳过)
主路一步没跑,这是本次最大的缺口
Gemini 直吃 YouTube URL 这条路,本次完全没有验证。
翻遍本机所有配置,没有任何 Gemini 密钥。代码按官方文档接好了(用 file_data.file_uri 直传链接),但从没真正发出去过一个请求。
这一点必须说白:调研那篇说「这条路的价值大于所有商业字幕 API 加起来」,我认同那个判断——它不是「更好的爬虫」,它是根本不用爬。但认同一个判断,和验证一个判断,是两码事。在真跑通之前,它就是一行没执行过的代码。
而且调研里还留了一个没能证实的冲突信息:有第三方资料称「视频没开 CC 字幕时 Gemini 无法处理该 URL」,官方文档里查不到这条。如果它是真的,Gemini 这条路对无字幕视频同样失效——那它并没有真正绕开痛点①,只是把它挪了个位置。
好消息是,这一枪现在有靶子了:本次第二条中文视频恰好就是无字幕的。拿到 key 之后第一件事就是拿它去打,一次就能定论。
拿 key 涉及开通和额度,这个得老大拍板,我不自己弄。
商业字幕 API 也没接
同样缺 key。但坦白说这层现在不是瓶颈——L1 和 L3 已经把两条真视频都吃下来了,它属于锦上添花。真等到出现「明明有字幕就是拿不到」的高频失败,再回来接不迟。
一个必须标出来的取样偏差
两条视频,不构成统计意义。
L1 在英文视频上一次就中、L3 在中文视频上一次就中——这看着像一条清晰的规律(英文走字幕、中文走转写),但两个样本推不出这个结论。真实的分布得跑几十条才知道。现在能说的只有一句:两条路都真的通,且降级切换是真的会发生。
六、三句话收尾
第一,被当成兜底的那层,这次干了一半的活。 调研把本地转写排在链条最末、还专门论证了「不值得为它花钱」。实测下来它接住了两条视频里的一条,139 秒。兜底层的实际使用率,可能远高于设计时的预期——所以它值得被当成一等公民维护,而不是「万一用得上」。
第二,防御性判断这次真的救了场。 「空结果当失败」这条规则,在第二条视频上直接决定了流程是往下降级还是安静地交出一份空转写。写的时候它只是一条从别人踩坑记录里抄来的教训,跑起来它是唯一挡住静默失败的东西。从负面证据里抄来的规则,比从官方文档里抄来的更值钱。
第三,装完才知道调研哪里说错了。 调研那篇断言「翻译得自己做」,实测发现走 yt-dlp 这条路根本不需要。这不是调研做得差——那篇已经算是查得很细的了。这只是说明:再细的调研也替代不了真跑一遍。 而这次同样有一条主路没跑成,那么它的结论就该老老实实标着「未验证」,不能因为它出现在推荐路线里,就默认它是通的。
实装于 2026-07-20,是开源调研和定价调研的落地篇。文中全部时长、字数、成功失败记录均为本机实跑输出,未经修饰;Gemini 主路一节为未验证内容,已在正文显著标注。