Communitygithub.com

smasikurr/RemotionMaster

商品ローンチ:URL、録画可能なアプリ、スクリーンショット、概要のいずれかから、SaaSチームがXに投稿するような20~60秒のローンチ動画を生成します。浮遊ウィンドウ内の実際の製品UIと音楽グリッドに合わせたキネティックタイポグラフィで構成され、製品名とCTAで締めくくります。

RemotionMaster とは?

このスキルは、SaaS製品のローンチ動画を効率的に制作するための包括的なフレームワークです。ユーザーから製品のURL、アプリの録画、スクリーンショット、概要などの情報を受け取り、20~60秒のプロフェッショナルな動画を自動生成します。動画は実際の製品UIのみを使用し、架空のインターフェースは決して使用しません。Hyperframes、Remotion、Motion Canvasなど、プロジェクトで既に使用している動画ツールと連携し、新規プロジェクトの場合はHyperframesをデフォルトで使用します。ワークフローは、素材収集、ストーリーボード作成、ビートグリッドへのカット編集、音楽生成、FrameJamでのレビューという段階を踏みます。特に、無料で利用できる音楽生成スクリプト(`launch_bed.py`)を同梱しており、動画のカットに合わせたオリジナルの音楽トラックをローカルで作成できます。AIエージェントやアシスタントのデモについては、実際のリクエスト入力から結果表示までのエンドツーエンドを表示することを推奨しています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/smasikurr/RemotionMaster/tree/HEAD/.agents/skills/framejam

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

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

ドキュメント

製品ローンチ

このプレイブックの使い方。 これはレシピであり、厳格なルールではありません。以下のすべてのフォーマット、長さ、テンポ、構成はデフォルトであり、ユーザーのリクエストが優先されます。質問から始めないでください。デフォルトを使用して構築を開始し、最初のレンダリングを共有する際に、選択したデフォルトを1行で記載してください(フッテージ自体など、本質的に不足しているものがある場合のみ質問してください)。最初のレンダリングが提案となるため、事前に承認を得るための計画はありません。ストーリーボードは、ユーザーがショットを事前に見たいと要請した場合のみ使用します。計画ファイル(BRIEF.md、PLAN.mdなど)は、あなた自身の作業ノートです。役立つ場合にのみ作成し、ユーザーへのステップとしては決して使用しないでください。

製品情報が入力されると、洗練されたローンチ動画が出力されます。これは、SaaSチームがXに投稿するような動画です。つまり、問題を提起するフック、ドロップに合わせて表示される製品名、実際のインターフェースで示される3つの機能、証拠、そしてクリーンなエンドカードで構成されます。音楽主導で、通常はナレーションなし、20~60秒です。

参考ビルド:MoritzのNotionローンチデモ(46秒、16:9、ナレーションなし、120 BPM)。9フレーム構成:暗い背景に散らばったツールのフック、ドロップに合わせたロゴと回転するヘッドライン、浮遊ウィンドウ内の実際のヒーロービデオ、実際のNotion UIから構築された3つの機能フレーム(キャプチャ、質問、エージェント)、ユースケースロール、統計情報付きのロゴウォール、CTAロックアップ。その計画はreferences/example-notion.mdにあります。その水準に合わせてください。

方法は固定されていますが、ツールは固定されていません。プロジェクトに既に動画ツールがある場合は、それを使用します。ない場合は、Hyperframesプロジェクトを開始し(npx hyperframes init)、template/hyperframes/を開始用のコンポジションとしてコピーします。

<playbook>は、このフォルダ(get_playbookが返すローカルパス)を意味します。

入力と出力

  • 入力: ローンチするもの(URL、アプリ自体、スクリーンショット、録画、概要、または貼り付けられたスクリプト)、ターゲットユーザー、投稿先。オプション:ブランドファイル、ナレーションスクリプト、音楽トラック。
  • 出力: 20~60秒のmp4(デフォルト16:9、リクエストに応じて9:16または1:1)。実際の製品UI、キネティックタイポグラフィ、音楽、サウンドエフェクトを1つのビートグリッドに合わせ、FrameJamでレビューおよび承認されます。

デフォルト(ユーザーのリクエストがこれらをすべて上書きします)

リクエストとファイルからこれらを決定します。何も指定されていない場合は、デフォルトを使用して続行し、本質的に不足しているものがある場合のみ質問してください。

  • 一言で表す約束。 視聴者が覚えておくべきこと。その他のすべては、そのための証拠です。
  • 尺とフォーマット: Xフィード 30~45秒 16:9(デフォルト); ランディングヒーロー 30~45秒 16:9、ミュート優先; Reels 9:16 ≤ 30秒。
  • サウンド: 音楽のみ(デフォルト。自動再生ではミュートで再生されるため、タイポグラフィがストーリーを伝えます)またはナレーション+音楽。
  • 実際のUIソース: 実行中のアプリ(録画)、ウェブサイト(スクリーンショットとヒーロービデオをキャプチャ)、またはユーザーが提供するファイル。表示する実際のものがない場合は、その旨を伝えてください。インターフェースをでっち上げないでください。
  • スタイル: この動画に選択されたスタイルがあればそれを使用します(wait_for_pickから、またはユーザーがスタイル名を指定した場合はget_presetから)。ユーザーがFrameJamスタイルを選択した場合、それがルック全体(パレット、タイポグラフィ、モーションの雰囲気、トランジション)を決定します。スタイルがない場合:製品自体のブランド(色、フォント、UIサーフェス)からルックを導き出します。
  • 事実: 統計情報、顧客ロゴ、主張は、製品のサイトまたはユーザーからのみ入手します。架空の数字は使用しません。
  • 音楽: デフォルトでは、同梱の無料スクリプト(scripts/launch_bed.py)、ユーザーが所有するトラック、またはライセンスされたライブラリトラックを使用します。生成音楽サービスは有料です。使用する前に停止して確認を取ってください。

別のツールで作成された既存のプロジェクト: そのツールに留まります。方法(ビートグリッド、ストーリーボード、ウィンドウ内の実際のUI、段階的な表示、検証、FrameJamループ)とスクリプト(launch_bed.py、sheet.sh)は、どのツールでも機能します。

何も指定されていない場合:音楽のみ、16:9、約40秒、ブランドのルック。最初のレンダリングを共有する際に、使用したデフォルトを明記してください。

ワークフロー

1. 実際の製品を収集する

1行も書き始める前に素材を集めます。詳細はreferences/assets.mdにあります。

  • アプリ: 各機能の短くクリーンなテイクを録画します(1テイクにつき1アクション、幅2880ピクセル以上、通知なし、現実的なデモデータ)。イベントのタイミング(クリックが発生するタイミング、結果が表示されるタイミング)を記録します。
  • ウェブサイト: ヒーロービデオ、全ページとセクションのスクリーンショット(2x)、ロゴ(SVG)、フォント、正確なヘッドライン、統計情報、顧客ロゴを保存します。Hyperframesユーザーはnpx hyperframes capture <url> -o captureを実行できます。
  • ASSETS.mdを作成します:ファイルごとに1行、表示内容、サイズ、ビデオの場合は重要な瞬間(秒単位)を記載します。
  • ブランドの真実:色(インク、キャンバス、1つのアクセント)、ディスプレイフォントとボディフォント、UIの見た目(角丸、シャドウ、クローム)。

2. ストーリーとビートグリッド

references/story.mdを読みます。次にSTORYBOARD.mdを作成します:

  • 1つのアークを選びます(問題→プラットフォーム、デモループ、ビフォーアフター、機能カスケード)。約束を1行で書きます。
  • 6~10フレーム。各フレームには1つの役割があります:フック、製品紹介、機能、利点、証拠、CTA。機能は、実際の画面上での短いシーケンス(入力→アクション→結果)として表示され、静的なスクリーンショットではありません。
  • AIエージェントとアシスタント: 実際のリクエストをエンドツーエンドで表示します。入力に入力され送信され、メッセージになり、エージェントのステップが1つずつ表示され(以前のものは薄暗くなり)、結果が正確な事実とチェックマークが付いたカードとして表示され、フレームはロックアップの前に結果をホールドします。リクエストと結果は具体的(名前、時間、数)で、プレースホルダーテキストは使用しません。
  • フックは3~4秒で、ミュートでも機能します。視聴者の言葉での苦痛や欲求であって、「Xは~するプラットフォームです」ではありません。
  • ビートグリッドを先に決めます。 テンポを選びます(110~128 BPM。120 BPMの場合、1ビートは0.5秒、1小節は2秒)。すべてのフレームはダウンビートで始まり、小節単位で続きます。ドロップをマークします。通常は製品名と証拠セクションです。すべてのフレームのすべての表示はビートに合わせます。
  • ナレーションがある場合:SCRIPT.mdを短いキューで書き(フレームあたり6~20語)、ナレーションにフレーム長を設定させます。音楽は依然としてグリッドに従います。
  • 上部に一度## Video directionブロックを書きます:パレットの役割、タイポグラフィの役割、ウィンドウの入り方、モーションルール、ダークな「インパクト」フレーム、決して表示しないもの。

その後、ビルドします。最初のレンダリングが提案です。ユーザーが最初にフレームを見たい場合は、それらをスケッチし、FrameJamでストーリーボードとしてレビューします:panelsDir(フレームごとに1画像、01-hook.png…という名前)を指定してopen_reviewを実行し、その後wait_for_feedbackを待ちます。

3. ショットデザイン

各フレームについて、ビートグリッドに合わせてタイムコード付きのショットリストを書きます(references/shots.md): Scene 1 (0.0–0.5s): … 画面に何が表示されているか、どこに配置されているか、どのように動くかを記述します。ルール:

  • t=0では最初のものだけを表示します。その他の要素はそれぞれのビート(または発話された単語)に合わせて到着します。フレームの最初の4分の1ですべてを表示して、そのままにしないでください。
  • 実際のUIは、浮遊する製品ウィンドウ(ブランドの角丸、ヘアライン境界、ソフトなレイヤードシャドウ)に配置され、エントリー時に3Dのセトルがかかります。UIテキストを単語の途中でトリミングしないでください。動かす必要がある1つのコンポーネント(タイプライターのように文字が入力される検索ボックスなど)のみを再構築します。
  • フレームごとに1つのアクセントカラー、ヘッドラインごとに1つのハイライト単語。
  • すべてのフレームをホールドリードで終了します。静止は、無駄なブレスやドリフトカメラよりも優れています。
  • フレーム間のトランジション:デフォルトではビートに合わせたハードカット。セクションの変更時にはズームスルー。一連の機能にはプッシュスライド。

4. 音楽とサウンド

references/music.mdを読みます。デフォルトの無料ルート:ストーリーボードからcues.jsonを作成し(小節単位のセクション、ドロップ、スラム、ポップ、クリック、タイピング、ウィンドウエントリごとのサウンドエフェクト)、次にuv run <playbook>/scripts/launch_bed.py cues.json --out assets/music/bed.wav(またはnumpy、scipy、soundfileを使用してpython3)を実行します。サウンドエフェクトは同じキューシートから取得されるため、カットに正確に配置されます。ユーザーがトラックを持ち込んだ場合:そのテンポを測定し、グリッドをそれに合わせてカットし、トラックはスローなイントロではなく、最も強いセクションから始めます。

5. ビルド

プロジェクトのツールでフレームごとにビルドします。Hyperframesの注意点(および直面した落とし穴)はreferences/hyperframes.mdにあります。スターターはtemplate/hyperframes/です。

  • フレームごとに1つのコンポジション、または短い作品の場合はフレームごとに1つのレイヤーを持つ1つのファイルにします。フレームローカルな時間を保持します。
  • 明示的な開始状態(シークセーフ)、ロングテールイーズ(power3/expo.out)でアニメーションを作成します。バウンス、無限ループ、ランダム性は使用しません。
  • 製品ビデオ:すべての<video>にIDを付けます。カメラムーブにはラッパーdivを動かし、ビデオ要素自体は動かしません。
  • 並列サブエージェントが利用可能な場合、各エージェントに1つのフレームを与えます:そのストーリーボードブロック、## Video direction、使用するアセット行、および「自分のファイルのみを編集」という指示。そうでない場合は、自分で順番にビルドします。

6. チェック、レンダリング、レビュー

  • ツール内でリント/チェックし、バージョンごとに新しいファイルにレンダリングします(renders/v1.mp4、v2.mp4…)。
  • bash <playbook>/scripts/sheet.sh renders/v1.mp4を実行して2 fpsのコンタクトシートを作成し、それを読みます。すべてのフレームの中間点とカットの両側を確認します。チェック項目:先頭に情報が詰め込まれていないか、テキストが切り取られていたりキャプションバンドの下にないか、継ぎ目に飛び出しがないか、ドロップが名前と共に着地しているか、エンドカードが1.5秒以上ホールドされているか。
  • ffmpeg -i renders/v1.mp4 -vf freezedetect=n=0.003:d=2 -f null -で静止ストレッチを検出します。静止が許されるのは、ホールドを計画した場所のみです。
  • FrameJamでレビュー: videoPath = レンダリング(絶対パス)を指定してopen_reviewを実行し、組み込みブラウザでURLを開き、wait_for_feedbackを待ちます。各指摘をタイムスタンプで対応するフレームにマッピングし、修正し、v2をレンダリングし、再度検証し、1行のメモを添えてadd_versionを実行し、再度待ちます。承認されるまで繰り返します。
  • 最終mp4(X: H.264、≤ 2:20、≤ 512 MB)を、その長さとフレームリストと共に納品します。

品質基準

  • 実際の製品を、正直に: すべてのUIショットは実際の録画またはスクリーンショットです。コピー、統計、ロゴは製品自身のソースから取得します。サードパーティのロゴは、製品自体がそれらを表示している場合(統合、顧客)のみ使用します。
  • 約束はフレーム2までに伝わること。 フックは視聴者の苦痛や欲求に語りかけ、名前はドロップに合わせて到着します。
  • すべての表示はビートに合わせること(または発話された単語)。音楽、サウンドエフェクト、カットは1つのグリッドを共有します。
  • 一目で読めること: ヘッドラインあたり1~7語、1080pで64 px以上、フレームあたり1つの焦点。
  • プレミアムモーション: スムーズなセトル、奥行きのあるウィンドウ、速度が一致した継ぎ目。バウンス、スクリーンセーバーのような浮遊、製品の代わりとなる一般的なストックシェイプはなし。
  • ミュートでも機能すること: ストーリーはタイポグラフィとUIだけで読み取れます。
  • 自分で確認すること(各FrameJamラウンドの前にコンタクトシートとカットチェックを行う)。

このプレイブックのファイル

  • references/story.md:アーク、フレームの役割、フックの種類、各役割の実績のあるライン形状、VOルール。
  • references/shots.md:ローンチフレームのショット形状、レイアウトとモーションルール、継ぎ目、完成したショットリスト。
  • references/assets.md:アプリの録画、サイトのキャプチャ、アセットリスト、権利。
  • references/music.md:ビートグリッド、cues.jsonフォーマット、自分のトラックの使用。
  • references/hyperframes.md:Hyperframesでの新規開始、製品ウィンドウ、ビデオとオーディオ、落とし穴。
  • references/example-notion.md:Notionローンチデモのフレームごとの計画。
  • scripts/launch_bed.py:キューシートから無料でローカルに音楽ベッドとサウンドエフェクトを生成。
  • scripts/sheet.sh:任意のレンダリングのコンタクトシート。
  • template/hyperframes/:開始用コンポジション(ビートグリッドヘルパー、製品ウィンドウ、キネティックライン、チップ、CTAカード)。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル