YouTube Fetcher to Markdown Skill:一键把油管视频转 Obsidian 知识库笔记
YouTube 视频丢进去,拿回一份可直接塞进 Obsidian 知识库的 Markdown 笔记——含完整字幕、时间戳、频道信息、章节标记和 YAML 元数据。无需 API Key,支持多种 AI Coding Agent。这个叫 YouTube Fetcher to Markdown 的 Skill,用一条命令解决了看视频做笔记时最痛的三个问题:手动复制字幕容易漏、语言识别靠猜、原始文本没有来源出处。
功能与原则
核心能力是将 YouTube 视频转结构化 Markdown 笔记,配套完整元数据。
设计原则三条:
- 出处完整:YAML frontmatter 记录视频 URL、频道、上传日期、时长、标签、语言、采集时间,不遗漏任何溯源信息
- 知识库友好:Markdown 格式天然兼容 Obsidian、Logseq 等双链笔记工具,frontmatter 可被 Dataview 动态查询
- 零门槛:不要求 YouTube API Key,不依赖付费服务,纯本地脚本 + 可选的 yt-dlp 即可运行
认可度
- GitHub Star:196(截至 2026-08-15),Forks 15
- 最后更新:2026-08-14,属于近期活跃维护的仓库
- 支持平台:Claude Code、Codex、Cursor、Windsurf、Gemini CLI,遵循标准 SKILL.md 格式,跨 Agent 通用
- Trending 关联:在 GitHub Topics
claude-code-skill页面持续露出,HTML 语言分类下近期更新
链接
GitHub:https://github.com/JimmySadek/youtube-fetcher-to-markdown
原作者
JimmySadek(GitHub Username: JimmySadek),独立开发者,专注 Claude Code / Codex 生态的 Skill 开发,仓库包含多语言 README(英文为主,含中文翻译)。
介绍
大多数字幕提取工具只吐出原始文本,没有时间戳、没有语言标注、没有视频出处。这个 Skill 的出发点是「一份合格的存档笔记应该包含什么」——它给出的答案是:完整的前置元数据(频道、时长、发布日期、标签),带时间戳的字幕文本,视频描述和章节信息,以及可在 Obsidian 中被 Dataview 查询的 YAML frontmatter。
安装只需一条命令:
npx skills add JimmySadek/youtube-fetcher-to-markdown
脚本 fetch_transcript.py 相对 SKILL.md 定位执行,不依赖固定路径,因此在不同 Agent 环境里都能正常工作。重复检测机制默认保护已有笔记不被覆盖,需要时才用 --force 强制覆盖。
输出格式支持 Markdown(默认)、JSON 和 SRT,可通过 --output-dir 指定 Obsidian Vault 或任意本地目录,配合 YOUTUBE_FETCHER_DIR 环境变量设定持久默认路径。
特点
- 完整字幕抓取:支持手动字幕和自动字幕,可选时间轴叠加(
--timestamps),还可通过--lang指定字幕语言,真语言不匹配时诚实回退 - YAML frontmatter:包含 title、channel、url、video_id、fetched、source_project、language、caption_type、duration、upload_date、tags,Obsidian Dataview 可直接查询
- 重复保护:同目录存在同名笔记时默认跳过(exit code 3),避免误覆盖,只有人工确认后才用
--force覆盖 - 多格式输出:Markdown(含 YAML frontmatter + 表格 + 字幕正文)、JSON(原始结构)、SRT(字幕时间轴格式)
- URL 兜底:支持标准 watch URL、youtu.be 短链、/embed/、/shorts/、/live/、/v/ 格式,以及纯 11 位视频 ID,自动过滤仿冒域名
- 零 API Key:纯抓取 YouTube 字幕端点 + 可选 yt-dlp 补充元数据,无任何账号依赖
- 跨 Agent 兼容:遵循 SKILL.md 规范,Claude Code / Codex / Cursor / Windsurf / Gemini CLI 均可安装使用
使用方法
安装(Claude Code 为例):
npx skills add JimmySadek/youtube-fetcher-to-markdown
直接调用脚本(无需 Agent):
# 检查依赖是否齐全
python3 scripts/fetch_transcript.py --check-deps
# 抓取视频,保存到默认目录 ~/yt_transcripts/
python3 scripts/fetch_transcript.py "https://youtu.be/VIDEO_ID"
# 指定输出目录(Obsidian Vault)
python3 scripts/fetch_transcript.py "URL" --output-dir ~/Notes/MyVault
# 带上时间轴输出
python3 scripts/fetch_transcript.py "URL" --timestamps
# 列出可用字幕语言
python3 scripts/fetch_transcript.py "URL" --list
Agent 内调用:在 Claude Code 对话里直接说「帮我把这个 YouTube 视频转成笔记」,Skill 自动解析脚本并输出 Markdown 文件路径。
使用场景与人群
适用场景:
- 科研人员:把学术讲座 / 会议演讲视频存档,配合 Dataview 建立可搜索的视频知识库
- 终身学习者:系统整理 YouTube 教程、课程、演讲的字幕笔记,不漏章节和出处
- 内容创作者:提取演讲视频字幕用于内容二次创作或字幕文件生成
- 知识管理者:将 YouTube 频道的视频笔记统一归档到 Obsidian / Logseq 知识库
目标用户:使用 Claude Code / Codex 等 AI Coding Agent 的开发者,以及使用 Obsidian 等双链笔记工具的知识管理爱好者。
输入与输出案例
案例一:学术视频存档
输入(Claude Code 内):
帮我把这个视频转成 Obsidian 笔记:https://www.youtube.com/watch?v=hSTy_BInQs8,存到 ~/Notes/tutorials/
输出:
文件保存至 ~/Notes/tutorials/2026-03-04_obsidian-the-king-of-learning-tools_[hSTy_BInQs8].md,内容节选:
---
title: "Obsidian: The King of Learning Tools (FULL GUIDE + SETUP)"
channel: "Odysseas"
url: "https://www.youtube.com/watch?v=hSTy_BInQs8"
video_id: "hSTy_BInQs8"
fetched: "2026-03-04"
source_project: "tutorials"
language: "en"
caption_type: "manual"
duration: "36m 26s"
upload_date: "2024-04-24"
tags:
- yt-transcript
---
# Obsidian: The King of Learning Tools (FULL GUIDE + SETUP)
## Video Details
| Field | Value |
|----------|-------|
| URL | https://www.youtube.com/watch?v=hSTy_BInQs8 |
| Channel | Odysseas |
| Duration | 36m 26s |
| Uploaded | 2024-04-24 |
| Fetched | 2026-03-04 |
| Language | en (manual) |
## Transcript
[00:00] ...
[00:45] ...
案例二:检查可用字幕语言
输入:
python3 scripts/fetch_transcript.py "https://youtu.be/VIDEO_ID" --list
输出:列出该视频所有可用字幕语言代码及类型(manual / ASR),方便选择最准确版本。
GitHub: https://github.com/JimmySadek/youtube-fetcher-to-markdown
评论区
登录后可评论。