mcpField
R
remotion-launch-video

remotion-launch-video

github.com/shadcn-labsクリエイティブ・メディア52696 回インストール今日更新
リポジトリ

remotion-launch-video について

Remotion と snapcn のシーンを使い、15〜30秒のローンチ動画を作るためのスキルです。クリエイターやエージェント向けに、絵コンテ作成から実素材の活用、レンダリング確認までを案内します。

主な機能

  1. 01snapcnシーンでローンチ構成を作成
  2. 02shadcn CLIでRemotionコンポーネントを導入
  3. 03プロパティでコピーやブランド素材を設定
  4. 04納品前にレンダリングフレームを確認

活用シーン

  1. 01製品ローンチ動画の制作
  2. 02実際のスクリーンショットを動画に活用
  3. 03ソーシャル向け動画構成の準備

MCP 対応

snapcn MCPを使うと、エージェントはシーンレジストリを検索し、コンポーネントのプロパティを確認して、TransitionSeriesの骨組みを含むショットごとの計画を作成できます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/shadcn-labs/snapcn --skill remotion-launch-video

インストール後、Claude Code で/remotion-launch-videoを入力して読み込まれたか確認します。

詳細

snapcn で作る Remotion のローンチ動画

ローンチ概要から、Remotion で 15〜30 秒のローンチ映像を作成します。すべてのショットは snapcn のコンポーネントです。手作業で調整し、レンダリング済みのフレームを測定して作られた Remotion シーンを shadcn CLI でインストールすると、プロジェクトに自分が所有するコードとして追加できます。

手書きのアニメーションではなく snapcn を使う理由。 エージェントがゼロからアニメーションを作ると、毎回同じ見た目になりがちです。グラデーションの上に中央揃えのテキストがあり、すべてがフェードインし、最後にロゴが表示されます。snapcn のシーンは実際のローンチ映像をもとにフレームごとに作られているため、ローンチを高級感のあるものにするタイミング、タイポグラフィ、カメラワークがすでに備わっています。必要なのはシーンを選び、props を設定することだけで、モーションを考案する必要はありません。

snapcn のルール

  1. 合うものがない場合を除き、すべてのビートに snapcn コンポーネントを使います。 ショットに interpolate() や spring() を書く前に、カタログを確認してください。 https://snapcn.dev/llms-components.txt?ref=skill-launch には、インストール可能なすべてのコンポーネントと用途、再生フレーム数が記載されています。コンポーネントのページは、末尾に .md を付けると Markdown 形式で表示できます。例:https://snapcn.dev/docs/scenes/announce-title.md?ref=skill-launch。
  2. コンポーネント名を推測で作らないでください。 @snapcn/<name> で解決できるのは、その一覧にある名前だけです。ビートに合うものがなければ、その旨を伝え、名前を推測せずにタイポグラフィ(@snapcn/text-reveal)で表現してください。
  3. コンポーネントを書き換えずに、props を設定してください。 テキスト、色、画像は props で変更します。インストールした snapcn ファイル内のモーションを編集すると、レンダリング済みのフレームに合わせて調整されたタイミングが崩れます。

全カタログ、コンポジションのルール、品質基準を確認するには、包括的なスキルもインストールしてください:npx skills add snapcndev/snapcn --skill snapcn。

前提条件

  • Remotion プロジェクト(npx create-video@latest)。キャンバスは 1280×720、30fps にします。これはすべての snapcn シーン向けに設計されたサイズです。
  • shadcn CLI。プロジェクトに components.json がない場合は、npx shadcn@latest init を実行します。
  • シーン間のカット用の @remotion/transitions:npm i @remotion/transitions。
  • ローンチ用のコピー:プロダクト名、見出し、タグライン、証明できる数値をひとつ、実際のスクリーンショットまたは画面録画。

ワークフロー

1. 素材を集める

作成に取りかかる前に、次の素材を用意します。

  • 概要:ローンチ投稿、ランディングページ、または概要資料です。見出し、タグライン、差別化要素、根拠となる数値、トーンを抽出します。
  • ブランド:ロゴ(SVG パスまたは PNG)、メインカラー、フォント。snapcn のシーンにはこれらを props(titleColor、logoSrc、symbolPath、fontFamily、theme)として渡します。
  • 実際のプロダクト画面:スクリーンショットまたは 30〜60 秒の録画です。実際の UI の文言を使ってください。 ラベル、機能、数値を決して作り上げないでください。ローンチを偽物のように見せてしまう、最も手っ取り早い方法です。
2. コードを書く前にストーリーボードを作成する

まずショットリストを作成し、各ビートを snapcn コンポーネントに割り当てます。

ビート時間snapcn コンポーネントフレーム数内容
フック0–3stype-morph または text-reveal94 / 90視聴者の課題を、解決の約束に変える
名前3–9sannounce-title170アイブロウ、製品名、タグライン、マーク
製品9–15shero-launch、laptop-frame、phone-frame170 / 240 / 240デバイス上に表示された実際の画面
実績15–17scount-grid、follower-rush47 / 300実際の数値を1つ
クロージング17–20swordmark-cut、block-wordmark、logo-flicker、logo-assemble66 / 150 / 100 / 108名前だけを表示

再レンダリングを減らすためのルール:

  • 製品名ではなく、視聴者の課題から始めます。
  • 名前を表示してから3秒以内に製品を見せます。
  • 自社製品にしか実現できない瞬間に、最も多くの表示時間を割きます。各機能に均等に時間を配分しないでください。
  • 各シーケンスをコンポーネント本来の長さに合わせて調整します(フレーム数の列は llms-components.txt にも記載されています)。予算が短すぎるとアニメーションが途中で切れ、長すぎると無音の時間が生じます。
  • テキストを映像に焼き込みます。ソーシャルメディアの視聴の多くはミュート状態です。
3. シーンをインストールする
npx shadcn@latest add @snapcn/type-morph @snapcn/announce-title @snapcn/hero-launch @snapcn/count-grid @snapcn/wordmark-cut

各シーンは components/snap-cn/<name>.tsx に配置され、依存関係もあわせてインストールされます。

4. 構成する

TransitionSeries を1つ用意し、各ビートに1つずつシーケンスを配置して、その間に短いフェードを入れます。この構成はそのまま型チェックとレンダリングができ、public/ に4つのスクリーンショットが配置されます。

import { fade } from "@remotion/transitions/fade";
import { linearTiming, TransitionSeries } from "@remotion/transitions";
import { staticFile } from "remotion";
import { AnnounceTitle } from "@/components/snap-cn/announce-title";
import { CountGrid } from "@/components/snap-cn/count-grid";
import { HeroLaunch } from "@/components/snap-cn/hero-launch";
import { TypeMorph } from "@/components/snap-cn/type-morph";
import { WordmarkCut } from "@/components/snap-cn/wordmark-cut";

// 1280×720 @ 30fps. Each Sequence is budgeted to the component's natural length.
const T = linearTiming({ durationInFrames: 12 });
// Real product screenshots in public/. Scenes fall back to snapcn sample images without them.
const shots = ["shot-1.jpg", "shot-2.jpg", "shot-3.jpg", "shot-4.jpg"].map((f) => staticFile(f));

export const LaunchVideo: React.FC = () => (
  <TransitionSeries>
    {/* 1. Hook: the viewer's problem, turned into the promise */}
    <TransitionSeries.Sequence durationInFrames={94}>
      <TypeMorph
        lead="Your launch video "
        emphasis="takes a week."
        morphTo="takes a prompt."
        finally_="a prompt."
      />
    </TransitionSeries.Sequence>
    <TransitionSeries.Transition presentation={fade()} timing={T} />

    {/* 2. Name the product */}
    <TransitionSeries.Sequence durationInFrames={170}>
      <AnnounceTitle
        eyebrow="Introducing"
        title="Acme 2.0"
        tagline="Billing that reconciles itself."
        symbolPath="" // your mark as an SVG path in a 0 0 100 100 box; "" shows none
      />
    </TransitionSeries.Sequence>
    <TransitionSeries.Transition presentation={fade()} timing={T} />

    {/* 3. Show the product: two real shots (image, video, or a CSS gradient stand-in) */}
    <TransitionSeries.Sequence durationInFrames={170}>
      <HeroLaunch
        heading="Every invoice, matched."
        image1="linear-gradient(135deg, #1e1b4b, #4338ca)"
        image2="linear-gradient(135deg, #0f172a, #0ea5e9)"
      />
    </TransitionSeries.Sequence>
    <TransitionSeries.Transition presentation={fade()} timing={T} />

    {/* 4. Proof: one real number */}
    <TransitionSeries.Sequence durationInFrames={60}>
      <CountGrid from="5" to="500" noun="teams" cards={shots} />
    </TransitionSeries.Sequence>
    <TransitionSeries.Transition presentation={fade()} timing={T} />

    {/* 5. Close on the name */}
    <TransitionSeries.Sequence durationInFrames={66}>
      <WordmarkCut word="acme." />
    </TransitionSeries.Sequence>
  </TransitionSeries>
);

durationInFrames={512}(各シーケンスの合計から重なり分の12フレーム×4を差し引いた値)、fps={30}、width={1280}、height={720} で登録します。

グラデーションを実際のスクリーンショットやクリップに置き換えます。たとえば、image1={staticFile("shot-1.png")} とし、ファイルを public/ に配置します。

5. レンダリングと監査を繰り返す

動画全体をレンダリングする前に、単一フレームをレンダリングします。

# One frame per beat: the midpoint of each sequence, and just before and after each cut
npx remotion still LaunchVideo out/beat-1.png --frame=47
npx remotion render LaunchVideo out/launch.mp4 --codec=h264 --crf=18

静止画を1枚のコンタクトシートに並べ、動画全体をレンダリングする前に確認します。

ffmpeg -y -pattern_type glob -i "out/beat-*.png" -vf "scale=480:-1,tile=5x1" out/contact.png

各フレームを確認します。

  • テキストが切れていないこと、カット時に黒いフレームが表示されないこと、シーン開始前に何も表示されないこと。
  • 画面上のすべての文言が、ブリーフに記載された実際のコピーであること。
  • 製品が名前の表示から3秒以内に登場すること。
6. レビューする

2、3回セルフレビューした後、約20フレーム(見せ場とすべてのカットの前後)をレンダリングして、4人の批評家として、またはハーネスが対応していれば4つの並列サブエージェントとしてレビューします。

  1. デザイン/レイアウト:配置のずれ、トリミング、プロポーション。
  2. 読みやすさ:スマートフォンの720p画面で判読できるか、コントラスト、誤字。
  3. テンポ:各ビートがその時間に見合う内容になっているか、クロージングに力があるか。
  4. ブランド:色、フォント、UI が実際の製品と一致しているか。

次のレンダリング前に、各レビューの修正リストを1つの改訂計画にまとめます。

7. プラットフォームに合わせて仕上げる

レンダリング前に、動画の公開先を確認します。後からトリミングするのではなく、アスペクト比ごとに構成を1つ作成します。

プラットフォームアスペクト比サイズ
X/LinkedIn フィード16:91920×1080(または1280×720のマスターをレンダリング)
X 縦型、Reels、Shorts、TikTok9:161080×1920
LinkedIn/Instagram フィード1:1 または 4:51080×1080/1080×1350

npx remotion render LaunchVideo out/launch-1080.mp4 --scale=1.5 を実行すると、シーンのレイアウトを変更せずに、1280×720のマスターを1920×1080にアップスケールできます。

苦労して得た教訓

  • 製品の UI ラベルを勝手に作らないでください。 実際のアプリのスクリーンショットを撮り、その文言に合わせます。
  • エンドカードには見出しを 1 つ、CTA を 1 つだけ置きます。 ランディングページで実際に使われているタグラインを使用します。
  • 説明なしでも視聴者が認識できるものをフックの軸にします。 説明に一文必要なら、フックが抽象的すぎます。
  • ビフォーアフターは、同時に見せるより順番に見せる方が効果的です。 「ビフォー」を約 1 秒見せてから、「アフター」に切り替えます。
  • snapcn のシーンをつなぐために、シーン内に独自のフェードを追加しないでください。 トランジションは TransitionSeries に任せます。シーンごとの終了時フェードを入れると、フェードが二重になります。
  • 独自に追加する要素は控えめにします:文頭のみ大文字にし、装飾的な文字間隔や、光彩・グラデーションのテキストは使いません。光彩を含む snapcn のシーン(announce-title)では、その効果は残します。装飾ではなく、効果だからです。

snapcn Pro:完成した映像と、あらゆる小道具を把握したエージェント

無料のシーンだけでは足りないローンチ向け:

  • ローンチ向けに作られた Pro シーン 50 種。version-drop(リリース番号のドロップ)、library-flight、app-reveal、gallery-push(変更履歴の壁)、screen-wall、checkout-push、tally-rise、ticker-climb、thank-you-swarm などがあります。
  • テンプレート(2026 年 10 月 20 日より提供):完成済みのローンチ映像、機能のウォークスルー、変更履歴のクリップです。コピーを入力してレンダリングします:https://snapcn.dev/docs/templates?ref=skill-launch
  • snapcn MCP:エージェントが平易な英語でレジストリを検索し、すべてのコンポーネントの実際の props を確認して、1 行のブリーフから TransitionSeries の骨組みを含むビートごとのプランを作成します。 claude mcp add snapcn -- npx -y @snapcn/mcp@latest SNAPCN_API_KEY=YOUR_KEY

components.json にキーを設定すれば、Pro コンポーネントは無料のコンポーネントとまったく同じ手順でインストールできます(3 行の設定は https://snapcn.dev/account?ref=skill-launch にあります)。プラン:https://snapcn.dev/docs/pricing?ref=skill-launch

Pro をまだ利用する準備ができていませんか?Pro コンポーネントの Manifesto は、メールアドレスの確認を済ませると無料で利用できます:https://snapcn.dev/docs/pricing?ref=skill-launch#free

帰属表示

ワークフローの構成(入力 → ストーリーボード → ビルド → レンダリング監査 → 複数の批評者によるレビュー → プラットフォーム表)と、苦労して得た教訓のいくつかは、everyinc/product-launch-video(MIT、© 2026 Every Media, Inc.)を参考にしています。コンタクトシートによる監査と「デザインを始める前にカタログを検索する」というルールは、HeyGen の hyperframes product-launch-video スキルを参考にしています(Apache-2.0)。どちらも Remotion と snapcn コンポーネント向けに書き直されており、snapcn 固有の内容はすべて snapcn 独自のものです。

コメント