Communitygithub.com

wbr664393425-lgtm/rui-ui-promo-video

プロジェクト内の実際の Vue/Web コンポーネントを素材として使用し、HyperFrames + GSAP で 30~60 秒のプロダクトプロモーションビデオ(デフォルトは「一条线」スタイル:ブランドモチーフが全体を貫き、抑制の効いた余白、実際のデータ/インタラクションでトリガーされる 3 つのインパクトポイント)を合成します。オリジナルの合成音楽、ラウドネスノーマライゼーション、メイン動画/圧縮版/カバーの書き出しを含みます。

rui-ui-promo-video とは?

このスキルは、実際の Vue/Web コンポーネントを使用してプロダクトのプロモーションビデオを自動生成するワークフローです。HyperFrames を合成/レンダリングエンジンとして、GSAP をモーショングラフィックスに使用し、Vite プラグインで決定論的なクロックを注入することで、録画されたインタラクションを再現可能にします。デフォルトの「一条线」スタイルは、単一のブランドモチーフが全体を貫き、余白を活かした抑制の効いた構成で、実際のユーザーインタラクションに基づく 3 つのインパクトポイントを配置します。ワークフローは方向性の決定から絵コンテ作成、キャプチャ、座標計測、合成、音楽生成、レンダリング、検収までをカバーし、最終的に 45 秒/2700 フレームの高品質 MP4 と圧縮版、カバー画像を生成します。技術スタックには HyperFrames、GSAP、Vite、Python3、FFmpeg が含まれ、実環境のデータやネットワークに依存せず、フィクスチャーデータと固定シードで完全に再現可能な環境を提供します。ユーザーが「このシステムのプロモーションビデオを作って」「真珠ガラスのプロモーションビデオと同じ手順で」「実際のページを録画してプロモーションビデオを」「もっと高級感/インパクトのあるバージョンを」「rui-ui-promo-video」と言った場合に使用されます。録画のみで編集しないケース、ナレーション/字幕ビデオ(hyperframes の対応ワークフローへ流す)、単なるポスターデザインは除外されます。

対応~Claude Code~Codex CLI~Cursor
npx skills add wbr664393425-lgtm/rui-ui-promo-video

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

実際のコンポーネントプロモーションビデオワークフロー

デフォルトスタイル = 「一条线」:プロダクトに由来するブランドモチーフが全体を貫き、余白と実際のインタラクションでトリガーされる 3 つのインパクトポイントを組み合わせます。整然とした説明書的なショットや、エフェクトを積み重ねたプレゼンテーション的なショットとの比較は、クリエイティブマニュアルを参照してください。

templates/ = 撮影シェル(汎用化、問題点を修正済み)+ v3 で確定した合成、スタイル、音楽、書き出しスクリプト。videos/<name>/ にコピー後、【必改】(必ず修正)と注記された箇所を書き換えてください。

必要に応じて参照:

  • references/creative-playbook.md:モチーフ、3 つのインパクトポイント、余白のルール、コピー、テンポ表。絵コンテ決定前に必読。
  • references/compose-recipes.md:座標の計測、タイムマッピング、ショットコンテナ、ライトパネル、ライン描画、スポットライト、ワールド反転、ロゴの配置、トランジション、タイムラインの書き方。合成前に読むこと。
  • references/pitfalls.md:撮影、レンダリング、オーディオ、デリバリーにおける現象→根本原因→対処表と検収コマンド。異常が発生したらまず参照。

技術スタック

工程技術ポイント
合成/レンダリングHyperFrames([email protected] 固定、npx --yes、業務依存関係に入れない)check で検証、snapshot でフレーム抽出、render で出力
モーションGSAP(業務プロジェクトのインストール済みバージョンを assets/vendor/gsap.min.js にコピー)一時停止状態の単一タイムラインを window.__timelines[id] に登録
撮影ビルドVite + @vitejs/plugin-vue(createRequire でフロントエンドプロジェクトから依存関係を解決)独立したルート;envDir/publicDir はフロントエンドプロジェクトを指す;ベンダーは別ブロックに分ける
決定論的クロックVite transform プラグインsetTimeout/rAF/Date.now/performance.now(裸呼び出しと window. プレフィックス付き)をすべて window.__shoot に接続
データ分離メモリ内 fixtureFetch(書き込み操作のシミュレーション含む)+ ネットワークホワイトリスト + 固定シード + 固定エポック + 固定位置情報架空データ、業務リクエストはフィクスチャー経由、固定撮影クロック
インタラクションスクリプトperformActions(t) + once/byText/rowButton/typeInto指定秒に実際のクリック、入力、ドラッグを実行
素材横画面 PROMO_RESOLUTION=4k 2 倍ピクセル;スマホ 430×932 は別ビューポート合成時でも大幅に拡大しても鮮明
音楽Python3 + NumPy(96 BPM、FFT リバーブ、シード固定)無音の拍、インパクトポイントに合わせたアクセント、ノード点灯に合わせたチャイム
ラウドネス/書き出しFFmpeg 2パス loudnorm(−14 LUFS / TP −3)、元の音楽をラッピングしてノーマライズ、圧縮版、カバーメイン + -share.mp4(約 11 MB)+ カバー PNG

ディレクトリ構成

videos/<name>/
  promo.config.mjs   appDir/srcDir/entry/motionFile/id/duration/coverAt/hyperframes —— 唯一のプロジェクト関連設定
  capture/           index.html(撮影シェル)bootstrap.ts(クロック/分離/インタラクション)fixtures.ts(架空データ、新規作成が必要)vite.config.mjs
  scripts/           render-footage.mjs compose-film.mjs compose-audio.py normalize-audio.mjs render-film.mjs remux.mjs
  assets/            footage/ footage-4k/ audio/score-final.wav vendor/gsap.min.js
  index.html(compose 生成)film.css package.json README.md

npm scripts:capture / compose / audio / check / snap -- <秒,秒> / render / remux / dev。

フロー

  1. 方向性の決定: PRODUCT.md/DESIGN.md/ブランドアイデンティティを読み、creative-playbook に従ってモチーフを見つけ、3 つのインパクトポイントを設計します。ユーザーに確認するのは 2 つのことだけ:クリエイティブのメインライン(2~3 つの方向性を提示、「一条のモチーフ」を推奨)、コピーのトーン(既存のものを使用するか新しくするか)。
  2. 絵コンテ:各ショット = 実際のページ + 明朝体のタイトル + キーインタラクションの秒数 + そのショットでのモチーフラインの形状;45 秒の参考テンポは playbook 参照。README の絵コンテ表に記入。
  3. 撮影シェル:bootstrap.ts で window.__shoot、ネットワークホワイトリスト、固定位置情報、ストレージクリア(IndexedDB の下書き含む)、テーマ/ビュー/オフライントークンのプリセットを設定し、replaceState でルーティング後に製品エントリを import;ローディングが遅いページは waitFor/settle で rAF をフラッシュ;非表示のカーソル/スクロールバー/キャレットのスタイルを注入。fixtures.ts のフィールドは実際のインターフェースに従い、書き込み操作はメモリ上のみ。事前にブラウザで ?shot=<ショット>&live でインタラクションをリハーサル。
  4. キャプチャ:npm run capture(シングルワーカー)、拡大率の大きい横画面ショットはさらに PROMO_RESOLUTION=4k npm run capture を実行。
  5. 座標計測:素材からフレームを抽出(1920 座標、4K 部分クロップで正確な値を取得)し、軌跡の折れ線、ボタン、ポップアップ、ステップノードの位置を計測。
  6. 合成:compose-film.mjs のショットテーブル、座標、コピー、タイムポイントを修正し、そのユーティリティ関数を再利用;ルールは compose-recipes 参照。毎回 npm run compose && npm run check を実行し、さらに npm run snap -- <キー秒> でコンタクトシートを確認(インパクトポイントの出入り、トランジション、ラベルの位置合わせ)。
  7. 音楽:compose-audio.py のタイムポイント(インパクトポイントのアクセント、無音区間、クリック、ノードチャイム)を修正し、npm run audio を実行。
  8. レンダリングと検収:npm run render をバックグラウンドで実行;完了後、ffprobe で長さ/フレーム数/解像度/フレームレート、ebur128 でラウドネスとトゥルーピークを確認し、blackdetect(設計上の黒フレームは説明が必要)も実行、約 18 フレームをコラージュして目視チェック。カバーのみの修正なら npm run remux を実行。

制約

  • 製品のソースコードと依存関係は変更不可;クロックの書き換えは撮影ビルド時のみ。
  • 架空データのみ使用、業務バックエンド/データベースへの接続不可、実際の認証情報の読み取り不可;サードパーティのオンラインリソース(地図など)はホワイトリスト経由、Key は .gitignore 対象のビルドディレクトリにのみ配置。README に分離方法、シード、固定日付を明記。
  • ラベルは画面上に実際に表示される数字のみを使用;画面やコピーに「デモ/サンプル/シミュレーション」の文字を表示しない。
  • ビジュアルはプロジェクトの DESIGN.md とブランドカラーに従う;フォントはローカル宣言(Songti SC / PingFang SC / Georgia)。
  • 中間生成物(.capture-build/ .shots/ .quality/ renders/ ログ)は .gitignore に追加;旧バージョンはそのまま残し、新バージョンは別ディレクトリを作成。
  • ユーザーが明示的に要求しない限り、外部プラットフォームにコミット/公開しない。
  • 合成の作成または修正前に、必要に応じて hyperframes-core、hyperframes-animation、hyperframes-cli の現在の API を確認。

納品物一覧

  • メイン動画 MP4(45.000 s / 2700 フレーム / 1920×1080 / 60 fps / H.264 yuv420p / AAC 320k 48 kHz / −14 LUFS / トゥルーピーク ≤ −1 dBTP)。
  • 圧縮版 -share.mp4 とカバー PNG は、現在のプラットフォームがサポートするファイル配信方法で提供。
  • 編集可能な index.html + film.css、および素材とスクリプト。
  • README:ビジュアルの説明、絵コンテ表、音楽の説明、再現コマンド、撮影分離、納品チェックリスト。

関連スキル