mcpField
C
caption-clip

caption-clip

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

caption-clip について

YouTube 動画から字幕付きクリップを作るワークフロー用スキルです。時間範囲を指定して動画を取得し、Deepgram で文字起こしした後、字幕を整えて動画に焼き込みます。

主な機能

  1. 01時間指定による YouTube 動画の取得
  2. 02ffmpeg による MP4 変換
  3. 03Deepgram による音声文字起こし
  4. 04SRT 字幕の生成と編集
  5. 05スタイル付き字幕の動画への焼き込み

活用シーン

  1. 01字幕付き YouTube クリップの作成
  2. 02動画区間の字幕準備
  3. 03文字起こしの修正とフィラー語の削除
  4. 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)を作成します。

  1. 文字起こしの誤りを修正する - 聞き間違えた単語を修正します
  2. フィラー語を削除する - 次の語を削除します:「like」「you know」「I'd say」「yeah」「um」「uh」「sort of」「kind of」
  3. 断片をまとめる - 短い発話を完全な文にまとめます
  4. 読みやすさを向上させる - 耳で聞く場合と比べて、読んだときに自然な流れになるよう表現を調整します
  5. タイムスタンプを修正する - 無効な時刻がないことを確認します(例: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

字幕スタイルのリファレンス

パラメーター値説明
FontSize24ポイントサイズ
FontNameAvenir Next Medium見やすいサンセリフ体(代替フォントとして Arial を使用)
PrimaryColour&H00FFFFFF白い文字(AABBGGRR 形式)
BackColour&H8000000050% 透過の黒い背景
BorderStyle4BackColour を使った不透明なボックス
MarginV30下端からの垂直方向の余白
MarginL/R40水平方向の余白

代替フォント

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.jsonDeepgram の生の文字起こしデータ(再実行に備えて保持)
clip.srt自動生成された字幕
clip_clean.srt整形・編集済みの字幕
clip_captioned.mp4字幕を焼き込んだ最終動画

コメント