YouTube 采集
安装方法
- 先问使用者用的是什么 AI 工具,选项按这个顺序列:1. WorkBuddy 2. Claude Code 3. Codex 4. 其他(用户直接说工具名),回答记作 X
- 只安装给 X,不安装或链接其他任何工具:
-
X 是 WorkBuddy:把本技能下载后放进
~/.workbuddy/skills/(WorkBuddy 的技能目录;skills CLI 不支持 WorkBuddy,由你直接放置) -
X 是其他工具:
npx -y --registry=https://registry.npmmirror.com skills add https://modelscope.cn/skills/sunny31221/youtube-collect-buheliwa -a X -y(不带
-a会安装给本机所有检测到的工具,禁止;--registry为 npmmirror 镜像,保证国内不翻墙也能拉到 CLI) -
X 不在上述范围时,按该工具自身的技能机制安装,装完确认 X 能识别本技能即可
-
- 装完后询问是否现在使用本技能
依赖什么
- yt-dlp:取字幕、视频信息、封面图的命令行工具
- Python 3:yt-dlp 的运行环境
装不上 / 跑不通怎么办:
| 情况 | 处理 |
|---|---|
| 没有 yt-dlp | 按下方「去哪装」装一次 |
| 报错 Sign in to confirm you're not a bot | 命令加 --cookies-from-browser chrome(见流程第 0 步) |
| yt-dlp 装了但取不到字幕 | 该视频可能关闭了字幕。跳过字幕步骤,在 02_内容信息.md 里写明「无字幕」,仅采集标题与数据 |
| 版本太旧报错 | 升级 yt-dlp(YouTube 接口变动频繁,旧版常失效) |
去哪装(推荐降级链:国际源失败 → 国内镜像):
# macOS
brew install yt-dlp # 国际源
pip3 install -U yt-dlp # 备选(官方 PyPI)
# 国内镜像(上面两条都慢或失败时)
pip3 install -U yt-dlp -i https://pypi.tuna.tsinghua.edu.cn/simple # 清华
pip3 install -U yt-dlp -i https://mirrors.aliyun.com/pypi/simple/ # 阿里云
# Windows
winget install yt-dlp
pip install -U yt-dlp -i https://pypi.tuna.tsinghua.edu.cn/simple
装完验证:
yt-dlp --version
触发场景
- "采集这个 YouTube 视频" + 链接
- "YouTube 入库" / "把这条 YouTube 链接存进对标素材"
- 采集编排器识别到 youtube.com / youtu.be 链接后分流到本技能
输出位置
AI第二大脑/规律研究/对标内容采集/YouTube/
└── NNN_标题_频道_视频ID/
├── 01_原始素材/
│ └── 01-封面图/
│ └── cover.jpg
├── 02_内容信息.md
├── 04_文案结构化梳理.md
└── 05_视频脚本.md
- 编号:取目标目录已有最大编号 +1(三位补零),不假设从 001 开始
- 文件夹名:
编号_标题_频道_视频ID,标题与频道名里的/换成全角「/」 - 去重:同一视频 ID 已存在时跳过,不重复建文件夹
少花调用次数
有些链路按请求次数计费(第三方兼容接口的每日额度多是这样),不按 token。一次模型回复里发多个工具调用,只算 1 次请求;串行一次发一个,就一次一个数。同一个任务排得好坏,能差三倍次数。
- 能串的串成一条命令:
python3 a.py && python3 b.py,中间结果用$(...)接住。互不依赖的命令别分成两次 Bash。 - 无依赖的一轮发完:抓取、下载、读文件这些互不依赖的动作,放在同一条回复里一起发。
- 脚本能批量就别逐条调:先看脚本的
--help,支持一次处理多条或整个目录的,就一次跑完。 - 输出要过滤:脚本输出配
head/grep再看。全量输出进上下文既拖速度,也容易把关键信息淹掉。 - 图片只存档,不进模型:下载下来的封面和正文图直接落位,不要用 Read 之类的读图能力打开看。图片进 API 会以 base64 文本计费,一张原图约十万 token,此后每轮请求都带着重发。确实要看图时,先跑
scripts/shrink.py压小,一次最多两张。
流程
0. 带上浏览器 cookies
YouTube 现在会把无 cookies 的请求挡成机器人(报错 Sign in to confirm you're not a bot)。所有 yt-dlp 命令都加:
--cookies-from-browser chrome
换成 edge / firefox / safari 也行,用你本机登录过 YouTube 的那个浏览器。取不到 cookies 时先让使用者在那个浏览器里打开一次 YouTube 并登录。
1. 读视频信息
yt-dlp --cookies-from-browser chrome --skip-download --no-warnings --print "%(id)s|%(title)s|%(channel)s|%(view_count)s|%(duration_string)s|%(upload_date)s" "<链接>"
2. 取字幕
先看这个视频有哪些字幕:
yt-dlp --cookies-from-browser chrome --list-subs --skip-download "<链接>"
按优先级选:中文人工字幕 → 中文自动字幕 → 英文人工字幕 → 英文自动字幕。
# 中文字幕(zh-Hans / zh-CN / zh 按上一步列出的实际语言代码填)
yt-dlp --cookies-from-browser chrome --skip-download --write-auto-subs --write-subs \
--sub-langs "zh-Hans,zh-CN,zh" --sub-format "vtt" \
-o "<素材文件夹>/05_视频脚本.%(ext)s" "<链接>"
# 中文都没有时退回英文
yt-dlp --cookies-from-browser chrome --skip-download --write-auto-subs --write-subs \
--sub-langs "en.*" --sub-format "vtt" \
-o "<素材文件夹>/05_视频脚本.%(ext)s" "<链接>"
VTT 里带时间轴、 和自动字幕的滚动重复行。转逐字稿时去掉这些:删掉 --> 时间轴行、去掉 HTML 标签、把 换成空格、丢掉与前一行完全相同的行。剩下的文字照抄,不改写、不顺句、不补标点——它是素材原文。
字幕是繁体(语言代码 zh-Hant,或内容为繁体)时,落 05 前转成简体(opencc 的 t2s,或让 AI 转):只转字形,不改用词。2026-09-15 实测:YouTube 中文自动字幕常只有 zh-Hant 一档,抓取时优先带上它。
字幕是自动生成时可能有误转词,在 05_视频脚本.md 里注明「自动字幕,可能含误转词」。
3. 建素材文件夹
先跑脚本把文件夹建出来(编号、去重、目录结构由脚本决定,不让 AI 数):
python3 "<本技能目录>/scripts/create_note_folder.py" \
--platform YouTube --type 视频 \
--id <视频ID> --title "<标题>" --author "<频道名>" \
--published <YYYY-MM-DD> --url "<链接>"
返回 JSON 里的 folder 就是素材文件夹路径,后面所有文件都写进它。
4. 下载封面
yt-dlp --cookies-from-browser chrome --skip-download --write-thumbnail --convert-thumbnails jpg \
-o "<素材文件夹>/01_原始素材/01-封面图/cover.%(ext)s" "<链接>"
4. 取评论(可选,要就要全)
yt-dlp --cookies-from-browser chrome --write-comments --skip-download \
--extractor-args "youtube:comment_sort=top;max_comments=100,all,120" \
-o "<临时目录>/comments" "<链接>"
产物是 comments.info.json,comments 字段里每条含 author(含 @ 前缀)/text/like_count。写进 02 的「评论」章节:按点赞取前 20 条(作者 / 内容 / 点赞数),略去上传者自评(author_is_uploader 为 true 的多是置顶广告或自荐)。抓不到评论(视频关闭评论等)就写明原因。
5. 写 02_内容信息.md
照 assets/内容信息模板.md 写。固定结构(简版,完整版看模板):
# <标题>
| 字段 | 内容 |
|------|------|
| 编号 | <三位编号> |
| 视频ID | <id> |
| 来源 | YouTube |
| 频道 | <频道名> |
| 播放量 | <数字>(<采集日期> 实测) |
| 点赞数 | <数字> |
| 评论数 | <数字> |
| 频道粉丝数 | <数字> |
| 时长 | <时长> |
| 发布时间 | <YYYY-MM-DD> |
| 原文链接 | <链接> |
| 入库时间 | <YYYY-MM-DD> |
---
## 视频简介
<简介原文;没有就写「无」>
## 标签
<yt-dlp 元信息里的 tags,逗号分隔;没有就写「无」>
## 评论
<按点赞取高赞前 20 条:作者 / 内容 / 点赞数;略去上传者自评;抓不到就写明原因>
## 章节
<视频自带章节,一行一条;没有就写「无」>
播放量必须来自本次实测,不沿用别处看到的数字。点赞数 / 评论数 / 频道粉丝数取自 yt-dlp 元信息里的 like_count / comment_count / channel_follower_count;取不到就写「未获取」。
6. 写 05_视频脚本.md
照 assets/视频脚本模板.md 写(统一标准,与小红书 / 视频号同一套)。固定结构:
# 视频脚本(<编号> · <标题>)
> 转录说明:<官方字幕 / 自动字幕(语言)> 转写,<日期>;自动字幕可能含误转词;繁体已转简(只转字形)。
> 原文照抄为主,修正处已在文末「修正说明」逐条列出。
---
## 一、<分段小标题:开场钩子 / 背景介绍 / 第一步… / 观点收尾>
<该段脚本原文照抄——最大化还原,不提炼、不压缩、不概括>
---
## 修正说明
| 原转写 | 修正为 | 说明 |
|---|---|---|
要点:05 是原文存档——分段小标题 + 原文照抄,中心思想/核心论点那类梳理归 04 管,不要写进 05。
7. 写结构化梳理
05_视频脚本.md 是原始素材,还要再出一份便于下游提炼规律的梳理件 04_文案结构化梳理.md(模板见 assets/文案结构化梳理模板.md):
# 文案结构化梳理
> 来源:<编号> <标题>([[05_视频脚本.md]])
> 梳理日期:<YYYY-MM-DD>
> 说明:本文件做结构化梳理:中心思想、核心论点、逐段梳理。总结保留原文的具体论据、数据与比喻——**写到「不读原文也能知道这段说了什么、能吸收这段的知识」**;完整原文见 05 号文件,本文件只做概括与归类,不改写、不新增原文没有的东西。
---
## 一、中心思想
<一段话说清这条视频主张什么:讲了什么、结论是什么、对谁说的。不评价、不引申>
一句话概括:**<原文里最有代表性的一句总结;原文没有就自己凝练一句,不加引号>**
## 二、核心论点(N 条)
1. **<论点>**:<展开,保留原文的数据、例子、比喻>
2. **<论点>**:<…>
## 三、逐段梳理
### <原文小标题(原文没有就按自然结构拟一个)>
**一句话总结**:<保留该段的核心主张 + 具体论据、数据、比喻、例子,写到不读原文也能知道这段说了什么;不整段照抄>
#### <原文小节里的子问题(有就保留,没有可省略这一层)>
**一句话总结**:<…>
### <下一段小标题>
**一句话总结**:<…>
## 四、结构规律提炼
<3-5 条,讲这条视频的骨架怎么搭的:几段式、每段承担什么、开头与结尾各做什么>
要点:梳理件里的每一句都要能追回 05 的原文;不新增视频里没有的数据或例子。
8. 完成后报告
报告:标题、频道、播放量、字幕来源(官方 / 自动 / 无)、落盘路径。有跳过或失败的项目一并说明。
采集完实际长这样
2026-09-12 实测两条,两种情形都遇到过:
有字幕的(Kevin Stratvert《Claude Skills Explained》,11:00,自动英文字幕):
对标内容采集/YouTube/
└── 002_Claude Skills Explained教程_Kevin Stratvert_wO8EboopboU/
├── 01_原始素材/01-封面图/cover.jpg
├── 02_内容信息.md 元信息表 + 视频简介 + 章节
├── 04_文案结构化梳理.md 中心思想 + 核心论点 + 逐段梳理 + 结构规律
└── 05_视频脚本.md 核心观点 + 全文整理 + 文末逐字稿存档(214 行 / 约 1 万字)
逐字稿的头部:
# 视频脚本(结构化整理):Claude Skills Explained - Step-by-Step Tutorial for Beginners
> 来源:YouTube Kevin Stratvert(播放 364,436);转录:自动字幕,可能含误转词
---
## 一、核心观点
...
## 三、提取的文字(转录原文存档,逐句原样)
Move over ChatGPT, Claude just released Agent
Skills. That means you can add custom abilities
to Claude, Claude Desktop, and Claude Code.
没有字幕的(Nate Herk《I Deleted All My Claude Skills》,11:56,人工字幕和自动字幕都没有):
只落 01_原始素材/01-封面图/cover.jpg + 02_内容信息.md,05_视频脚本.md 不建。02_内容信息.md 里写明:
## 视频简介
<简介原文>
## 章节
无(该视频未提供字幕,无法转录逐字稿)
不要用简介冒充逐字稿,也不要用 AI 摘要顶替转写 —— 没有就是没有,写明比编出来有用。
约定(每条带来由与适用范围)
-
逐字稿照抄:字幕原文不改写、不润色、不补标点 适用与边界:字幕原文照抄,不因为「读着别扭」就改字。不适用:创作者自己写的正文——那是写作规范管的事,不是采集这一环。
-
数据实测:播放量来自本次
yt-dlp输出,不估、不沿用 适用与边界:管播放量、时长这类本次能实测到的数。不适用:平台没提供的数(如完播率)——拿不到就写「未获取」,不估。 -
无字幕就说无字幕:不用 AI 摘要冒充转写,不用简介冒充逐字稿 适用与边界:没有例外——字幕拿不到就如实写,不许用 AI 摘要或视频简介顶替逐字稿。
-
去重靠视频 ID:同一视频不重复入库 适用与边界:管同一条视频重复丢进清单时。不适用:同一频道不同视频、同一视频的搬运版——视频 ID 不同,按新素材处理。
不做什么
- 不识别链接属于哪个平台——那是编排器的事
- 不建目录、不提规律、不沉淀卡片
- 不跑归档 CSV——「已入库 ✓」标记由本技能写,归档由编排器批量采完后统一跑
- 无字幕就不编内容——写明「无字幕」,不拿 AI 摘要顶替逐字稿
Resources
- 内容信息模板:assets/内容信息模板.md
- 视频脚本模板:assets/视频脚本模板.md
Scan to join WeChat group