Captions
目標: 視聴者が努力せずに読める字幕。それぞれは短く、意味が完結しており、各単語に正確にタイミングが合い、動画全体を通じて同じ場所に表示されます。
これは編集順序のステップ5です: a-roll カット、b-roll、フレーミング、見出し、字幕。フレーミング済みの動画、見出しの後に実行されるため、字幕が見出しの邪魔になりません。
このスキルは Claude Code と Runneth 向けに構築されています。
始める前に: ツール
Runneth では、すべてが既にインストールされています。このセクションはスキップしてください。
Claude Code では、このスキルには video-editing-setup スキルがインストールする無料の動画ツールが必要です。~/.video-editing-tools/bin/ffmpeg -version が実行できるか静かに確認してください。実行できる場合は、このスキルが ffmpeg、ffprobe、python3 と言うところで ~/.video-editing-tools/bin 内のツール (ffmpeg、ffprobe、python) を使用して続行してください。できない場合は、最初に video-editing-setup スキルに従ってから、ここに戻ってきてください。
フォント: Figtree Bold。このスキルが使用する唯一のフォントです。無料の Google フォントです。コンピューター上、またはプロジェクトの横のフォントフォルダーにあるか静かに確認してください。ない場合は、「これは Figtree という無料の Google フォントを使用します。ダウンロードしましょうか?」と尋ねてください。はいの場合、Google Fonts (fonts.google.com/specimen/Figtree) から Figtree Bold ファイルをプロジェクトの横のフォントフォルダーにダウンロードして続行してください。この確認は Runneth でも適用されます。
必要なもの
- 動画: フレーミング済みで、見出し(またはそのタイミング)が付いているもの。
- スクリプト(ある場合): 名前や製品名の綴りを正しくするため。
- 見出しが画面に表示されるタイミングとその位置。
ステップ 0: 最初にスタイルについて尋ねる
以下を1つずつ尋ね、各回答を待ってください:
- 「字幕は単語ごとにしますか、それとも数語ごとにしますか?」
- 数語ごとの場合のみ: 「発話中の単語を別の色でハイライトしますか?」
- はいの場合のみ: 「どの色にしますか?」デフォルトとして明るい黄色 (#FFFF3A) を提案するか、ブランドカラーを提案してください。
ステップ 1: 各単語とそのタイミングを取得
- 動画自体の音声を単語タイミング付きで文字起こしします (faster-whisper
base、word_timestamps=True、vad_filter=False)。タイミングはこの正確な動画から取得する必要があります。なぜなら、すべてのカットがタイミングを変えるからです。 - 名前、ブランド、製品名の綴りにはスクリプトを使用し、文字起こしのタイミングは保持します。
- 発話されたすべての単語に字幕が付きます。発話されなかったものには字幕は付きません。
ステップ 2: 意味の塊に分割(数語ごとの場合のみ)
- 通常は1~3語、最大約5語 で1つの塊とし、フレーズ全体を維持しつつ幅に収まるようにします。
- まとめて保持: 名詞とその修飾語(「a sleep drink」)、名前(「Claude skill」)、動詞とその付属語(「go to bed」)、短い完結した考え(「but that's how I felt」)。
- 各塊は意味のある単語で終わります。 小さな単語(the, a, of, to, and, because, that, I)は代わりに次の塊を始めます。
- 各塊は最初の単語から次の塊が始まるまで表示されるため、文の途中で画面が空になることはありません。
- リスト全体を視聴者のように一度読んで、不自然に読める区切りを修正します。
ステップ 3: 見た目
すべての字幕は Figtree Bold、白、黒い輪郭線を使用します。ボックス、影、ポップインやバウンスはなし。字幕は単に現れます。ほとんど小文字で、I、名前、ブランドは大文字にし、末尾にピリオドやカンマは付けません。
- 単語ごと: 約140px、輪郭線6px。一度に1単語が画面に表示されます。各単語は次の単語が始まるまで表示されます。長い単語は約720px幅に収まるように縮小します。ステップ2の塊分割はスキップします。
- 数語ごと: 約60px、輪郭線3px。ステップ2の塊を使用します。
- 単語のハイライトあり: 発話中の単語が塊の中で選択された色に変わり、カラオケスタイルになります。
- ハイライトなし: 塊全体が白のままです。
ステップ 4: 配置場所
- 中央、胸部の高さ。1080x1920 動画で約 y=1260 から 1305: 顎の下、アプリのキャプションやボタンの上。
- 安全領域内: 安全ゾーンは post-preview スキルから取得します。1080x1920 フレーム (リール、ストーリー、フィード、TikTok、Facebook で安全な1つのボックス) 上の x=100~880、y=290~1340 内にすべてを収めます。端に近い配置については、post-preview で正確な被覆領域を確認してください。中央揃えの字幕は、すべての文字(輪郭線を含む)を x=200~880(約680px幅)かつ y=1340 より上に保ちます。各塊の幅を測定し、幅が広すぎる塊は分割します。
- 見出しと重ならないように。 見出しが画面に表示されている間、字幕は明確な隙間を空けて下に配置します。見出しが低い位置にある場合、字幕は重ならないように安全領域内で下に移動します。
- 動画全体で同じ場所。目が常にどこを見ればよいかわかるように。
- 字幕は口の下に配置し、顔の上には決して重ねません。 すべての字幕が目、鼻、口を避けます。顔が非常に低く、字幕の位置が顔を覆ってしまう場合、フレーミングに問題があります。フレーミングに戻して修正するか(または修正中は安全領域内で字幕を下に移動します)、送り返してください。
ステップ 5: 作成と焼き込み
- 字幕を ASS サブタイトルファイルとして書き出します。単語のハイライトがある場合は、色が発話に合わせて動くように単語ごとに1つのイベントを使用します。文字間隔はインラインの
\fspタグで行います。 - レンダラーを Figtree Bold ファイルのみを保持するフォントフォルダーに指定し、正しいウェイトが使用されるようにします:
ass=captions.ass:fontsdir=fonts。 - フル品質の動画(x264, slow, crf 14~18)から1パスで焼き込み、音声はそのままコピーします。
ステップ 6: 公開前に確認
- すべての単語が、1回、タイミング通り: 字幕リストを文字起こしと単語単位で比較します。
- 各塊のフレームを確認: 安全領域内にあり、切れていない、見出しと重なっていない、字幕全体が口より下にあること。顔検出器を使用するか各フレームを読んでください。顔の一部にでも字幕がかかっている場合はチェックに不合格です。
- 単語のハイライトがある場合、色が発話中の単語に合っていること。 動画内の数か所で確認します。
ステップ 7: 編集者から学ぶ
編集者が分割、単語、見た目を変更した場合、理由を尋ねてください(編集者が言わない限り)。その理由を以下「編集者からの字幕ルール」に、何が正しいべきかという形でルールとして記述してください。自分で考えた理由は「(AI)」とマークし、ルールを決して変更しません。
編集者からの字幕ルール
(空から始めます。編集者が与えた各ルールを追加します。)