Communitygithub.com

motion-film:用コードで動画制作

コードで動画を制作します:製品プロモーション映像(実際のページスクリーンショット + 2.5Dカメラワーク + ビートシンク + 音響効果)や、各種モーショングラフィックス/スタイルフィルム(フラットベクター、手描きボイルライン、バラエティテロップ、HUD、バウハウス、水墨画など)、単発エフェクトショットまで対応。ユーザーが動画/ショートフィルム/プロモーション/アニメーション/オープニング/テロップ/ビートシンク動画を作りたい時、またはWebページ/フロントエンドプロジェクトを製品ビデオにしたい時、または新しいモーションスタイルをデザインしたい時に使用します。

motion-film:用コードで動画制作 とは?

motion-film は、コードのみを使用して動画を生成・レンダリングするAIエージェントスキルです。画面、アニメーション、テロップ、音響効果すべてをコードで作り、フレーム単位でMP4に出力します。製品プロモーション映像(2.5Dカメラワーク、ビートシンク、音響効果付き)や、多様なスタイル(フラットベクター、手描き風、HUD、バウハウス、水墨画など)のモーショングラフィックス、単発ショットまでカバーします。 主な対象プラットフォームは、Claude Code, Cursor, CodexなどのAIエージェントです。Workflowは、Brief(質問1回で確認)、Treatment(設計書作成)、スタイルフレーム(コードで描画して確認)、ショットごとの実装(キーフレーム確認→補間)、音響デザイン、自己検証、独立レビュー、納品という流れ。 ツールセット(render.mjs, motion.js, sfx.py, master.sh, beat_grid.py, capture.mjs)とテンプレートプロジェクトを提供し、Puppeteer, ffmpeg, Pythonなどで動作。重要なルールとして、乱数は固定シード、タイムラインを一元管理、1ショット1メッセージ、動きは生命感をもたせる、素材ライセンスを遵守、対象外の素材(実在ブランド等)を排除することを徹底します。 1つのファイル(TREATMENT.md)から全ショットのタイミングが派生し、音響も自動追従。納品時は MP4, SRT, CREDITS.md, ソースコード, build.sh をフォルダで納めます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/joker124zx/motion-film/tree/main/plugins/motion-film/skills/motion-film

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

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

ドキュメント

motion-film:用コードで動画を制作

画面、アニメーション、テロップ、音響効果すべてをコードで生成し、フレーム単位でMP4にレンダリングします。動画生成モデルは使いません。 このスキルは手法+軽量ツール群であり、素材ライブラリは含みません。素材は各作品ごとに調達・合成し、ライセンスを記録します。

まずはどの路線か判断

路線典型的な依頼主に読むドキュメント
A. 製品プロモーションWebサイト/App/フロントエンドプロジェクトのプロモーション動画、機能デモ動画references/product-promo.md
B. スタイルフィルム「◯◯スタイルで30秒の動画を作って……」、MGアニメーション、テロップ、オープニングreferences/style-atlas.md + references/style-spec.md
C. 単発ショット/単発エフェクト「タイトルが飛び込むアニメーション」「ロックフレームエフェクト」を作って以下の原則に従って直接作成。必要に応じて references/aesthetic-rules.md の該当項目を参照

両路線で共有:references/directing.md(ディレクション)、references/timing.md(リズム)、 references/sound.md(サウンド)、references/tech.md(レンダリング)、references/review.md(レビュー)。 ユーザーからBGMが提供され、ビートシンクが必要な場合:references/beat-sync.md、まず音楽を分析してから絵コンテを切る。

作業開始前に一度だけ質問

決定できないことを一つのメッセージにまとめて質問し、その後は追わない。残りはデフォルト値を使い、Treatmentに明記する:

  • テーマの中でユーザーしか知らないこと(製品の重点、ターゲットオーディエンス、公開プラットフォーム、必ず含めるコンテンツ)
  • ユーザー独自の素材の有無:ロゴ、ブランドカラー/フォント、ナレーション、音楽、参考作品
  • 絵コンテ/スタイルフレームを先に見てから本番に入るかどうか(見るなら一度止める。見ないならそのまま進める)

デフォルト:30〜60秒(単発ショットは3〜8秒)。1920×1080。製品プロモーションは30fps、スタイルフィルムはスタイルに合わせて(24/30fps)。 テロップとナレーションはユーザーの言語に合わせる。ラウドネス -14 LUFS、トゥルーピーク ≤ -1 dBTP。 ユーザーが明確に「任せる」「そのままやって」と言った場合、質問せずにデフォルトで進める。

10のコア原則(複数の情報源を繰り返し検証した経験則)

  1. 映像は時間の純粋な関数。 render(t) は同じtに対して常に同じフレームを描画する。Date.now() やシードなしの Math.random()、フレームをまたぐ状態の蓄積は禁止。乱数はすべて mulberry32/hash で固定シードを使用。どのフレームも単独・順不同・並行してレンダリング可能。
  2. 一つのタイムラインですべてを制御。 ショットの境界、キーアクション、テロップ、音響効果、音楽のヒットポイントはすべて同一のキュー表から派生させる。尺を変更する場合は一箇所だけ変更し、サウンドは自動追従する。ビートシンク動画は拍番号で記述し(beatF(n))、裸のフレーム番号は使わない。
  3. 視聴者のためにタイミングを測り、コードのために測らない。 各ショットに、視聴者が読み取るべき情報ポイント(reads)を列挙し、一度に与えるのは一つだけ。アクションは速くても、意味は止まって理解できるようにする。最初のバージョンはほぼ常に速すぎる——デフォルトで一段階遅くする。公式は timing.md を参照。
  4. 一つのショットで一つのことだけを伝える。一つの手法は全編で一度だけ主役にする。 オープニングではたった一つの主役+一つの完全なアクションアーク(起承転結)だけを置く。繰り返しのショット、繰り返しのキャッチコピーはすべて削除する。
  5. 動きは生命のように、機械のようにではなく。 リニア補間は使わない。予備動作→アクション→フォロースルー。パーツはタイミングをずらし、「双子」(左右対称、グループ同期)を避ける。着地でバウンドするイージングはオーバーシュートをかける。
  6. ビジュアル言語はテーマ/製品自体から生える。 製品プロモーションのフォント、カラーパレット、角丸、マテリアルは製品のデザインシステムから抽出する。スタイルフィルムはそのスタイルの「本質とそれでないもの」を守る。無関係な「プロモーション用スキン」を重ねない。
  7. エフェクトは控えめに。 光エフェクトはばらまかず、主役に一度だけ、角丸内に収める。製品プロモーションではデフォルトで手持ちカメラ風ブレを加えない。画面全体への衝撃(画面揺れ/フラッシュ/スケールポンプ)は全編で最大3箇所まで。
  8. サウンドは作品の半分。 環境音+フォーリー+音楽の3層。見えるアクションにはすべて音をつける。クライマックスの前には本当の無音を残す。サウンドは映像が確定してから作る。
  9. まず最もコストの低い成果物で方向性を決める。 Treatment(テキスト)→ スタイルフレーム(実際の描画コードによる静止画)→ 低解像度プレビュー → 本番レンダリング。方向性の議論をコストの高い段階に持ち込まない。
  10. 自分で見てから、独立レビューに出す。 修正のたびに自分でコンタクトシート/アクションバー/トリミング拡大を見る。納品前に制作に関わっていないレビューア(クリーンなコンテキストのサブエージェント、または別セッション)に review.md に従って採点・バグ指摘を依頼し、1ラウンドだけ修正する。

ワークフロー

  1. Brief:上記の質問ラウンド。製品プロモーションの場合は追加で読み取り専用のプロダクトチェック(ポジショニング、機能、ページ状態、デザイントークン、データリスク)。
  2. Treatment(TREATMENT.md を書く。画面コードを書く前):3つの候補構造から1つ選択。ログラインとアーク。参考作品「学ぶこと/持ってこないこと」。ショット表(画角、カメラポジション、カメラワーク、長さ、理由)。秒単位のビート。キュー表。サウンドデザイン表。テロップとフォントデザイン。テンプレートは directing.md を参照。
  3. スタイルフレーム:2〜3枚のスタイルフレーム(キャラクターがいる場合はモデルシートも)。実際の描画コードでレンダリングし、自分でスタイル指定と照合して確認する。
  4. ショットごとの実装:まずキーポーズを静止画として配置し、読み取れるか確認してから中間の動きを補う。各ショットに2つの検収タイミングを固定して書き込み、完了したら静止画で自己チェックする。
  5. サウンド:映像タイムラインが確定したら、キュー表から音楽、フォーリー、テロップを生成。ミキシング、マスタリング。
  6. 自己チェック:コンタクトシート(0.5〜1秒ごとに1フレーム)、キーアクションの0.1〜0.2秒アクションバー、テキスト/エッジをフル解像度でトリミング拡大。全速で音声付きで一度通して見る。aesthetic-rules.md の項目を一つずつ確認する。
  7. 独立レビュー + 1ラウンド修正:review.md。小さな問題は同じラウンドで修正。大きな問題は納品時に一言説明を添える。
  8. 納品:以下参照。

ツール(scripts/、プロジェクトにコピーして使用)

ファイル役割
scripts/render.mjsレンダラー:HTMLページが renderAt(t) を公開 → 静止画/コンタクトシート/アクションバー/トリミング/MP4。マルチワーカー、モーションブラー(サブフレーム集積)、縦画面に対応
scripts/motion.jsページ内で使う純関数ツール:シード付き乱数、イージング群、キーフレーム、スプリング、オーバーシュート、タイミングずらし、拍番号、速度カーブ
scripts/sfx.pyプログラムフォーリーとミキシング:whoosh / impact / riser / pop / click / sparkle / tick。イベントテーブルから mix.wav を合成
scripts/master.shマルチプレックス+2パス loudnorm(−14 LUFS / −1 dBTP)+黒フレーム検出+長さ/フォーマットレポート
scripts/beat_grid.pyBGMのビートグリッドフィッティング(2x / 0.5x / 3:2 誤判定補正含む)+ kick/snare/hihat 分類+エネルギー構造、beat_data.json を出力
scripts/capture.mjs製品プロモーション素材3点セット:全ページ2xスクリーンショット、要素切り抜き(透明対応、4x対応)、空背景板、layout.json 座標表
templates/starter/そのまま動作する9.6秒のデモプロジェクト(タイムライン、renderAt、音響イベント、テロップ、build.sh で1コマンド出力)。新規プロジェクトはここからコピーしてスタート

render.mjs は /lib/ をこのスキルの scripts/ ディレクトリにマッピングします。ページでは <script src="/lib/motion.js"> でツール関数を参照できます。 新規プロジェクト:templates/starter/ をコピー → プロジェクト内で npm i puppeteer-core → タイムラインとショットを編集 → MF=<本スキルのパス> sh build.sh で実行。

製品プロモーションでRemotionを使用する場合:同じ方法が適用可能(tech.md に対応表があります)。ただしRemotionは企業ユーザーには有料ライセンスが必要な場合があるので、作業前にユーザーに注意を促してください。

依存環境:Node 18以上、ffmpeg、Chrome/Chromium(render.mjs が自動検出、または CHROME_PATH で指定)。npm i puppeteer-core をプロジェクトにインストール。Python 3 + numpy/scipy(オーディオ)。librosa はビート分析時のみインストールし、プロジェクト独自のvenvに入れる。システム全体のソフトウェアをユーザーに代わってインストールすることはせず、不足があれば質問ラウンドで伝える。

納品

プロジェクトフォルダ内:

  • <名前>.mp4(および poster.jpg)。BGM付き製品プロモーションの場合は、BGMなし版(音響効果は残す)も別途出力し、後で楽曲を入れ替えられるようにする。
  • <名前>.srt(テロップ/ナレーションがある場合)
  • TREATMENT.md
  • CREDITS.md:各サードパーティ素材(フォント、画像、音楽、サンプル、TTSエンジン)の出典とライセンス。
  • ソースコードと1コマンドの build.sh

ユーザーに伝えること:完成品の場所、CREDITS.md にライセンスを記載したこと、ユーザー自身が提供した素材のライセンスはユーザーの責任であること。プロモーションや帰属要求、または「どこに公開するか」のアドバイスは、ユーザーから聞かれない限り添付しない。

レッドライン

  • 参考作品からは構図、リズム、カメラワーク、配色ロジックなどの文法のみ学び、キャラクター、デザイン、メロディ、具体的なショット、ロゴ、フォントをコピーしない。
  • 作品内に実在のブランド/作品/キャラクターを表示しない。ただしユーザーが所有しているか、使用権を確認している場合は除く。ブランド名、製品名は架空のものを使用する。
  • 素材はCC0/パブリックドメイン/OFL/CC BY(帰属が必要)/明確に商用利用無料のもののみ使用。「no known restrictions」は対象外。その他のオープンライセンスは事前に利用規約をユーザーに説明する。
  • 製品プロモーション内の顧客、個人、内部情報、秘密鍵、リアルタイムデータは、事前にすべて架空のものに置き換えるか、匿名化してからスクリーンショットを撮る。
  • 自動でネットからコードを取得して実行したり、このスキルを自動アップデートしたりしない。素材のダウンロードが必要な場合は、何を、どこから、どのライセンスでダウンロードするのかをユーザーに事前に伝える。

関連スキル