caption-clip について
YouTube 動画から字幕付きクリップを作るワークフロー用スキルです。時間範囲を指定して動画を取得し、Deepgram で文字起こしした後、字幕を整えて動画に焼き込みます。
主な機能
- 01時間指定による YouTube 動画の取得
- 02ffmpeg による MP4 変換
- 03Deepgram による音声文字起こし
- 04SRT 字幕の生成と編集
- 05スタイル付き字幕の動画への焼き込み
活用シーン
- 01字幕付き YouTube クリップの作成
- 02動画区間の字幕準備
- 03文字起こしの修正とフィラー語の削除
- 04字幕を埋め込んだ動画の作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ kwindla/ skill-caption-clip --skill caption-clipインストール後、Claude Code で/caption-clipを入力して読み込まれたか確認します。
同梱ファイルREADME.mdscripts/json-to-srt.py
詳細
YouTube クリップに字幕を付ける
タイムスタンプを指定して YouTube 動画のクリップをダウンロードし、Deepgram で文字起こしして、スタイル付き字幕を焼き込みます。
前提条件
- yt-dlp がインストールされていること
- ffmpeg がインストールされていること
- .env ファイル(または環境変数)に DEEPGRAM_API_KEY が設定されていること
- Avenir Next フォント(利用できない場合は Arial にフォールバックします)
ワークフロー
ステップ 1:クリップをダウンロードする
yt-dlp を使って YouTube 動画の指定区間をダウンロードします。
yt-dlp --download-sections "*START-END" -o "clip_name.%(ext)s" "YOUTUBE_URL"
タイムスタンプ 02:53-04:15 を指定する例:
yt-dlp --download-sections "*02:53-04:15" -o "clip_intro.%(ext)s" "https://www.youtube.com/watch?v=VIDEO_ID"
ステップ 2:MP4 に変換する
ffmpeg のデフォルト設定を使って、エンコードを統一します。
ffmpeg -i clip_name.webm -y clip_name.mp4
ステップ 3:Deepgram で文字起こしする
.env から API キーを読み込み、Deepgram API を呼び出します。
DEEPGRAM_API_KEY=$(grep '^DEEPGRAM_API_KEY=' .env | cut -d'=' -f2 | tr -d '"' | tr -d "'")
curl -s --request POST \
--url 'https://api.deepgram.com/v1/listen?model=nova-2&smart_format=true&punctuate=true&utterances=true' \
--header "Authorization: Token $DEEPGRAM_API_KEY" \
--header 'Content-Type: audio/mp4' \
--data-binary @clip_name.mp4 > clip_transcript.json
ステップ 4:SRT を生成する
付属のスクリプトを使って、Deepgram の JSON を SRT 形式に変換します。
python3 ~/.claude/skills/caption-clip/scripts/json-to-srt.py clip_transcript.json clip.srt
ステップ 5:文字起こしを整える
生成された SRT ファイルを読み込み、整形版(clip_clean.srt)を作成します。
- 文字起こしの誤りを修正する - 聞き間違えた単語を修正します
- フィラー語を削除する - 次の語を削除します:「like」「you know」「I'd say」「yeah」「um」「uh」「sort of」「kind of」
- 断片をまとめる - 短い発話を完全な文にまとめます
- 読みやすさを向上させる - 耳で聞く場合と比べて、読んだときに自然な流れになるよう表現を調整します
- タイムスタンプを修正する - 無効な時刻がないことを確認します(例:
00:00:60は00:01:00にする必要があります)
整形した内容を clip_clean.srt に書き込みます。
ステップ 6:字幕を焼き込む
半透明の背景を付けて、スタイル付き字幕を適用します。
ffmpeg -i clip_name.mp4 \
-vf "subtitles=clip_clean.srt:force_style='FontSize=24,FontName=Avenir Next Medium,PrimaryColour=&H00FFFFFF,BackColour=&H80000000,BorderStyle=4,Outline=0,Shadow=0,MarginV=30,MarginL=40,MarginR=40'" \
-c:a copy -y clip_captioned.mp4
字幕スタイルのリファレンス
| パラメーター | 値 | 説明 |
|---|---|---|
| FontSize | 24 | ポイントサイズ |
| FontName | Avenir Next Medium | 見やすいサンセリフ体(代替フォントとして Arial を使用) |
| PrimaryColour | &H00FFFFFF | 白い文字(AABBGGRR 形式) |
| BackColour | &H80000000 | 50% 透過の黒い背景 |
| BorderStyle | 4 | BackColour を使った不透明なボックス |
| MarginV | 30 | 下端からの垂直方向の余白 |
| MarginL/R | 40 | 水平方向の余白 |
代替フォント
Avenir Next を利用できない場合は、次のフォントが字幕に適しています。
- SF Pro Display
- Helvetica Neue
- Futura
- Arial(汎用の代替フォント)
利用可能なフォントを確認します。
fc-list : family | sort -u | grep -iE '(avenir|sf pro|helvetica|futura)'
出力ファイル
ワークフローの完了後、次のファイルが生成されます。
| ファイル | 説明 |
|---|---|
clip_name.mp4 | ダウンロードした元のクリップ |
clip_transcript.json | Deepgram の生の文字起こしデータ(再実行に備えて保持) |
clip.srt | 自動生成された字幕 |
clip_clean.srt | 整形・編集済みの字幕 |
clip_captioned.mp4 | 字幕を焼き込んだ最終動画 |
コメント
Markdown 対応