Communitygithub.com

vitozev/phone-portal-reel

短尺の縦型プロダクトリール(Instagram Reels、TikTok、YouTube Shorts)向け。スマホをスワイプする手の動きで商品が画面外に飛び出す「フォーンポータル」「スワイプ・トゥ・ドロップ」広告を生成します。カメラ映像が不要で、セット・手・商品もすべて生成できます。

phone-portal-reel とは?

このスキルは、スマートフォン画面から商品が飛び出して現実のシーンに落下する、短尺の縦型プロダクト広告リール(Instagram Reels、TikTok、YouTube Shorts向け)を完全コードベースで生成します。カメラ撮影が不要で、生成画像をレイヤー(セット、スマホを持つ手、スワイプする手)に分解し、3D商品モデルと合成。スマホ画面内と部屋のカメラが同一の3Dカメラでレンダリングされるため、商品がガラスを越えて1つのオブジェクトとして振る舞います。9秒のリールは3つのビート(ポータルドロップ、ストップモーションシャッフル、ロゴ表示)で構成。OpenAI(gpt-image-2/1.5)、ElevenLabs(音楽・効果音)、HyperFrames CLI、three.js r169、ffmpeg、Pythonスクリプトを活用します。各工程で承認ゲートが設置され、リアルな撮影として通用する高いクオリティを保証。出力は-14 LUFS ±1、トゥルーピーク-1 dBTP以下がチェックされます。

対応~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/vitozev/claude-skills/tree/HEAD/skills/phone-portal-reel

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

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

ドキュメント

Phone-portal reel(フォーンポータルリール)

概要

9秒、9:16のプロダクト広告。1台の三脚固定フレームで、3つのビートで構成:

  1. ポータルドロップ(約4.3秒)。 片手がスマホを持ち、もう一方の手でスワイプ。スワイプごとに商品が画面外に飛び出し、下の棚にビートに合わせて着地。最後にヒーロー商品が、音楽の一瞬の停止後に落下。
  2. ストップモーションシャッフル(約2.7秒)。 ハードカットで手とスマホが消え、商品がライン全体を16分音符ごとに1コマずつ回転。4拍目で静止。
  3. ロゴ表示(約2秒)。 6~8フレームでワードマークがフェードインし静止。音楽のみ、音声なし。

カメラ映像は一切不要。1枚の生成写真をレイヤー(セット、スマホと持つ手、スワイプする手)に分解し、コードでアニメーション。商品は実際の3Dモデルで、スマホ内と部屋で同じカメラでレンダリングされるため、ガラスを越えて1つのオブジェクトとして通過します。

基準: 実際の撮影と見分けがつかないこと。私たちが経験した失敗はすべて、誰かが1フレームで見抜いた連続性の破綻でした。納品ファイルは実寸で、すべての接触モーメントを確認してください。

必要なもの

必要なもの用途
OPENAI_API_KEYプレートとマスター用の gpt-image-2、写真を維持する編集用の gpt-image-1.5(input_fidelity: high)
ELEVENLABS_API_KEY音楽(music_v2_5)と効果音
HyperFrames CLI(npx hyperframes)、three.js r169フレームエンジンとレンダリング
ffmpeg、Python 3(numpy opencv-python-headless pillow openai)スクリプト

スクリプトは環境変数、またはカレントフォルダやその上位フォルダにある .env ファイルからキーを読み取ります。キーを出力することはありません。各実行のOpenAI費用(スクリプトが推定値をログ出力)とElevenLabsクレジットを報告してください。

実際の手でスマホをスワイプする映像を三脚で撮影できる場合は、その映像を手に使用してください。偽造するのが最も難しい部分です。

ゲート:各段階で承認を得てから次へ

  1. ブリーフとビートシート。 ブランド、4~6個の商品(ヒーローは最後、セットを補完する色)、セット、および拍が整数のフレーム数になるテンポ。30 fpsの場合、112.5 BPMは16フレーム、120 BPMは15フレーム、90 BPMは20フレーム。すべての着地を音楽のグリッド(拍または半拍)に合わせ、間には置かない。ドロップ数については references/build.md のセクション1を参照。
  2. ルック。 プレート、マスター(手とスマホ)、適合カメラでの3Dプロダクトの最初のレンダリング、エンドカードを3つのフォントペアで設定したもの。すべて1枚のシートに。
  3. モーションテスト。 1回のスワイプと1回のドロップを納品品質でレンダリングし、1フレームずつチェック。ほとんどの失敗はここで発覚。
  4. ビルド、次にサウンド、最後に最終確認。

ビルド

references/build.md に従ってください。すべての手順と、実際に機能した数値が記載されています。順番に:

  1. プレート(空のセット)を生成し、次にマスター:プレートに両手と空白のスマホを追加した1つの編集。マスターがフレームです。 すべてのクリーンプレートはこれから作成されます。
  2. マスターからレイヤーを切り出し、画面のコーナー、画面下端、指先、手首を測定。
  3. 3Dカメラを棚の端にフィットさせる。
  4. エンジンを構築。example/studio/(参考ビルド:紅茶ブランド、5つの箱)をコピーし、プレートに合わせて定数を再測定。コードのみを含む。画像、フォント、ラベルアート、three.jsファイルは自身で用意。商品が箱以外(瓶、ボトル、缶、ガラス製品など)の場合は、最初に build.md の「その他の商品」を参照。
  5. 最初に音楽を作成し、ビートを測定。次に着地をグリッドに固定し、効果音を追加してミックス。
  6. レンダリング後、以下のチェックを実行。

演出を台無しにしたルール

現象修正方法
商品がスマホの下に数フレーム遅れて現れるガラスの両側で1つの3Dオブジェクトにする。各スワイプを着地フレームから逆算:最下点が端に達したフレームから、スクロール速度で重力落下
商品が手の後ろに落下する画面の下端より下では、ベゼルと指より前に描画
商品がスマホの下に数フレームぶら下がる端で重力が支配する。ページのグライドに追従させ続けない
スワイプが写真のスライドに見える手首からフリックし、前腕は固定。手首の角度を調整して指先をページと一緒に動かす。スワイプは毎回異なる
フレームが静止画に見える保持するスマホは1.5~2ピクセル動き、押下ごとに沈む。壁は決して動かない
スマホ内に暗い線が移動するフィードにページ区切りなし。ゴーストは低く抑える
時計やジュエリーが手首で滑るマスターでは素手を依頼。紛れ込んだ場合はすべてマスクし、scripts/blend-edit.py で除去
カットがディゾルブになるすべてのカット、スワップ、静止をフレーム全体で決定。シャッターサンプル内部では決して行わない
ラベルがコピーの櫛状に印刷される商品落下中は48サブフレーム、それ以外は10サブフレーム、シャッター0.38フレームを使用
生成編集がマスク外のものを動かしたマスク編集は尊重されない。編集を登録後、マスク内部のみ適用
ドスンという音が箱より先に鳴る各テイクを最大アタックの4 ms前にトリミングし、そのアタックに合わせる

完全なリストと原因は references/lessons.md にあります。

送信前の確認

  • 納品ファイルの各接触モーメントでの実寸クロップ:各スワイプの最初のフレーム、商品が端を通過する瞬間、各着地、カット、腕がフレームから去る瞬間。
  • python3 scripts/sync-sheet.py final.mp4 --audio sound/stems/sfx.wav:各ヒットが指定フレームに合っていることを確認。
  • bash scripts/check-final.sh final.mp4 1080x1920:-14 LUFS ±1、トゥルーピークが-1 dBTP以下であることを確認。

スクリプト

スクリプト機能
scripts/openai-image.py OUT.png "prompt" [--edit IN.png --mask M.png --fidelity high]画像を生成または編集し、トークンと推定コストをログ出力
scripts/blend-edit.py crop / blend1領域のマスク編集を準備し、結果を登録してマスク内部のみ適用
scripts/elevenlabs.py spec.json OUTDIR仕様から音楽とエフェクトを生成、キャッシュ、クレジットをログ出力
scripts/beats.py bed.mp3音楽のテンポ、ビートグリッド、最初のダウンビートを検出
scripts/sync-sheet.py VIDEO --audio sfx.wav または --cues cues.json各サウンドヒットの前後5フレームを1枚のシートに表示
bash scripts/check-final.sh VIDEO [WxH]サイズ、fps、長さ、ラウドネス、トゥルーピークをチェック

各スクリプトは --help でオプションを表示。example/README.md に参考ビルドのマップがあります。

関連スキル