snapcndev/snapcn

Um registro shadcn de componentes Remotion para vídeos de demonstração de produtos. Instale uma revelação de texto, moldura de dispositivo, sessão de terminal, logo ou uma cena inteira com um comando.

O que é snapcn?

snapcn é um registro shadcn de componentes Remotion que permite criar vídeos de demonstração de produtos e conteúdo animado usando comandos simples de `shadcn add`. Ele oferece duas camadas de componentes: a camada de animação (`snapcn`) com componentes como revelação de texto, troca de palavras e molduras de dispositivos, e os Primitivos de UI (`snap-cn-ui`) com entrada e cursor baseados em timeline. Os componentes são instalados localmente em `components/snap-cn/`, dando a você total propriedade do código. O registro inclui uma ampla variedade de componentes organizados por categorias como Texto e Títulos, Legendas, Chat de IA, Telas e Dispositivos, Logos, Cenas, Prova Social e Efeitos, permitindo compor vídeos completos com transições usando `@remotion/transitions`.

Funciona com~Claude Code~Codex CLI✓Cursor
npx skills add snapcndev/snapcn

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que snapcn faz?

Componentes de copiar e colar para vídeos Remotion. Os componentes são instalados via shadcn e ficam em components/snap-cn/ — você é dono do código.

Instalação

Pré-requisitos: um projeto Remotion (npx create-video@latest).

# Adicione qualquer componente (registro shadcn com namespace)
shadcn add @snapcn/text-reveal

# O componente fica em components/snap-cn/text-reveal.tsx

@snapcn/<nome> é a forma canônica com namespace. Não precisa de entrada registries — o namespace está no diretório do registro shadcn. A URL de registro simples https://snapcn.dev/r/<nome>.json também funciona.

Dependências instalam automaticamente

Muitos componentes puxam outros via registryDependencies — shadcn os instala transitivamente. Por exemplo, shadcn add @snapcn/search-typing também puxa @snapcn/snap-cn-ui, @snapcn/input e @snapcn/caret.

  • @snapcn/snap-cn-ui é a biblioteca principal compartilhada (hook timeline-fold, contexto de tema, matemática de cores). A maioria dos Primitivos de UI depende dela. Raramente você a instala diretamente.

Duas camadas

snapcn tem dois tipos de componentes — eles têm APIs diferentes:

  • Camada de Animação (snapcn) — animações de texto, transições, fundos, simulações de blocos de UI, cartões de marca/sociais, composições completas. Baseadas em frames. Props compartilhados: speed (multiplicador de tempo), e para texto: fontSize, color, fontWeight.
  • Primitivos de UI (snap-cn-ui) — primitivos estilo shadcn baseados em timeline. Dois disponíveis hoje: input e caret. Props baseados em estado (state, style, size, theme) — o estado aberto/digitando é uma função pura da timeline. Sem prop speed. Construído sobre @snapcn/snap-cn-ui.

Categorias de componentes

Escolha com base no que você está construindo. O catálogo é dividido em um arquivo por componente em references/components/. Comece em references/components/index.md — uma tabela roteadora agrupada por estas categorias com um sinal de Use para / Evite para por componente. Examine-a, escolha candidatos, então abra apenas os arquivos references/components/<nome>.md que você precisa (props completos, exemplo, todas as notas de uso / não uso). Não leia todos os arquivos.

CategoriaCamadaComponentes
Texto e Títulossnapcntext-reveal, text-swell, text-highlight, text-swap, text-build, word-flip
Legendassnapcnword-captions, karaoke-captions
Entrada de Chat de IAsnapcnsearch-typing, prompt-zoom, answer-stream
Telas e Dispositivossnapcnphone-frame, laptop-frame, terminal-simulator
Logossnapcnlogo-assemble, logo-flicker, block-wordmark
Cenassnapcnannounce-title, hero-launch, orbit-gallery, moodboard-reveal, status-cycle
Prova Socialsnapcnfollower-rush
Efeitossnapcnpulsing-border
Primitivos de UIsnap-cn-uiinput, caret (+ snap-cn-ui, a biblioteca principal compartilhada)

Este é o registro completo — 27 itens. Não há shaders, componentes de transição independentes, componentes de gráfico ou cartão social, e nenhum primitivo shadcn além de input e caret. Se uma cena precisar de um, construa-o (references/anatomy.md §1) — não emita um shadcn add para um nome que não esteja nesta tabela. references/components/index.md mapeia os nomes mais antigos que não instalam mais.

Padrões de componentes

As convenções diferem por camada — não assuma props da camada de animação em um primitivo.

Camada de Animação (snapcn)

  • Interface Props nomeada por componente (ex.: TextRevealProps).
  • speed?: number — multiplicador de tempo global (padrão 1), aplicado como frame * speed.
  • Componentes de texto: fontSize, color, fontWeight.
  • Transições de cena para cena não estão neste registro — use as próprias transições do Remotion @remotion/transitions (slide, wipe, fade, flip) dentro de um <TransitionSeries>.
  • className?: string na raiz.

Primitivos de UI (snap-cn-ui)

  • Baseados em estado, não baseados em speed: state (ex.: "open" / "closed"), style, variant, size, theme?: Partial<SnapCnTheme>.
  • O estado aberto/fechado/ativo é uma função pura da timeline (predefinições com keyframes).
  • Componha primitivos de camada modal (dialog, alert-dialog, drawer) com um elemento gatilho — veja o exemplo de cada componente.

API de Animação

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 } });

// Aleatoriedade determinística (NUNCA Math.random())
import { random } from "@remotion/random";
const jitter = random(`seed-${frame}`);

Estrutura de composição

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>

Canvas e temporização

  • Padrão do Canvas: 1280×720 @ 30fps. Os componentes são projetados para isso.
  • Defina o orçamento de cada Sequence em torno da duração natural do componente — a coluna Length em components/index.md (e Natural length de cada arquivo). Sub-orçamentar corta a animação; super-orçamentar deixa tempo morto.
  • Combinação de tom: cada entrada do catálogo carrega uma tag vibe (tech/premium/data/clean/ playful/social) — escolha componentes cujo vibe se encaixe na marca.
  • Paleta e fontes: mantenha-se dentro dos tokens da biblioteca (references/design.md → tokens) para que seus próprios elementos não entrem em conflito.

Padrões de design — evite slop de IA

Ao escrever seu próprio texto, moldura de cena ou cartões (não os componentes pré-construídos), mantenha-se contido:

  • Sem letter-spacing decorativo em texto de corpo/título que você adicionar.
  • Sem padrões text-transform: uppercase / CAIXA ALTA — prefira frase em maiúscula inicial (Launch, não LAUNCH).
  • Sem preenchimentos de texto gradiente ou lavagens gradientes decorativas — gradientes apenas como fundos intencionais.
  • Sem brilho / sombras projetadas coloridas ou grandes raios de desfoque (blur > ~24px, espalhamento, multicamada) — apenas elevação sutil de 1px.

Exceção: nunca remova estes de componentes cuja essência é o efeito — a palavra gradiente de word-flip, o baralho de cores de block-wordmark, o brilho de announce-title, o próprio pulsing-border, e os contornos pesados das predefinições de legenda são legítimos. As regras regem suas adições, não a biblioteca.

Exemplos completos de fazer/não fazer: references/design.md. Para qualidade de movimento (temporização, antecipação, encenação, easing), veja references/motion-principles.md.

Armadilhas (específicas do snapcn)

  • Nenhum componente de transição é fornecido — uma mudança de cena é <TransitionSeries.Transition> do @remotion/transitions, não um componente snapcn. text-swap troca uma linha, não uma cena.
  • A rolagem do terminal é instantânea — translateY em função degrau, nunca use spring/ease na rolagem.
  • overflow: hidden em layouts divididos — evita quebra de conteúdo durante animações de largura.
  • A piscada do cursor é determinística — Math.floor(frame / 15) % 2 === 0, não intervalos.
  • Arquivos estáticos vão em public/ — carregue via staticFile('cursor.svg'), não imports.
  • Cartões sociais renderizam offline — avatarUrl="" / coverUrl="" fallback para gradientes; sem fetch.

Regras gerais do Remotion (sem Math.random(), sem setInterval, anime transform não top/left, carregue fontes antes da renderização) estão nas próprias skills do Remotion, não nesta: npx skills add remotion-dev/skills.

Compondo um vídeo

Não despeje componentes — componha uma história. Quando for solicitado a construir um vídeo completo ("faça uma demo de produto", "vídeo de changelog", "intro para minha landing"):

  1. Decida a estratégia — template pronto vs compor a partir de componentes vs construir um novo componente. Veja references/anatomy.md §1.
  2. Siga os beats — uma demo de produto é Hook → Posicionamento → Revelação do Produto → Funcionalidades → Prova → CTA (os dois últimos opcionais). Veja references/anatomy.md §2.
  3. Use a receita — references/archetypes/index.md roteia para construções por arquétipo: contrato de conteúdo (inferir → perguntar → placeholder), variantes de duração, slots beat→componente e um esqueleto <TransitionSeries> trabalhado.
  4. Escolha o componente de cada beat em references/components/index.md; combine a tag vibe com a marca e defina o orçamento de cada <Sequence durationInFrames> em torno de sua duração natural.
  5. Verifique a barra de qualidade — um destaque, tipo cinético em frase maiúscula, conteúdo real, sem halos de brilho, sem enumeração de lista de funcionalidades, sem lavagem gradiente decorativa atrás do tipo. Veja references/anatomy.md §3.

Referência

  • references/anatomy.md — compondo um vídeo completo: estratégia (template/compor/novo), os beats de demo de produto e a barra de qualidade bom-vs-slop.
  • references/archetypes/index.md — roteador para receitas de construção por arquétipo (demo de produto principal + changelog, anúncio de funcionalidade, showcase de OSS, demo de ferramenta CLI, reel de depoimento, retrospectiva anual, revelação de preço, bumper de logo): contrato de conteúdo, variantes de duração, mapa beat→slot.
  • references/components/index.md — tabela roteadora (todos os componentes, agrupados por categoria, com Use para / Evite para). Abra references/components/<nome>.md para props completos, exemplo e notas de uso / não uso de um componente.
  • references/design.md — padrões de design anti-slop (faça/não faça) + tokens de design (paleta, fontes, canvas).
  • references/motion-principles.md — princípios de design de movimento adaptados ao snapcn + Remotion.
  • references/anti-patterns.md — erros comuns de geração e suas correções.

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.

Habilidades Relacionadas