YouTube Notes Fetcher
unlistedby lidejun1987
Fetch YouTube transcripts and auto-generate Obsidian notes with AI summarization. Supports single-video fetch, channel subscriptions, and scheduled updates.
YouTube Notes Fetcher
An Obsidian plugin that fetches YouTube video transcripts and auto-generates structured notes with AI summarization.
English
Features
- 📥 Single video fetch — Paste a YouTube URL, get a complete note
- 📺 Full channel archive — Pull every historical video from a creator (auto-skip existing)
- ⚡ Smart incremental updates — Stops on first known video; typical run completes in 5–10 seconds
- 🔔 Multi-channel subscriptions — Save and manage multiple channels
- 🤖 AI summarization — Built-in support for Claude API, OpenAI API, and Claude Code CLI (no API key needed)
- ⏰ Scheduled auto-update — Background polling for new videos
- 🎨 Customizable templates — Full control over note format
- 🖱️ Context menu integration — Right-click any YouTube URL in editor to import
- 🌐 Proxy support — Built-in proxy config for restricted regions
Three fetch modes
| Mode | Use case | Speed |
|---|---|---|
| Latest N | First-time subscription or routine pull | Fast |
| Check updates (recommended for scheduled) | Stops at first known video | 5–10s typical |
| Full history | First archive of a new creator | Minutes to tens of minutes |
Architecture
This plugin uses a JS frontend + Python backend split:
- Frontend (
main.js) — Obsidian UI, settings, command registration - Backend (
backend.py) — yt-dlp / youtube-transcript-api / AI calls
Installation
Prerequisites
pip install yt-dlp youtube-transcript-api
# Optional: API-based AI providers
pip install anthropic # for Claude API
pip install openai # for OpenAI API
If you use Claude Code CLI as the AI provider, no Python AI package is needed — just have
claudeavailable inPATH.
Manual install
- Download
main.js,manifest.json,styles.css,backend.pyfrom the latest release - Place them under
<your-vault>/.obsidian/plugins/youtube-notes-fetcher/ - Reload Obsidian, then enable the plugin in Settings → Community plugins
Configuration
Open the plugin's settings tab:
| Setting | Description |
|---|---|
| Python path | python by default; set full path if multiple versions exist |
| Proxy | e.g. http://127.0.0.1:10809 for V2Ray, http://127.0.0.1:7890 for Clash |
| Output directory | Relative to vault root |
| Max videos per fetch | Cap on batch fetch count |
| AI provider | claude_cli (no key) / claude (API) / openai (API) |
| AI API key | Required for claude and openai providers |
Usage
Command palette (Ctrl+P / Cmd+P)
- Fetch single YouTube video
- Fetch latest from subscribed channels
- Manage subscribed channels
- Test connection
Right-click menu
Select a YouTube URL in any note → right-click → Import as YouTube note
Ribbon icon
Click the YouTube icon in the left sidebar.
Template variables
Customize the note template in settings using these placeholders:
| Variable | Description |
|---|---|
{{title}} | Video title |
{{url}} | Video URL |
{{author}} | Channel / author name |
{{upload_date}} | Upload date |
{{duration}} | Length |
{{view_count}} | View count |
{{description}} | Video description |
{{transcript}} | Full transcript with [mm:ss] timestamps |
{{ai_summary}} | AI-generated structured summary |
{{created}} | Fetch date (YYYY-MM-DD) |
{{fetched_at}} | Fetch timestamp |
Privacy & data
- All processing is local. No data leaves your machine except:
- YouTube API calls (via yt-dlp) to fetch metadata/transcripts
- AI provider calls (Anthropic / OpenAI / Claude CLI) when summarization is enabled
- Your
data.json(settings + subscriptions) and anycookies.txt(if you use one) stay in your vault and are listed in.gitignore. - The plugin never sends API keys, cookies, or note content anywhere except the configured AI provider when you opt in.
Troubleshooting
"Missing dependency" → run pip install yt-dlp youtube-transcript-api
Network timeout → set a proxy. China users typically need this.
Python not found → set full path in settings, e.g. C:\Python313\python.exe
Transcript unavailable → some videos have no captions. Use the Test connection command to verify your environment.
License
MIT — see LICENSE
Support / 支持作者
If this plugin helps you, consider sponsoring development — WeChat / Afdian (爱发电) / GitHub Sponsors all welcome.
如果觉得有用,欢迎到 SPONSORS.md 通过微信赞赏 / 爱发电 / GitHub Sponsors 支持作者。
Contributing
Issues and PRs welcome. Please don't include your real data.json, cookies.txt, or any personal data when reporting bugs.
中文
功能特性
- 📥 单视频抓取:粘贴 YouTube URL,一键生成笔记
- 📺 频道全量归档:抓取博主所有历史视频(自动跳过已存在)
- ⚡ 智能增量更新:定期检查时遇到旧视频立即停止,5–10 秒完成
- 🔔 多频道订阅:保存并管理多个频道
- 🤖 AI 自动总结:内置 Claude API / OpenAI API / Claude Code CLI(免 key)三种 provider
- ⏰ 定时自动更新:后台定期检查新视频
- 🎨 自定义模板:完全控制笔记格式
- 🖱️ 右键菜单:选中编辑器里的 YouTube 链接右键导入
- 🌐 代理支持:内置代理配置
安装
pip install yt-dlp youtube-transcript-api
# 可选(用 API 时才需要)
pip install anthropic # Claude API
pip install openai # OpenAI API
如果使用 Claude Code CLI,无需安装 Python AI 包,只要
claude命令在PATH里即可。
下载 release 中的 main.js、manifest.json、styles.css、backend.py,放到 <你的vault>/.obsidian/plugins/youtube-notes-fetcher/,然后在 Obsidian 设置 → 第三方插件中启用。
隐私
- 所有处理都在本地完成。除以下情况外不会向外发送数据:
- yt-dlp 调用 YouTube 获取元数据和字幕
- 启用 AI 摘要时调用对应 provider(Anthropic / OpenAI / Claude CLI)
- 你的
data.json(含订阅、API key)和cookies.txt(如有)都不会进入仓库,已加入.gitignore
故障排除
| 现象 | 解决 |
|---|---|
| 缺少依赖 | pip install yt-dlp youtube-transcript-api |
| 网络超时 | 配置代理。Clash 默认 7890,V2Ray 默认 10809 |
| Python 找不到 | 设置里填完整路径 |
| 字幕获取失败 | 部分视频无字幕;用「连接测试」检查环境 |
License
MIT
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.