宝玉xp 26-03-22 12:31
微博认证:前微软Asp.Net最有价值专家 2025微博年度新知博主 科技博主

发布一个新的 Skill:baoyu-youtube-transcript
输入 YouTube URL,直接抓取视频字幕,生成带章节、发言人和封面图的文档,不需要任何 API Key。

【怎么用】
选择这个 Skill,把 YouTube 链接丢进去就行。支持完整链接、短链接、嵌入链接、Shorts 链接,甚至直接输入视频 ID 都可以。

默认输出带时间戳的 Markdown 格式,也可以导出 SRT 字幕文件。支持多语言,可以指定优先语言,也可以翻译成其他语言。

第一次抓取后会自动缓存原始数据,之后换格式、换参数都不用重新请求,秒出结果。

【工作原理】

底层调用的是 YouTube 的 InnerTube API,这是 YouTube 内部用来获取字幕数据的接口,公开可用但没有官方文档。好处是不需要 Google API Key,不需要 OAuth 认证,脚本直接发请求就能拿到字幕数据。

拿到原始字幕后,脚本会做一次智能断句处理:按句末标点(句号、问号、感叹号等)切分,跨字幕片段合并成完整句子,时间戳按字符长度等比分配,对中日韩文字做了专门适配。这样输出的文本是自然的句子,不是 YouTube 那种碎片化的逐行字幕。

【章节分割】
如果视频描述里有章节时间戳(比如 "0:00 Introduction"),脚本会自动解析,按章节把字幕分段,生成带目录的 Markdown。没有章节信息的视频,就按段落分组输出。

【说话人识别】
这是最有意思的部分。YouTube 字幕本身不带说话人信息,所以识别说话人需要 AI 后处理。

流程是这样的:先用 --speakers 参数抓取原始字幕,脚本会把视频元数据(标题、频道名、简介)和 SRT 格式的原始字幕一起输出到一个 Markdown 文件里。然后启动一个 AI 子代理(用 Claude Sonnet,够用且省成本),按预设的 Prompt 模板处理这个文件。

AI 识别说话人的逻辑分三层优先级:首先从元数据推断,视频标题通常包含嘉宾名字,频道名就是主持人;其次从对话内容判断,比如自我介绍、互相称呼;都不行就用通用标签(Speaker 1、Host 之类),保持全文一致。如果后面对话中才出现名字,会回溯更新前面所有标签。

处理完的输出是带说话人标签的分段对话,长独白会被切成 2-4 句一段,每段末尾带时间范围。

【缓存机制】
第一次运行会缓存四样东西:视频元数据(meta.json)、原始字幕片段(transcript-raw.json)、断句后的字幕(transcript-sentences.json)、视频封面图(cover.jpg)。之后不管切换格式还是重新生成,都直接用缓存,不再请求网络。加 --refresh 参数可以强制刷新。

安装命令:
$ npx skills add jimliu/baoyu-skills --skill baoyu-youtube-transcript

项目地址:http://t.cn/AXqwLIOK

发布于 美国