YouTube Digest - プレイリスト新着動画の自動要約・Discord通知¶
YouTubeの指定プレイリストを定期監視し、新着動画をGemini APIで要約してDiscordに自動通知するシステム。
概要¶
| 項目 | 内容 |
|---|---|
| プロジェクトパス | projects/youtube-digest/ |
| 実行スケジュール | 毎日 09:00(Windows タスクスケジューラ) |
| 対象プレイリスト | 10件(AI活用、IT知見、プログラミングなど) |
| 要約エンジン | Gemini 2.0 Flash |
| 通知先 | Discord(Webhook) |
| 重複防止 | data/processed.json で処理済み動画IDを管理 |
処理フロー¶
タスクスケジューラ(09:00)
↓
main.py 起動
↓
config.yaml の全プレイリストをループ
↓
yt-dlp で動画一覧を取得(cookies.txt で認証)
↓
processed.json に未登録の新着動画だけ抽出
↓
Gemini API に YouTube URL を直接渡して要約
↓
Discord Webhook に1本ずつ通知
↓
processed.json に動画IDを記録(次回スキップ)
ディレクトリ構成¶
projects/youtube-digest/
├── config/
│ └── config.yaml # プレイリスト・各種設定
├── src/
│ ├── playlist_fetcher.py # yt-dlpで動画一覧取得
│ ├── summarizer.py # Gemini APIで要約
│ ├── discord_notifier.py # Discord Webhook送信
│ └── state_manager.py # 処理済みID管理
├── data/
│ └── processed.json # 処理済み動画ID一覧(自動生成)
├── logs/
│ ├── run.log # 詳細ログ(自動生成)
│ └── run_history.log # 実行履歴(自動生成)
├── main.py # エントリポイント
├── run_scheduler.bat # タスクスケジューラ用バッチ
└── setup_scheduler.ps1 # タスク登録スクリプト
設定ファイル¶
config/config.yaml
youtube:
cookies_file: "Credentials/youtube_cookies.txt"
playlists:
- name: "AI活用"
id: "PLFpCeOl-kj8ST1yZ4EuV3ANXrNgcsOiqQ"
# ...(計10件)
gemini:
credentials_path: "Credentials/gemini_api.json"
model: "gemini-2.0-flash"
discord:
enabled: true
credentials_path: "Credentials/discord_webhook.json"
username: "YouTube Digest"
プレイリストの追加・削除は config.yaml の playlists を編集するだけ。
Discord通知フォーマット¶
手動実行¶
対象プレイリスト一覧¶
| プレイリスト名 | Playlist ID |
|---|---|
| AI活用 | PLFpCeOl-kj8ST1yZ4EuV3ANXrNgcsOiqQ |
| IT知見 | PLFpCeOl-kj8Q-vo7xYBiWp7GKz4akwxGV |
| プログラミング | PLFpCeOl-kj8RT21YVqVTMhcmbN6Gir_N- |
| アフィリエイト | PLFpCeOl-kj8RxsexxMjowGpyz0QIQ2Jyw |
| 副業 | PLFpCeOl-kj8QuaSWRuMIA6EtdTw0IIRBs |
| 動画制作 | PLFpCeOl-kj8Sh9cC7p2UGZjK33JosS7IQ |
| 個人開発 | PLFpCeOl-kj8SCJ5UGfRBarIqaEIjxKxYE |
| Webライター | PLFpCeOl-kj8RsEtSOM0Oie1PKBvjtJMHO |
| ソフトスキル | PLFpCeOl-kj8TZgtwYLPo26K-Q23lFkRIC |
| 金融 | PLFpCeOl-kj8Tui019Dz86UoJxatREJb7c |
認証情報¶
| ファイル | 用途 |
|---|---|
Credentials/youtube_cookies.txt | YouTube認証(非公開リスト取得用) |
Credentials/gemini_api.json | Gemini API キー |
Credentials/discord_webhook.json | Discord Webhook URL |
cookies.txt の更新手順¶
cookies.txtは定期的に期限切れになる。以下の手順で再エクスポートする。
- ChromeまたはEdgeで Get cookies.txt LOCALLY 拡張機能をインストール
- YouTubeにログインした状態で youtube.com を開く
- 拡張機能アイコン → Export をクリック
Credentials/youtube_cookies.txtに上書き保存
タスクスケジューラの再登録¶
実行時刻を変更したい場合:
setup_scheduler.ps1の$StartTimeを編集- 管理者権限のPowerShellで実行:
関連ドキュメント¶
- YouTube文字起こしMCPサーバー:
scripts/mcp/youtube_transcribe_server.py - YouTube MCP移行記録:
docs/mcp/youtube-mcp-migration.md - note-collector(同様の仕組み):
projects/note-collector/