mcpField
Y
youtube-transcribe-skill

youtube-transcribe-skill

github.com/feiskyerクリエイティブ・メディア1.7k354 回インストール4 週間前に更新
リポジトリ

youtube-transcribe-skill について

YouTube動画の字幕を抽出し、タイムスタンプ付きテキストとしてローカルに保存するスキルです。まず `yt-dlp` を試し、失敗時は Chrome DevTools MCP によるブラウザー操作を使います。

主な機能

  1. 01YouTube URL形式の検証
  2. 02`yt-dlp` による字幕抽出
  3. 03Chrome DevTools MCPによる代替抽出
  4. 04タイムスタンプ付きテキスト出力

活用シーン

  1. 01YouTube動画の字幕保存
  2. 02ブラウザー操作による文字起こし抽出

MCP 対応

CLIで失敗した場合や利用できない場合、Chrome DevTools MCPでYouTubeを開き、文字起こしパネルを表示して内容を抽出し、ページを閉じます。

インストール

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

$npx skills add https://github.com/feiskyer/claude-code-settings --skill youtube-transcribe-skill

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

詳細

YouTube の文字起こしの抽出

YouTube 動画の URL から字幕/文字起こしを抽出し、ローカルファイルとして保存します。

入力する YouTube URL:$ARGUMENTS

ステップ 1:URL を確認する

入力が有効な YouTube URL であることを確認します(youtube.com/watch?v=、youtu.be/、youtube.com/shorts/ の形式に対応しています)。引数で URL が指定されていない場合は、会話の内容から YouTube リンクを探します。

ステップ 2:CLI によるクイック抽出(優先して試行)

コマンドラインツールを使用して、字幕をすばやく抽出します。

2.1 ツールの利用可否を確認する

which yt-dlp を実行します。

  • yt-dlp が見つかった場合は、2.2 に進みます。
  • yt-dlp が見つからない場合は、ステップ 3 に進みます。
2.2 動画のタイトルを取得する
yt-dlp --cookies-from-browser=chrome --get-title "[VIDEO_URL]"
  • ヒント:サインイン制限を回避するため、必ず --cookies-from-browser を追加してください。既定では chrome を指定します。
  • ブラウザーエラー(「Could not open Chrome」など)が発生した場合は、利用可能なブラウザー(firefox、safari、edge など)をユーザーに確認し、再試行します。
2.3 字幕をダウンロードする
yt-dlp --cookies-from-browser=chrome --write-auto-sub --write-sub --sub-lang zh-Hans,zh-Hant,en --skip-download --output "<Video Title>.%(ext)s" "[VIDEO_URL]"
2.4 プレーンテキストに変換する

yt-dlp は字幕を .vtt または .srt ファイルとして保存します。ダウンロードしたファイルを、プレーンな Timestamp Text 形式に変換します。

  1. ダウンロードした字幕ファイル(.vtt または .srt)を読み取ります。
  2. VTT/SRT のヘッダー、スタイルタグ、重複行を削除します。
  3. 1 行につき Timestamp Text エントリを 1 つ記載し、<Video Title>.txt として保存します。
2.5 結果を確認する
  • 終了コード 0:字幕ファイルを変換して保存し、完了を報告します。
  • 終了コードが 0 以外:
    • エラーがブラウザー/Cookie に関する場合は、正しいブラウザーをユーザーに確認し、再試行します。
    • それ以外のエラー(動画が利用できない場合など)は、ステップ 3 に進みます。

ステップ 3:ブラウザー自動化(フォールバック)

CLI による方法が失敗した場合、または yt-dlp が見つからない場合は、Chrome DevTools MCP を使用して、ブラウザー UI の自動化で字幕を抽出します。

3.1 ツールの利用可否を確認する

Chrome DevTools MCP ツールが利用可能か確認します(chrome__new_page などに一致するツールを探します)。

Chrome DevTools MCP が利用できず、ステップ 2 で yt-dlp も見つからなかった場合は、処理を中止し、次のようにユーザーに通知します:「続行できません。yt-dlp をインストールする(CLI で高速に抽出する場合)か、Chrome DevTools MCP を設定してください(ブラウザー自動化を利用する場合)。」

3.2 動画ページを開く

Chrome DevTools MCP の new_page を使用して、動画 URL を開きます。

3.3 ページの状態を分析する

Chrome DevTools MCP の take_snapshot を使用して、ページのアクセシビリティツリーを読み取ります。

3.4 動画の説明を展開する

「Show transcript」ボタンは、折りたたまれた説明欄の中に隠れていることがよくあります。

  1. スナップショットから、「...more」、「...更多」、または 「Show more」 というラベルのボタンを探します(動画タイトルの下にある説明欄を確認します)。
  2. Chrome DevTools MCP の click を使用して、そのボタンをクリックします。
3.5 文字起こしパネルを開く
  1. Chrome DevTools MCP の take_snapshot を使用して、更新された UI を取得します。
  2. 「Show transcript」、「显示转录稿」、または 「内容转文字」 というラベルのボタンを探します。
  3. Chrome DevTools MCP の click を使用して、そのボタンをクリックします。
  4. ボタンが見つからない場合は、動画に文字起こしがない可能性があります。ユーザーに通知し、処理を中止します。
3.6 DOM からコンテンツを抽出する

長い文字起こしリストをアクセシビリティツリーから直接読み取ると時間がかかり、トークンも大量に消費します。代わりに、Chrome DevTools MCP の evaluate_script を使用して、次の JavaScript を実行します。

() => {
  const segments = document.querySelectorAll("ytd-transcript-segment-renderer");
  if (!segments.length) return "BUFFERING";
  return Array.from(segments)
    .map((seg) => {
      const time = seg.querySelector(".segment-timestamp")?.innerText.trim();
      const text = seg.querySelector(".segment-text")?.innerText.trim();
      return `${time} ${text}`;
    })
    .join("\n");
};

"BUFFERING" が返された場合は、数秒待ってから再試行します(最大 3 回)。

3.7 保存して後処理する
  1. 抽出したテキストを <Video Title>.txt として保存します。
  2. Chrome DevTools MCP の close_page を使用して、リソースを解放します。

出力要件

  • 字幕ファイルを現在の作業ディレクトリに保存します。
  • ファイル名の形式:<Video Title>.txt
  • ファイルの内容形式:各行を Timestamp Subtitle Text とします。
  • 完了時に、ファイルパス、字幕の言語、行数の合計を報告します。

コメント