MÓDULO 5.3

🎬 Remotion: Vídeo de Lançamento em Uma Noite

Você descreve o roteiro, o agente programa o vídeo em React, captura prints reais do app, renderiza 1080p e 9:16 e entrega tudo pronto pra postar no YouTube, Twitter, LinkedIn e Reels.

6
Tópicos
60
Minutos
Pro
Nível
Vídeo
Tipo
1

📦 O Que é Remotion

Remotion é uma biblioteca que renderiza vídeo a partir de componentes React. Você programa o vídeo do mesmo jeito que programa um site: props, state, animações, frames. O resultado vira .mp4.

🎨

After Effects (jeito antigo)

Abrir, clicar 200 vezes, rendering longo, sem versionamento. Paga R$ 100/mês e exige curva.

🎬

CapCut / iMovie

Bom pra cortar, ruim pra animação. Sem programabilidade, sem reuso, sem agente que edita.

⚛️

Remotion (jeito agentic)

Código React, agente edita, git versiona, renderiza 1080p e 9:16 do mesmo projeto. Open source.

🎯 Por que isso muda jogo

Quando vídeo vira código, ele vira tarefa que agente executa. Você descreve o roteiro, o agente monta as composições, e em 1 hora você tem 4 cortes diferentes do mesmo lançamento. Antes era trabalho de 1 semana de editor.

2

🛒 A Skill Remotion do Codex

Codex já vem com a skill Remotion. Em 5 minutos você tem o primeiro .mp4 saindo sem precisar saber a API toda na primeira vez.

⚡ Setup em 5 comandos

# 1. Scaffold do projeto
npx create-video@latest inboxai-launch --template=hello-world

cd inboxai-launch

# 2. Instala deps
npm install

# 3. Roda preview ao vivo (Remotion Studio)
npm run dev
# abre http://localhost:3000

# 4. Pede pro agente (com skill remotion ativa)
codex "use a skill remotion: cria composição de 30s
para o lançamento do InboxAI com 5 cenas:
1) Hook (0-3s)
2) Problema (3-9s)
3) Demo do app (9-20s)
4) Depoimento fake (20-26s)
5) CTA (26-30s)
Use os prints em ./public/screens/"

# 5. Renderiza
npx remotion render src/Root.tsx LaunchVideo out/launch.mp4

📂 Estrutura de pastas que a skill cria

inboxai-launch/
├── src/
│   ├── Root.tsx          ← registra todas as composições
│   ├── LaunchVideo.tsx   ← composição principal (1920x1080)
│   ├── LaunchVertical.tsx← versão 1080x1920
│   ├── scenes/
│   │   ├── Hook.tsx
│   │   ├── Problem.tsx
│   │   ├── Demo.tsx
│   │   ├── Testimonial.tsx
│   │   └── CTA.tsx
│   └── components/Logo.tsx, Caption.tsx, ...
├── public/
│   └── screens/          ← prints do app vão aqui
├── out/                  ← .mp4 renderizados
└── remotion.config.ts
3

🎞️ Composições, Sequence, Animações

Três conceitos centrais bastam pra entender 90% dos vídeos Remotion: Composition (cena raiz), Sequence (intervalo) e useCurrentFrame (animação por frame).

⚛️ Composição com 3 sequences

// src/LaunchVideo.tsx
import { Composition, Sequence, AbsoluteFill,
         useCurrentFrame, interpolate, spring,
         useVideoConfig } from 'remotion';

export const LaunchVideo = () => {
  return (
    <AbsoluteFill className="bg-zinc-900">
      <Sequence from={0} durationInFrames={90}>
        <Hook />
      </Sequence>
      <Sequence from={90} durationInFrames={180}>
        <Problem />
      </Sequence>
      <Sequence from={270} durationInFrames={330}>
        <Demo />
      </Sequence>
    </AbsoluteFill>
  );
};

// Cena com animação por frame
const Hook = () => {
  const frame = useCurrentFrame();
  const { fps } = useVideoConfig();
  // título sobe 40px e desaparece de baixo
  const y = interpolate(frame, [0, fps * 1], [40, 0]);
  const opacity = spring({ frame, fps, config: { damping: 12 } });

  return (
    <AbsoluteFill className="flex items-center justify-center">
      <h1 style={{ transform: `translateY(${y}px)`, opacity }}
          className="text-7xl font-bold text-white">
        Sua inbox virou caos.
      </h1>
    </AbsoluteFill>
  );
};

🧠 Mental model dos 3 conceitos

Composition: a "raiz" do vídeo. Define duração total, fps, dimensões. É o equivalente a um App.tsx pra vídeo.
Sequence: agrupa o que aparece num intervalo (`from` + `durationInFrames`). Pensa como timeline track.
useCurrentFrame: retorna o frame atual sendo renderizado. Combine com `interpolate` ou `spring` pra animar qualquer prop.
4

📸 Pegando Print do App pra Montar o Vídeo

Vídeo com mock genérico parece pitch de aluno. Vídeo com a UI real do produto parece lançamento sério. Workflow: Browser Use captura prints do InboxAI rodando local, Remotion importa e anima entre eles.

🔄 Pipeline completo

App rodando localhost:3000 Browser Use tira screenshots public/screens/ PNG salvos .mp4 render Remotion importa como <Img/>

📜 Script do agente (browser-use → public/)

# Tarefa pro agente Browser Use
1. Abrir http://localhost:3000 (InboxAI dev)
2. Login com user de demo (creds em .env.demo)
3. Capturar screenshot 1920x1080 das telas:
   - /dashboard          → public/screens/01-dashboard.png
   - /inbox              → public/screens/02-inbox.png
   - /inbox/triage       → public/screens/03-triage.png
   - /settings           → public/screens/04-settings.png
   - /reports            → public/screens/05-reports.png
4. Versão mobile (390x844) das mesmas → public/screens/mobile/

# Depois, no Remotion:
import dashboard from '/public/screens/01-dashboard.png';
<Img src={dashboard} style={{ transform: zoomEffect }} />
5

🎥 Rendering: 1080p e 9:16

Mesmo projeto, dois formatos. YouTube/Twitter pedem 1920x1080 horizontal; Reels/TikTok pedem 1080x1920 vertical. Remotion gera os dois do mesmo código se você compor responsivo.

🎬 Registrando 2 composições no Root

// src/Root.tsx
import { Composition } from 'remotion';
import { LaunchVideo } from './LaunchVideo';
import { LaunchVertical } from './LaunchVertical';

export const RemotionRoot = () => (
  <>
    {/* 1080p horizontal — YouTube, Twitter, LinkedIn */}
    <Composition
      id="LaunchHorizontal"
      component={LaunchVideo}
      durationInFrames={900}     // 30s a 30fps
      fps={30}
      width={1920}
      height={1080}
    />

    {/* 9:16 vertical — Reels, TikTok, Shorts */}
    <Composition
      id="LaunchVertical"
      component={LaunchVertical}
      durationInFrames={450}     // 15s — formatos curtos
      fps={30}
      width={1080}
      height={1920}
    />
  </>
);

🚀 Comandos de render

# YouTube/Twitter — 30s, alta qualidade
npx remotion render src/Root.tsx LaunchHorizontal \
  out/launch-yt.mp4 \
  --crf=18 --codec=h264

# Reels/TikTok — 15s, vertical, otimizado mobile
npx remotion render src/Root.tsx LaunchVertical \
  out/launch-reels.mp4 \
  --crf=20 --codec=h264

# Bonus: GIF curto pro Twitter (3s)
npx remotion render src/Root.tsx LaunchHorizontal \
  out/launch-teaser.gif \
  --frames=0-90
6

📤 Publicando: Otimização por Plataforma

Vídeo bom mal publicado não roda. Cada plataforma tem regras tácitas que multiplicam alcance sem custo extra de produção.

Canal Formato Duração ideal Hack
YouTube1920x108030-60s (Shorts: 15s)Thumbnail custom + CTA "saiba mais"
Twitter/X1920x1080 ou 1:115-30sHook nos 3s, sem som default
LinkedIn1920x108030-90sLegenda burned-in (sem som no feed)
Reels/TikTok1080x19209-15sTrending audio, hook visual em 1s
Shorts1080x192015-60sLoop perceptível ajuda no replay

🖼️ Thumbnail com Image Gen — prompt template

# Pra agente: image-gen
"Thumbnail YouTube 1280x720 do app InboxAI.
Composição: lado esquerdo print da inbox bagunçada
em red overlay, lado direito mesmo print organizado
em green overlay. Centro: seta amarela cruzando
+ texto 'AI faz' em fonte sans-serif bold branca.
Estilo: clean, alto contraste, evitar cara do dev.
Não usar texto pequeno demais."

# Salva como: out/thumb-yt.png

📌 Hack final: legenda nativa

85% das pessoas assistem sem som. Burn legenda no vídeo direto da composição Remotion (componente Caption animado por frame). Não dependa de auto-caption das plataformas — elas erram seu nome de produto.

O que Aprendemos

Remotion = React pra vídeo — programa em vez de clicar 200 vezes.
A skill remotion do Codex faz scaffold — 5 comandos do zero ao primeiro .mp4.
Composition + Sequence + useCurrentFrame — o trio que cobre 90% dos vídeos.
Browser Use captura UI real — vídeo com app real vende, mock genérico não.
Mesmo código → 1080p e 9:16 — uma composição por aspect ratio.
Otimização por plataforma multiplica alcance — duração, hook, thumb, legenda nativa.

Próximo Módulo:

5.4 — Agente de Marketing: landing page de alta conversão, copy nos frameworks certos e calendário de 30 dias gerado em uma noite.