Communitygithub.com

snapcndev/snapcn

実際のスクリーン録画やスクリーンショットからRemotionで製品デモ動画を構築します。SaaSウォークスルー、機能デモ、オンボーディングクリップ、CLIや開発者ツールのデモ、AIアプリデモ、App Storeプレビューに対応。

snapcn とは?

このスキルは、実際のスクリーン録画を元に、プロフェッショナルな製品デモ動画をRemotionで作成するためのものです。手作業でアニメーションを作成する代わりに、snapcnの専用Remotionコンポーネント(画面録画のカメラプッシュ、クリックするカーソル、デバイスフレーム、タイピングするターミナル、AIプロンプトの送信と応答ストリームなど)を組み合わせることで、デモ動画の制作時間を大幅に短縮します。Cursor、Claude Code、Codex、WindsurfなどのAIエージェントと連携して動作し、ユーザーは単にコンポーネントを選択してプロパティを設定するだけで、高品質なデモを生成できます。また、UIラベルや数値を実際の製品からそのまま使用する「録画が真実」の原則に従い、デモが不自然に見えることを防止します。さらに、snapcn Proでは、よく使われるデモショット(タップスルー、チェックアウトプッシュ、プロンプトダイブなど)や自然言語でレジストリを検索できるMCPが提供され、高度なデモ制作をサポートします。

対応✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/snapcndev/snapcn/tree/HEAD/skills/remotion-product-demo

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

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

ドキュメント

snapcn で作る Remotion 製品デモ

実際のスクリーン録画を、Remotion を使った 20~45 秒の製品デモに変換します。ショットは snapcn から取得します。snapcn は、手動アニメーションに最も時間がかかるデモのパーツ(録画へのカメラプッシュイン、クリックするカーソル、デバイスフレーム、タイピングするターミナル、送信される AI プロンプト)を提供する Remotion コンポーネント群です。shadcn CLI でインストールでき、あなたが所有するコードとしてプロジェクトに配置されます。

なぜ snapcn なのか?手書きアニメーションではない理由。 手作りのデモモーションは、AI 生成動画の粗が露呈する部分です。一定速度でスライドするカーソル、永遠にイージングし続けるズーム、一度にすべてを表示するターミナル。snapcn コンポーネントは、実際の製品デモに照らして 1 フレームごとに調整されています。あなたの仕事は、コンポーネントを選択し、プロパティを設定することです。

snapcn のルール

  1. 各ビートは、適切なコンポーネントがない場合を除き、snapcn コンポーネントを使用します。 ショットに interpolate() や spring() を書く前に、https://snapcn.dev/llms-components.txt?ref=skill-demo を確認してください(インストール可能な全コンポーネント、その用途、実行フレーム数が記載されています)。コンポーネントのページは .md を追加するとマークダウンで表示されます。例:https://snapcn.dev/docs/screens/screen-recording.md?ref=skill-demo。
  2. コンポーネント名をでっち上げないでください。 @snapcn/<name> は、上記リストに存在する名前に対してのみ解決されます。適切なものがなければ、その旨を明記してください。
  3. プロパティを設定し、コンポーネントを書き換えないでください。 コピー、色、録画、カーソルパスはプロパティを通じて指定します。

完全なカタログと構成ルールについては、包括スキルもインストールしてください:npx skills add snapcndev/snapcn --skill snapcn。

録画が真実の情報源です

  • プレートとして実際の録画またはスクリーンショットを使用します。 UI を JSX で再構築する代わりに、その上でカメラをアニメーション化します(screen-recording の camera 移動を使用)。単独で動かす必要がある要素のみを再構築します。
  • UI ラベル、数値、機能をでっち上げないでください。 画面上のすべての文字列は実際の製品からのものです。でっち上げたラベルは、デモが偽物に感じられる最も一般的な理由です。
  • 録画がないですか? 録画またはスクリーンショットを依頼してください。偽のダッシュボードを描かないでください。

前提条件

  • Remotion プロジェクト(npx create-video@latest)。キャンバスは 1280×720、30fps。
  • shadcn CLI(components.json がない場合は npx shadcn@latest init)。
  • npm i @remotion/transitions。
  • 録画ファイルは public/ ディレクトリに配置し(例:public/recording.mp4)、staticFile() で読み込みます。

ワークフロー

1. 重要な瞬間を見つける

録画を見て、この製品だけが実行できるアクションを 1 つ特定します。つまり、重要なクリックです。その瞬間にカメラプッシュと最も長い表示時間を割り当てます。デモ内の他のすべては、この瞬間を設定するためのものです。

2. ストーリーボード:ビートごとに 1 つの snapcn コンポーネント

ビートsnapcn コンポーネントフレーム数使用目的
インストール/セットアップterminal-simulator200開発者が実際に入力するコマンドとその実際の出力
デバイス上の製品laptop-frame, phone-frame240 / 240録画を MacBook または iPhone に配置し、開いてズームイン
主要なアクションcursor-track で screen-recording をラップ132 / 139カーソルが移動してクリックし、同時にカメラが録画にプッシュイン
AI 製品prompt-send, answer-stream, search-typing165 / 150 / 420プロンプトの入力と送信、応答のストリーミング表示
結果status-cycle, count-grid198 / 47状態変化("queued → live")または実際の数値
エンドカードblock-wordmark, logo-flicker150 / 100製品名

各シーケンスをコンポーネントの自然な長さ(フレーム数列)に合わせて予算化します。予算を下回るとショットが切れ、上回ると無駄な時間が生まれます。

3. インストール

npx shadcn@latest add @snapcn/terminal-simulator @snapcn/laptop-frame @snapcn/cursor-track @snapcn/screen-recording @snapcn/status-cycle @snapcn/block-wordmark

4. 構成

以下のコンポジションは、このままタイプチェックされ、レンダリングされます(public/recording.mp4 が存在する場合)。

import { fade } from "@remotion/transitions/fade";
import { slide } from "@remotion/transitions/slide";
import { linearTiming, TransitionSeries } from "@remotion/transitions";
import { staticFile } from "remotion";
import { BlockWordmark } from "@/components/snap-cn/block-wordmark";
import { CursorTrack } from "@/components/snap-cn/cursor-track";
import { LaptopFrame } from "@/components/snap-cn/laptop-frame";
import { ScreenRecording } from "@/components/snap-cn/screen-recording";
import { StatusCycle } from "@/components/snap-cn/status-cycle";
import { TerminalSimulator } from "@/components/snap-cn/terminal-simulator";

// 実際の録画を public/ に配置します。その UI コピーがスクリプトです — ラベルをでっち上げないでください。
const RECORDING = staticFile("recording.mp4");
const T = linearTiming({ durationInFrames: 12 });

export const ProductDemo: React.FC = () => (
  <TransitionSeries>
    {/* 1. インストール:開発者が実際に入力するコマンド */}
    <TransitionSeries.Sequence durationInFrames={200}>
      <TerminalSimulator
        intro="Set up *Acme* in one command"
        command={{ text: "npx acme init" }}
        lines={[
          { text: "npx acme init", type: "command" },
          { text: "Connecting your Stripe account...", type: "log" },
          { text: "Ready. 1,204 invoices imported.", type: "success" },
        ]}
      />
    </TransitionSeries.Sequence>
    <TransitionSeries.Transition presentation={fade()} timing={T} />

    {/* 2. デバイス上の製品 */}
    <TransitionSeries.Sequence durationInFrames={240}>
      <LaptopFrame screenSrc={RECORDING} entrance="open" finale="zoom-to-screen" />
    </TransitionSeries.Sequence>
    <TransitionSeries.Transition presentation={slide()} timing={T} />

    {/* 3. この製品だけが実行できるアクション:カーソルクリック、カメラプッシュイン */}
    <TransitionSeries.Sequence durationInFrames={132}>
      <CursorTrack
        path={[
          { at: 0, x: -0.06, y: 0.86, duration: 6 },
          { at: 8, x: 0.34, y: 0.44, duration: 22, click: true },
          { at: 60, x: 0.68, y: 0.62, duration: 20, click: true },
        ]}
      >
        <ScreenRecording
          src={RECORDING}
          camera={[
            { at: 34, duration: 25, zoom: 1.6, x: 0.36, y: 0.42 },
            { at: 96, duration: 25, zoom: 1 },
          ]}
        />
      </CursorTrack>
    </TransitionSeries.Sequence>
    <TransitionSeries.Transition presentation={fade()} timing={T} />

    {/* 4. 結果:状態変化 */}
    <TransitionSeries.Sequence durationInFrames={198}>
      <StatusCycle
        prefix="Your books are"
        statuses={["syncing", "matching", "reconciled"]}
        chips={["Stripe", "QuickBooks", "Xero"]}
      />
    </TransitionSeries.Sequence>
    <TransitionSeries.Transition presentation={fade()} timing={T} />

    {/* 5. エンドカード */}
    <TransitionSeries.Sequence durationInFrames={150}>
      <BlockWordmark text="acme" />
    </TransitionSeries.Sequence>
  </TransitionSeries>
);

durationInFrames={872}(シーケンスの合計から 4 × 12 フレームを引いた値)、fps={30}、width={1280}、height={720} として登録します。

ショットの狙い方:

  • cursor-track のパス はフレームに対する比率で指定します(x, y は 0 から 1)。at はカーソルがそのポイントに向かって移動を開始するフレームです。click: true は到着時にクリックリングを発火します。各クリックを録画内の実際のボタンに正確に配置します。
  • screen-recording のカメラ移動({ at, duration, zoom, x, y })は、あるポーズにイージングし、次の移動までホールドします。主要なアクションにプッシュイン(zoom: 1.4–1.8)し、アクションが完了したら引き戻します(zoom: 1)。
  • ブラウザのクロームをトリミングするには、録画にクロームが含まれている場合、crop={{ top: 0.11 }} を使用します。
  • terminal-simulator の lines は { text, type } で、type には command、log、success、error を指定します。実際の出力を短くして貼り付けます。

5. レンダリング監査

npx remotion still ProductDemo out/click.png --frame=460
npx remotion render ProductDemo out/demo.mp4 --codec=h264 --crf=18

各ビートの中間点、および各カットの直前と直後の静止画をレンダリングし、以下を確認します。

  • 各クリックが実際のボタンに正確に当たっており、その横ではないこと。
  • 録画内のテキストがプッシュイン後、720p で読みやすいこと。読みにくい場合は、さらにプッシュインするか、トリミングを厳しくします。
  • カット部分に黒フレームがなく、シーン開始前に何も表示されていないこと。

6. 公開

アスペクト比ごとに 1 つのコンポジションをレンダリングします。16:9 は X と LinkedIn 用、9:16(phone-frame を使用)は Reels、Shorts、TikTok 用です。--scale=1.5 で 1280×720 のマスターを 1920×1080 に変換します。

snapcn Pro:最もよく求められるデモショット

  • 50 の Pro シーン デモ用。tap-through(CTA での電話タップ)、checkout-push(支払いの処理)、prompt-dive(プロンプト送信と送信ボタンへのダイブ)、build-out(送信ボタンからアプリを構築)、vault-count(残高のカウントアップ)、screen-wall(電話のトンネル)などがあります。
  • snapcn MCP:あなたのエージェントがプレーンテキストでレジストリを検索し、実際のプロパティを読み取り、1 行の概要からデモ全体を計画します。claude mcp add snapcn -- npx -y @snapcn/mcp@latest SNAPCN_API_KEY=YOUR_KEY

Pro コンポーネントは、components.json があなたのキーを送信すると、無料のものと同じようにインストールできます(3 行の設定は https://snapcn.dev/account?ref=skill-demo にあります)。料金プラン:https://snapcn.dev/docs/pricing?ref=skill-demo

Pro の準備はまだですか?1 つの Pro コンポーネント「Manifesto」は、確認済みメールアドレスで無料です:https://snapcn.dev/docs/pricing?ref=skill-demo#free

帰属

「UI ラベルをでっち上げない」ルール、レンダリング監査ループ、プラットフォームガイダンスは、everyinc/product-launch-video(MIT ライセンス、© 2026 Every Media, Inc.)から改変されています。「録画が真実の情報源」は、HeyGen の hyperframes product-launch-video スキル(Apache-2.0 ライセンス)から改変されています。どちらも Remotion と snapcn コンポーネント用に書き直されました。THIRD_PARTY_NOTICES.md を参照してください。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

snapcndev/snapcn

Make an explainer video in Remotion: a narrated 30–90s video that explains a product, feature, idea or process, with a voiceover and burned-in captions. Script → voiceover → word timings → one snapcn scene per beat → captions → render. Uses snapcn's Remotion components (@snapcn/punch-lines, status-cycle, count-grid, laptop-frame, word-captions, karaoke-captions and more) for every beat instead of hand-animated slides. Triggers: explainer video, animated explainer, how it works video, product explainer, narrated video, voiceover video, "explain my product in a video", "make an explainer in Remotion".

snapcndev/snapcn

Build a product launch video in Remotion from a brief: a launch film, feature announcement, version release, Product Hunt / X / LinkedIn promo or landing-page hero video. Composes snapcn's hand-tuned Remotion scenes (@snapcn/announce-title, hero-launch, type-morph, count-grid, wordmark-cut and more) instead of hand-animating every shot, so the result does not look like every other AI video. Brief → storyboard → install snapcn components → compose → render-audit → ship. Triggers: launch video, product launch video, remotion launch video, announcement video, release video, promo video, Product Hunt video, "make a video for my launch", "make a launch film with Claude Code".

snapcndev/snapcn

Make a logo animation in Remotion: a logo reveal, logo sting, intro or outro bumper, brand reveal or end card for a video, launch or YouTube channel. Uses snapcn's hand-tuned Remotion logo scenes (@snapcn/logo-flicker, logo-assemble, logo-collapse, block-wordmark, wordmark-cut) with your real logo, instead of a logo that fades in and scales up. Triggers: logo animation, logo reveal, logo sting, animated logo, intro animation, outro, brand reveal, end card, bumper, "animate my logo", "logo intro in Remotion".

snapcndev/snapcn

Build Remotion videos with snapcn — a shadcn registry of copy-paste animation components and timeline-driven UI primitives. Use when composing video scenes, adding text animations, transitions, backgrounds, UI blocks, brand/social cards, or full compositions in a Remotion project. Triggers include "snapcn", "video component", "add animation", "text reveal", "product demo video", "remotion component", "terminal simulator", "device frame", "phone mockup", "burned-in captions", "karaoke captions", "logo animation", "launch video", "changelog video", and the UI-primitive tier: "video input", "typing caret". Even if the user doesn't mention snapcn, activate when they need polished video primitives for Remotion.

関連スキル