Communitygithub.com

making-promo-videos

コード(Remotion)でプロモーション動画、ローンチフィルム、製品アップデート、SNS動画の作成、計画、編集、リタイミング、再レンダリングを行う際に使用します。カメラワーク、音楽同期、ナレーション、効果音、縦型・横型レンダリングを含みます。

making-promo-videos とは?

このスキルは、コードベースでプロモーション動画を制作するための包括的なワークフローを提供します。Remotionを使用し、Reactコンポーネントをフレームごとにレンダリングすることで、すべての要素(映像、カメラ、音楽、効果音)を単一の同期マップで制御します。リタイミングや編集が一貫して行えるよう、HITS名を参照して各要素を連動させるのが特徴です。対応プラットフォームはRemotionベースの環境で、縦型(1080x1920)と横型(1920x1080)の両フォーマットを単一のコンポジションでレンダリングできます。ワークフローは、ストーリーボード仕様の作成、キャスティングボードによる監督の承認プロセス、720pプレビュー、そして最終レンダリングと段階的に進みます。音声ルールでは、商用ライセンスのTTS使用、音楽のクレジット管理、-15 LUFSのラウドネス基準などが厳格に定められており、品質保証として型チェック、ラウドネス測定、静止画確認が必須です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/HenryCh-hong/making-promo-videos/tree/main/skills/making-promo-videos

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

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

ドキュメント

コードでプロモーション動画を作成する

概要

コード(Remotion:Reactコンポーネントをフレームごとにレンダリング)で制作されるプロモーションフィルム。以下の4つの原則に基づいて動作します。

  1. 1つの同期マップですべてを制御する。 映像、カメラ、音楽、効果音はすべて名前付きヒットを参照するため、1つをリタイミングするとすべてがリタイミングされます。
  2. カット前にキャストする。 監督は、フィルムが変更される前に選択肢を聞き、見ることができます。
  3. 最終版の前にプレビュー。
  4. すべての主張は製品に忠実であること。

最初にハウスルールを確認: 何よりも先に、ビデオリポジトリ独自のルール(README、CLAUDE.md、またはリポジトリルートの house-rules.md)を読んでください。それらが以下のデフォルト設定よりも優先されます。このフォルダ内の house-rules.example.md は、ハウスルールを作成するためのテンプレートです。

新しいフィルムのセットアップ

  • 1フィルムにつき1つのブランチまたはワークツリーを使用し、ビデオ専用のリポジトリ内で行います。製品アプリ内には決して配置しません。各フィルムには専用のフォルダを作成します:src/videos/<name>/。
  • このスキルから templates/ をそのフォルダにコピーします:
    • sections.ts:同期マップ、HITS、TRACK_BPM
    • film-camera.tsx:2.5Dカメラ
    • shots.ts:ショットリスト
    • Film.tsx:コンポジションスケルトン。ヘッダーに Root.tsx の登録を含む
  • templates/render.sh と scripts/*.py をリポジトリの scripts/ にコピーします。
  • 依存関係は、すべて同じバージョンで固定します:remotion、@remotion/cli、@remotion/motion-blur。オーディオスクリプトの場合:ffmpeg、および numpy と soundfile。
  • 1つのコンポジションで、format プロップに基づいて両方のフォーマット(横型1920x1080、縦型1080x1920)をレンダリングします。各フォーマットは個別にレイアウトされ、レターボックスは使用しません。

ワークフロー

  1. ストーリーボード仕様(インストールされている場合は、スーパーパワー:ブレインストーミングスキルを使用)。これを docs/.../YYYY-MM-DD-<name>-design.md に書き込みます。画面上のすべての主張を製品のコードとライブフラグに対して確認し、製品と同じ表現で記述します。
  2. フィルム編集の前にキャスティングボード。 音声(セリフを読み上げたもの)、タイピング音、複数の音楽オプション、ルックやキャラクターのドラフトを表示します。それぞれにコード(A1、B4、M1…)を付けます。ビジュアルドラフトは小さなボードコンポジションとしてレンダリングし、ページを非公開で公開し、監督の選択を待ちます。音声、トラック、ルックを黙って選択しないでください。
  3. 構築。
    • コピーとタイミングは設定ファイルに記述します。
    • シーン、ショット、サウンドは HITS 名を参照し、生の数値は使用しません。
    • カメラワーク:camera.md を参照してください。
  4. 720pプレビュー(scripts/render.sh <Comp> <format> preview <name>-preview-vN-720p)。確認した内容、テストできなかった内容、リクエストから変更した点を報告します。
  5. 承認後のみ最終版: フルサイズ、両方のフォーマット。マシンがスリープすると長時間のレンダリングは停止するため、事前に電源設定を確認してください。
  6. フィルムのブランチにコミット。 依頼があった場合のみマージまたはプッシュします。以前のフィルムはレンダリングに影響を与えないようにしてください。

オーディオルール

ルール理由
映像はミュートでレンダリングし、別途 --codec=wav でレンダリング、その後 scripts/mux.py (-15 LUFS + リミッター)で合成する。Remotionのレンダリング内AACは、サウンドトラック全体が43ミリ秒遅れます。
音楽は商用ライセンスされているか、生成されたものであり、すべてのファイルは CREDITS.md に記録されます。「無料」の効果音パックの中には商用利用が許諾されていないものがあります。
選択したトラックに合わせるには:scripts/beatgrid.py track [bars] [arc] でBPMとダウンビートを取得します。TRACK_BPM を設定し、music-edit.py(小節全体、ダウンビートでクロスフェード)または fit-track.py(ストレートウィンドウ)でトラックをカットします。フィルムはトラックに合わせてリタイミングされ、その逆ではありません。
音声は、商用ライセンスのあるTTS(Kokoro-82MはApache-2.0)からのみ使用します。macOSの say は絶対に使用しないでください。say のライセンスは個人利用かつ非商用です。
効果音は決定論的に生成します。新しいサウンドは、それぞれ独自のPRNGを使用して最後に追加します。そうしないと、後続のすべてのファイルが変更されます。
レンダリングでは決して Math.random() を呼び出さないでください。代わりに film-camera.tsx の hash() を使用します。フレームは毎回同じようにレンダリングされる必要があります。

引き渡し前のQA

  • 型チェック。
  • ラウドネスは約 -15 LUFS、トゥルーピークは -1 dBTP 未満(ffmpeg -af ebur128)。生のWAVピークは0.99未満に保ち、クリッピングがないようにします。
  • 効果音が指定のヒットフレームに正しく配置されていること。
  • QRコードが1080pと720pの両方でデコードできること。
  • 変更されたすべてのセクションの静止画を両方のフォーマットでレンダリングし(Remotion renderStill)、自分自身で確認すること。 レビュエージェントはカットエッジを見逃す可能性があり、小型で高速なモデルによるレビューは正式なレビューとはみなされません。

よくある間違い

間違い修正方法
モーションが生のフレーム、拍、秒にキー設定されているsections.ts に名前付きヒットを追加し、それを参照する。
カメラのロールやチルトが後続のショットに漏れているキーは引き継がれるため、フィールドをリセットする(roll: 0)。
承認前に最終版をレンダリングしてしまった最初に720pプレビューを送信する。
監督が聞いたり見たりしたことのない音声、トラック、ルック最初にキャスティングボードに載せる。
オーディオ付きのシングルパスmp4ミュート映像、次にWAV、最後にmux。
複数日にわたるフィルムのスクラッチ作業を /tmp に保存しているシステムがクリーンアップする。実際のワークツリーフォルダを使用する。
オートモードで拒否される $(...) やループを含むシェルワンライナーロジックをスクリプトファイルに記述する。

関連スキル