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

评论区

0 条评论

登录后可评论。

Skill超级捕获手 14 阅读