Communitygithub.com

borjaperfra/launch-video-kit

Remotionで作った動画にナレーション、音楽、字幕、カメラ動作を追加するための6つの部品をまとめたリポジトリです。TTSでナレーションを生成する、音楽トラックを選択・延長する、音声と音楽をミックスする、UI上に読みやすい字幕を配置する、HTMLで再構築したUI上で仮想カメラを動かす、といった作業に使用します。

launch-video-kit とは?

**borjaperfra/launch-video-kit** は、Remotionで生成する動画のうち「デザイン以外の部分」――すなわち音声(ナレーション・音楽)、字幕、仮想カメラワーク――を効率的に制作するための6つのスクリプトセットです。 特徴的なのは、**「作業の順序」** と **「数値による確認」** を厳密に定義している点です。例えば、最初に `gen-voice.mjs` でナレーションの実際の長さ(フレーム数)を取得し、その数値をもとにシーンの時間軸を確定します。その後、`analyze-music.mjs` で楽曲のエネルギー曲線を分析し、最適な切り出し位置を決定。`loop-music.mjs` で必要に応じて楽曲をループさせます。字幕は最後に、画面上のラベルと重複しないように配置します。 このキットは、Claude Code、Cursor、Codex などのAIエージェントが動画制作のワークフローを自動化するために設計されています。各スクリプトが具体的な数値(フレーム数、dB値、拍のグリッド)を出力するため、エージェントは「主観」ではなく「測定可能な基準」で判断を下せます。例えば、音声ミックスの品質は `ffmpeg volumedetect` で確認し、全体のピークを -1dB 未満に抑える、というルールが明文化されています。 このキットは `ffmpeg`・`ffprobe`・Node 20 以上を必要とし、Remotion の `staticFile()` に関する注意点や、Windows Git Bash 環境での制約もドキュメント化されています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/borjaperfra/launch-video-kit/tree/HEAD/.claude/skills/launch-video-kit

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

launch-video-kit は何をしますか?

デザイン以外の動画部分(音声、字幕、カメラ)を構成する6つの部品です。READMEがリファレンスです(各判断の根拠とそれを裏付ける数値が記載されています)。ここでは作業の順序と、うっかり見落としがちなルールをまとめます。

順序が重要

  1. 音声を先に、編集は後で。 gen-voice.mjs は各行の実際の長さをフレーム数で出力します。その数値でシーンのタイミングを固定します。編集を先に行うと、実際のテイクの長さが合わず、編集をやり直すことになります。
  2. 次に音楽。analyze-music.mjs で楽曲のエネルギー曲線を分析し、最適な切り出し位置を選んだあと、必要なら loop-music.mjs でループさせます。
  3. その後にカットを、分析結果が出力する拍のグリッドに合わせます。
  4. 字幕は最後。どのフレーズに画面上のラベルがあるかが確定してから作業します。

うっかり見落としがちなルール

  • 1行につき1つの音声ファイル。 長いテイクは避ける。
  • 画面上に表示されているものだけ字幕にする。 フレーズがすでにラベルで表示されている場合、字幕を付けると同じ場所にテキストが重複します。
  • 字幕の dur は読み時間であり、音声の長さではない。 手動で範囲を調整し、次の字幕や後続のラベルと重ならないようにします。
  • DUCK.base は ~0.85 を超えない。 ライブラリのトラックは0dBで提供されており、さらにエフェクトをかけるとクリッピングします。
  • カメラは静止、短い移動のみ。 継続的なドリフト(気が散る)や急なカット(跳ねる)は避ける。各シーンは前のシーンのフレームで始める。
  • 継ぎ目を挟んで同じインターフェースは同じコンポーネントを使用する。 手描きのシーンがあると細部が異なり、ブロック変更時にその違いが突然現れます。
  • 時間を基準に反復処理し、内容を基準にしない。 内容配列をループしてそれより短い時間配列をインデックスすると、拍を1つ減らしただけでレンダリングが停止します。

主観ではなく検証する

エージェントは動画を見たり聞いたりできません。主観的に見えるものすべてに数値があります:

# セクションごとのミックス:音楽上の音声は、音声単独の場合と同様に測定されるべき
ffmpeg -hide_banner -ss 27 -t 4 -i out.mp4 -af volumedetect -f null /dev/null

# 全体のピークは -1 dB 未満である必要がある
ffmpeg -hide_banner -i out.mp4 -af volumedetect -f null /dev/null

# フレームを1つずつ確認する代わりにコンタクトシート
ffmpeg -v error -i f_%d.png -vf "scale=560:-1,tile=5x4" -frames:v 1 sheet.png

loop-music.mjs は自身の継ぎ目を検証します。継ぎ目が無音にならない場合はその旨を通知し、別の2つの隙間を選ぶ必要があります。

実行環境

  • PATHに ffmpeg と ffprobe が必要。Node 20以上。
  • WindowsのGit Bash環境:ffmpeg は glob パターンをサポートせず、drawtext は fontconfig が不足しているため動作しません。代わりに連番ファイルを使用すること。また bc は利用できません。
  • Remotionの staticFile() はスペースやアクセント記号を正しく扱えません。アセットはASCIIにリネームしてください。
  • <Sequence> 内での useVideoConfig().durationInFrames はシーケンスの長さであり、動画全体の長さではありません。絶対フレーム数と混同しないでください。

できないこと

TTSは「話す」ことであり「呼吸」ではありません。ため息、笑い声、効果音は別途録音が必要です。合成ブリップ音はffmpegで生成できます。READMEに例があります。

関連スキル