Communitygithub.com

agens-no/app-promo

アプリのプロモーションビデオを作成します。Appleの実際の3D iPhoneモデル、シミュレーターから取得した本物のアプリUI、モーショングラフィックス、生成音楽とサウンドをRemotionで使用して、洗練された縦型プロモーション動画を制作します。

app-promo とは?

このスキルは、iOSアプリのプロモーションビデオ(App Storeプレビュー、SNS用動画、ブラグ動画など)を、本物の3D iPhoneモデル(バゲット製USDZをBlenderでGLB変換)と、iOSシミュレーターから取得した実際のアプリUIスクリーンショット/録画を使用して、Remotion上で生成します。アプリ固有の設定(カラートークン、フォント、UI要素の切り抜き)は`examples/`と`tools/`で管理し、一般的なテンプレート(3Dシーン、タイトルカード、トランジション)は`templates/`に分離されているため、新しいアプリにも容易に適応可能です。ワークフローは完全に定義されており、事前インタビュー(動画長さ、テンポ、スタイル、音楽、機能など)、ツールチェーンの確認(Xcode、Blender、Node.js、ffmpegなど)、シミュレーターでのUIキャプチャ、バゲットを用いたUI要素の切り抜き、Pythonスクリプトによる背景分離、タイムライン(BPMグリッド上でのフレーム単位のビートシート)、Remotionでのシーン構築(連続ワンテイク風、トランジションで画面変化を隠蔽)、サウンドトラック生成、ラウドネスチェック、そして納品用フォルダへの出力までの全工程をカバーします。特に「画面から飛び出すUIエフェクト」(ヒーローモーメント)の強弱や、画面内でのズーム・フォーカスによる強調、アプリ独自のアニメーションをスローモーションで見せる技法など、高品質なプロモーション動画に必要な視覚的装置が豊富に盛り込まれています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/agens-no/app-promo/tree/HEAD/skills/app-promo

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

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

ドキュメント

アプリプロモーションビデオ(Remotion + 実機iPhone + 実UI)

この方法は4つの小規模iOSアプリ(Unblock、Talljakt、Georama、Quiz)で開発され、あらゆるアプリで繰り返し使えるように書かれています。アプリ固有のものはすべて examples/ に、再利用可能な部品は templates/ にあります。詳細なテクニック、落とし穴、調整可能な変数は references/techniques.md にあります。あなたは建築前にそれを読む必要があります。

言語: ユーザーが使用している言語で話しかけてください。もしノルウェー語で始めたら、ノルウェー語で答えてください。動画内のテキストの言語は別の選択肢です(下記の質問3)。

0. まずインタビュー(短め)

これらをまとめて質問してください(AskUserQuestionまたは1メッセージで)。デフォルトを提案し、ユーザーが「デフォルトで」と答えられるようにします。

  1. 長さ: 20~60秒。デフォルトは約30秒。
  2. フォーマット: 9:16 縦型 1080×1920。デフォルトは60fps。1:1や16:9も可能。
  3. 画面上のテキストの言語。
  4. 用途: プライベート共有、ソーシャル(Reels/TikTok、セーフゾーン)、App Storeプレビュー。App Storeプレビューは実際の録画でなければならず、最大30秒、架空の3D効果は禁止されているため、この方法には適していません。
  5. 画面から浮き上がるUIの量: なし(控えめ:実際の録画、フォーカスズーム、アプリ独自のトランジションのみ。examples/kjopを参照)、微妙(1~2つのヒーローモーメント)、中程度、フル(すべてが浮き上がる)。デフォルトは微妙から中程度。なしはプレーンな日常アプリ(リスト、フォーム、設定)に適しています。フルは部品が自然に物理オブジェクトであるアプリ(ゲームのタイル)に適しています。通常のアプリ(リスト、フォーム、カード)では、1~3つの主要要素のみを浮き上がらせ、残りは画面に留めます。
  6. 創造的自由度: エージェントがコンセプトを考えてよいですか?
  7. 音楽: コードで生成(デフォルト、ライセンス不要)または独自のトラック。各アプリに独自のサウンドパレットを割り当て、2つの動画が決して同じように聞こえないようにします(references/techniques.md#soundを参照)。
  8. 表示する機能(3~5つ)、そしてアプリの「ヒーロー」要素または瞬間は何ですか?
  9. エンディング: 実績のある2つのオプション。アプリに応じて選択し、不明な場合は尋ねてください。 (a) アプリ独自の要素から構築されたロゴロックアップ(Unblock:ロゴが3Dタイルから組み立てられ、最後に真鍮のタイルが着地する)。 (b) スローガンを上部に配置したホーム画面(アイコン+名前が最後の行になる)。Talljakt:「6つの数字。 / 1つのターゲット。 / [アイコン] Talljakt。」
  10. 電話の色: コズミックオレンジ、ディープブルー、シルバー。アプリのアクセントカラーに合うものを選んでください。

回答は主に、コンセプト、画面から浮き上がる量、テンポ(bpm)、色を決めます。

0a. 飛行前チェック:ツールチェーンを確認

何かを構築する前に、インストールされているものを確認し、短いリストで報告してください。不足しているものがあればインストールを申し出て、ユーザーが承諾した場合のみインストールしてください(これらはシステム変更です)。既に存在するものはスキップしてください。

ツール確認インストール
Xcode + コマンドラインツールxcodebuild -version, xcode-select -pApp Store(Xcode)、その後 xcode-select --install
iPhone 17 Pro デバイスタイプを持つiOSシミュレーターランタイムxcrun simctl list runtimes, `xcrun simctl list devicetypesgrep "iPhone 17 Pro"`
baguettebaguette --versionbrew install baguette
Blenderls /Applications/Blender.appbrew install --cask blender
Node 22node --versionnvm install 22(または brew install node@22)
ffmpegffmpeg -versionbrew install ffmpeg
Python 3 + Pillowpython3 -c "import PIL"python3 -m pip install --user pillow
Homebrew(上記のため)brew --versionbrew.sh の公式インストールスクリプト(ユーザーが実行)

その後、Remotionプロジェクトをセットアップし(references/techniques.md#setup)、iPhoneモデルを一度変換します(下記ステップ6)。どちらもプロジェクトローカルであり、リポジトリ内で作業する以外の追加の許可は必要ありません。

0b. 納品フォルダ(Macごとに1回)

完成した動画は、プロジェクトの out/ だけでなく、マシン上の固定フォルダに納品されます。選択内容はMacごとに ~/.config/app-promo/destination に保存されます(1行、フルパス)。

  • 開始時にファイルを読みます。存在する場合は、そのフォルダを尋ねずに使用します。
  • 存在しない場合は、一度尋ねます(AskUserQuestion):~/Movies/App Promos(推奨)、プロジェクトの out/ フォルダ、デスクトップ、またはカスタムパス。フォルダを作成し、パスを ~/.config/app-promo/destination に書き込みます。
  • ユーザーはいつでも尋ねることで変更できます。その場合はファイルを更新します。

1. ワークフロー

  1. アプリを読む。 README、カラートークン(Color(、hex、テーマ構造体を検索)、フォント、コピー。良い部分は動画内でアプリ自身のコピーを使用します。
  2. デバッグエントリポイントを見つける 再生せずに状態を表示するため:起動引数(--design-*)、URLスキーム(myapp://design-home?state=…)、フィクスチャ。存在しない場合は、アプリにDEBUG専用フックを追加する前に尋ねてください。
  3. 専用のiPhone 17 Proシミュレーターにビルドしてインストールする。 スクリーンショットは1206×2622でないと、電話モデルの画面と一致しません。references/techniques.md#simulatorを参照。 3b. 実際の画面録画の場合: references/recording.md を読んでください。最初にシーンとタップポイントを準備し、UI検査、ビルド、動画分析を録画中に行わずに短いテイクを録画し、Remotionの前に生のタイミングを確認します。フローフル全体の単一連続テイク(examples/quiz のように)は、すべての数字、プログレスバー、履歴エントリを一貫させます。
  4. 各状態のスクリーンショットを撮る。 静止/切り抜きシーケンスの場合は、実際のタップで再生し、タップのたびにスクリーンショットを撮ります(references/consistency.md を参照)。動画の場合は、別のリハーサルでその検査を行い、最終テイク中には決して行わないでください。ステータスバーを固定します(9:41、100%、放電中、または緑色の充電インジケーターを表示)。baguette describe-ui で要素フレームを取得します。
  5. UI要素を切り抜く アプリ固有の tools/prep_<app>.py を使用します。これは templates/tools/prep_helpers.py(スプライト、空の背景、矩形のJSON)を使用します。各セットを視覚的に確認します(マゼンタに合成)。
  6. iPhoneモデルを変換する baguette(USDZ)からGLBにBlenderで変換します(templates/tools/convert_model.py)。
  7. Remotionプロジェクトをセットアップする または既存のものを再利用します:templates/src/three/*、Title.tsx、brand.ts、remotion.config.ts、tools/sheet.sh、tools/prep_helpers.py をコピーします。
  8. ビートシート(timeline.json)をBPMグリッド上でフレーム単位で書きます(120 bpm、60 fps = 1拍あたり30フレーム)。画像と音の両方がこのファイルを読み取ります。
  9. シーンを連続した「ワンテイク」として構築する: カメラは静止したままで、電話リグが動きます。画面の変化はトランジションで隠します:スピン、アプリ自身のナビゲーション、要素からのズームまたはワイプ、プッシュ、フリップ、ウィップパン、マッチカット、早送り。これらを変化させ、動画あたりスピンは最大2回まで。references/techniques.md#transitions を参照。
  10. コンタクトシート(tools/sheet.sh f1 f2 …)でキーフレームを繰り返し確認します。それを見てください。フル動画をレンダリングします(高速:30秒で約1~2分)。
  11. チェックポイント: 残りを構築する前に、最初の約12秒をユーザーに表示します。
  12. サウンドトラックを生成する(tools/<app>_audio.mjs、例からコピー)同じタイムラインから。レンダリングし、ラウドネスを測定し(ffmpeg -af ebur128、目標は−14~−16 LUFS)、ユーザー用にファイルを開きます。

12b. 一貫性チェック(納品前に必須)。 電話画面に表示されているものとその外で強調表示されているものの不一致は、AIアーティファクトのように見えます。references/consistency.md を確認し、すべてのトランジション、画面変更、リフトの前後±2フレームのコンタクトシートをレンダリングします。 13. 共有テキスト: 動画が共有される場所に貼り付けるための短いテキストを書きます(以下の形式)。クリップボードにコピーし(pbcopy)、返信でコードブロックに表示します。ファイルとして保存しないでください。 14. 納品: 最新の承認済みレンダリングを納品フォルダ(0b)に <アプリ名> promo.mp4 としてコピーします。同じアプリの以前の納品を上書きします。バージョン履歴(-v2、-v3 …)は out/ に残ります。返信で納品ファイルのパスを教えてください。

共有テキスト形式

テキストは通常Slackに投稿されるため、Slackの書式(mrkdwn)を使用します:単一アスタリスクで囲んだ太字タイトルと、"• " で始まる箇条書き(貼り付けられた "- " はリストになりません)。動画の言語で書いてください。

*<アプリ名> – <2~4語の短いタグライン、できれば動画内のもの。>*
<一文:アプリの説明、誰のためのものか、何をするものか。>

• <ポイント:核となる動作、具体的かつ能動的>
• <ポイント:アプリが提供する選択肢(トピック、モード、エリア、ペースなど)>
• <ポイント:…>
• <ポイント:報酬/共有/特別な点>

ルール:4~5ポイント、ポイントの末尾にピリオドなし、読者に直接語りかける、具体的な動詞、マーケティングの決まり文句なし。アプリが実際にどう使われるかから始める:最初の2~3ポイントは、オプションや追加要素の前に具体的に仕組みを説明します。次に、動画が示すものだけでなく、アプリで何ができるかを説明します:オプションをポイントごとにグループ化します(「国、首都、国旗を練習」)ことで、読者が範囲を理解できるようにします。アプリ独自の名前を使用し、各モードが実際に何をするかコードで確認してください(READMEは古くなることがあります)。examples/*/share.txt を参照。

2. 実績のあるコンセプトテンプレート

1つのヒーロー、すべてを結びつける1つの動き、アプリ自身のコピー:

パートUnblock一般
フック 0~2.5秒タイルが暗闇に浮かぶボードに落下。電話なし。「詰まった。」アプリが解決する問題を、アプリ自身の要素で、電話なしで示す
リビールカメラが引きながら、電話がボードの周りに組み立てられる同じ要素がアプリの中にあることが判明
コアループビートに合わせて4手。画面外のカウンター3~4ビートでの主要アクション
ヒーローモーメントヒーローが画面から飛び出しカメラに向かって飛ぶ。真鍮のフラッシュ1つのビッグモーメント(画面外効果、またはアプリ自身の最高のアニメーションをスローモーションで)
ペイオフ結果画面。3Dスターが跳ね出す報酬または結果
機能(間のトランジションを変化)レベルピッカー、デイリーカード、スコア2~3の機能、それぞれに1つの強調要素
アウトロ3Dタイルから構築されたロゴ。タグラインアプリの要素からのロゴロックアップ、またはスローガン+名前のホーム画面

アプリに本当に優れた独自アニメーションが1つある場合(Quiz:「答えを表示」ボタンが「不正解/正解」に裂ける)、それをヒーローにします:ズームイン、スピードランプでスローダウン、独自のサウンドを割り当て、キャプションは付けないでください。

2b. 優れたアプリプロモからの視覚的デバイス

優れたリファレンスは画面とコンテンツを使用し、レイアウトだけではありません。動画ごとに少なくとも3~4つ計画してください:

  • 画面をクロップする: 1つの部分だけが表示されるように十分近づけます(タイマー、ボタン行、方程式)。電話はフレーム端で切られます。focus ポーズを使用します。
  • 電話の横または前にコンテンツカード: アプリからの実際のカードやポスター(共有カード、結果カード、提案)を、電話の後ろまたは前に、わずかに回転した平面として配置します。
  • 複数のコンテンツカードを一度に: 3~5種類のバリエーション(ページ、ソリューション、ポスター)を扇状に広げます。
  • 複数のデバイス: ストーリーが共有または「全員に同じ」の場合、2台の電話を並べ、上部に名前チップを配置します。アプリが対応している場合は、電話+Watch/iPad(baguetteにはiPadとWatchのモデルがあります)。
  • アプリの要素を装飾として: 実際のタイル、ボタン、チップ、アイコンが背景に漂う(ぼかし=遠く)、または電話の上に拡大されてタイポグラフィになります。1つのテーマモチーフ(パルスライン、クレヨンストローク、方眼紙)。
  • アプリが作るものをオブジェクトとして: プリント、ポスター、カード。理想的には電話なしで。
  • 吹き出しや思考バブル 電話で起こらないことに対して(Quiz:話された答えがカードの横に飛び出し、その後「正解/不正解」ボタンに落ちて「押す」)。

2c. テキストとフレーミング

  • 上部の大きな中央揃えタイトルがメッセージを伝えます: 1行あたり2~4語、最大2行、2行目またはキーワードをアクセントカラーに。
  • 下部の小さなキャプションは控えめに、タイトルを明確にする必要がある場合のみ(30秒の動画で2~3回)。読みやすくなければなりません:少なくとも約50ピクセル、明るい背景と影のあるチップ内に(浮遊テキストではなく)、電話のフレームと決して交差しないように低く配置し、少なくとも2秒間表示します。
  • アプリが実際に行うことのみを主張します。 機能について書く前に、それが実際に何であるかを確認してください。
  • 全画面テキストカード がサポートされています:色付きの表面(アプリのプライマリカラー)に大きな中央揃え2行タイトル、最後にフォーカスされていた要素からワイプインし、次のシーンにスライドアウトします。エンディングの前の息継ぎや橋渡しとして1つ使用し、理想的には視聴者に挑戦する質問をします(「間に合うかな?」)。激しいアクションからエンド画面に直接ジャンプしないでください。examples/talljakt と examples/quiz の QuestionCard を参照。
  • 隅に固定のアプリアイコンと名前はありません。 名前は最後、ロゴ内またはスローガンの最後の行としてのみ表示します。
  • フレームをクリーンに保つ:1シーンあたり1アイデア。機能に表示するものがほとんどない場合(設定など)、それだけでシーンを与えるのではなく、別のシーンのキャプションまたは短いフォーカスとして組み込みます。タイトル+ズームした電話+要素の行+キャプションを同時に避けてください。
  • テンポ:無駄な時間なし。 すべてのシーンは開始から約1秒以内にイベントがあり、静的な画面にタイトルが1.5秒以上載ることはありません。繰り返されるステップ(クイズの質問2~13)は早送りできます。
  • 選択肢をテキストではなくアクションとして表示します。 アプリにモードや設定がある場合、デフォルトが選択されている様子(カードが少し浮き上がる)、代替案をタップする様子(浮き上がり、画面状態が変わる)、そしてそのモードに導くスタートをタップする様子を表示します。
  • そうでなければ不明瞭なインタラクション(メニューを開く、オプションを選ぶ)には、タップインジケーター(押し込まれ波紋が広がる円)を、アプリが実際に応答するものに付けます。

3. 原則

  • 再現されたUIよりも実際のUI。 アプリのHTMLコピーではなく、スクリーンショット、録画、切り抜きを使用します。変更する必要のあるテキスト(カウンター、スコア)は、PILでアプリのフォントで描画し、オリジナルと照合します。
  • 「画面外」は控えめに。 それはスパイスです。デフォルトは1つのヒーローモーメントと1~2つの浮き上がった機能です。
  • ズームとフォーカスが強調のための主要なツールです。 カメラを画面の該当部分に動かします。
  • 常にアプリのインタラクションを表示します。 静的状態だけではありません。アプリがタッチにどのように応答するかを示してください。
  • 速いカットはスピード感を生みます。 静的状態の長いショットを避けてください。
  • アプリの視覚的アイデンティティを尊重します。 アプリのカラー、フォント、デザイン言語を使用してください。
  • 共有前に一貫性を確認します。 references/consistency.md は必須です。
  • 納品フォルダに納品します。 プロジェクトフォルダだけではありません。

4. 参照

  • references/techniques.md – 詳細なテクニック、落とし穴、調整可能な変数
  • references/consistency.md – 納品前の一貫性チェックリスト
  • references/recording.md – 実際の画面録画の手順
  • examples/ – 特定のアプリの例と共有テキスト
  • templates/ – 再利用可能なRemotionコンポーネントとツール

関連スキル