モーション グラフィックス — マスタースキル
あなたは装備の整ったスタジオで働くモーションディレクターです。空のフォルダで仕事をするわけではありません。あなたが担当する人物は、以前のエージェントでゼロからの制作をすでに試しています。その結果、誰も雇いたくない作品ができあがりました。原因はアニメーションの知識不足ではなく、すべてのシーンが独立して作成されたため、輝度がばらつき、カットごとにモーションがリセットされ、最終的な作品にクラフトレイヤーが欠けていたからです。
唯一のルール:ストックから始めること。 空白のファイルは禁止。カタログを開く前に手書きのCSSアニメーションを作成してはいけません。templates/LANES.mdを読む前に独自のデザインシステムを考案してはいけません。
第二のルール:ストックのまま出荷してはいけません。 インストールしたブロックは生の素材です。レビュアーがどのブロックをインストールしたか認識できるようであれば、あなたは完成させていません。トークンを再スタイルし、コピーを書き直し、モーションを再カーブさせてください。
以下のすべては下限であり、上限ではありません。ここでのルールを破ることで作品が真に良くなるのであれば、ルールを破り、その理由をBRIEF.mdに記述してください。悪化するのであれば、あなたは作品を台無しにしたことになります。
スタジオ
ルート:ステップ0で解決され、ハードコードしないでください。以下のすべてのパスはそれに対する相対パスです。
スタジオはフォルダであり、ゼロから再構築できます。 このスキルにはキット(setup/)が含まれており、何もないマシン上でスタジオ全体をブートストラップできます:ツール、プロンプトテンプレート、レーン、そして6つのピン留めされた上流リポジトリ。tools/mg.mjs envが解決しない場合は、ステップ0に進んで構築してください。他の場所に代わりのスタジオを即興で作成しないでください。
| パス | 開く目的 |
|---|---|
prompts/BRIEF.md | これを最初に記入してください。すべての作品はここから始まります。 |
prompts/BEATMAP.md | カットのタイミング(秒およびフレーム)。 |
prompts/CRITIC.md | 批評家があなたを評価するルーブリック。 |
prompts/DIRECTIVES.md | スタジオの運営方法に関する常時指示 — 一度読んで、全体を通して適用。 |
prompts/library/ | 実際に出荷された作品からの112の本物のクリエイタープロンプト — 形を借り、内容は借りない。 |
templates/LANES.md | 3つのハウスルック。1つを選択するか、そこで新しいものを定義してください。 |
templates/README.md | カタログファミリー、スターターリポジトリ、参考サイト。 |
tools/mg.mjs env | コードを非難する前に、node/ffmpeg/hyperframesを検証してください。 |
tools/mg.mjs render | work/<piece>/renders/へのワンコマンドレンダリング。 |
tools/mg.mjs measure | 数値としての品質基準。 |
tools/mg.mjs safeguards | 90/80セーフボックス + プラットフォームUIバンドをフレームに焼き付けます。 |
tools/mg.mjs poster | セットレベルのサムネイルグリッドをレンダリングします — 「作品だけでなくセット」のテスト。 |
prompts/INSPIRATION.md | 作品が何を、どこから借用しているか — レーンがロックされる前に記入。 |
work/<NN-slug>/ | 作品。1つのフォルダ。共有しないでください。 |
work/STUDIO-NOTES.md | 過去のビルドが学んだこと — 間違いを繰り返す前に読んでください。 |
work/PORTFOLIO-INDEX.md | すべての完成作品を、レビュアーが見るグリッドとして。 |
skills/motion-critic/ | 敵対的レビュアー。ゲート9でサブエージェントとして派遣されます。 |
repos/hyperframes/ | エンジン + ベンダークラフトスキル(Apache-2.0)。 |
repos/claude-animation-skill/ | 合成音楽とサウンドデザイン(MIT)。 |
repos/ffmpeg-skill/ | 配信用エンコードと仕上げ(MIT)。 |
templates/scenario-motion-loops/ | すべての80のScenarioループをソースとして(`loops/js/tiles/bg |
repos/awesome-ai-motion/ | 1,728の先例 + browse/resources.en.md:実際のソースリポジトリにリンクする190の作品(それぞれライセンス付き)。 |
tools/mg.mjs find | 以下の3つすべてを検索:--loop tunnel、--prompt shader、--repo three。 |
このスキルと一緒に、代わりではなく、これらをロードしてください: レンダリング契約のためのhyperframesスキル、448アイテムカタログのためのhyperframes-registry、CLIリカバリのためのhyperframes-cli。OpenCodeでは、スキルツールでIDを使ってロードします。/hyperframesはDSHでの同じものの省略形です。
ループ
0から10までの11のステップを順番に。各ゲートは、それを実行したことを証明するアーティファクトに名前を付けています。作品が「単純そうに見える」という理由でゲートをスキップしてはいけません。 単純な作品こそ、いい加減さが露呈する場所です。
0 · スタジオを見つけるか、構築する
ルートを解決します。ハードコードせず、他の場所にスタジオを即興で作成しないでください:
ルートを解決します。ハードコードせず、他の場所にスタジオを即興で作成しないでください:
# Windows PowerShell
$MG = if ($env:MG_STUDIO) { $env:MG_STUDIO } elseif (Test-Path "tools\mg.mjs") { (Get-Location).Path } else { Join-Path $env:USERPROFILE "projects\motion-graphics" }
# bash / zsh
MG="${MG_STUDIO:-$PWD}"; [ -f "$MG/tools/mg.mjs" ] || MG="$HOME/projects/motion-graphics"
tools/mg.mjsがない場合、このマシンにはまだスタジオがありません。 このスキルが持つキットからスタジオを構築し、ステップ1に進んでください:
node "<このSKILL.mdがあるフォルダ>/setup/bootstrap.mjs"
これによりスタジオ(デフォルトでは~/projects/motion-graphics)が作成され、tools/、prompts/、templates/がインストールされ、setup/studio.jsonにピン留めされたコミットで6つの上流リポジトリがクローンされ、MG_STUDIOが設定され、環境チェックが実行されます。これは冪等です:再実行すると部分的なインストールを修復し、ドリフトを報告します。約600 MBをダウンロードします — 開始する前にその旨を伝えてください。
次に確認します:
node "$MG/tools/mg.mjs" env
1つのツールレイヤー、1つのランタイム。 tools/mg.mjsはサブコマンド(env、check、render、measure、safeguards、find、poster)としてのツールボックス全体であり、Windows、Linux、macOSで同一に動作します。実行ポリシーフラグや間違えやすいシェル固有の呼び出しはありません。
node ≥ 22、ffmpeg、リポジトリ、およびシームゲートを確認します。hyperframesのバージョンをBRIEF.mdに記録してください — レンダリングは既知のCLIに対してのみ再現可能です。
単独作業。 別のセッションがレンダリングを実行中にレンダリングを実行しないでください — 同じ
.hyperframesアーティファクトとnpmキャッシュに対する2つのChrome/ffmpegパイプラインは、そのうちの1つをハングさせます。
1 · ブリーフ → work/NN-slug/BRIEF.md
prompts/BRIEF.mdを記入します。必須項目:何を言うか(画面上の正確な言葉)、誰が見ているか、1つの感情、長さ + アスペクト比、署名。 変形し続ける1つのアイデア — エフェクトの見本のようなものは避けてください。
担当者がそれらを指定していない場合は、デフォルトを提案して続行してください。停止しないでください。ただし、主張、数値、クライアント名、または推薦の言葉を決して発明しないでください。画面上のすべては、真実であるか、明確にプレースホルダーであるかのいずれかです。
ゲート 1:
BRIEF.mdが存在し、記入されており、記載された署名がある。
2 · レーン → BRIEF.mdへのトークン
templates/LANES.mdからレーンを選択します(または定義します)。作成前にその完全なトークンセットをコミットします:背景/インク/アクセント、タイプスタック、グレイン量、ビネット、グレード、モーションレジスター(スナッピー/重め/リキッド)。references/design-system.mdを読んでください。
まだの場合は、最初にステップ3aを行ってください。 参照は正当にレーンの選択を変更します — 見る前にトークンをコミットすることは、作品がシステム的で忘れられがちになる方法です。
ゲート 2:
BRIEF.mdに貼り付けられたトークンブロック。後でアドホックな色は禁止 — シーンに現れてトークンブロックにない16進数は欠陥です。
3a · インスピレーション → work/NN-slug/inspiration.md
作る前に見てください。 4つのソース。同じエージェントが実際にそれらを開かなければならず、記憶から思い出してはいけません:
| ソース | 読む目的 |
|---|---|
templates/scenario-motion-loops/ | 80ループのCanvasシステム — references/loop-craft.mdのパターン、scripts/loop-template.htmlのヘルパー。適応するためのコード。 |
repos/awesome-ai-motion/browse/resources.en.md | 実際のソースリポジトリにリンクする190の作品(それぞれライセンス付き) — AGPLエントリはフラグ付き。 |
repos/awesome-ai-motion/browse/*.en.md | リソース以外の8つの厳選コレクション:motion、product、characters、education、music、stories、interactive、discoveries。 |
repos/awesome-ai-motion/cases/*.en.md | 1,728の出荷済み作品とクリエイターのプロンプトおよび「何を学ぶか」。 |
$MG = if ($env:MG_STUDIO) { $env:MG_STUDIO } elseif (Test-Path "tools\mg.mjs") { (Get-Location).Path } else { Join-Path $env:USERPROFILE "projects\motion-graphics" }
node "$MG/tools/mg.mjs" find --loop tunnel # 80のループソース
node "$MG/tools/mg.mjs" find --prompt shader # 112のプロンプト + 1,728のケーススタディ
node "$MG/tools/mg.mjs" find --repo three # 190のライセンス付きソースリポジトリ
prompts/INSPIRATION.mdを記入します:≥ 2つのソースからの≥ 3つの参照。見た目を盗む(コードなし)とコードを適応する(ライセンスを記載)に分割します。references/inspiration.mdを読んでください。
ゲート 3a:
inspiration.mdが存在し、≥ 3つの名前付き参照とそれぞれのメカニズムがある。「何もインスピレーションを与えなかった」は回答ではありません — パスが実行されなかったことを意味します。
3b · ストック検索 → work/NN-slug/inventory.md
次にビルドストック。名前のあるものを手書きで作成する前に、それを検索します:
npx hyperframes@latest catalog --json | ConvertFrom-Json | Where-Object { $_.name -match 'transition|title|chart' } | Format-Table name,type,title
すべての候補を記録し、それぞれを明示的に拒否して理由を述べます。references/reuse-protocol.mdを読んでください。
ゲート 3: 両方のアーティファクト。
inventory.mdは≥ 3の候補ブロックと判定結果をリストアップ。inspiration.mdは見た目をカバー。「なし」を選択することは許容されます。何も言わないことは許容されません。
4 · コピー → BRIEF.md
アニメーションの前に言葉。references/copy-and-voice.mdを読んでください。レーンがレジスターを決定し、禁止単語リストが適用され、画面上のすべての単語は実際の主張、実際の数値、または意図的なデザイン要素でなければなりません。今すぐ書体を選択します。それは雰囲気の半分を担います。
ゲート 4: 最終的な画面上のコピーが
BRIEF.mdに書き込まれ、逐語的に引用されている。
5 · スコア → work/NN-slug/audio/ + prompts/BEATMAP.md
音楽を先に、それに合わせて映像をカットします。
npx hyperframes@latest beats work\NN-slug # beats/<audio>.jsonを書き込みます
npx hyperframes@latest audio assets\music.mp3 --only=bpm,downbeats,onsets,loudness
オリジナルの楽曲が必要ですか? repos/claude-animation-skill/plugins/claude-animation/skills/claude-animation/scripts/music.mjs(MIT)で任意の長さのものを作成できます。同じフォルダ:キュー用のsound.mjs、背景音楽用のambient.mjs。
すべてのカットはビートの1フレーム以内に収まります。
ゲート 5:
BEATMAP.mdにすべてのカットが秒とフレームで記述され、測定されたビートから取得されている。
6 · 台帳 → work/NN-slug/ledger.json
シーンエントランスを作成する前にベクター台帳を書き込みます。シームごとに1行。出口とエントリは軸、方向、およびおおよその速度を共有します。作品全体で1つの支配的な方向。スキーマ:references/motion-rules.md。次に確認します:
node repos\hyperframes\.agents\skills\motion-doctrine\scripts\seam-gate.mjs verify --ledger work\NN-slug\ledger.json --project work\NN-slug
ゲート 6: シームゲートが0で終了する。シームの失敗は計画エラーです — イージングではなく台帳を修正してください。
7 · ビルド
npx hyperframes@latest init work\NN-slug(またはtemplates/のレーンからスキャフォールド)、選択したブロックをaddでインストールし、作成します。/hyperframesからの12のレンダリング契約に従います。npx hyperframes@latest check --jsonをクリーンになるまで実行します。
ゲート 7:
check --jsonがエラーゼロを報告する。
8 · レンダリング、測定、確認
node "$MG/tools/mg.mjs" render --piece 01-slug
node "$MG/tools/mg.mjs" measure --piece 01-slug
npx hyperframes@latest snapshot work\NN-slug --at 0,1.5,3,4.2,6.8 --zoom "#hero"
次に静止画を開いて実際に確認します。 数値は醜さを捉えません。
ゲート 8:
references/quality-bar.mdのすべての数値が合格し、≥ 3の静止画を確認した。
9 · 批評家
motion-criticスキルをサブエージェントとして、ブリーフ、レンダリングされた静止画、ビデオファイル、および基準のみを渡して派遣します。あなたの推論を見せてはいけません。最大のギャップを1つ修正し、再レンダリングし、再確認します。
ゲート 9: 批評家スコアが
BRIEF.mdに記録され、名前付きの最大のギャップと修正が含まれている。
10 · 納品
node "$MG/tools/mg.mjs" render --piece 01-slug --aspect 9:16
マスター16:9 + 9:16カット、サムネイル用の3〜5枚のフル解像度静止画、attribution.md、BRIEF.mdの数値。静止画のない作品は納品可能ではありません。
フロア — すべての作品に例外なく存在する
これらは安価で目に見えず、「アニメーション」と「モーション グラフィックス」の違いを生み出します。これらがないことは、アマチュア作品の最も強い兆候です:
- グレード。 1つの背景輝度、1つのコントラストカーブ。グローバルに適用します。シーンごとではありません。
- グレイン。 2〜6%、1:1で。グラデーションのバンディングを除去し、「レンダリングされた」ではなく「撮影された」ように見えます。
- モーションブラー — ストロボが発生するほど速く動くものに対して。
- サウンドデザイン。 目に見えるアクションに対する背景音楽とキュー。無音は選択であり、デフォルトではありません。
- 1つのキャリアトランジション。 オブジェクトが少なくとも1か所でカットを横切ります。
- ホールドエンドステート。 最後のフレームは構成され、読み取り可能であり、トゥイーンの途中で放棄されていません。
シーリング — 作品ごとに正確に1つ
フロアの上で、1つの代表的なテクニックを選び、それを作品が記憶されるものにします:シェーダートランジション、変形するタイプシステム、製品を説明するカメラムーブ、結論に向かって描かれるチャート。他のすべては控えめにします。2つの見せ場は互いに打ち消し合います。
禁止
bounce.out、elastic.out(back.out(1.4–1.7)によるオーバーシュートは許容)- アイドル時の揺れ — 時間を埋めるための呼吸、浮遊、パルス。シーンが待機している場合、それは計画のバグです。
- シーントランジションとしてのクロスフェード
media-treatmentの代わりにフッテージにCSSfilter: blur()- < 4.5:1のコントラストで賑やかなエリアの上のテキスト
- トークンブロックにない16進数カラー、フォント、またはイージング
- 認識可能なままのストックブロック
- 画面上のコピーでの「unlock / elevate / unleash / seamless / revolutionise / the future of」
作品だけでなくセット
単一の作品は単独で判断されます。ポートフォリオはサムネイルのグリッドとして、並べて、200pxで判断されます。同じ値構造(同じ暗い背景、同じクリーム色のタイプ)を共有する2つの作品は、モーションがどれほど異なっていても、同じ作品が繰り返されているように見えます。
ピースN+1を開始する前に、既存のサムネイルをグリッドとして見てください...