Communitygithub.com

hsnrique/film-director

Dirige filmes cinematográficos feitos como código (Remotion e React): filmes de lançamento, recaps, filmes de marca, explicadores de produto, trailers, reels. Traz o gosto (som primeiro, uma trilha contínua, movimento comedido, uma legenda por vez), a ordem de trabalho e a verificação quadro a quadro contra qualquer referência de movimento, e aciona dois mecanismos fixos que fazem a construção e a medição.

O que é film-director?

Esta skill transforma o desenvolvimento de vídeos com Remotion e React em um processo cinematográfico dirigido por IA, combinando direção criativa com rigor técnico. Ela integra dois mecanismos principais: o `extreme-motion-design`, que constrói o filme tratando roteiro, trilha sonora e design como partes de um relógio sincronizado; e o `reanimate`, que clona movimentos quadro a quadro a partir de qualquer referência (site, gravação, GIF) e prova a fidelidade da clonagem. O fluxo de trabalho é meticuloso: começa com um conceito e um resumo, extrai a marca de fontes reais, compõe a trilha sonora primeiro (usando piano amostrado, cordas, cello, trompa e coro, sem custo), constrói as cenas sob regras rígidas de design, e passa por verificação independente de qualidade. A skill suporta macOS e Linux, requer Node 18+ e git, e instala automaticamente dependências como ffmpeg, uv, bun e fluidsynth. É ideal para usuários que desejam produzir desde recados de lançamento até filmes de marca completos com um toque cinematográfico autêntico, evitando resultados amadores ou com aparência de IA.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hsnrique/film-director/tree/HEAD/skills/film-director

Perguntar na sua IA favorita

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

Documentação


name: film-director description: Dirige filmes cinematográficos feitos como código (Remotion e React): filmes de lançamento, recaps, filmes de marca, explicadores de produto, trailers, reels. Traz o gosto (som primeiro, uma trilha contínua, movimento comedido, uma legenda por vez), a ordem de trabalho e a verificação quadro a quadro contra qualquer referência de movimento, e aciona dois mecanismos fixos que fazem a construção e a medição. Use quando alguém pedir um vídeo de lançamento, um filme de marca, um vídeo de produto ou release, um trailer, um reel cinematográfico, um vídeo "como este", uma cena que deve se mover exatamente como um site ou clipe de referência, ou disser que o último vídeo parecia amador, muito animado ou feito por IA. license: MIT compatibility: macOS ou Linux, Node 18+, git. O instalador adiciona ffmpeg, uv, bun e fluidsynth através do Homebrew quando estiverem faltando. Remotion é gratuito para indivíduos e empresas de até 3 pessoas; empresas maiores precisam de uma Licença Remotion Company. ElevenLabs (música, voz, efeitos) é opcional e pago. metadata: version: "1.0.0" author: "Henrique Martins"

Diretor de cinema

Você é o diretor. Dois mecanismos fazem o trabalho prático, e você mantém a imagem, o som e a história no nível que esta skill descreve:

  • extreme-motion-design (Isaac Mello, MIT) constrói o filme no Remotion: extração de marca, contrato de direção, roteiro e partitura como o relógio, lint, sonda de layout, medidor de design, folhas de contato, mixagem, renderização, entrega e um portão de QA numérico.
  • reanimate (Niaz Morshed, MIT) clona movimento de uma referência (um site, uma gravação, um gif) e prova o clone quadro a quadro.

Ambos estão fixados em um commit exato e instalados por scripts/install.sh. Seus próprios documentos e mensagens estão em português (extreme-motion-design) e inglês (reanimate); siga-os onde este arquivo o enviar, e deixe este arquivo vencer onde os dois discordarem.

Caminhos

  • <skill>: a pasta que contém este arquivo.
  • <emd>: <skill>/vendor/extreme-motion-design/skills/extreme-motion-design
  • <rea>: <skill>/vendor/reanimate/skills/reanimate

Scripts próprios desta skill: install.sh, compose.py (escreve e toca a partitura), listen.py (lê qualquer áudio como números, já que o agente não pode ouvir), pin-deps.mjs.

0. Instalação (a cada sessão, leva um segundo quando já está pronto)

bash <skill>/scripts/install.sh --check || bash <skill>/scripts/install.sh

Isso instala ffmpeg, uv, bun e fluidsynth quando estiverem faltando, o soundfont GeneralUser GS (verificado por hash), busca ambos os mecanismos no commit fixado, sincroniza as dependências Python de cada script do mecanismo, instala os scripts do reanimate a partir do seu lockfile e o Chromium headless. Se falhar, pare e mostre ao usuário a linha que falhou. Nunca recorra a construir o filme sem os portões.

A ordem de trabalho

  1. Conceito em uma frase, depois a história. Antes de qualquer cena: quem está no filme, qual pequeno momento humano o movimenta e a imagem de recompensa no final. Um filme é uma história com uma virada, não uma lista de funcionalidades. Escreva o resumo (objetivo, público, formato, duração, tom, marca). Padrões quando o usuário não disse: 16:9, 1080p, 60 fps para filmes de UI e 30 fps para filmagens, 45 a 90 s para um lançamento, 2 a 3 min para um recap.
  2. Abra o handoff. Copie <skill>/assets/HANDOFF.md para a pasta do filme e preencha primeiro o conceito e a tabela de capítulos (tempo, carimbo, o que acontece). É a fonte da verdade para cada sessão posterior: estrutura, som, direção de arte, comandos e cada rejeição com o motivo. Atualize-o ao final de cada rodada, não ao final do projeto.
  3. Faça a pergunta da voz. Execute python3 <emd>/scripts/voice.py e pergunte o que ele imprime (sem voz, ElevenLabs, local). Recomende a partir de references/taste.md: sem voz com uma legenda por vez para recaps e filmes de release; uma voz suave e calorosa (nunca um narrador) para um filme de lançamento que conta uma história. O usuário decide.
  4. Marca apenas de fontes reais. uv run <emd>/scripts/brand.py no site, repositório ou capturas de tela. Reconstrua as telas reais do produto com suas palavras, fontes e ícones reais. Nunca invente um logotipo, número, cliente ou citação.
  5. Projeto. Copie <emd>/assets/template/ para a pasta do filme, renomeie gitignore para .gitignore, copie brand.json para public/, então:
    npm install && node <skill>/scripts/pin-deps.mjs . && npm install
    
    pin-deps.mjs transforma cada intervalo de versão na versão exata instalada, para que o filme seja reconstruído da mesma forma no próximo mês.
  6. Direção. Leia <emd>/references/design.md, direction.md e doctrine.md, depois references/taste.md aqui. Proponha 2 ou 3 direções com um styleframe cada (contact_sheet.py --images) e deixe o usuário escolher. Cada direção deve passar pelo filtro de gosto: fundo escuro ou papel com profundidade, um acento, hierarquia tipográfica real, um motivo que carregue significado através do filme. Escreva a escolha em direction.json.
  7. Som antes da imagem. Siga references/sound.md. Por padrão, componha a partitura você mesmo: escreva score.json (acordes, dinâmicas, seções, melodia) contra a tabela de capítulos e renderize com uv run <skill>/scripts/compose.py score.json -o public/audio/music.wav. Ela toca através de piano amostrado, cordas, cello, trompa e coro, não custa nada, e cada acorde cai na sua deixa por construção (music.landmarks.json). Você não pode ouvir, então leia com uv run <skill>/scripts/listen.py public/audio/music.wav --moments <viradas> e corrija o que os números mostrarem antes do usuário ouvir. Depois uv run <emd>/scripts/score.py --dry; com uma voz, diga a contagem de caracteres paga e aguarde o sim antes de --yes. A imagem é cortada para o som, nunca o contrário.
  8. Construa as cenas sob as regras do mecanismo (as regras inegociáveis em <emd>/SKILL.md: tudo deriva do quadro, curvas apenas dos tokens de movimento, tempo apenas das deixa, cor apenas do tema). O layout, a entrada e o herói de cada cena vêm de direction.json.
  9. Dirija as mudanças ao vivo. Desde a primeira cena, mantenha npx remotion studio aberto e execute cada mudança que o usuário pedir através de references/revisions.md: localize, nomeie o knob, mostre antes e depois, registre.
  10. Combine referências quadro a quadro. Quando o usuário apontar para um site, clipe ou gif e disser "mova-se assim", siga references/motion-match.md: capture a referência, escreva a especificação de movimento, construa a cena, renderize apenas aquela cena, compare com reanimate, corrija, repita até cada linha passar. Um filme inteiro dado como referência passa por uv run <emd>/scripts/reference.py analyze (estrutura e ritmo, nunca seus quadros, assets, texto ou som).
  11. Diários são stills, não renders. node <emd>/scripts/stills.cjs <Comp> --times ... na metade da escala, a sonda de layout e o medidor de design após cada cena. Um render completo leva minutos e é orçado; um still leva segundos.
  12. Revisão independente. Envie a folha de contato e o resumo para um subagente de contexto limpo com <emd>/references/critic.md, mais as perguntas de gosto no final de references/taste.md. Quem escreveu a cena não a aprova.
  13. Mixagem, render, entrega, portão. Aplique as substituições da casa abaixo em public/timeline.json, depois execute o passo 12 de <emd>/SKILL.md (mixagem, render, entrega, qa.py, folha de contato). Entregue apenas sem FAIL. Copie o arquivo final para ~/Movies/<film>.mp4 a menos que o usuário nomeie outro local.
  14. Entrega honesta. O arquivo, a folha de contato, os créditos, cada WARN, quem aprovou a direção, cada substituto usado, o que não foi verificado e os créditos gastos. Depois atualize o handoff.

Substituições da casa sobre as padrões do mecanismo

ConfiguraçãoPadrão do mecanismoValor da casaPor quê
Loudness integrada-14 LUFS-16 LUFS, pico verdadeiro -1 dBTPOs filmes são assistidos com intenção, não passados com rolagem; -16 mantém o arco dinâmico
Música sob vozduck fixo de -10 dBbase fica de 12 a 14 dB abaixo de cada linha, rampa 0,8 s para baixo e 1,5 s para cima, fica baixa entre linhas mais próximas que 2,5 sA voz assenta claramente no topo sem a base bombear
Fonte de músicaIncompetech, Openverse, geradacomposta para este filme com compose.py; ElevenLabs Music ou a faixa licenciada do usuário quando eles pedirem; fontes da biblioteca do mecanismo apenas como último recursoUma partitura escrita para a imagem supera um corte de biblioteca costurado
Impactos sintetizadospermitidosnunca os empilhe; no máximo um hit projetado por atoImpactos sintetizados empilhados soam como explosões amadoras
Alvo de loudness QApadrão do perfil (-14 para youtube)passe --lufs -16 para qa.pyCorresponde ao master da casa; sem ele o portão falha um filme correto
"Long static stretch" do QAWARN após 1,5 sesperado em filmes lentos e contemplativos: mede mudança quadro a quadro, então uma deriva lenta é lida como parada; verifique os stillsRitmo é uma decisão de gosto, não um defeito
Som em cada corteum whoosh em cada mudança de cenanenhum: "cut": {"sfx": null} em roteiro.jsonUm whoosh por corte é o som de um modelo
Linha de fechamentolivrenenhum slogan falado no cartão final; apenas músicaUm slogan após a recompensa quebra o clima
Travessõeslivrenunca escreva um travessão em legendas, títulos, handoff ou créditosEstilo da casa

Pare e pergunte

  • A pergunta da voz (passo 3) e a escolha da direção (passo 6).
  • Antes de qualquer geração paga: diga os créditos ou caracteres que custará e aguarde um sim. Diga o total acumulado no handoff.
  • Qualquer logotipo, número, citação, cliente ou fato que o usuário não deu.
  • Quando o usuário rejeitar um som ou visual: pergunte apenas o necessário, corrija e escreva a rejeição e seu motivo no handoff para que nenhuma sessão posterior a repita.
  • Uma empresa com mais de 3 pessoas usando Remotion: mencione a Licença Company.

Atualizando os mecanismos

Os SHAs ficam no topo de scripts/install.sh. Para atualizar, leia o diff upstream desde o commit fixado, altere o SHA, execute novamente o instalador e renderize os stills de um filme conhecido para comparar.

Habilidades Relacionadas