youtube-transcribe について
YouTube Transcribe は、1本または複数の動画を簡潔で実用的な文章にまとめるスキルです。動画検索、ダウンロード、話者識別付き文字起こしに加え、音声だけでは不十分な場合はフレーム抽出やGeminiによる視覚分析を行います。
主な機能
- 01テーマに沿ったYouTube動画検索
- 02音声または動画のダウンロード
- 03話者識別付きの文字起こし
- 04間隔やタイムスタンプでフレーム抽出
- 05Geminiによる視覚的な質問への回答
- 06複数動画の内容を統合
活用シーン
- 01チュートリアルを実行可能な手順に整理
- 02同じテーマの動画間で見解を比較
- 03図表、スライド、画面上の文字を確認
- 04タイムスタンプ付きの主張や詳細を記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ marks97/ youtube-transcribe --skill youtube-transcribeインストール後、Claude Code で/youtube-transcribeを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignorescripts/ask-gemini.pyask-gemini.shbatch.shdownload.shframes.shload-keys.shsearch.shsetup.shtranscribe.pytranscribe.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 を渡すより、ダウンロードしたファイルをアップロードすることをおすすめします。 - これは公開動画から学習するためのものです。 著作権と各プラットフォームの利用規約を尊重し、他者のコンテンツを自分のものとして再公開しないでください。