Communitygithub.com

reel-vectorial

Produzir reels verticais de motion graphics feitos apenas com gráficos em código (SVG/HTML no Remotion, sem gerador de imagens), 1080×1920, 30 fps, 35–55 s, do início ao fim.

O que é reel-vectorial?

A skill **reel-vectorial** permite criar reels verticais animados inteiramente com gráficos gerados por código (SVG/HTML no Remotion), substituindo a necessidade de geradores de imagem ou vídeo tradicionais. Ela é ideal para desenvolvedores que desejam produzir conteúdo de motion graphics de alto nível com controle total sobre cada frame, utilizando animações programáticas. A skill suporta a criação de uma conta completa com projeto Remotion, scripts e um vídeo de exemplo, além de gerenciar o fluxo de trabalho desde o roteiro até o render final. Entre os recursos oferecidos estão: roteiro com gancho-pergunta e loop, voz IA (ElevenLabs) com sincronia palavra por palavra (ou voz simulada sem créditos), cenas animadas (cenários com luz, personagem atuante, plano subjetivo, diagramas neon, celular de 'Enviaselo'), legendas palavra a palavra, efeitos sonoros graves, música CC BY, capa e renderização via fila para não sobrecarregar o computador. A skill é acionada sempre que o usuário pedir um reel ou short 'vetorial', 'com gráficos', 'desenhado', 'animado em código', 'sem imagens geradas' ou 'de motion graphics', um vídeo como os do Dato Rarito (YouTube), montar uma conta para reels assim, ou alterar roteiro, voz, cenas, quadros, render ou capa de um, mesmo sem usar a palavra 'skill'. Se o reel usar imagens geradas por IA, a skill não se aplica.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/rafacu-dev/warasoft-reels/tree/HEAD/plugins/reel-vectorial/skills/reel-vectorial

Perguntar na sua IA favorita

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

Documentação

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ém cuentas/. Os scripts a encontram sozinhos a partir da pasta atual (ou a primeira superior com cuentas/); força-se com --proyecto <caminho> ou com a variável REELS_PROYECTO.
  • <cuenta> = o nome da pasta da conta (curiosidades) ou cuentas/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

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

  2. 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, siga references/cuenta-nueva.md (cria a conta, o projeto Remotion e o vídeo de exemplo).

  3. Leia o que é da conta:

    • contexto.md, estilo.md, tono-de-voz.md, ideas.md e referencias/;
    • 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.md com regras próprias, essas mandam.

  4. Veja o que já existe: guiones/, videos/finales/ (e Publicados/ se existir) e src/Root.tsx. Não repita tema, gancho nem giro.

  5. 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 por scripts/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-suave e monedas-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>/.env se 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 quePadrãoExemplo (série "DATO CURIOSO", #3)
Pasta (voz em public/vo/)<prefixo><NN>cafe03
Texto da voz<R>/vo-<pasta>.txtvo-cafe03.txt
Componente (src/videos/)<Prefixo><NN>Cafe03
Composição<Componente>-<tema>Cafe03-cerebro
CapaPortada-<Componente> (o vídeo exporta Portada<Componente>)Portada-Cafe03
Roteiro e vídeoAAAA-MM-DD_slug_tema2026-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

  1. 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.
  2. Passe o revisor:
    python3 "<S>/scripts/revisar-voz.py" "<R>/vo-<pasta>.txt"
    
    Também diz o que será lido no frame 0.
  3. 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>
  • criar coloca voz simulada se ainda não houver voz e escreve src/videos/<Componente>.tsx: planos Pendiente(n) de ≈2 s cortados em palavras, configuração e capa. Assim é possível montar e ver desde o primeiro minuto.
  • voz gera 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 por voz).
  • 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

  1. Decida o mundo do vídeo (um único local coerente) e o que significa cada cor. Anote no cabeçalho do .tsx.
  2. 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 com A(frase, "palavra").
  3. 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

  1. 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.
  2. Audite até sair limpo, e repita sempre que a voz mudar:
    cd "<R>" && python3 scripts/auditar-escenas.py src/videos/<Componente>.tsx --frames
    
  3. 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 caffeinate para não dormir). Lance-o em segundo plano a partir de <R>: termina sozinho ao esvaziar a fila.
  • Ao terminar, verifique em noche.log o master (≈ −14 LUFS, pico ≤ −1,5 dBTP) e veja o vídeo a 1 fps.

7. Entrega

  1. 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.
  2. Quando ele aprovar, passe para videos/finales/ sem sufixo. O antigo vai para a lixeira do sistema, nunca com rm.
  3. Atualize o estado do roteiro, ideas.md e o calendário se houver.
  4. finales/Publicados/ é do usuário: não mexa.

Alterações sobre um vídeo que já existe

PedidoO que fazer
Mudar uma frase da vozEditar 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 vozvoz <cuenta> <pasta>: gera à parte e guarda a anterior como vo/<pasta>-anterior-…
Mudar uma cenaEditar o componente → stills --frames desse plano → render
Mudar a capaEditar 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 kitreferences/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 isso registrar o 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 zoom ou whip.
  • 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.tsx ou scripts/ numa conta: são da skill e montar-cuenta.py --atualizar os sincroniza. O próprio do vídeo vai em src/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.

Habilidades Relacionadas