Communitygithub.com

stanglivideo

Crie vídeos de motion design em código com Remotion, cortados ao som com efeitos sonoros que batem no quadro. Use quando alguém pedir um promo, filme de lançamento, vídeo de produto, explicador, corte para redes sociais, loop de landing page ou qualquer 'vídeo de motion design', para um produto ou não. Ele verifica a máquina, estuda 2 a 5 vídeos que o usuário gosta (quadros, espectrograma, volume), para para aprovação do usuário sobre visual, claims, música e storyboard, constrói a partir do design do próprio produto, pontua o filme offline e não o considera pronto até que um gate de sincronia, loudness e imagem passe. Modos opcionais: reestudar as galerias de referência para novas entradas e gerar fotos ou loops de footage com Gemini quando o código não conseguir desenhá-los.

O que é stanglivideo?

Este skill, `stanglivideo`, capacita agentes de IA a criar vídeos de motion design sofisticados inteiramente em código, usando a biblioteca Remotion. O processo começa com uma verificação completa do ambiente (Node, Python, ffmpeg) e o estudo de 2 a 5 vídeos de referência fornecidos pelo usuário para aprender o estilo desejado. O skill guia o agente através de um fluxo de trabalho estruturado com múltiplos pontos de aprovação: desde a descoberta do produto e definição do conceito até a criação de storyboards, renderização, e um rigoroso 'gate' de qualidade que verifica sincronia, loudness e conformidade visual. Ele extrai regras de design do produto (cores, tipografia, componentes) e assegura que cada quadro seja uma função pura do tempo, sem estados intermediários. Modos opcionais permitem usar a API Gemini para gerar elementos visuais que o código não pode criar, como texturas foto-realistas ou loops de vídeo. O skill é especialmente útil para agentes que precisam automatizar a produção de vídeos de produto, anúncios ou conteúdo para redes sociais, garantindo um resultado final que soa e parece profissional, alinhado à identidade da marca.

Funciona com~Claude Code~Codex CLI✓Cursor✓Gemini CLI
npx skills add https://github.com/ilijachrchev/skills/tree/HEAD/skills/stanglivideo

Perguntar na sua IA favorita

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

Documentação

O que stanglivideo faz?

Um filme que parece ter sido feito pelo produto, move-se na batida e soa correto: cada som no seu quadro, cada palavra na tela com tempo suficiente para ser lida, nada fora do quadro. Construído em Remotion a partir de código, portanto permanece editável.

Os caminhos abaixo são relativos à pasta deste skill, a menos que comecem com um caminho de projeto de filme. $PY é o python que o doctor imprime (o .venv do skill).

Toda execução começa aqui

  1. Doctor. Primeira execução (sem .venv ou sem taste.md nesta pasta): node scripts/doctor.mjs --setup. Ele cria .venv, instala requirements.txt e cria taste.md a partir de taste.example.md. Execuções posteriores: node scripts/doctor.mjs. Ele verifica Node 18+, Python 3.10+ com numpy e scipy, um ffmpeg completo e o skill complementar. Se o próprio Node estiver faltando, o doctor não pode executar: diga isso e forneça a linha de instalação abaixo.

  2. Diga claramente ao usuário o que está faltando. Para cada FALHA, uma linha curta: o que está faltando, por que o skill precisa disso e o comando exato para corrigir no sistema dele. Então pare até que ele diga que está pronto e execute o doctor novamente.

    FaltandoPor quêWindowsMac
    Node 18+constrói e renderiza o filmewinget install --id OpenJS.NodeJS.LTS -ebrew install node
    Python 3.10 a 3.13pontua o som e executa as verificaçõeswinget install --id Python.Python.3.12 -ebrew install [email protected]
    ffmpeg (build completo)análise, codificação, verificações de loudnesswinget install --id Gyan.FFmpeg -ebrew install ffmpeg
    skill complementarregras da API Remotionnpx skills add remotion-dev/skillssame

    Após instalar Node, Python ou ffmpeg, o usuário deve abrir um novo terminal para que estejam no PATH e então executar node scripts/doctor.mjs --setup novamente. GEMINI_API_KEY é opcional: mencione-a apenas quando uma imagem ou loop gerado for realmente desejado.

  3. Skill complementar (obrigatório). remotion-best-practices, os skills oficiais da Remotion. Não está incluído aqui. Use-o para perguntas sobre a API Remotion (mídia, fontes, legendas, opções de renderização).

  4. Gosto. Leia references/base-rules.md e taste.md (crie-o a partir de taste.example.md se ainda estiver faltando). Estas são as regras permanentes do usuário; taste.md vence em caso de conflito.

Inegociáveis

  • O design deles vence. Cores, tipo, componentes, logotipo, voz e claims vêm do produto. Nunca carregue o gosto de outro produto, incluindo qualquer coisa neste skill que o design deles contradiga.
  • Cada quadro é uma função pura do tempo. Sem transições CSS ou keyframes, sem timers, sem Date.now(), sem Math.random (rand com semente), sem estado transportado entre quadros.
  • Uma única fonte de tempo. O src/films/<film>/cues.json de cada filme contém todos os tempos das cues. O TSX do filme o importa e a pontuação o lê (sound/cues.py). Nenhum deles jamais contém um tempo literal.
  • Meça, nunca adivinhe. Batidas a partir do áudio, posições a partir do overlay de depuração, cores a partir de pixels decodificados.
  • Claims honestos. Mostre apenas o que o produto faz. A lista de proibidos é aprovada pelo usuário antes de escrever o copy.
  • Pergunte primeiro antes de commitar, fazer push ou publicar qualquer coisa, e antes de toda chamada de API paga.
  • Sem travessões em nenhum copy, arquivo ou mensagem.

Fluxo de trabalho e gates de aprovação

Cada PARE é um gate rígido: pergunte (AskUserQuestion), espere e registre a resposta no BRAND.md do projeto.

  1. Intake (obrigatório). Peça de 2 a 5 vídeos que o usuário gosta, uma linha cada sobre o que gostam, incluindo o som. Execute node scripts/intake/intake.mjs <project>/intake <videos...> e leia cada planilha. Veja references/intake.md.
  2. Descoberta. Aprenda o produto: arquivos de regras, tokens (claro e escuro), componentes, logotipo, landing page, telas reais e copy, claims. Veja references/discovery.md.
  3. Entrevista. O briefing e os ingredientes. Veja references/interview.md. Então:
    • PARE: claro ou escuro. Por filme quando há vários; um conjunto mistura ambos se o produto tiver ambos os temas.
    • PARE: claims proibidos. Mostre o que os filmes vão alegar e a lista do que nunca devem dizer (do código, do site e do usuário). Aguarde a aprovação de ambas as listas.
  4. Kit de marca. Preencha templates/BRAND.md no projeto. Cada regra cita sua fonte.
  5. Música. Pesquise e meça candidatos. PARE: escolha da música. Veja references/music.md.
  6. História. Preencha templates/film-prompt.md; escreva o plano de batidas como cues.json. Veja references/story.md e references/ingredients.md.
  7. Projeto. node scripts/new-project.mjs <dir>, npm install. Um kit em src/kit/; uma pasta por filme. Veja references/engine.md.
  8. Storyboard. Construa as cenas, renderize 5 a 8 stills por filme (no projeto: node scripts/stills.mjs), organize em mosaico. PARE: aprovação do storyboard antes de qualquer renderização completa. Veja references/review.md.
  9. Renderização. No projeto: node scripts/render.mjs <Composition> out/<film>.mp4 (segurança embutida). Folha de contato, visual, correção.
  10. Pontuação. No projeto: sound/scores/<film>.py a partir de cues.json; $PY sound/render.py <film>. Veja references/sound-rules.md.
  11. Gate (obrigatório). No projeto: $PY scripts/gate.py <film>. Nada é considerado pronto até passar. Veja references/render.md.
  12. Entrega. Caminhos, durações, loudness, pico, resultado do gate, o que mudou. Mantenha todas as versões.

O gate de sincronia

  • Whooshes são colocados pelo seu pico no quadro mais rápido do movimento (align="peak"; kit/speed.ts encontra o quadro mais rápido de um movimento de câmera; uma entrada E.out é mais rápida no início, uma saída E.exit mais rápida no final).
  • Pops pousam no quadro em que o elemento pousa. Chings no quadro em que o número final aparece.
  • Risers terminam no hit (align="end").
  • Cada som carrega um rótulo nomeando seu evento na tela.
  • Após cada mix: sound/check.py (nenhum som antes de sua mudança de imagem), scripts/final-check.py (-14 LUFS dentro de 1 LU, pico verdadeiro -2 dBFS ou inferior, faixa de loudness 4 LU ou mais, sem silêncio, imagem idêntica à renderização silenciosa, durações iguais) e scripts/verify.py, todos executados por scripts/gate.py. Uma bandeira é corrigida movendo o som (ou a cue), nunca isentando-o sem olhar sua planilha.

Memória de gosto

  • references/base-rules.md acompanha o skill: correções de filmes reais, como regras gerais.
  • taste.md (ignorado pelo git, de taste.example.md) é o desta máquina. Toda nova correção que o usuário der é escrita lá como uma regra geral antes de você corrigir o filme, formulada de modo que teria evitado o problema em qualquer filme. Leia no início de toda execução.
  • Uma regra que vale para vários filmes pode ser promovida para base-rules.md por meio de um pull request para este skill, nunca por uma edição silenciosa.

Segurança (embutida nos scripts)

templates/project/scripts/safety.mjs, usado por todo bundle e renderização: espaço livre em disco é verificado primeiro (mínimo de 10 GB), no máximo duas renderizações rodam ao mesmo tempo, bundles temporários são deletados após cada job e os antigos antes. Renderize com concorrência 1 em uma máquina com pouca memória. Pare apenas processos que você iniciou.

Modos opcionais

  • Mídia gerada. Apenas para o que o código não pode desenhar: fotos reais, texturas fotográficas, recortes e fundos filmados (seda, líquido, luz) quando o usuário quiser um visual de filme real. scripts/gemini/image.mjs aceita imagens de referência para que as saídas combinem com um visual escolhido, além de proporção, tamanho, redimensionamento e chroma key; scripts/gemini/video.mjs cria clipes Veo a partir de um primeiro frame com paleta combinada (ou loops nativos). Chave de GEMINI_API_KEY apenas no ambiente; toda chamada imprime seu custo e só é executada após o sim do usuário. Veja references/gemini.md.
  • Ferramentas de mídia (grátis, qualquer clipe). scripts/media/loop.py transforma um clipe em um loop de fundo contínuo (busca de emenda, dissolução exata, interpolação para o fps do filme, loop + poster + sequência de stills + folha de borda); LoopBackground no kit coloca-o sob a camada de movimento a partir do cues.json do filme. scripts/media/clip.py sonda, recodifica para o formato do projeto, corta bordas e extrai stills ou uma folha. scripts/media/imgpost.py aplica chroma key e redimensiona imagens.
  • Atualização. Quando o usuário pedir: reestude prompt-motion.com, skillry.dev e o repositório awesome-opus5-5-videos em busca de novas entradas e proponha atualizações de referência por PR. Veja references/refresh.md.

Piso de qualidade (sempre)

  • Apenas as próprias superfícies, cores, bordas e sombras do produto. Nenhum painel ou tom inventado.
  • Legível no tamanho de entrega. Menos palavras vencem palavras menores. Linhas que as pessoas precisam ler revelam a cerca de 0,2 s por palavra e seguram por 2 s ou mais.
  • Cada cartão e a marca de encerramento totalmente dentro do quadro durante todo o quadro de cada movimento.
  • Segure cada cena por 5 a 6 s com um push lento; quando parecer cheio, corte uma tela em vez de acelerar.
  • Texto nunca é coberto por um cursor ou chip, nunca cruza outro texto, nunca se recentraliza enquanto constrói.
  • Algo acontece em cada batida; os limites da cena caem nos compassos; o último quadro de um loop é igual ao primeiro.
  • Em um conjunto, nenhum dois filmes compartilha uma estrutura; qualquer coisa mantida lado a lado é centralizada exatamente.
  • Nenhum efeito que a linguagem do produto não use: brilhos, partículas, anéis de clique, easing saltitante, shaders.

Conhecimento

Armadilhas que custam tempo real

  • Stills do Remotion não encaminham logs do console: imprima medidas no quadro (kit/debug.tsx).
  • npx remotion still reempacota a cada chamada: use scripts/stills.mjs (um bundle, muitos quadros).
  • O ffmpeg empacotado do Remotion não tem tmix, select ou tile: use o ffmpeg do sistema que o doctor verificou.
  • Faixa de cor: decodifique o quadro 0 de cada entregável e verifique (verify.py --bg); um master de faixa limitada lido como faixa completa eleva fundos escuros para cinza.
  • interpolateColors não consegue analisar color-mix(): use hexadecimal para qualquer coisa que anime.
  • Componentes de imagem assíncronos podem renderizar vazios em um quadro: use <Img> do Remotion.
  • Um índice calculado a partir do tempo é -1 antes de sua seção: limite-o (safeIndex).
  • will-change em qualquer coisa que a câmera escala borra seu texto.
  • Uma máscara de revelação de palavras corta as últimas letras sem preenchimento: use WordReveal do kit/components.tsx.
  • A decodificação de vídeo dentro de renderizações não é confiável: converta loops para sequências de imagens.

Individual skills in this repo

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

Habilidades Relacionadas