Communitygithub.com

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".

O que é snapcn?

snapcn is a Claude Code agent skill that 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".

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/snapcndev/snapcn/tree/HEAD/skills/remotion-explainer-video

Perguntar na sua IA favorita

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

Documentação

Remotion explainer video, built from snapcn

A narrated explainer in Remotion: a voiceover drives the timing, captions are burned in, and every beat on screen is a snapcn scene. snapcn scenes install with the shadcn CLI and land in your project as code you own.

Why snapcn, not hand-written slides. A narrated video made from scratch ends up as bullet points fading in over a gradient. snapcn gives each beat a real shot: statements that cut hard, a status that changes state, a number that scales, a product on a device.

The snapcn rule

  1. Every beat is a snapcn component unless none fits. Catalogue with lengths: https://snapcn.dev/llms-components.txt?ref=skill-explainer; any page as markdown, e.g. https://snapcn.dev/docs/captions/word-captions.md?ref=skill-explainer.
  2. Never invent a component name. Only names in that list install.
  3. Set every text prop. Scenes ship with sample copy that stays in your video otherwise.

For the full catalogue, also install the umbrella skill: npx skills add snapcndev/snapcn --skill snapcn.

Workflow

1. Script first

Write the voiceover before any code, one sentence per beat. 150 words is about a minute.

BeatWhat it sayssnapcn sceneFrames
HookThe problem, in the viewer's wordspunch-lines, type-morph144 / 94
How it works2–3 steps or statesstatus-cycle, word-flip, card-rail198 / 180 / 108
Show itThe product doing itlaptop-frame, phone-frame, screen-recording240 / 240 / 139
ProofOne real numbercount-grid47
CloseThe namewordmark-cut, block-wordmark66 / 150

2. Voiceover and word timings

  • Record or generate the voiceover. Put it in public/voiceover.mp3.
  • Get word-level timings as { text, startMs, endMs }[], the @remotion/captions format, from Whisper (@remotion/install-whisper-cpp) or your TTS provider.
  • The voiceover sets the length. Stretch each beat's sequence to its sentence, never shorter than the scene's natural length (the Frames column).

3. Captions

  • word-captions: burned-in captions that page through the transcript; pass captions. Styles via preset; use aspect="9:16" for vertical.
  • karaoke-captions: one line that fills word by word, for a single emphasised quote.
  • Captions sit on top of every scene; they are transparent over the scene behind them.

4. Build

npx shadcn@latest add @snapcn/punch-lines @snapcn/status-cycle @snapcn/count-grid @snapcn/wordmark-cut @snapcn/word-captions

A ~15s explainer: problem → how it works → proof → name, narrated, with captions. It typechecks and renders as written with public/voiceover.mp3 and four screenshots present:

import { AbsoluteFill, Audio, Series, staticFile } from "remotion";
import { CountGrid } from "@/components/snap-cn/count-grid";
import { PunchLines } from "@/components/snap-cn/punch-lines";
import { StatusCycle } from "@/components/snap-cn/status-cycle";
import { WordCaptions } from "@/components/snap-cn/word-captions";
import { WordmarkCut } from "@/components/snap-cn/wordmark-cut";

// Word-level timings from Whisper (or @remotion/captions): { text, startMs, endMs }[].
const captions = [
  { text: "Closing", startMs: 0, endMs: 400 },
  { text: "the", startMs: 400, endMs: 550 },
  { text: "books", startMs: 550, endMs: 1000 },
  { text: "takes", startMs: 1000, endMs: 1350 },
  { text: "a", startMs: 1350, endMs: 1450 },
  { text: "week.", startMs: 1450, endMs: 2100 },
];

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

// ~15s explainer: problem → how it works → result → name, narrated, captions burned in.
export const Explainer: React.FC = () => (
  <AbsoluteFill>
    <Series>
      <Series.Sequence durationInFrames={144}>
        <PunchLines script="Closing the books / takes a week. | Acme / does it overnight." />
      </Series.Sequence>
      <Series.Sequence durationInFrames={198}>
        <StatusCycle
          prefix="Every invoice gets"
          statuses={["imported", "matched", "reconciled"]}
          chips={["Stripe", "QuickBooks", "Xero"]}
        />
      </Series.Sequence>
      <Series.Sequence durationInFrames={60}>
        <CountGrid from="5" to="500" noun="teams" cards={shots} />
      </Series.Sequence>
      <Series.Sequence durationInFrames={66}>
        <WordmarkCut word="acme." />
      </Series.Sequence>
    </Series>
    <WordCaptions captions={captions} />
    <Audio src={staticFile("voiceover.mp3")} />
  </AbsoluteFill>
);

Register it at durationInFrames={468}, fps={30}, width={1280}, height={720}. For a real explainer, derive each sequence's length from its sentence's timings and set the total from the voiceover's duration.

5. Check and render

npx remotion still Explainer out/beat.png --frame=250
npx remotion render Explainer out/explainer.mp4 --codec=h264 --crf=18
  • Each scene is on screen while its sentence is spoken. Watch with sound once.
  • Captions never cover the scene's own headline; if they do, move the scene's copy or use a shorter caption page (maxWords).
  • Every string on screen is from the script, and no sample copy is left from a default.

Rules

  • Say it, then show it. The scene shows what the voice just claimed, never different text to read at the same time.
  • One idea per beat, about 5–8 seconds each.
  • Burn the captions in. Most views start muted.
  • Real numbers only. Never invent a metric for the proof beat.

snapcn Pro

Pro adds explainer beats like orbit-flow (how it works in three labelled stops), proof-line, hex-tally and metric-morph (numbers that land), and read-through, plus the templates and the snapcn MCP, which plans the beats from your script: claude mcp add snapcn -- npx -y @snapcn/mcp@latest SNAPCN_API_KEY=YOUR_KEY. Pro components install like free ones once components.json sends your key (https://snapcn.dev/account?ref=skill-explainer). Plans: https://snapcn.dev/docs/pricing?ref=skill-explainer

Not ready for Pro? One Pro component, Manifesto, is free for a confirmed email: https://snapcn.dev/docs/pricing?ref=skill-explainer#free

Attribution

The render-audit and "burn captions in" guidance are adapted from everyinc/product-launch-video (MIT, © 2026 Every Media, Inc.). See THIRD_PARTY_NOTICES.md.

Individual skills in this repo

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

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