youtube-transcribe-skill について
YouTube動画の字幕を抽出し、タイムスタンプ付きテキストとしてローカルに保存するスキルです。まず `yt-dlp` を試し、失敗時は Chrome DevTools MCP によるブラウザー操作を使います。
主な機能
- 01YouTube URL形式の検証
- 02`yt-dlp` による字幕抽出
- 03Chrome DevTools MCPによる代替抽出
- 04タイムスタンプ付きテキスト出力
活用シーン
- 01YouTube動画の字幕保存
- 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 形式に変換します。
- ダウンロードした字幕ファイル(
.vttまたは.srt)を読み取ります。 - VTT/SRT のヘッダー、スタイルタグ、重複行を削除します。
- 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」ボタンは、折りたたまれた説明欄の中に隠れていることがよくあります。
- スナップショットから、「...more」、「...更多」、または 「Show more」 というラベルのボタンを探します(動画タイトルの下にある説明欄を確認します)。
- Chrome DevTools MCP の
clickを使用して、そのボタンをクリックします。
3.5 文字起こしパネルを開く
- Chrome DevTools MCP の
take_snapshotを使用して、更新された UI を取得します。 - 「Show transcript」、「显示转录稿」、または 「内容转文字」 というラベルのボタンを探します。
- Chrome DevTools MCP の
clickを使用して、そのボタンをクリックします。 - ボタンが見つからない場合は、動画に文字起こしがない可能性があります。ユーザーに通知し、処理を中止します。
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 保存して後処理する
- 抽出したテキストを
<Video Title>.txtとして保存します。 - Chrome DevTools MCP の
close_pageを使用して、リソースを解放します。
出力要件
- 字幕ファイルを現在の作業ディレクトリに保存します。
- ファイル名の形式:
<Video Title>.txt - ファイルの内容形式:各行を
Timestamp Subtitle Textとします。 - 完了時に、ファイルパス、字幕の言語、行数の合計を報告します。