youtube-importer
YouTube自動要約パイプライン
youtube-importer — YouTube動画を自動で要約してノートにする
見たいチャンネルを登録しておくと、新着動画を検知して文字起こしとAI要約を行い、Obsidianに読めるノートとして保存します。動画を見る前に要点が手に入ります。
- 保存先: Obsidian Vault の
06_youtube/フォルダ
概要
新着動画を1時間ごとにチェックし、見つけたら次の処理を自動で行います。
新着動画を検知 → 音声を文字起こし → AIで要約・タグ付け
→ 読みやすいノートに整形 → Obsidianへ保存 → Slackで通知
いまは自己啓発系の9チャンネルを監視していて、これまでに200本以上を処理しました。動画を実際に見なくても、要点やキーワード、印象に残った発言がノートに貯まっていきます。

登録チャンネルの新着を検知するとSlackへ通知し、そのまま文字起こしと要約に進む
主な機能
- 新着の自動検知:
channels.txtに登録したチャンネルの新着をRSSで取得 - 文字起こし: 動画の音声をテキストに変換
- AI要約: 3行要約、詳細要約、キーワード、実践ポイント、印象的な引用を構造化して抽出
- 関連ノートの自動リンク: 内容が近い既存ノートをAIが探して相互リンクを張る
- 保存と通知: 整形したノートをGitHub経由で保存し、Slackへ完了通知
技術スタック
- 言語: Python 3.11
- 自動実行: GitHub Actions(毎時0分)
- AI / API:
- Groq — 文字起こし(Whisper)と要約(Llama)
- Gemini — Groqが使えないときの予備
- YouTube字幕取得 / yt-dlp
- 連携: GitHub API でノートを書き込み、Slackへ通知
アーキテクチャ
GitHub Actions(毎時0分に起動)
▼
monitor.py
├─ 1. 新着検知 channels.txt の各チャンネルを既読と比較
├─ 2. 文字起こし 多段フォールバック(下記)
├─ 3. AI要約 Groq / Gemini で構造化JSONに要約
├─ 4. 関連ノート検索 既存ノートから関連を探してリンク
├─ 5. 保存 GitHub経由で Obsidian の 06_youtube/ へ
└─ 6. 状態を記録 state.json に既読と処理履歴を保存
文字起こしの多段フォールバック
上から順に試し、失敗したら次へ自動で切り替えます。
- YouTube字幕 — あれば最速で無料
- Gemini — 動画URLをそのまま渡す
- Groq Whisper — 音声をダウンロードして文字起こし
- Gemini(音声ファイル) — 最終手段
状態管理
state.jsonに既読の動画ID、未処理キュー、日別の処理数、チャンネルID対応表を保存- 1日の処理上限は5本。超えた動画はキューに溜めて翌日以降に処理
Obsidianへの保存形式
各動画は、frontmatter付きのMarkdownとして保存されます。
- frontmatter: タイトル、チャンネル名、公開日、AIが付けた5〜10個のタグ
- 本文: 3行要約 → 詳細要約 → キーワード → 実践的な学び → 印象的な引用 → 関連ノートへのリンク → 論理構造
技術的な見どころ
- コストと精度の両立: 無料枠の大きいGroqをメインにし、足りないときだけGeminiへ。AIに送るテキストは1.2万字に切り詰めています
- 状態管理: 1日5本の上限を設けつつ、超過分はキューに溜めて翌日処理。チャンネルIDをキャッシュしてAPI呼び出しも減らしました
- 知識がつながるノート: 保存するだけでなく既存ノートとの関連をAIが見つけて相互リンクするので、知識ベースとして育っていきます
- 運用の透明性: Slackで新着・完了・エラーを通知し、処理履歴はGit上に残ります