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):
- Eine pausierte Master-GSAP-Timeline; Szenen sind verschachtelte Timelines, die darauf platziert werden;
window.__seek = t => master.seek(t)undwindow.__duration. Alles Sichtbare ist eine Funktion der Timeline-Zeit: keinDate.now(), keine Timer, kein ungesäterMath.random(), keine Netzwerkaufrufe zur Renderzeit,repeat: -1oder CSS-Animationen, die mit eigener Uhr laufen. - Feste Leinwand: eine
#stagemit 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). - Medien: Footage als
<video muted>, das von der Timeline gesteuert wird (video.currentTime = localTime) – niemalsplay(); Audio wird nachträglich in ffmpeg gemischt, und nur wenn das Briefing Sound verlangt (references/sound.md). - 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
- 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). - 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.
- 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. - 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. - 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 aussearch.py -d transition, Musik-erste Timing auf einem Beat-Gitter, falls Musik vorhanden ist. - Prüfen und anschauen –
motion_lint.py film/ --mode video(kein FEHLER);motion.cjs check film.html --duration <s>(keinempty-opening: Frame 0 ist komponiert; keinhard-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-reviewfilm passes. P0/P1 beheben, nur das neu rendern, was sich geändert hat. - 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.