製品モーション動画(60秒)
0. 入力(不足分のみを1メッセージで最大3質問)
- TOPIC: 製品/アイデア(必須)
- BRAND: URL または md ファイル(任意)-> 名前、タグライン、メリット3つ、色、トーンを抽出。web_fetchは最大1回。
- STYLE REF: 任意; 3つの特性(ペース、タイプ、パレット)を1行で推測。詳細調査は不要。
ユーザーが
{placeholders}を未記入のままにした場合、空として扱い、仮定を1行で述べて構築する。
1. 計画(15行以内の思考、エッセイ不可)
パレット(背景、インク、アクセント1色、セカンダリ1色)、ディスプレイフォント1つ + 本文フォント1つ(システム/Google Fonts、フォールバック付き)、8シーン。
デフォルトの60秒構造(秒):
- 0-5 フック: キネティックタイポグラフィ、大胆な主張1つ
- 5-13 問題提起: グリッチ/テンション、カウンター
- 13-21 リビール: ロゴ/製品がモーフィングイン
- 21-31 機能1-3: UIカード、アイコンがポップ、段階表示
- 31-41 証明: アニメーション化されたグラフ/数字のカウントアップ
- 41-49 フロー/仕組み: 線描画パス + ノード
- 49-56 モンタージュ: 高速カット、0.4秒ビート、マーキーテキスト
- 56-60 CTA: ロゴ、タグライン、URL、パルス
2. 構築(1つの.htmlファイル、バニラJS、依存関係ゼロ、18KB以下)
アーキテクチャ、超コンパクトに:
- 1920x1080のステージをCSS transformでフィットするようにスケーリング; すべての色はCSS変数として定義。
- マスタータイムライン:
scenes=[{t0,t1,build(stage), update(p)}]とし、pは0..1の範囲。単一のrAFクロックt=(now-start)/1000から取得。setTimeoutチェーンは使用しない。 - ヘルパー関数(1回記述して再利用):
ease(p)(cubic/expo/back)、lerp、clamp、stagger(i,n,p)、type(el,text,p)。 - モーションボキャブラリ(6種類以上を使用): キネティックタイポグラフィ、マスクリビール、stroke-dashoffset線描画、カウントアップ、パララックスレイヤー、段階表示カード、シェイプモーフ(SVGパスをlerpしたd属性で)、グリッチ(clip-pathスライス)、マーキー、カメラプッシュイン(ステージのscale+translate)、シーン間のスクリーンワイプ。
- ルール: シーン間のトランジションは0.4秒重ねる; すべての要素はイージングを使用(リニア禁止); 同時に2つ以上のフォーカルポイントを持たない; キーテキストは1.2秒以上表示; transform/opacityのみアニメーション化。
- コントロール: 再生/一時停止(スペースキー)、スクラブバー、リスタート、
?t=SECONDSシークパラメータ、window.seek(t)(エクスポート用)。 prefers-reduced-motionを尊重し、点滅するグリッチシーンを自動再生しない。- オプションの音声: WebAudioでシーンカット時に効果音を合成(デフォルトはオフ、ミュート切り替え可)。外部音声は不可。
3. 納品
- Artifactツールを使用してページとして公開(publish); Artifactツールがない場合は、
/mnt/user-data/outputsにファイルを作成しpresent_filesを使用。 - 返信: 2文(内容と仮定)。シーンごとのナレーションは不要。
4. MP4エクスポート(ユーザーが要求した場合のみ)
Playwrightヘッドレス: f=0..1799 で seek(f/30) を呼び出し、1920x1080でスクリーンショット -> フレーム; ffmpeg -framerate 30 -i f_%04d.png -c:v libx264 -pix_fmt yuv420p out.mp4。ffmpeg/Playwrightがない場合は、その旨を伝え、代わりにこのレシピをユーザーに提供し、再試行はしない。
5. トークン規律
- 他のスキルを読まない、プレビューレンダリングしない、要求がない限り磨き上げない。
- シーン間で同じカード/タイプのレイアウトを再利用; 動きを変え、マークアップは変えない。
- ファイルは1回のツール呼び出しで記述。編集は小さなstr_replace編集で行い、書き直しはしない。
- リサーチは1回のfetch + 1回の検索に制限する。