Communitygithub.com

wjgoarxiv/agentvfx

Agentgesteuerte, musikreaktive VFX-Clips aus einer FX-Partitur. WebGL2-Shader-Vorlagen (psychedelisch, Spektrum, Umfang, Impact, Licht, Glitch, neobrutalistische Collage und Gitter), optionale Blender-Hintergrundplatten, eine Blitzprüfung pro Render, stille Ping-Pong-Loops und eine Web-Exportfunktion für den Live-Einsatz in Apps und Websites. Verwenden Sie dies, wenn jemand nach einem VFX-Clip, einem Visualizer, einem Festival- oder Bühnenloop, einem musikreaktiven Hintergrund oder einem Live-Shader-Effekt für eine Webseite fragt.

Was ist agentvfx?

agentvfx ist ein KI-gesteuertes Tool, das es Entwicklern und Agenten ermöglicht, VFX-Clips zu erstellen, die auf Musik und andere Audioeingaben reagieren, ohne dass selbst Shader-Code geschrieben werden muss. Es werden vorgefertigte WebGL2-Shader-Vorlagen verwendet, die eine breite Palette an Stilen abdecken, von psychedelischen Effekten bis hin zu neobrutalistischen Collagen. Der Benutzer erstellt eine JSON-basierte FX-Partitur, die die Vorlage, Voreinstellungen, Parameter und Audioverbindungen definiert. Die Engine rendert den Clip dann über headless Chrome mit WebGL2, codiert ihn mit ffmpeg und führt eine automatische Blitzprüfung (gemäß WCAG 2.3.1) durch, um die Sicherheit für die Wiedergabe zu gewährleisten. Es unterstützt Render-Pipelines für Apple Silicon und Linux, mit optionalem Blender für 3D-Hintergrundplatten, sowie die Erstellung von stillen Ping-Pong-Loops und Web-Exportfähigkeiten für Live-Anwendungen in Apps und Websites.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht agentvfx?

Du führst Regie; die Engine rendert. Du schreibst niemals Shader-Code für einen Clip. Du wählst eine Vorlage, eine Voreinstellung und einige wenige Parameter aus, schreibst sie in eine FX-Partitur (JSON), und die Engine rendert sie in headless Chrome (WebGL2), codiert H.264 mit ffmpeg und prüft sie auf Blitze.

Jeden Befehl von diesem Ordner aus ausführen (dem Skill-Wurzelverzeichnis). Pfade innerhalb einer Partitur werden relativ zum aktuellen Verzeichnis aufgelöst.

1. Maschine überprüfen

node scripts/vfx.mjs doctor

ok: true bedeutet, dass Chrome mit GPU WebGL2 und ffmpeg gefunden wurden. Andernfalls blockers lesen und dem Benutzer mitteilen, was zu installieren ist (CHROME_PATH, FFMPEG_PATH). Blender 5.x wird nur für Platten benötigt (BLENDER_PATH).

2. Look auswählen

node scripts/vfx.mjs list            # Familie, Vorlagen-ID, Eingabeart, Voreinstellungen
node scripts/vfx.mjs list --json     # mit Beschreibungen

input gibt an, was eine Vorlage benötigt: generative (nichts), footage (input.video) oder either. Mit einer Voreinstellung beginnen; pro Runde maximal zwei oder drei Parameter ändern. Dem Benutzer das Ergebnis zeigen, bevor weitere Änderungen erfunden werden.

3. Partitur schreiben

Schema: schemas/fx-score.schema.json. Minimal:

{ "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 ist 3–5. seed macht den Render wiederholbar.
  • params überschreiben die Voreinstellung (Namen und Bereiche stammen aus der fx.json der Vorlage).
  • bindings binden einen Parameter an ein Audio-Feature (bass, onset, beat, bands.N, …) mit gain, offset, attackMs, releaseMs. Attack auf dem Onset-Frame halten und Release kurz halten (ca. 60 ms): schnell wirkt professionell, starkes Glätten wirkt wie eine Demo.
  • hits feuern eine zusätzliche Vorlage auf einen Onset oder Beat; cuts schneiden den Stack hart auf einen Beat; stack schichtet bis zu zwei Vorlagen über die Basis.
  • labels und textStyle legen die Textebene der Engine fest (installierte Schriftarten nach Namen; generischer Fallback bei Fehlen).

Ohne Rendern prüfen:

node scripts/vfx.mjs validate my-score.json

4. Rendern und anschauen

node scripts/vfx.mjs render my-score.json --out out/my-lattice --width 640 --height 360

Zuerst klein in der Vorschau (640x360), dann die Größe für das Finale erhöhen. Der Befehl gibt JSON mit dem Filmpfad, dem Blitzergebnis und den Standbildern aus. Öffne stills/sheet.png und jeden Streifen, bevor du den Clip jemandem beschreibst. Ein Render, den du nicht angesehen hast, ist nicht fertig.

5. Blitzsicherheit

Jeder Render trägt eine Blitzprüfung (allgemeine und rote Blitze pro Sekunde, WCAG 2.3.1-ähnlich). Der Standardmodus stage behält die volle Intensität und schreibt SAFETY.txt, wenn Grenzen überschritten werden. "safety": { "mode": "broadcast-safe" } erzwingt die Grenzen; "safeVariant": true fügt film.safe.mp4 neben der Vollversion hinzu. Teile dem Benutzer klar mit, wenn ein Clip die Grenzen überschreitet.

6. Hintergrundplatten (optional, Blender)

node scripts/plate.mjs --scene terminalcore --shot gallery --out out/plate --width 640 --height 360 --seconds 4

Prozedurale Szenen, keine heruntergeladenen Assets. Verwende das film.mp4 der Platte als input.video. --quality final ist langsam (ca. 2 Minuten pro 1080p-Frame); vor dem Start nachfragen. Siehe references/plates.md.

7. Stille Loops

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

Spielt den Clip vorwärts und dann rückwärts ab (nahtlos, keine Audiospur) und prüft den zweimal abgespielten Loop auf Blitze. Exit-Code 3 bedeutet, dass der Loop die Blitzgrenzen überschreitet. Das Umkehren kann die Blitze um einen Wendepunkt herum verdoppeln; --hold 6 pausiert sechs Frames an jedem Wendepunkt, was einen solchen Loop oft wieder innerhalb der Grenzen bringt. Eine rote Änderung, die beim Umkehren zu einem roten Blitz wird, kann so nicht behoben werden – dies mitteilen und den Benutzer entscheiden lassen.

8. Live auf einer Webseite

node scripts/export-web.mjs lattice collage --out out/web

Schreibt eine eigenständige Laufzeitumgebung, die ausgewählten Vorlagen und eine Demoseite. Beachtet prefers-reduced-motion. Siehe references/web.md.

Regeln

  • Verschicke oder committe niemals Musik, für die du keine Verbreitungsrechte hast. Die Bewegung eines Renders kann von einem Track stammen, während der veröffentlichte Loop stumm bleibt.
  • Referenzen inspirieren; sie werden nicht kopiert. Reproduziere keinen Frame, kein Logo, keine Marke oder keine Schriftartdatei aus der Arbeit eines anderen.
  • Bündle keine Schriftartdateien. Benenne installierte Schriftarten; sie fallen zurück, wenn sie fehlen.

Mehr

  • references/template-format.md — Wie eine Vorlage aufgebaut ist (fx.json, Durchläufe, Voreinstellungen, Textebene).
  • references/plates.md — Blender-Platten.
  • references/web.md — Web-Runtime-API.

Verwandte Skills