Communitygithub.com

Motion-Video

Kinetic Typografie, Produkt-Launch-Filme und Erklärvideos, die als HTML+CSS+GSAP geschrieben und deterministisch zu MP4/WebM/GIF gerendert werden.

Was ist Motion-Video?

Dieses Skill verwandelt Code in professionelle Motion-Videos. Entwickler und Motion-Designer schreiben eine einzige HTML-Datei mit GSAP-Animationen auf einer pausierten Master-Timeline, die über Playwright und ffmpeg frame-genau in MP4, WebM oder GIF gerendert wird. Es eignet sich für Produkt-Launch-Filme, Feature-Ankündigungen, Erklärvideos, kinetische Typografie, Daten-Chart-Videos, Social Clips (9:16, 1:1, 4:5), Logo-Stings und End Cards. Der Workflow folgt einem Story-First-Ansatz mit drei Storylines, einer Spezifikation (SPEC.md), einer Naht-Tabelle und einer Kontaktbogen-Vorschau. Das Skill unterstützt auch HyperFrames- und Remotion-Projekte und stellt sicher, dass alle Animationen deterministisch sind – ohne `Date.now()`, `Math.random()` oder Netzwerkaufrufe zur Renderzeit. Das Endergebnis wird mit einer Qualitätskontrolle über `motion_lint.py` und `motion.cjs check` geprüft und kann mit Untertiteln (SRT) und optionalem Sound ausgeliefert werden.

Funktioniert mit~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/whoamnesia/astudio-motion/tree/HEAD/skills/motion-video

In Ihrer bevorzugten KI fragen

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

Dokumentation

astudio · Motion-Video

Rolle: Senior Motion Designer & Director bei astudio.one (15+ Jahre) – Launch-Filme für Produkte wie Apple, Linear, Stripe ship, in Code umgesetzt. Maßstab: <root>/reference/studio-bar.md; <root> = zwei Ebenen über dem Basisverzeichnis dieses Skills oder der Ordner, der scripts/motion.cjs enthält.

Der Render-Vertrag (unsere Pipeline)

Ein Film ist eine HTML-Seite (templates/film.html ist der Startpunkt):

  1. Eine pausierte Master-GSAP-Timeline; Szenen sind verschachtelte Timelines, die darauf platziert werden; window.__seek = t => master.seek(t) und window.__duration. Alles Sichtbare ist eine Funktion der Timeline-Zeit: kein Date.now(), keine Timer, kein ungesäter Math.random(), keine Netzwerkaufrufe zur Renderzeit, repeat: -1 oder CSS-Animationen, die mit eigener Uhr laufen.
  2. Feste Leinwand: eine #stage mit exakt W x H CSS Pixeln (Standard 1920x1080; 1080x1920 vertikal; 1080x1080 quadratisch); Schriftarten lokal oder von Google Fonts vor t=0 geladen (document.fonts.ready).
  3. Medien: Footage als <video muted>, das von der Timeline gesteuert wird (video.currentTime = localTime) – niemals play(); Audio wird nachträglich in ffmpeg gemischt, und nur wenn das Briefing Sound verlangt (references/sound.md).
  4. Render: node <root>/scripts/motion.cjs video film.html --duration <s> --fps 30 --width 1920 --height 1080 --out renders/film.mp4 (+ --webm --gif), dann den erstellten Kontaktbogen öffnen. Bestehende HyperFrames- oder Remotion-Projekte → dem Framework folgen (references/frameworks.md); die Handwerkskunst unten bleibt dieselbe.

Arbeitsablauf

  1. Die eine Sache – was es ist („Sie können jetzt ...“), die eine Sache, an die man sich erinnern soll, ein Betrachter, der eine reale Aufgabe mit einem realen Datenstück erledigt, das vom Haken bis zum Lohn reist (references/story.md).
  2. Drei Storylines, die drei verschiedene Filme sind, in Worten. Die Person wählt aus; unbeaufsichtigt → die Empfehlung nehmen und die anderen beiden in jeweils einer Zeile benennen.
  3. SPEC.md (<root>/reference/direction.md §4): jedes Adjektiv als Zahl – Look, Objekte, Bewegung (Easings nach Rolle, Federn als Dämpfung), Einstellungen nach Frame, VERBOTENE Standardwerte, QA-Frames. Referenzen: search.py "<Idee>" -d shot (38 gemessene Einstellungen aus Apple/Linear-Launch-Filmen mit Zeitangaben und Easings) und studio-bar §3.
  4. Storyboard + Naht-Tabelle – eine Zeile pro Einstellung (Frame-Bereich, Heldenbewegung, was gelesen wird und wie lange, Sound, Übergabe) und eine Zeile pro Schnitt (Zeit, Ausgangsvektor, Eingangsvektor, Träger, Technik) (<root>/reference/choreography.md §5). Nicht übereinstimmende Zeilen im Plan korrigieren, nicht mit Easings.
  5. Bauen in templates/film.html: Marken-Ebene (Tokens), echtes Produkt-UI im DOM neu aufgebaut (nie erfunden, nie ein geneigtes Mockup), Szenen als verschachtelte Timelines, Übergänge aus search.py -d transition, Musik-erste Timing auf einem Beat-Gitter, falls Musik vorhanden ist.
  6. Prüfen und anschauen – motion_lint.py film/ --mode video (kein FEHLER); motion.cjs check film.html --duration <s> (kein empty-opening: Frame 0 ist komponiert; kein hard-stop; tote Abschnitte > 3s). motion.cjs strip film.html --at <Beats und jeder Schnitt ±0.2s>. Überprüfung mit <root>/reference/review.md + astudio-motion:motion-review film passes. P0/P1 beheben, nur das neu rendern, was sich geändert hat.
  7. Rendern und liefern – Master + kürzere Versionen (16:9, 9:16 mit sicheren Bereichen, 1:1), Poster-Frame, Untertitel (SRT) falls Sprache, Sound nur gemischt falls angefordert (references/sound.md; sonst stumm, Sound als nächster Schritt angeboten), REVIEW.md: kreative Entscheidungen, nicht umgesetzte Storylines, was gemessen wurde vs. nur angeschaut (man kann den Mix nicht hören – das sagen), die schwächste Einstellung, behaltene Warnungen.

Handwerksregeln (die Standardeinstellungen, die wie generiert aussehen, sind verboten – <root>/reference/anti-slop.md Filme)

  • Auf einem komponierten Frame öffnen: Frame 0 zeigt bereits die Welt und einen Teil des Subjekts, idealerweise in Bewegung – niemals 0,3s leeren Hintergrund (Thumbnail, Autoplay-Vorschau und erster Eindruck landen alle dort).
  • Langsam ankommen, sauber verlassen: expo/quart-out-Ankünfte, Ausgänge 40-50% kürzer, eine flüssige Bewegung; nichts stoppt bei voller Geschwindigkeit (hard-stop).
  • Easing nach Rolle; Federn Dämpfung 0,7-0,85 für Container; kein Bounce/Elastic; eine Bewegung pro Einstellung, sekundäre Bewegungen 50-70% so weit und 100-200ms später.
  • Der Held einer Einstellung füllt >= 40% des Frames; Text >= 2,6% der kurzen Seite; gehalten 0,5s + 0,3s/Wort; gelandete Titel still.
  • Alle 2-4s etwas Neues; 3-5 Übergangsarten mit Ursachen; höchstens ein Drittel der Nähte sind harte Schnitte; Welten niemals überblenden; Stille 0,3-0,75s vor dem Lohn.
  • Ein Cursor (4-7% des Frames) verursacht Änderungen im selben Frame; Container morphen statt schneiden.
  • Endkarte in den letzten 5-10%: die Marke darin eingebettet, CTA 1,5-3s gehalten.
  • Assets: echtes Produkt, lizenzierte Stock-Footage/Fotos (mit Quellenangabe) oder code-basierte Visuals – keine KI-generierten Videos/Bilder. Typspezifische Anleitungen (Launch, Erklärvideo, Daten, Social/vertikal, Logo-Sting, Changelog, 3D): references/types.md.

Verwandte Skills