特定YouTubeチャンネルの動画を全件、自動で「取得 → 字幕またはWhisper文字起こし → Claudeで要約 → スプレッドシートに蓄積」する自作パイプラインです。AI領域に特化した日本語チャンネル群を題材に、視聴コストゼロで情報を資産化する仕組みとして設計しました。
課題
- AI領域はYouTubeに濃い情報が多いが、本数が膨大で視聴コストが高い
- 手動で「重要な動画だけ見る」運用は、見落とし・偏りが大きい
- 字幕がない動画も多く、検索性が低い
解決アプローチ
1. チャンネル一覧の構築
- 対象キーワード(「Claude Code」「ChatGPT API」など)で YouTube Data API を叩いてチャンネルを発見
- 登録者数・更新頻度・テーマ一致度でフィルタ
- スプレッドシートに蓄積(既処理スキップ判定もここで管理)
2. 動画一覧の取得
- 各チャンネルの全 uploads を YouTube Data API(playlist API)で取得
- published_at・duration・view_count をメタ情報として記録
3. 字幕優先・Whisper フォールバック
- 字幕(CC)が公式または自動で付いていれば、それを優先取得(VTT形式)
- 字幕がない動画は yt-dlp で音声抽出 → Whisper(faster-whisper / whisper.cpp)で文字起こし
- GPU が使えない環境でも動くよう、軽量モデルへのフォールバックロジック
4. Claude API による要約
- Anthropic Claude API(Prompt Caching 利用)で、3行サマリ+重要ポイント箇条書き+着眼点を生成
- チャンネル特性ごとに異なる要約スタイル(解説系/実演系/対談系)を SYSTEM_PROMPT で切替
5. Google Sheets への蓄積
- チャンネル別シートに「日付・タイトル・URL・要約・トランスクリプト一部」を書き込み
- Sheets API のレート制限を尊重し、バッチ書き込み+指数バックオフ
6. リトライ・クリーンアップ
- enrich_retry_missing.py:取得失敗動画の自動リトライ
- cleanup_wrong_matches.py:誤マッチ(タイトル類似による誤統合)を後処理で修正
技術スタック
- Python 3.11
- YouTube Data API v3
- Playwright(一部ブラウザ操作が必要なケース)
- faster-whisper / whisper.cpp(GPUまたはCPU)
- Anthropic Claude API(Prompt Caching)
- Google Sheets API(OAuth2 / Service Account)
- openpyxl(Excel 中間出力)
応用例
- 競合チャンネル・業界チャンネルの定点モニタリング
- 動画教材ライブラリの社内検索可能化
- 自社YouTubeチャンネルの過去動画ナレッジ化(FAQ自動生成の元データ)
- カンファレンス動画群の総括レポート自動生成
ご相談いただける範囲
- 他のチャンネル群への横展開(業界別チャンネル定点観測)
- YouTube 以外(Podcast / Spotify / 議事録音声)への応用
- 社内動画ナレッジベースの構築
- 要約結果を Slack / Discord / Notion にプッシュ配信する連携