Communitygithub.com

wjgoarxiv/agentvfx

Clipes VFX direcionados por agente e reativos a música, gerados a partir de uma partitura FX. Modelos de shader WebGL2 (psicodélico, espectro, escopo, impacto, luz, glitch, colagem e treliça neo-brutalistas), planos de fundo opcionais do Blender, auditoria de flash em cada renderização, loops silenciosos pingue-pongue e exportação web para uso ao vivo em aplicativos e sites. Use quando alguém pedir um clipe VFX, um visualizador, um loop para festival ou palco, um fundo reativo a música ou um efeito de shader ao vivo para uma página web.

O que é agentvfx?

O wjgoarxiv/agentvfx é uma skill para agentes de IA (como Claude Code, Cursor ou Codex) que permite a criação de clipes de efeitos visuais (VFX) reativos a música, sem necessidade de escrever código de shader. O agente atua como diretor, escolhendo modelos de shader WebGL2 pré-definidos (como psicodélico, espectro, glitch, colagem neo-brutalista, treliça, entre outros), ajustando parâmetros e compondo uma partitura FX em formato JSON. A skill então renderiza o clipe em um navegador Chrome headless com suporte a WebGL2, codifica em H.264 usando ffmpeg e realiza uma auditoria de segurança contra flashes (seguindo padrões WCAG). Também oferece funcionalidades para gerar loops silenciosos pingue-pongue, planos de fundo do Blender (opcionais) e exportar um runtime web auto-contido para uso ao vivo em sites. É útil para desenvolvedores que precisam de quick VFX loops para festivais, palcos, visualizadores musicais, fundos reativos ou efeitos de shader para páginas web, automatizando todo o pipeline de renderização e garantindo segurança contra fotossensibilidade.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wjgoarxiv/agentvfx/tree/HEAD/skills/agentvfx

Perguntar na sua IA favorita

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

Documentação

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. seed torna a renderização repetível.
  • params sobrescrevem a predefinição (nomes e faixas vêm do fx.json do modelo).
  • bindings vinculam um parâmetro a uma característica de áudio (bass, onset, beat, bands.N, …) com gain, 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.
  • hits disparam um modelo extra em um onset ou beat; cuts cortam a pilha abruptamente em um beat; stack empilha até dois modelos sobre a base.
  • labels e textStyle definem 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.

Habilidades Relacionadas