ai21.net
言語

http://sprites.ai を分析し、私たち自身のUIからプロダクトプロモを構築…

http://sprites.ai を分析し、私たち自身のUIからプロダクトプロモを構築… — 1

プロンプト

Analyze http://sprites.ai and build a product promo from our own UI, not generic components.

<direction>
Dribbble-level UI motion. One shape, never cut: every state is the same element morphing its size, radius and color while its content swaps with a short blur. A cursor drives every change with real clicks and drags. Warm-gray canvas, black and white components, one accent (#FD9543), Geist. Springs everywhere, a tiny overshoot at most. The camera zooms so each state fills the frame. Last frame = first frame, so it loops.
Banned: bouncy easing, particles, glows, gradients on UI chrome, mismatched icon strokes, dead time, anything that looks like a template.
</direction>

<structure>
120 BPM, 7 bars, something on every beat.
Connect ad account (Meta, Google, LinkedIn, TikTok, Reddit logos) → loader → check → prompt bar types "Launch ads that convert" → island "Researching 42 competitors" → Ads Library wall of real ads scrolls and lands on a top performer → approval card → Approve & launch → budget slider that stretches past max → Autopilot toggle → knob becomes a liquid tab indicator across channels → ROAS chart draws itself with hover tooltip → ⌘K → type "pause" → toast "Paused 3 losing ads" → back to the button.
</structure>

<build>
1. One HTML file, 1440x1440. Every style is computed inside seek(t): no CSS transitions, no timers, no state between frames.
2. Springs are closed-form step responses. A value that changes target many times is a sum of springs, so it stays a pure function of time.
3. Tab indicator and toggle knob: the two edges ride different springs, so the leading edge stretches ahead.
4. Drags are direct manipulation: while held, the value follows the cursor. On release it springs back from wherever it was.
5. No music. Synthesize UI sounds with numpy and place each one by its measured peak on the beat grid.
6. Render with Playwright: 4 subframes per frame, blended with ffmpeg tmix for motion blur at 60fps.
7. Render one frame per beat first. Fix anything off-grid, cramped or hard to read.
</build>

<gotchas>
No will-change on anything the camera scales. Swapped text needs its own enter/exit timing. Match the last frame to the first, cursor position and speed included, or the loop stutters.
</gotchas>

Show me the state list on the beat grid before writing any code.

日本語訳

http://sprites.ai を分析し、汎用的なコンポーネントではなく、私たち自身のUIからプロダクトプロモを構築してください。

<direction>
DribbbleレベルのUIモーション。ひとつのシェイプで、カットは一切なし:すべての状態は同じ要素がサイズ、角丸、色をモーフィングし、コンテンツは短いブラーで入れ替わります。カーソルが実際のクリックとドラッグですべての変化を駆動します。ウォームグレーのキャンバス、白黒のコンポーネント、アクセントは1色(#FD9543)、Geist。スプリングは至るところに、オーバーシュートはごくわずかまで。カメラがズームし、各状態がフレームを満たします。最後のフレーム=最初のフレームで、ループします。
禁止:弾むようなイージング、パーティクル、グロー、UIクローム上のグラデーション、アイコンの線幅の不一致、無駄な時間、テンプレートに見えるものはすべて。
</direction>

<structure>
120 BPM、7小節、すべてのビートに何かを。
広告アカウントを接続(Meta、Google、LinkedIn、TikTok、Redditのロゴ)→ ローダー → チェック → プロンプトバーが「Launch ads that convert」とタイプ → アイランド「Researching 42 competitors」→ Ads Libraryの実広告の壁がスクロールし、トップパフォーマーの広告で止まる → 承認カード → Approve & launch → 最大値を超えて伸びる予算スライダー → Autopilotトグル → ノブがチャネルをまたぐリキッドなタブインジケーターになる → ROASチャートがホバーツールチップ付きで自ら描画 → ⌘K → 「pause」と入力 → トースト「Paused 3 losing ads」→ ボタンに戻る。
</structure>

<build>
1. HTMLファイル1つ、1440x1440。すべてのスタイルはseek(t)の内部で計算:CSSトランジションなし、タイマーなし、フレーム間で状態を持ち越さない。
2. スプリングは閉形式のステップ応答。ターゲットが何度も変わる値はスプリングの和になるため、時間の純粋な関数であり続けます。
3. タブインジケーターとトグルノブ:2つのエッジが異なるスプリングに乗るため、先端側のエッジが先行して伸びます。
4. ドラッグは直接操作:保持している間、値はカーソルに追従します。離すと、その時点の位置からスプリングで戻ります。
5. 音楽なし。numpyでUIサウンドを合成し、それぞれをビートグリッド上の計測されたピークに配置します。
6. Playwrightでレンダリング:1フレームにつき4サブフレーム、60fpsのモーションブラー用にffmpegのtmixでブレンドします。
7. まず1ビートにつき1フレームをレンダリングします。グリッドから外れたもの、窮屈なもの、読みにくいものを修正してください。
</build>

<gotchas>
カメラがスケールするものにはwill-changeを付けないこと。入れ替わるテキストには独自のイン/アウトのタイミングが必要です。最後のフレームを最初のフレームに合わせてください。カーソル位置と速度も含めて。そうしないとループがカクつきます。
</gotchas>

コードを書く前に、ビートグリッド上の状態リストを見せてください。

出典

原作者
AnnaCher___
公開日
2026-09-25(由推文 ID 反解)
原典
元の投稿を見る ↗
収録元
yihui-dev/awesome-opus5-5-videos · annacher-433425 · MIT