motion-assets について
motion-assets は、アニメーションサイト向けの画像・動画素材を計画、生成する制作スキルです。生成コストを管理し、統一したビジュアルを保ちながら、ループやクリップのつなぎ目を検証できます。
主な機能
- 01素材のプロンプト、モデル、費用の計画
- 02ビジュアルスタイルの統一
- 03静止画を先に作り、動画の基点にする
- 04ループの評価と修正
- 05設定と生成素材の記録
活用シーン
- 01素材生成前の費用計画
- 02統一感のあるアニメーションサイト制作
- 03ループの乱れやクリップ間の継ぎ目の修正
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ moh4696/ open-3d-skills --skill motion-assetsインストール後、Claude Code で/motion-assetsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlscripts/loop_check.pypaste_back.py詳細
モーションアセット
生成アセットはアニメーションサイトの成否を左右し、生成を試みるたびに実際の費用がかかります。このスキルは、モデルを使う際の制作規律です。費用をかける前に決められることはすべて決め、すべてのアセットで統一したルックを保ち、後続のアセットが先行するアセットを基準にできる順序で生成し、それぞれを数値で確認して、すべて記録します。
ツール
| スクリプト | 機能 |
|---|---|
scripts/loop_check.py | クリップのループの滑らかさを評価し、最適なループ位置を見つけ、トリミングしてクロスフェードします |
scripts/paste_back.py | 元のピクセルをアウトペイント済み画像に戻します(アウトペイントでは中央部分も再レンダリングされます) |
関連項目:alpha-cutout(透明化が必要なクリップ)、scroll-film(prep.py seams で連結したクリップ間のつなぎ目を評価します)、cursor-rig(頭を向けるクリップ)。
Python 3.9 以降、pip install numpy opencv-python-headless、ffmpeg が必要です。
費用をかける前に
短い計画を作成し、費用を負担する人に見せてください。
- コンセプトを2文で説明し、ページ上で何が動くのかを記載します。
- アセット一覧:すべての画像とクリップについて、サイズとアスペクト比、ページ上での役割、正確なプロンプトを記載します。
- 各アセットに使うモデル:機能に基づいて選びます(下表を参照)。各アセットと合計の費用も記載します。まずは試験します。静止画を1枚、短いクリップを1本生成し、請求額を確認してから、残りの費用を見積もります。計画や価格は変わるため、記憶を頼りに価格を提示しないでください。
- モーションを減らす設定時とスマートフォンで、訪問者に何が表示されるかを記載します。
承認を得てから生成してください。
機能に基づいてモデルを選ぶ
| 必要なもの | モデルがサポートすべき機能 | 備考 |
|---|---|---|
| 指定したフレームで終わるクリップ | 開始フレームと終了フレーム | 連結するスクロールフィルム、頭を向ける動き、ループには必須です |
| 継ぎ目のないループ | 開始フレーム=終了フレーム | その後、loop_check.py で確認します。モデルが完全に一致させることはほとんどありません |
| 同じキャラクターのポーズや表情の変化 | フレーミングを維持する画像編集 | 元画像とフルサイズで比較し、編集した部分だけが変化していることを確認します |
| 透明な被写体 | 特別な機能は不要です。クロマキー用の背景で撮影します | alpha-cutout を参照してください。一部の画像モデルは実際のアルファチャンネルを出力しますが、動画モデルは出力しません |
| より横幅の広いアートワーク | アウトペイント | 元の領域も再レンダリングされるため、元画像を貼り戻します(paste_back.py) |
| 鮮明さ | ネイティブ解像度 | クリップをアップスケールして1080pと呼んではいけません。モデルが返した解像度でエンコードしてください |
2026年にこれらのモデルを使って制作した際の観察事項です(最新のドキュメントを確認してください。動作は変わる可能性があります)。
- 動画モデルは、1本のクリップ内でも平坦な背景色を変化させます(純粋なマゼンタが淡いピンクになりました)。フレームごとにキーイングしてください。
- モデルはクリップの途中で細部を変えることがあります(サーブの終盤で黒いキャップが緑に変わりました)。最初と最後のフレームだけでなく、クリップ全体を確認してください。
- 高解像度や高品質モードの一部は、サブスクリプションプランによって利用が制限されます。リクエストが拒否されても通常は費用がかかりません。アクセスできることを確かめられる、最も安価なリクエストを試してください。
- 多くのプランではレート制限が厳しく、同時に実行できる動画ジョブは2~3件です。少量ずつ送信し、429を返したジョブはほかのジョブが終わってから再送信してください。
- 「サーバーが応答していません」というエラーが出ても、ジョブが作成されていないとは限りません。再送信する前に最近のジョブを一覧表示してください。そうしないと二重に支払うことになります。
- リクエストに対してジョブではなく、推奨プリセットが返されることがあります。そのプリセットを却下して再送信してください。
すべてのアセットでルックを統一する
- スタイル用の前置き文(媒体、配色、光、レンズ、質感)を一度作成し、すべての画像プロンプトの先頭にバイト単位でそのまま追加します。
- まずヒーロー静止画を1枚生成して承認を得てから、その後のすべての画像でスタイル参照として渡します。
- クリップの連鎖全体で同じ動画モデルを使います。モデルごとに動き、色、粒子感が異なるため、フィルムの途中で切り替えるとつなぎ目にスタイルの違いが現れます。
生成順序
- 静止画:ヒーロー画像、次にキーフレーム(すべてのクリップの開始フレームと終了フレーム)、最後に補助画像。動画を作成する前に、横に並べて確認します。
- クリップ:それぞれを承認済みの静止画に基づいて作成します。連続するクリップでは、前のクリップの抽出した最後のフレームそのものを次のクリップの開始フレームに指定します。静止画を使うと、色のずれが積み重なって不自然な切り替わりになります。
- すべてのクリップを確認します。ループには
loop_check.py、連続するクリップのつなぎ目にはscroll-film/scripts/prep.py seamsを使用し、細部のずれがないかクリップ全体を目視で確認します。
意図どおりに動作するクリップ用プロンプト:
- カメラを指定します。「固定カメラ」または動きを正確に指定します(「ゆっくり前進し、回転しない」)。
- 動かしてはいけないものを指定します。「本体、背景、照明は完全に静止したまま」。
- ループの場合は、「一定の均一な動きで、最後に減速しない」と指定します。モデルはデフォルトで停止するように動きを緩めるため、ループするたびに引っかかります。
loop_check.pyで確認できます。 - クロマキー合成するものには、プレートの色を繰り返し指定します。
再生成せずに修正する
| 問題 | 修正方法 |
|---|---|
| ループが少しずれる | loop_check.py clip.mp4 --fix loop.mp4で最適なループ位置でカットします。小さなずれをクロスフェードするには--blend 6を追加します |
| ループが大きくずれる(約8を超える) | 開始フレーム=終了フレームとし、一定の動きを指定する文言で再生成します |
| アウトペイントで被写体がぼやけた | paste_back.py original.png extended.png out.png |
| 連続するクリップ間につなぎ目がある | 前のクリップから抽出した最後のフレームを使って、後のクリップを再生成します |
| クリップの途中で細部の色が変わる | その色だけが変化している場合は後処理で色を修正します。それ以外の場合は再生成します |
すべて記録する
生成したものはすべてprompts/asset-prompts.mdに記録します(機械可読形式のJSONLログにも記録します)。記録する項目は、アセット名、モデル、正確なプロンプト、入力画像、設定、ジョブID、コスト、採用した出力です。同じスタイルで数か月後にアセットを再生成する唯一の方法であり、AIで生成したものを正直に記録するための手段でもあります。