mcpField
Y
youtube-transcribe

youtube-transcribe

github.com/marks97生産性0920 回インストール3 週間前に更新
リポジトリ

youtube-transcribe について

YouTube Transcribe は、1本または複数の動画を簡潔で実用的な文章にまとめるスキルです。動画検索、ダウンロード、話者識別付き文字起こしに加え、音声だけでは不十分な場合はフレーム抽出やGeminiによる視覚分析を行います。

主な機能

  1. 01テーマに沿ったYouTube動画検索
  2. 02音声または動画のダウンロード
  3. 03話者識別付きの文字起こし
  4. 04間隔やタイムスタンプでフレーム抽出
  5. 05Geminiによる視覚的な質問への回答
  6. 06複数動画の内容を統合

活用シーン

  1. 01チュートリアルを実行可能な手順に整理
  2. 02同じテーマの動画間で見解を比較
  3. 03図表、スライド、画面上の文字を確認
  4. 04タイムスタンプ付きの主張や詳細を記録

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/marks97/youtube-transcribe --skill youtube-transcribe

インストール後、Claude Code で/youtube-transcribeを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
scripts/
ask-gemini.py
ask-gemini.sh
batch.sh
download.sh
frames.sh
load-keys.sh
search.sh
setup.sh
transcribe.py
transcribe.sh

詳細

YouTube の文字起こし

動画を1本、あるいはトピック全体にわたる動画群を、実際に読んで考察できるテキストに変換します。目的は文字起こしを返して終わることではなく、動画から得られる知識を吸収し、役立つ形で報告することです。

パイプライン:**検索 → ダウンロード → 文字起こし → (フレームを見る) → (Gemini に質問する) → 統合。**ほとんどのタスクでは中間部分だけで十分です。話された言葉だけでは足りない場合に、視覚的な手順を使います。

セットアップ(各マシンで一度だけ)

S=.claude/skills/youtube-transcribe/scripts
bash "$S/setup.sh"    # creates a venv, installs yt-dlp + elevenlabs + google-genai (idempotent)

Debian/Ubuntu で venv の作成に失敗する場合は、先に python3-venv をインストールしてください(sudo apt-get install -y python3-venv)。

**キー:**文字起こしでは ELEVENLABS_API_KEY を、Gemini のフォールバックでは GEMINI_API_KEY を読み込みます。これらを環境変数に設定するか、scripts/load-keys.local.sh を作成して、任意の方法でキーを取得してください(ラッパーが自動で読み込みます。また、gitignore に登録されているため、配布物に含まれることはありません)。キーを出力に表示しないでください。

モード A — 動画1本

S=.claude/skills/youtube-transcribe/scripts
OUT=/tmp/claude/youtube-transcribe/<video-id>        # scratch; never a repo

bash "$S/download.sh"   "<url>" "$OUT" audio          # audio.mp3 + metadata.json
bash "$S/transcribe.sh" "$OUT/audio.mp3" "$OUT"        # transcript.txt + .diarized.txt + .json

次に transcript.diarized.txt(タイムスタンプ付き、話者ごとにグループ化)を読み、重要な点をまとめてください。主張、手順や方法、具体的な主張、数値、実行可能な内容を記載します。余分な部分は省いてください。チュートリアルなら実際のやり方を、講演なら論旨と根拠をまとめてください。

transcribe.sh のフラグ:--no-diarize(話者を1人として扱う)、--lang spa(言語のヒント。省略すると自動検出)、--keyterms "Kubernetes,PyTorch,yt-dlp"(名前や専門用語を正しく表記します。指定しないと Scribe が誤認識し、要約の質が損なわれます)。

モード B — トピック(複数の動画)

検索は 無料で、API キーも不要です。yt-dlp 独自の検索機能を使います。

S=.claude/skills/youtube-transcribe/scripts

# 1. Find candidates — pick the good ones by title/channel/duration before spending transcription on them.
bash "$S/search.sh" "quantitative trading with LLMs" 20            # id | duration | channel | title
bash "$S/search.sh" "quantitative trading with LLMs" 20 --date     # sort by newest instead of relevance

# 2. Transcribe the chosen ones in one go (each lands in <OUT>/<video-id>/).
bash "$S/search.sh" "quantitative trading with LLMs" 20 --urls > /tmp/urls.txt
#   ...edit /tmp/urls.txt down to the 10-15 worth watching, then:
bash "$S/batch.sh" /tmp/claude/youtube-transcribe/topic /tmp/urls.txt

手当たり次第ではなく、選別してください。3時間の配信と40秒のショート動画を両方見る価値があることは、ほとんどありません。単なる再生回数より、内容の充実度(長さ、チャンネルの権威性、タイトルの具体性)を重視してください。その後、すべての文字起こしを読み、動画ごとに N 個の要約を作るのではなく、全体を通した1つの統合レポートを作成します。共通見解、意見の相違、最も優れた情報源、未解決の点をまとめてください。

画面に映っているものを見る

文字起こしでは、スライド、グラフ、コード、ダッシュボード、製品の映像、「これ」を指している人などを把握できません。段階的に使えるツールを2つ紹介します。

**1. フレーム(低コスト、ローカル)。**動画をダウンロードし、静止画を切り出して、JPG を読みます。

bash "$S/download.sh" "<url>" "$OUT" video                 # video.mp4 (≤720p)
bash "$S/frames.sh"   "$OUT/video.mp4" "$OUT/frames" every 30          # one frame / 30s
bash "$S/frames.sh"   "$OUT/video.mp4" "$OUT/frames" at 00:01:20,00:04:05   # exact moments from the transcript

transcript.diarized.txt のタイムスタンプを使って、誰かが「こちらをご覧ください」と言う瞬間のフレームを正確に取得します。

**2. Gemini(最後の手段。GEMINI_API_KEY が必要)。**フレームだけでは足りない場合、つまり動画の内容を理解させる必要がある場合、画面上のテキストを読み取る場合、または視覚に関する質問に直接答える必要がある場合に使います。Gemini は YouTube の URL を直接読み込みます(ダウンロード不要)。ローカルファイルの場合は、先にアップロードします。

bash "$S/ask-gemini.sh" "<url-or-local-mp4>" "What indicators are shown on the chart at minute 4, and what are their values?"

Gemini はフォールバックであり、デフォルトではありません。文字起こしのほうが安価で高速で、通常はそれで十分です。回答に視覚情報が本当に必要な場合に限り、Gemini を使ってください。

出力 — 書き写すのではなく、内容を吸収する

文字起こしをそのまま並べるのではなく、簡潔なナレッジダイジェストを基本とします。

  • **概要:**タイトル、チャンネル、長さ、1行での位置づけ。
  • **主要な知識:**実際のアイデア、方法、主張を、自分の言葉で具体的かつ簡潔にまとめます。
  • **注目すべき詳細:**残しておく価値のある数値、名前、ツール、手順、引用([mm:ss] のタイムスタンプ付き)。
  • 注意点/未検証の内容や宣伝的な内容。「教育」をうたう動画の多くは見込み客を集めるためのものです。該当する場合は率直に記載してください。

生の transcript.txt はディスクに保存して場所を示し、引用は抜粋して使います。全体を貼り付けないでください。

スクリプト

スクリプト説明
scripts/setup.sh仮想環境を作成し、依存関係をインストールします(冪等です)
scripts/search.sh "<q>" [n] [--date] [--urls]トピックに関する動画を検索します — 無料で、API キーは不要です
scripts/download.sh <url> <out> [audio|video|both]yt-dlp で音声(mp3)および/または動画(≤720p)と metadata.json をダウンロードします
scripts/transcribe.sh <audio> <out> [--no-diarize] [--lang] [--keyterms]ElevenLabs Scribe v2 でテキスト、話者分離済みテキスト、raw json に変換します
scripts/batch.sh <outdir> <urls-file>複数の動画をダウンロードして文字起こしします。動画ごとにフォルダーを作成し、マニフェストも生成します
scripts/frames.sh <video> <out> every <sec> | at <ts,ts>静止画を抽出して Read に保存します
scripts/ask-gemini.sh <url|file> "<question>"Gemini による視覚的理解(フォールバック)

注意事項

  • スクラッチ用途のみです。 メディアと文字起こしデータは /tmp/claude/youtube-transcribe/… に保存し、リポジトリには保存しません。サイズが大きくなる場合があります。
  • Scribe の制限: ファイルあたり 3 GB/10 時間です。90 以上の言語に対応し、自動検出されます。約 12 分の講演なら 1 回の呼び出しで処理できます。
  • 年齢制限付き/メンバー限定/非公開の動画では、Cookie が必要になる場合があります(yt-dlp --cookies-from-browser または --cookies)。Gemini を使う場合は、アクセスできない URL を渡すより、ダウンロードしたファイルをアップロードすることをおすすめします。
  • これは公開動画から学習するためのものです。 著作権と各プラットフォームの利用規約を尊重し、他者のコンテンツを自分のものとして再公開しないでください。

コメント