O que agentvfx faz?
Você dirige; o motor renderiza. Você nunca escreve código de shader para um clipe. Você escolhe um modelo, uma predefinição e alguns parâmetros tipados, escreve-os em uma partitura FX (JSON), e o motor renderiza em Chrome headless (WebGL2), codifica H.264 com ffmpeg e audita por flashes.
Execute cada comando a partir desta pasta (raiz da skill). Caminhos dentro de uma partitura resolvem em relação ao diretório atual.
1. Verifique a máquina
node scripts/vfx.mjs doctor
ok: true significa que Chrome com GPU WebGL2 e ffmpeg foram encontrados. Caso contrário, leia blockers e informe ao usuário o que instalar (CHROME_PATH, FFMPEG_PATH). Blender 5.x é necessário apenas para planos de fundo (BLENDER_PATH).
2. Escolha um visual
node scripts/vfx.mjs list # família, id do modelo, tipo de entrada, predefinições
node scripts/vfx.mjs list --json # com descrições
input diz o que um modelo precisa: generative (nada), footage (input.video) ou either. Comece de uma predefinição; mude no máximo dois ou três parâmetros por rodada. Mostre o resultado ao usuário antes de inventar mais.
3. Escreva a partitura
Esquema: schemas/fx-score.schema.json. Mínimo:
{ "version": 1, "template": "lattice", "preset": "vermilion-fine",
"input": { "video": "test-media/clip-01.mp4", "audio": "test-media/beat-132.mp3" },
"durationSec": 4, "seed": 47, "out": "my-lattice" }
durationSecé 3–5.seedtorna a renderização repetível.paramssobrescrevem a predefinição (nomes e faixas vêm dofx.jsondo modelo).bindingsvinculam um parâmetro a uma característica de áudio (bass,onset,beat,bands.N, …) comgain,offset,attackMs,releaseMs. Mantenha o attack no quadro do onset e release curto (cerca de 60 ms): respostas rápidas soam profissionais, suavização pesada soa como demonstração.hitsdisparam um modelo extra em um onset ou beat;cutscortam a pilha abruptamente em um beat;stackempilha até dois modelos sobre a base.labelsetextStyledefinem a camada de texto do motor (fontes instaladas por nome; fallback genérico quando ausente).
Verifique sem renderizar:
node scripts/vfx.mjs validate my-score.json
4. Renderize e veja
node scripts/vfx.mjs render my-score.json --out out/my-lattice --width 640 --height 360
Visualize primeiro em tamanho pequeno (640x360), depois aumente o tamanho para o final. O comando imprime JSON com o caminho do filme, o resultado do flash e os stills. Abra stills/sheet.png e cada tira antes de descrever o clipe para alguém. Uma renderização que você não viu não está pronta.
5. Segurança contra flashes
Cada renderização carrega uma auditoria de flash (flashes gerais e vermelhos por segundo, estilo WCAG 2.3.1). O modo padrão stage mantém intensidade total e escreve SAFETY.txt quando os limites são excedidos. "safety": { "mode": "broadcast-safe" } impõe os limites; "safeVariant": true adiciona film.safe.mp4 ao lado da versão completa. Informe claramente ao usuário quando um clipe excede os limites.
6. Planos de fundo (opcional, Blender)
node scripts/plate.mjs --scene terminalcore --shot gallery --out out/plate --width 640 --height 360 --seconds 4
Cenas procedurais, sem assets baixados. Use o film.mp4 do plano como input.video. --quality final é lento (cerca de 2 minutos por quadro 1080p); pergunte antes de iniciar um. Veja references/plates.md.
7. Loops silenciosos
node scripts/loop.mjs out/my-lattice/film.mp4 reels/my-lattice.mp4 --preview reels/preview/my-lattice.webp --audit out/my-lattice/loop-flash.json
Reproduz o clipe para frente e depois para trás (sem emenda, sem faixa de áudio) e audita o loop reproduzido duas vezes. Código de saída 3 significa que o loop excede os limites de flash. A inversão pode dobrar os flashes em torno de uma virada; --hold 6 pausa seis quadros em cada virada, o que geralmente traz tal loop de volta ao limite. Uma mudança vermelha que se torna um flash vermelho quando invertida não pode ser corrigida dessa forma — diga isso e deixe o usuário decidir.
8. Ao vivo em uma página web
node scripts/export-web.mjs lattice collage --out out/web
Escreve um runtime autocontido, os modelos escolhidos e uma página de demonstração. Respeita prefers-reduced-motion. Veja references/web.md.
Regras
- Nunca envie ou commite música para a qual você não tenha os direitos de redistribuição. O movimento de uma renderização pode vir de uma faixa enquanto o loop publicado permanece silencioso.
- Referências inspiram; não são copiadas. Não reproduza um quadro, logotipo, marca ou arquivo de fonte do trabalho de outra pessoa.
- Não agrupe arquivos de fonte. Nomeie fontes instaladas; elas têm fallback quando ausentes.
Mais
references/template-format.md— como um modelo é construído (fx.json, passes, predefinições, camada de texto).references/plates.md— planos de fundo do Blender.references/web.md— API do runtime web.