Reels vetoriais (gráficos em código)
Um reel deste kit é um mini-cartoon que se move sem parar:
- cenas desenhadas em código (SVG/HTML no Remotion): um local com luz e profundidade, um protagonista que atua, plano subjetivo quando o espectador faz algo e diagramas neon para explicar;
- uma voz IA (ElevenLabs) com os tempos de cada palavra;
- legendas grandes palavra por palavra, com a palavra-chave em uma pílula da mesma cor do seu gráfico;
- um gancho-pergunta com algo estranho já na tela no frame 0, cuja resposta chega no final;
- um último plano que retorna ao primeiro (loop);
- grão, vinheta e tremor nos impactos, para não parecer um template.
Exemplo público do formato: Dato Rarito, no YouTube. Exemplo em código: o vídeo Demo01 que cada conta nova traz (src/videos/Demo01.tsx): gancho, câmera lenta, selo riscado, diagrama, personagem, celular da CTA e loop. Quando duvidar de como algo é feito, olhe lá.
Caminhos (o projeto pode ter espaços: coloque os caminhos sempre entre aspas):
<S>= a pasta desta skill. O Claude Code mostra ao carregá-la ("Base directory for this skill"). Instalada como plugin é${CLAUDE_PLUGIN_ROOT}/skills/reel-vectorial; copiada manualmente,~/.claude/skills/reel-vectorial. Se não a vir, procure:find ~/.claude -path "*reel-vectorial/scripts/nuevo-video.py".<P>= o projeto: a pasta onde o usuário trabalha com Claude Code, que contémcuentas/. Os scripts a encontram sozinhos a partir da pasta atual (ou a primeira superior comcuentas/); força-se com--proyecto <caminho>ou com a variávelREELS_PROYECTO.<cuenta>= o nome da pasta da conta (curiosidades) oucuentas/curiosidades;<R>=<P>/cuentas/<cuenta>/produccion/remotion.- Os scripts da skill são lançados a partir de
<P>:python3 "<S>/scripts/nuevo-video.py" … <cuenta> …. Os da conta (scripts/…), a partir de<R>:cd "<R>" && …. - Com Read, Write e Edit, caminhos absolutos.
0. Antes de mais nada
-
Requisitos: Node 20+, Python 3.10+ e ffmpeg. Se for a primeira vez nesta máquina ou algo falhar ao instalar, siga
references/instalacion.md. Pensado para macOS (testado em Apple Silicon); no Linux funciona com as ressalvas que esse arquivo explica. -
Qual conta? Verifique
<P>/cuentas/*/produccion/remotion/src/kit/index.ts. Se não a nomear e houver mais de uma possível, pergunte. Se não houver nenhuma, ou a conta não tiver o kit, sigareferences/cuenta-nueva.md(cria a conta, o projeto Remotion e o vídeo de exemplo). -
Leia o que é da conta:
contexto.md,estilo.md,tono-de-voz.md,ideas.mdereferencias/;produccion/ficha-reel.md: identidade, protagonista, mundo, séries, voz, música, CTA e cuidado legal;src/brand.tsx: paleta e cores com significado.
Se algo da ficha estiver "POR DEFINIR" e for necessário, pergunte antes de inventar. Se o projeto tiver um
CLAUDE.mdcom regras próprias, essas mandam. -
Veja o que já existe:
guiones/,videos/finales/(ePublicados/se existir) esrc/Root.tsx. Não repita tema, gancho nem giro. -
Verifique a premissa com fontes primárias (estudos, órgãos oficiais, leis publicadas). Os dados curiosos virais costumam ser meio falsos, e neste formato a credibilidade é o que está em jogo: os comentários de "isso nunca aconteceu" derrubam uma conta. Se não se sustentar, reformule com o dado verificável mais próximo e explique acima do roteiro.
O que não se negocia (e por quê)
- Cenas cheias que se movem, nunca "coisas feias estáticas". As primeiras tentativas deste formato fracassaram justamente por isso: ícones pequenos sobre o mesmo fundo, e depois cenas corretas mas planas frente a um acabamento e uma voz de nível superior. Cada plano é um local com luz e profundidade, com um sujeito que ocupa ≥ 40 % do quadro e algo que muda na palavra-chave. Antes de dar algo por bom, veja os quadros em tamanho completo:
references/escenas.md. - Voz IA de qualidade no que se entrega; a simulada só para montar. A voz simulada (silêncio com o ritmo medido) serve para construir e revisar cenas sem gastar créditos; a fila recusa renderizar com ela, exceto como pré-visualização muda. Não substitua a voz real por um TTS local medíocre: uma voz pobre derruba um vídeo mesmo que as cenas sejam boas.
- Uma tarefa pesada de cada vez. Um render, um modelo de voz local ou Whisper consomem a memória; dois ao mesmo tempo podem travar ou reiniciar o computador (aconteceu com a equipe onde nasceu este kit). Quadros:
nuevo-video.py stills, que vai porscripts/turno.sh. Render e capa: pela fila (scripts/noche.py). O cadeado (<P>/recursos/turno-mac.lock) é comum a todas as contas do projeto. Nunca lance um render manualmente em segundo plano. - Som sem ar nem brilho. Apenas
impacto,impacto-grave,pop-grave,moneda-suaveemonedas-suave, ligados a uma palavra. Nada de whoosh, risers nem brilhos: sob a voz ouve-se como vento colado ao microfone ou como um chiado metálico. O motor rejeita os proibidos. - Planos de no máximo 2,5 s (75 frames; o render falha se um passar) e uma mudança visual a cada 1–2 s.
- Frame 0 cheio: a estranheza do gancho e o primeiro bloco de legendas, sem fade. Loop: o último plano volta ao estado e à câmera do primeiro.
- Cada conta, sua identidade. Paleta, protagonista, logo e assinatura saem do seu
brand.tsx; não se misturam estilos nem protagonistas entre contas. - Chaves: vivem em
<P>/.env(ou em<R>/.envse uma conta usar outras). Não se leem, não se imprimem e não se pedem no chat: o usuário cola-as ele mesmo no arquivo. Se uma conta da ElevenLabs marcar "atividade incomum", pare e avise. - Licenças, em cada entrega: a voz e os efeitos de um plano gratuito da ElevenLabs não permitem uso comercial; a música CC BY exige atribuição no caption; o reel é etiquetado como "conteúdo de IA".
references/audio.md.
Nomes de um vídeo
Com a série de ficha-reel.md e o número seguinte ao último dessa série em src/Root.tsx:
| O que | Padrão | Exemplo (série "DATO CURIOSO", #3) |
|---|---|---|
Pasta (voz em public/vo/) | <prefixo><NN> | cafe03 |
| Texto da voz | <R>/vo-<pasta>.txt | vo-cafe03.txt |
Componente (src/videos/) | <Prefixo><NN> | Cafe03 |
| Composição | <Componente>-<tema> | Cafe03-cerebro |
| Capa | Portada-<Componente> (o vídeo exporta Portada<Componente>) | Portada-Cafe03 |
| Roteiro e vídeo | AAAA-MM-DD_slug_tema | 2026-11-10_dato-curioso_cafe-cerebro |
A data é a de publicação prevista: a do calendário se existir e, se não, a seguinte livre.
Fluxo de um vídeo
Siga as fases com um plano de tarefas. Paradas com o usuário: apenas duas. O roteiro, antes de gastar créditos de voz, e o rascunho, antes de passá-lo a final. O resto (cenas, quadros, auditorias) você revisa.
1. Roteiro → references/guion.md
- Escreva:
guiones/<nome>.md: tabela voz → cenas, com o que se desenha e o que acontece em cada palavra-chave, o mundo do vídeo, as cores com significado, as fontes e o caption;<R>/vo-<pasta>.txt: uma frase por linha.
- Passe o revisor:
Também diz o que será lido no frame 0.python3 "<S>/scripts/revisar-voz.py" "<R>/vo-<pasta>.txt" - Mostre o roteiro e aguarde a aprovação (a voz gasta ≈1 crédito da ElevenLabs por caractere, ≈700 por vídeo).
2. Andaime e voz → references/produccion.md
python3 "<S>/scripts/nuevo-video.py" criar <cuenta> <pasta> <Componente> --serie "SERIE · #N"
python3 "<S>/scripts/nuevo-video.py" voz <cuenta> <pasta>
criarcoloca voz simulada se ainda não houver voz e escrevesrc/videos/<Componente>.tsx: planosPendiente(n)de ≈2 s cortados em palavras, configuração e capa. Assim é possível montar e ver desde o primeiro minuto.vozgera a voz real (chamada à API, não carrega o computador), verifica se saiu completa e compacta as pausas. Só então substitui a simulada.- Depois, Whisper com
comprobar-voz.py, pelo turno (o comando exato é impresso porvoz). - Sem chave ou sem saldo: continue com a voz simulada até o render, avise o usuário e não entregue.
3. Cenas → references/escenas.md + references/kit.md
- Decida o mundo do vídeo (um único local coerente) e o que significa cada cor. Anote no cabeçalho do
.tsx. - Substitua cada
Pendiente(n)por cenas reais com o kit (import { … } from "../kit"): cenário, sujeito, luz, profundidade e a ação ligada à sua palavra comA(frase, "palavra"). - O que segue de um plano a outro é calculado com o frame absoluto (
useF(t0)). O último plano repete o primeiro.
4. Montagem → references/motor.md
- Planos cortados à palavra, câmera com
cam(), transições, legendas em cima, no meio ou em baixo conforme onde esteja o sujeito, chaves, efeitos e música. - Audite até sair limpo, e repita sempre que a voz mudar:
cd "<R>" && python3 scripts/auditar-escenas.py src/videos/<Componente>.tsx --frames - Registre a composição e a capa (vale com voz simulada):
python3 "<S>/scripts/nuevo-video.py" registrar <cuenta> <Componente> <Componente>-<tema>
5. Revisão com quadros
python3 "<S>/scripts/nuevo-video.py" stills <cuenta> <Composição> --saida <pasta temporária>/<Composição>
- Extrai o frame 0, a metade de cada plano e o último, mais a folha de contato
folha-<Composição>.jpg. Na primeira vez o Remotion pode baixar o navegador. - Olhe a folha com Read e abra em tamanho completo o frame 0, o giro, um gráfico e o último. Use a lista de
references/escenas.md("Revisão"). - Corrija e repita até que cada plano aguente uma captura de tela. Extraia também a capa (
stills <cuenta> Portada-<Componente> --frames 0). - Em transições, revelações e mudanças de rosto, extraia uma tira quadro a quadro:
stills <cuenta> <Composição> --tira <frame>:10. Procure saltos e quadros vazios.
6. Render
python3 "<S>/scripts/nuevo-video.py" fila <cuenta> render <Composição> <nome>
- Recusa com voz simulada ou se a auditoria não sair limpa.
- Se o orquestrador estiver parado, o script diz como lançá-lo (no macOS com
caffeinatepara não dormir). Lance-o em segundo plano a partir de<R>: termina sozinho ao esvaziar a fila. - Ao terminar, verifique em
noche.logo master (≈ −14 LUFS, pico ≤ −1,5 dBTP) e veja o vídeo a 1 fps.
7. Entrega
- Diga ao usuário onde está a cópia leve (
videos/borradores/movil/) e a capa; se o ambiente permitir anexar arquivos, anexe-as. Lembre-o das licenças. - Quando ele aprovar, passe para
videos/finales/sem sufixo. O antigo vai para a lixeira do sistema, nunca comrm. - Atualize o estado do roteiro,
ideas.mde o calendário se houver. finales/Publicados/é do usuário: não mexa.
Alterações sobre um vídeo que já existe
| Pedido | O que fazer |
|---|---|
| Mudar uma frase da voz | Editar vo-<pasta>.txt → voz … --solo N → Whisper → auditoria (os cortes movem-se) → stills → render (a fila repete a linha com sufixo r2; o render anterior vai antes para a lixeira) |
| Refazer toda a voz | voz <cuenta> <pasta>: gera à parte e guarda a anterior como vo/<pasta>-anterior-… |
| Mudar uma cena | Editar o componente → stills --frames desse plano → render |
| Mudar a capa | Editar Portada<Componente> no vídeo (título, momento t0, align) → stills Portada-<Componente> --frames 0 → fila <cuenta> capa <Componente> <nome> |
| Levar o formato para outra conta, ou atualizar o kit | references/cuenta-nueva.md |
Erros típicos
- Root.tsx importa um vídeo sem
tiempos.json: falham todos os renders e capas da fila, não só aquele. Por issoregistraro impede. - Uma palavra de
A(…)ou de um corte não existe na voz real (a simulada usava o texto). O render falha na fila: a auditoria detecta. - Cena que ignora
t0: o objeto, o traço ou a luz saltam ao cortar, e o loop não encaixa. - Câmera com zoom < 1 ou sem
cam(): bordas pretas. - Clarão branco em direção a uma cena escura: parece um quadro vazio. Use
zoomouwhip. - Texto pequeno ou dentro da cena repetindo a legenda. Um dado, um local: o número vai na legenda ou num gráfico, não nos dois.
- Título de capa com linhas de mais de 18 caracteres: quebra mal a 100 px (a auditoria avisa).
- Editar
src/kit/,src/engine/Reel.tsxouscripts/numa conta: são da skill emontar-cuenta.py --atualizaros sincroniza. O próprio do vídeo vai emsrc/videos/; uma peça que sirva para todos é adicionada à skill (assets/plantilla-proyecto/src/kit/). - Faltam efeitos ou música: o motor os omite (e avisa no console do navegador); o vídeo fica igual mas sem esse som.
references/audio.md.