Communityコーディング&開発github.com

snapcndev/snapcn

Remotion コンポーネントの shadcn レジストリです。テキストリビール、デバイスフレーム、ターミナルセッション、ロゴスティング、シーン全体をコマンド一つでインストールできます。

snapcn とは?

snapcn は、Remotion ビデオ用のコピーペースト可能なコンポーネントを提供する shadcn レジストリです。shadcn の `add` コマンドを使ってコンポーネントをインストールすると、`components/snap-cn/` 配下にコードが配置され、コードを完全に所有・編集できます。コンポーネントは「アニメーション」と「UI プリミティブ」の2つのティアに分かれており、アニメーション系は `speed` プロパティで時間制御、UI プリミティブ系はタイムライン駆動の状態ベースです。テキストリビール、デバイスフレーム、AI チャット入力、ロゴ、シーン、ソーシャルプルーフ、エフェクトなど27のアイテムが用意されており、各カテゴリから目的に応じて選択できます。デザインのデフォルトは AI スロップを避けた抑制の効いたものになっており、`references/` 配下のガイド(構成、アーキタイプ、デザイントークン、モーション原則、アンチパターン)に従ってビデオ全体を構成できます。

対応~Claude Code~Codex CLI✓Cursor
npx skills add snapcndev/snapcn

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

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

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

ドキュメント

snapcn は何をしますか?

Remotion ビデオ用のコピーペーストコンポーネントです。shadcn でコンポーネントをインストールすると components/snap-cn/ 配下に配置され、コードを完全に所有できます。

インストール

前提条件: Remotion プロジェクト(npx create-video@latest)

# コンポーネントを追加(名前空間付き shadcn レジストリ)
shadcn add @snapcn/text-reveal

# コンポーネントは components/snap-cn/text-reveal.tsx に配置されます

@snapcn/<name> が正規の名前空間形式です。registries エントリは不要です。名前空間は shadcn レジストリディレクトリに含まれています。プレーンなレジストリ URL https://snapcn.dev/r/<name>.json も使用できます。

依存関係は自動的にインストールされます

多くのコンポーネントは registryDependencies を介して他のコンポーネントを引き込み、shadcn が推移的にインストールします。例えば、shadcn add @snapcn/search-typing は @snapcn/snap-cn-ui、@snapcn/input、@snapcn/caret も引き込みます。

  • @snapcn/snap-cn-ui は共有コアライブラリ(タイムラインフック、テーマコンテキスト、色計算)です。ほとんどの UI プリミティブがこれに依存します。直接インストールすることはほとんどありません。

2つのティア

snapcn には2種類のコンポーネントがあり、API が異なります:

  • アニメーションティア(snapcn)— テキストアニメーション、トランジション、背景、UIブロックシミュレーション、ブランド/ソーシャルカード、フルコンポジション。フレーム駆動。共通プロパティ: speed(タイムマルチプライヤ)、テキスト用: fontSize、color、fontWeight。
  • UI プリミティブ(snap-cn-ui)— タイムライン駆動の shadcn スタイルプリミティブ。現時点では input と caret の2つが出荷されています。状態ベースのプロパティ(state、style、size、theme)— 開いている/タイピング中の状態はタイムラインの純粋関数です。speed プロパティはありません。 @snapcn/snap-cn-ui 上に構築されています。

コンポーネントカテゴリ

作成する内容に応じて選択してください。カタログは references/components/ 以下にコンポーネントごとに1ファイルで分割されています。references/components/index.md から始めてください — これらのカテゴリでグループ化され、コンポーネントごとに Use for / Avoid for が示されたルーターテーブルです。ざっと目を通して候補を絞り、必要な references/components/<name>.md ファイルだけを開いてください(全プロパティ、例、使用/非使用の注意事項)。すべてのファイルを読む必要はありません。

カテゴリティアコンポーネント
テキストとタイトルsnapcntext-reveal、text-swell、text-highlight、text-swap、text-build、word-flip
キャプションsnapcnword-captions、karaoke-captions
AI チャット入力snapcnsearch-typing、prompt-zoom、answer-stream
スクリーンとデバイスsnapcnphone-frame、laptop-frame、terminal-simulator
ロゴsnapcnlogo-assemble、logo-flicker、block-wordmark
シーンsnapcnannounce-title、hero-launch、orbit-gallery、moodboard-reveal、status-cycle
ソーシャルプルーフsnapcnfollower-rush
エフェクトsnapcnpulsing-border
UI プリミティブsnap-cn-uiinput、caret(+ snap-cn-ui:共有コアライブラリ)

これがレジストリのすべてです — 27アイテム。 シェーダー、スタンドアロンのトランジションコンポーネント、チャートやソーシャルカードコンポーネント、input と caret 以外の shadcn プリミティブはありません。シーンにそれらが必要な場合は、自分で構築してください(references/anatomy.md §1)— このテーブルにない名前に対して shadcn add を実行しないでください。references/components/index.md は、現在はインストールできない古い名前をマッピングしています。

コンポーネントパターン

ティアによって規約が異なります — プリミティブにアニメーションティアのプロパティを想定しないでください。

アニメーションティア(snapcn)

  • コンポーネントごとに名前付きの Props インターフェース(例: TextRevealProps)。
  • speed?: number — グローバルタイムマルチプライヤ(デフォルト 1)、frame * speed として適用。
  • テキストコンポーネント: fontSize、color、fontWeight。
  • シーン間のトランジションはこのレジストリにはありません — Remotion の @remotion/transitions(slide、wipe、fade、flip)を <TransitionSeries> 内で使用してください。
  • ルート要素に className?: string。

UI プリミティブ(snap-cn-ui)

  • 状態ベースで、speed ベースではありません: state(例: "open" / "closed")、style、variant、size、theme?: Partial<SnapCnTheme>。
  • 開いた/閉じた/アクティブな状態はタイムラインの純粋関数です(キーフレームプリセット)。
  • モーダルレイヤープリミティブ(ダイアログ、アラートダイアログ、ドロワー)をトリガー要素と組み合わせて構成します — 各コンポーネントの例を参照してください。

アニメーション API

import { interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion";

const opacity = interpolate(frame, [0, 30], [0, 1], { extrapolateRight: "clamp" });
const scale = spring({ fps, frame, config: { damping: 12, mass: 1, stiffness: 100 } });

// 決定論的乱数(絶対に Math.random() は使わない)
import { random } from "@remotion/random";
const jitter = random(`seed-${frame}`);

コンポジション構造

import { Sequence, Series } from "remotion";

<Sequence from={30} durationInFrames={60}>
  <TextReveal text="Ship it in React" />
</Sequence>

<Series>
  <Series.Sequence durationInFrames={60}><SceneA /></Series.Sequence>
  <Series.Sequence durationInFrames={60}><SceneB /></Series.Sequence>
</Series>

キャンバスとタイミング

  • キャンバス標準: 1280×720 @ 30fps。コンポーネントはこれに合わせてレイアウトされています。
  • 各 Sequence はコンポーネントの自然な長さに合わせて予算を組んでください — components/index.md の Length 列(および各ファイルの Natural length)を参照。予算が少なすぎるとアニメーションがクリップされ、多すぎると無音時間が発生します。
  • トーンの一致: 各カタログエントリには vibe タグ(tech/premium/data/clean/playful/social)が付いています — ブランドに合った雰囲気のコンポーネントを選んでください。
  • パレットとフォント: ライブラリのトークン(references/design.md → トークン)の範囲内に収めて、自作の要素が衝突しないようにしてください。

デザインデフォルト — AI スロップを避ける

自作のテキスト、シーンの装飾、カード(プリビルドコンポーネント以外)を作成する場合は、抑制を効かせてください:

  • 追加する本文/見出しテキストに装飾的な letter-spacing を付けない。
  • text-transform: uppercase / すべて大文字のデフォルトを避ける — 文の先頭だけ大文字(LAUNCH ではなく Launch)を推奨。
  • グラデーションテキストフィルや装飾的なグラデーションウォッシュを避ける — グラデーションは意図的な背景のみ。
  • グロー/色付きドロップシャドウや大きなブラー半径(blur > ~24px、スプレッド、マルチレイヤー)を避ける — 控えめな1pxの浮き上がりのみ。

例外: 効果が本質であるコンポーネント(word-flip のグラデーションワード、block-wordmark のカラーデッキ、announce-title のグロー、pulsing-border 自体、キャプションプリセットの太いアウトライン)からこれらを取り除かないでください。ルールはあなたが追加するものに適用され、ライブラリには適用されません。

使用/非使用の完全な例: references/design.md。モーションの品質(タイミング、予備動作、演出、イージング)については references/motion-principles.md を参照。

注意点(snapcn 固有)

  • トランジションコンポーネントは出荷されていません — シーン変更は @remotion/transitions の <TransitionSeries.Transition> で行い、snapcn コンポーネントではありません。text-swap は行を入れ替えるもので、シーンを入れ替えるものではありません。
  • ターミナルのスクロールは瞬間的 — ステップ関数の translateY で、スクロールに spring/ease は使わない。
  • 分割レイアウトでは overflow: hidden — 幅アニメーション中のコンテンツのはみ出しを防ぎます。
  • カーソルの点滅は決定論的 — Math.floor(frame / 15) % 2 === 0、インターバルは使用しません。
  • 静的ファイルは public/ に配置 — インポートではなく staticFile('cursor.svg') で読み込みます。
  • ソーシャルカードはオフラインレンダリング — avatarUrl="" / coverUrl="" はグラデーションにフォールバックします。フェッチは行いません。

一般的な Remotion ルール(Math.random() 禁止、setInterval 禁止、transform でアニメーション、top/left でアニメーションしない、レンダリング前にフォントを読み込む)は Remotion 自身のスキルに含まれているため、このスキルにはありません: npx skills add remotion-dev/skills

ビデオの構成

コンポーネントをただ並べるのではなく、一つのストーリーを構成してください。フルビデオ(「プロダクトデモを作成」、「チェンジログ動画」、「ランディングページのイントロ」)の作成を依頼された場合:

  1. 戦略を決定する — 既製テンプレートを使うか、コンポーネントから構成するか、新しいコンポーネントを構築するか。references/anatomy.md §1 を参照。
  2. ビートに従う — プロダクトデモは Hook → Positioning → Product reveal → Features → Proof → CTA(最後の2つはオプション)。references/anatomy.md §2 を参照。
  3. レシピを使用する — references/archetypes/index.md がアーキタイプ別のビルドにルーティングします: コンテンツ契約(推測 → 質問 → プレースホルダー)、時間長バリアント、ビート→コンポーネントスロット、作成済みの <TransitionSeries> スケルトン。
  4. 各ビートのコンポーネントを選ぶ — references/components/index.md から選び、vibe タグをブランドに合わせ、各 <Sequence durationInFrames> を自然な長さに基づいて予算を組む。
  5. 品質基準を確認する — 1つのアクセント、文頭大文字のキネティックタイプ、実際のコンテンツ、グローハローなし、機能リストの列挙なし、タイプの背後に装飾的なグラデーションウォッシュなし。references/anatomy.md §3 を参照。

リファレンス

  • references/anatomy.md — フルビデオの構成: 戦略(テンプレート/構成/新規)、プロダクトデモのビート、良いものとスロップの品質基準。
  • references/archetypes/index.md — アーキタイプ別ビルドレシピへのルーター(プロダクトデモ旗艦 + チェンジログ、機能発表、OSSショーケース、CLIツールデモ、推薦ビデオ、年間レビュー、価格発表、ロゴバンパー): コンテンツ契約、時間長バリアント、ビート→スロットマップ。
  • references/components/index.md — ルーターテーブル(すべてのコンポーネント、カテゴリ別にグループ化、Use for / Avoid for 付き)。1つのコンポーネントの全プロパティ、例、使用/非使用の注意事項については references/components/<name>.md を開いてください。
  • references/design.md — アンチスロップデザインデフォルト(使用/非使用)+ デザイントークン(パレット、フォント、キャンバス)。
  • references/motion-principles.md — snapcn + Remotion に適応されたモーションデザイン原則。
  • references/anti-patterns.md — 一般的な生成ミスとその修正方法。

Individual skills in this repo

This repo contains 5 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 a product demo video in Remotion from a real screen recording or screenshots: a SaaS walkthrough, feature demo, onboarding clip, CLI or developer-tool demo, AI app demo or App Store preview. Uses snapcn's Remotion components (@snapcn/screen-recording, cursor-track, laptop-frame, phone-frame, terminal-simulator, prompt-send, answer-stream, status-cycle) so the camera push, clicks, device frames and typed commands come pre-built instead of hand-animated. Triggers: product demo, demo video, remotion demo, product walkthrough, feature demo video, screen recording to video, app demo, SaaS demo, CLI demo, "turn my screen recording into a demo video".

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.

関連スキル