モーション・グラフィックス — ディスパッチエントリ
ステップ0の前にルートを確認してください。 このスキルは短く、デザイン主導で、ナレーションのないモーショングラフィック(モーションがメッセージであり、約10秒未満、音声なし)を作成します。より長く、マルチシーン、またはナレーション付きの作品 →
/general-video;ウェブサイトのナレーション付きビデオ →/website-to-video;トピック説明動画 →/faceless-explainer;製品プロモーション →/product-launch-video;既存の映像へのキャプション →/embedded-captions。対象外:ライブ/レンダリング時のデータ、またはキャプチャできない映像。モーション・ファーストかナレーション付きか不明な場合?最初に/hyperframesをお読みください。
アセットファーストの短いデザイン主導モーショングラフィックです。アセットファースト:ショットをデザインする前にアセット戦略を決定し実際の素材を入手し、その素材に基づいてショットをデザインし、カタログ機能を再利用して構成します。すべての成果物はPROJECT_DIR = videos/<project-name>/(ステップ0で作成)の下に置かれます。以下のパスはすべてこのディレクトリからの相対パスです。
| フェーズ | 実行 | 主要成果物 | 詳細フロー |
|---|---|---|---|
| init | Bash | hyperframes.json | ステップ0 |
| plan | サブエージェント — 検索の要否を判断 + 分類 + アセット戦略 | shot-plan.json(ドラフト:カテゴリ、asset_needsクエリ、概要) | agents/director.md(パート1) |
| source ◇ | Bash — メディア・ユース解決(asset_needsが空の場合はスキップ) | assets/ + assets/index.md | phases/source/guide.md |
| design | サブエージェント — 解決済みアセットを基にショットデザイン | shot-plan.json(最終版:ブロック + レイアウト + モーション + 位置情報) | agents/director.md(パート2) |
| build | サブエージェント — 再利用ファーストの構成 | compositions/index.html | agents/builder.md |
| render | Bash — hyperframes render(MP4、またはオーバーレイ用に--format webm/mov) | renders/video.mp4 | ステップ5 |
| verify | Bash — lint / inspect -> 障害時は修復サブエージェントを起動 | (その場で修正) | agents/finalize.md |
◇ sourceは、選択されたカテゴリがアセットを宣言している場合のみ実行されます。純粋なコード/テキストカテゴリ(例:kinetic-type、ほとんどのcharts/stat)はasset_needs: []を持ち、計画からデザインへ直接スキップします。
カテゴリ — 検索判断による分割
planの最初の判断は:これには検索が必要か? この分岐によりカテゴリは2つのグループに分けられます。その後、具体的なカテゴリが選択されます — 検索駆動型の場合は、検索結果のコンテンツタイプに基づいて選択されます。各カテゴリはcategories/<id>/module.md(計画・ビルドルール)に対応し、共有モーション語彙はreferences/motion-vocabulary.md(→ hyperframes-animationルール/ブループリント + レジストリブロック)にあります。
フォームカテゴリ — 検索不要;ユーザーがコンテンツを提供するもの:
| カテゴリ | 意図 | 依存先 |
|---|---|---|
kinetic-type | インパクトのある一文/引用/タイトル、モーション優先テキスト | caption-* ブロック + アニメーションルール |
stat | 単一のヒーロー数字/カウントアップ + リング | apple-money-count / rules/{counting-dynamic-scale, stat-bars-and-fills} |
charts | 棒/折れ線/円/レース/データからの%表示 | data-chart ブロック |
logo-reveal | ロゴスティング/ブランドロックアップ(ユーザーロゴ) | logo-outro / rules/svg-path-draw |
lower-thirds | 名前/タイトルバー、コールアウト、ソーシャルオーバーレイ | caption-* + レジストリオーバーレイブロック |
検索駆動型カテゴリ — まず検索し、その後コンテンツタイプに応じてアニメーション化(RWAパス):
| 返されるコンテンツ | カテゴリ | アニメーション |
|---|---|---|
| ウェブページ / リンク | webpage | ウェブページ/UIアニメーション(スクロール、リビール、カーソル、コールアウト) |
| ニュース記事 | news | 見出しリビール + ソースカード + キーファクトコールアウト |
| ツイート | tweet | アニメーションツイートカード |
| 画像 / エンティティ | asset-fusion | アセットのジオメトリがチャートになる(RWA内因的フュージョン) |
ビルド順序:一度に1つずつ、カバレッジ優先(ラフで可)。kinetic-typeはプロトタイプから移植済み。残りはこれに従います。
前提条件
macOS Apple Silicon または Linux x64。システムツール:brew install node ffmpeg。npx hyperframes doctor を一度実行。macOS GPUレンダリング:export PRODUCER_BROWSER_GPU_MODE=hardware。
オプションのキー(未設定時はローカルフォールバック)— メディア・ユースを介してアセットをソース/生成するカテゴリのみ必要:
| キー | 用途 | フォールバック |
|---|---|---|
GEMINI_API_KEY / GOOGLE_API_KEY | 画像生成(メディア・ユース解決) | 生成をスキップ / 検索のみ |
| (asset_scout / 検索プロバイダー) | webpage/news/tweet + asset-fusion 実アセット検索 | カテゴリはアセットなしにダウングレード |
フロー
ステップ 0 — 初期化
カレントワーキングディレクトリはエージェントワークスペースのルートです。すべての成果物をPROJECT_DIR = videos/<project-name>/の下に書き込みます。<project-name>:ユーザーが指定したディレクトリ名、または意図から導かれる短いケバブケースの名前(<subject>-motion)を使用します。ワークスペースのベース名やタイムスタンプは使用しないでください。
$PROJECT_DIR/hyperframes.json が存在しない場合のみ実行:
PROJECT_DIR="${MOTION_GRAPHICS_DIR:-videos/<project-name>}"
mkdir -p "$(dirname "$PROJECT_DIR")"
npx hyperframes init "$PROJECT_DIR" --non-interactive --example=blank
initはインストール済みスキルとGitHub上の最新バージョンを比較し、古いものがあればグローバルセットを更新します。
制約: ワークスペースルートでhyperframes initを決して実行しないでください。PROJECT_DIR内に別のhyperframes/をネストしないでください。すべてのBashコマンド(マスター + サブエージェント)は(cd "$PROJECT_DIR" && ...)サブシェルで実行し、ベアなcdは使用しないでください。
ステップ 1 — 計画(サブエージェント:ディレクター パート1)
1つのサブエージェントを起動します。プロンプト = agents/director.md全文 + ## Dispatch context(SKILL_DIR / PROJECT_DIR / ユーザーのリクエスト / Schema: <SKILL_DIR>/references/shot-plan-ir.md)。以下の処理を行います:
- 判断:これには検索が必要か?(最初の分岐)
- いいえ → フォームカテゴリ(kinetic-type / stat / charts / logo-reveal / lower-thirds)を選択します。コンテンツはユーザー提供。
asset_needs: []。 - はい → 検索計画を
asset_needs[](ニュース/ウェブ/ツイート/画像;二極クエリ)に出力します。具体的な検索駆動型カテゴリ(webpage / news / tweet / asset-fusion)はステップ2で返されるコンテンツタイプによって確定され、ステップ3で最終決定されます。
- いいえ → フォームカテゴリ(kinetic-type / stat / charts / logo-reveal / lower-thirds)を選択します。コンテンツはユーザー提供。
- ドラフト
shot-plan.json(エンベロープ + 選択されたフォームカテゴリ または 検索意図 +asset_needs+ 1段落のショット概要)を書き込みます。スキーマ:references/shot-plan-ir.md。
検証:[ -s "$PROJECT_DIR/shot-plan.json" ] && echo ok || echo missing
ステップ 2 — ソーシング ◇(Bash: メディア・ユース、条件付き)
shot-plan.json.asset_needsが空でない場合、アセットを解決します(検索/生成/取得 → フリーズされたプロジェクトローカルパス + 台帳)。詳細はphases/source/guide.md(media-use resolveをラップ。検索駆動型カテゴリはニュース/ウェブ/ツイート/画像検索を使用)。asset_needsが空の場合は、ステップ3にスキップします。
# 参考 — 詳細は phases/source/guide.md を参照
(cd "$PROJECT_DIR" && node <SKILL_DIR>/phases/source/resolve.mjs --plan ./shot-plan.json --out ./assets)
グレースフルデグラデーション:検索/プロバイダーが利用できない場合、カテゴリはアセットなしにフォールバックします(context.logに記録)。
ステップ 3 — デザイン(サブエージェント:ディレクター パート2)
サブエージェントを起動します(プロンプト = agents/director.mdパート2 + 解決済みのassets/index.md(ステップ2を実行した場合)を含むディスパッチコンテキスト + catalog-map.md)。利用可能なアセットを中心にショットをデザインします:カタログブロック + hyperframes-animationルール/ブループリント、レイアウト、モーション、ビート、そして(asset-fusionの場合は)element_positions + スポイトパレットを選択します。shot-plan.json(content.block + content.customize + カテゴリ別コンテンツ)を最終決定します。
ステップ 4 — ビルド(サブエージェント:ビルダー、再利用ファースト)
サブエージェントを起動します。プロンプト = agents/builder.md全文 + ディスパッチコンテキスト(shot-plan.json、catalog-map.md、そのカテゴリのmodule.md、references/motion-vocabulary.md、references/builder-contract.md)。再利用ファースト:npx hyperframes add <block> + その場でカスタマイズ。ギャップとアセットフュージョンアフォーダンスのみ手動で記述します。出力compositions/index.htmlはHFコントラクト(一時停止されたGSAPタイムラインwindow.__timelines、class="clip" + 安定したID、tl.seek(0)、決定論的)に準拠します。
ステップ 5 — レンダリング(Bash)
(cd "$PROJECT_DIR" && npx hyperframes render . --skill=motion-graphics -q draft -o ./renders/video.mp4)
# 透明オーバーレイのバリアント:--format webm (または mov)
ステップ 6 — 検証(Bash → 障害時は修復サブエージェントを起動)
(cd "$PROJECT_DIR" && npx hyperframes lint . && npx hyperframes inspect .)
exit 0 → 完了。lint/inspectエラー時は、修復サブエージェント(agents/finalize.md:スナップショットQA + 1回のその場修正パス + 再レンダリング)を起動します。修復中に固定された期間を変更しないでください。
レポート + オプションのプレビュー
最終出力(renders/video.mp4、または.webm / .movオーバーレイバリアント)+ 再生時間を報告します。実行中にプレビューを開かないでください。 リクエストがあった場合のみ、レンダリング後に最終ファイルを提供するために開始します:
(cd "$PROJECT_DIR" && npx hyperframes preview) # Studio UI;または `npx hyperframes play` で共有可能なリンク
フラグはhyperframes-cliスキイル(references/preview-render.md)にあります。
再開テーブル
| 状態 | 再開ポイント |
|---|---|
shot-plan.json なし | ステップ 1(計画) |
shot-plan.json に asset_needs あり、assets/ なし | ステップ 2(ソーシング) |
shot-plan.json 最終版、compositions/index.html なし | ステップ 3/4(デザイン+ビルド) |
compositions/index.html 存在、renders/video.mp4 なし | ステップ 5(レンダリング)+ ステップ 6 |
renders/video.mp4 存在 | レポート + 停止 |
デザインノート(メンテナー向け — 実行時はこれを読みません)
- アセットファーストの根拠: ソーシングは先行して行われ、ショットデザインに情報を提供します(RWAフロー:分析 → 検索 → レビュー → 構成)。検索駆動型カテゴリ(
webpage/news/tweet)とasset-fusionはどちらもメディア・ユースの検索(ニュース/ウェブ/ツイート/画像)に依存しており、これはメディア・ユースの文書化されたRWA系統です。 - 再利用ファースト: エコシステム内でのLLM生成テンプレートの類似物は「カタログブロック +
hyperframes-animationルールを構成する」です。HFの一時停止されたGSAPタイムラインは、RemotionのuseCurrentFrameに相当します。 - カテゴリモジュールコントラクト: 1つの
categories/<id>/module.md(計画 + ビルド)、references/motion-vocabulary.mdを共有(+ オプションの評価)。カテゴリの追加 = フォルダをドロップ + その分類子行をagents/director.mdに、その行をcatalog-map.mdに登録。フェーズパイプラインは変更されません。 - ディレクトリ構造:
videos/<project-name>/ hyperframes.json context.log shot-plan.json # IR(ディレクター出力) assets/ assets/index.md # メディア・ユース出力(ソースされた場合) compositions/index.html # ビルダー出力 renders/video.mp4 - 登録:
hyperframesルーター内 — 「デザイン主導の短いモーショングラフィック」意図 + ワークフローの説明を追加。モーション・グラフィックスのトリガーを/general-videoから切り出し。逆Do-NOT-useエッジを追加。motion-graphics-genre.md§5-7を参照。