YouTubeチャンネル全動画 文字起こし+要約パイプライン

Development

特定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 にプッシュ配信する連携