CommunityProgramación y desarrollogithub.com

snapcndev/snapcn

Un registro shadcn de componentes Remotion para videos demo de productos. Instala una revelación de texto, un marco de dispositivo, una sesión de terminal, un logo o una escena completa con un solo comando.

¿Qué es snapcn?

snapcn es un ecosistema de componentes prefabricados para Remotion que se instalan mediante `shadcn`, permitiendo a los desarrolladores ensamblar videos demo de alta calidad sin escribir animaciones desde cero. Los componentes se copian directamente al proyecto (`components/snap-cn/`), dando al usuario propiedad total del código. La biblioteca se divide en dos niveles: el nivel de **animación** (`snapcn`) para efectos como revelado de texto, transiciones o simulaciones de pantalla, y los **primitivos de UI** (`snap-cn-ui`) para elementos basados en estado como campos de entrada y cursores, controlados por la línea de tiempo. Cada componente tiene propiedades predefinidas y una duración natural. El sistema está optimizado para narrativas de producto (Hook → Posicionamiento → Funcionalidades → Prueba Social → CTA) y proporciona referencias detalladas para evitar el diseño 'slop' generado por IA, asegurando animaciones limpias y con propósito.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add snapcndev/snapcn

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace snapcn?

Componentes de copiar y pegar para videos Remotion. Los componentes se instalan a través de shadcn y se ubican en components/snap-cn/ — el código es tuyo.

Instalación

Requisitos previos: un proyecto Remotion (npx create-video@latest).

# Añade cualquier componente (registro shadcn con espacio de nombres)
shadcn add @snapcn/text-reveal

# El componente se ubica en components/snap-cn/text-reveal.tsx

@snapcn/<nombre> es la forma canónica con espacio de nombres. No necesita una entrada registries — el espacio de nombres está en el directorio del registro shadcn. La URL del registro simple https://snapcn.dev/r/<nombre>.json también funciona.

Las dependencias se instalan automáticamente

Muchos componentes traen otros a través de registryDependencies — shadcn los instala de forma transitiva. Por ejemplo, shadcn add @snapcn/search-typing también añade @snapcn/snap-cn-ui, @snapcn/input y @snapcn/caret.

  • @snapcn/snap-cn-ui es la librería central compartida (hook timeline-fold, contexto de tema, matemáticas de color). La mayoría de los Primitivos UI dependen de ella. Rara vez se instala directamente.

Dos niveles

snapcn tiene dos tipos de componentes — tienen APIs diferentes:

  • Nivel de animación (snapcn) — animaciones de texto, transiciones, fondos, simulaciones de bloques de UI, tarjetas de marca/redes sociales, composiciones completas. Basados en fotogramas. Props compartidos: speed (multiplicador de tiempo), y para texto: fontSize, color, fontWeight.
  • Primitivos UI (snap-cn-ui) — primitivos al estilo shadcn basados en línea de tiempo. Hoy se envían dos: input y caret. Props basados en estado (state, style, size, theme) — el estado abierto/escribiendo es una función pura de la línea de tiempo. Sin prop speed. Construidos sobre @snapcn/snap-cn-ui.

Categorías de componentes

Elige según lo que estés construyendo. El catálogo está dividido en un archivo por componente bajo references/components/. Comienza en references/components/index.md — una tabla de enrutamiento agrupada por estas categorías con una señal de Usar para / Evitar para por componente. Escanéala, elige candidatos, luego abre solo los archivos references/components/<nombre>.md que necesites (props completos, ejemplo, todas las notas de uso / no uso). No leas todos los archivos.

CategoríaNivelComponentes
Texto y Títulossnapcntext-reveal, text-swell, text-highlight, text-swap, text-build, word-flip
Subtítulossnapcnword-captions, karaoke-captions
Entrada de Chat IAsnapcnsearch-typing, prompt-zoom, answer-stream
Pantallas y Dispositivossnapcnphone-frame, laptop-frame, terminal-simulator
Logossnapcnlogo-assemble, logo-flicker, block-wordmark
Escenassnapcnannounce-title, hero-launch, orbit-gallery, moodboard-reveal, status-cycle
Prueba Socialsnapcnfollower-rush
Efectossnapcnpulsing-border
Primitivos UIsnap-cn-uiinput, caret (+ snap-cn-ui, la librería central compartida)

Ese es el registro completo — 27 elementos. No hay shaders, ni componentes de transición independientes, ni componentes de gráficos o tarjetas sociales, y ningún primitivo shadcn más allá de input y caret. Si una escena necesita uno, constrúyelo (references/anatomy.md §1) — no ejecutes un shadcn add para un nombre que no esté en esta tabla. references/components/index.md mapea los nombres antiguos que ya no se instalan.

Patrones de componentes

Las convenciones difieren según el nivel — no asumas props del nivel de animación en un primitivo.

Nivel de animación (snapcn)

  • Interfaz Props con nombre por componente (ej. TextRevealProps).
  • speed?: number — multiplicador de tiempo global (por defecto 1), aplicado como fotograma * speed.
  • Componentes de texto: fontSize, color, fontWeight.
  • Las transiciones entre escenas no están en este registro — usa las propias de Remotion: @remotion/transitions (slide, wipe, fade, flip) dentro de un <TransitionSeries>.
  • className?: string en la raíz.

Primitivos UI (snap-cn-ui)

  • Basados en estado, no basados en speed: state (ej. "open" / "closed"), style, variant, size, theme?: Partial<SnapCnTheme>.
  • El estado abierto/cerrado/activo es una función pura de la línea de tiempo (presets con keyframes).
  • Compón primitivos de capa modal (dialog, alert-dialog, drawer) con un elemento desencadenante — ver el ejemplo de cada componente.

API de animación

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

// Aleatoriedad determinista (NUNCA Math.random())
import { random } from "@remotion/random";
const jitter = random(`seed-${frame}`);

Estructura de composición

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>

Lienzo y temporización

  • Lienzo estándar: 1280×720 @ 30fps. Los componentes están diseñados para ello.
  • Ajusta cada Sequence a la duración natural del componente — la columna Length en components/index.md (y Natural length en cada archivo). Subestimar recorta la animación; sobreestimar deja aire muerto.
  • Coincidencia de tono: cada entrada del catálogo lleva una etiqueta vibe (tech/premium/data/clean/ playful/social) — elige componentes cuyo vibe encaje con la marca.
  • Paleta y fuentes: mantente dentro de los tokens de la biblioteca (references/design.md → tokens) para que tus propios elementos no choquen.

Diseño por defecto — evita el slop de IA

Cuando escribas tu propio texto, decoración de escena o tarjetas (no los componentes preconstruidos), sé contenido:

  • Sin letter-spacing decorativo en texto de cuerpo/encabezado que añadas.
  • Sin valores por defecto de text-transform: uppercase / TODO MAYÚSCULAS — prefiere mayúscula inicial (Launch, no LAUNCH).
  • Sin rellenos degradados de texto ni lavados degradados decorativos — degradados solo como fondos intencionales.
  • Sin brillo / sombras paralelas coloreadas ni radios de desenfoque grandes (blur > ~24px, dispersión, múltiples capas) — solo elevación sutil de 1px.

Excepción: nunca elimines estos de componentes cuya esencia sea el efecto — la palabra degradada de word-flip, la baraja de colores de block-wordmark, el brillo de announce-title, el propio pulsing-border, y los contornos gruesos de los presets de subtítulos son legítimos. Las reglas rigen tus adiciones, no la biblioteca.

Ejemplos completos de hacer/evitar: references/design.md. Para calidad de movimiento (temporización, antelación, puesta en escena, suavizado), consulta references/motion-principles.md.

Trampas (específicas de snapcn)

  • No se envían componentes de transición — un cambio de escena es <TransitionSeries.Transition> de @remotion/transitions, no un componente snapcn. text-swap intercambia una línea, no una escena.
  • El desplazamiento del terminal es instantáneo — función escalón translateY, nunca spring/ease en el desplazamiento.
  • overflow: hidden en diseños divididos — evita roturas de contenido durante animaciones de ancho.
  • El parpadeo del cursor es determinista — Math.floor(frame / 15) % 2 === 0, no intervalos.
  • Los archivos estáticos van en public/ — se cargan mediante staticFile('cursor.svg'), no imports.
  • Las tarjetas sociales se renderizan sin conexión — avatarUrl="" / coverUrl="" recurren a degradados; sin fetch.

Las reglas generales de Remotion (sin Math.random(), sin setInterval, animar transform no top/left, cargar fuentes antes de renderizar) viven en sus propias habilidades, no en esta: npx skills add remotion-dev/skills.

Composición de un video

No acumules componentes — compón una historia. Cuando te pidan construir un video completo ("haz un demo de producto", "video de changelog", "intro para mi landing"):

  1. Decide la estrategia — plantilla lista vs componer a partir de componentes vs construir un nuevo componente. Consulta references/anatomy.md §1.
  2. Sigue los compases — un demo de producto es Gancho → Posicionamiento → Revelación del producto → Funcionalidades → Prueba → CTA (los dos últimos opcionales). Consulta references/anatomy.md §2.
  3. Usa la receta — references/archetypes/index.md enruta a construcciones por arquetipo: contrato de contenido (inferir → preguntar → marcador de posición), variantes de duración, espacios de compás→componente y un esqueleto trabajado de <TransitionSeries>.
  4. Elige el componente de cada compás de references/components/index.md; empareja la etiqueta vibe con la marca y ajusta cada <Sequence durationInFrames> alrededor de su duración natural.
  5. Revisa el estándar de calidad — un acento, texto cinético en mayúscula inicial, contenido real, sin halos de brillo, sin enumeración de listas de funcionalidades, sin lavado degradado decorativo detrás del texto. Consulta references/anatomy.md §3.

Referencia

  • references/anatomy.md — composición de un video completo: estrategia (plantilla/componer/nuevo), los compases de demo de producto y el estándar de calidad bueno vs slop.
  • references/archetypes/index.md — enrutador a recetas de construcción por arquetipo (demo de producto insignia + changelog, anuncio de funcionalidad, showcase de OSS, demo de herramienta CLI, reel de testimonios, resumen del año, revelación de precios, bumper de logo): contrato de contenido, variantes de duración, mapa de compás→espacio.
  • references/components/index.md — tabla de enrutamiento (todos los componentes, agrupados por categoría, con Usar para / Evitar para). Abre references/components/<nombre>.md para las props completas, ejemplo y notas de uso / no uso de un componente.
  • references/design.md — valores por defecto de diseño anti-slop (hacer/evitar) + tokens de diseño (paleta, fuentes, lienzo).
  • references/motion-principles.md — principios de diseño de movimiento adaptados a snapcn + Remotion.
  • references/anti-patterns.md — errores comunes de generación y sus correcciones.

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.

Skills relacionados