Was macht Reel Motion Graphics (Erklär-Videos im 9:16-Format)?
Dieser Skill erstellt Reels im Hausstil, der erstmals für "Upcycling in 30 Seconds" entwickelt wurde. template/ ist dieses Reel als funktionierendes HyperFrames-Projekt, sodass eine frische Kopie korrekt rendert, bevor du etwas änderst. Deine Aufgabe ist es, den Inhalt durch das neue Skript zu ersetzen, während alle unten stehenden Regeln eingehalten werden.
Lade /hyperframes-core für den Kompositionsvertrag, bevor du Kompositions-HTML schreibst. Lade /hyperframes-animation nur, wenn du ein Bewegungsmuster benötigst, das nicht in references/primitives.md enthalten ist.
1. Skript lesen und Abschnitte planen
Ermittle oder leite Folgendes ab und frage nur nach dem, was den Film verändert:
- Das Skript oder Konzept. Erforderlich.
- Präsentator-Aufnahme (MP4) oder ein Standbild. Ohne eines behalte das Platzhalter-Standbild aus der Vorlage.
- Quellenangabe für die Titelzeile, z. B.
ICLR 2023 · Author et al.. - Ziellänge. Standard 30 s; 20–60 s sind möglich.
Unterteile das Skript in: eine Titelkarte (ca. 4 s), 2–5 Schritte (je 4,5–6 s) und optional einen Ergebnis-/Abschluss-Teil (ca. 5,5 s). Schreibe für jeden Schritt:
- eine Überschrift als normale Wörter plus eine 1–2-Wort-kursive Betonung ("Kopiere das MLP acht Mal"), maximal ca. 22 Zeichen, damit es bei 656 px und 60 px passt;
- eine Bildunterschrift: Zeile 1 ist ein Satz mit max. ca. 34 Zeichen (Bodoni kursiv 40 px), Zeile 2 ist ein unterstützender Satz mit max. ca. 40 Zeichen;
- den Diagramm-Schritt aus dem Grundvokabular (
references/primitives.md→ "Ein neues Diagramm schreiben").
Gehe von ca. 2,5 gesprochenen Wörtern pro Sekunde aus, wenn die Bildunterschriften die Erzählung spiegeln. Schreibe den Plan in STORYBOARD.md im Projekt (Abschnitt, Zeitbereich, Überschrift, Bildunterschrift, visueller Schritt), zeige ihn dem Benutzer und baue erst, wenn er zustimmt. Ein kurzes Skript, das der Benutzer bereits genehmigt hat, kann direkt in den Build gehen.
2. Grundgerüst
Dieser Skill lebt im Reel Creator-Projekt (.claude/skills/reel-motion-graphics/). Führe Befehle vom Projektstamm aus aus und lege jedes neue Reel in reels/<slug>/ an. Skriptpfade wie scripts/solve-fold.py sind relativ zu diesem Skill-Ordner.
.claude/skills/reel-motion-graphics/scripts/new-reel.sh reels/<slug> [presenter.jpg|.mp4]
Ersetze für Präsentator-Video das <img id="presenter"> in index.html durch:
<video id="presenter" class="clip" src="assets/presenter.mp4" data-start="0" data-duration="<D>" data-has-audio="true" playsinline></video>
Das #presenter-CSS (Cover, 20 % Anker, unterhalb --fold) wird unverändert angewendet.
3. Bauen: Zuerst die Daten bearbeiten, dann das Diagramm schreiben
| Datei | Was ändern |
|---|---|
index.html | Root und Host data-start/data-duration an den Plan anpassen. Hosts: bg (gesamt), title (0–4), headings und diagram (4–Ende), result (sein Fenster), captions (gesamt), presenter (gesamt). |
compositions/title.html | Quellenzeile, die zwei Display-Zeilen, die zwei Thesen-Zeilen und das Mini-Diagramm, falls die Idee nicht "1 → viele" ist. |
compositions/headings.html | Nur das STEPS-Array (Host-lokale Sekunden). Balken und "Schritt n von N" werden daraus abgeleitet. |
compositions/captions.html | Nur das CAPS-Array (globale Sekunden). Jede ca. 0,35 s nach Schrittbeginn einblenden und bis Schrittende anzeigen. |
compositions/diagram.html | Die Welt für das neue Thema neu schreiben, unter Verwendung der Grundelemente. Behalte die Linsen/Welt/Drift-Struktur, das Token-Clock-Muster und die Hintergrundstaffelung. |
compositions/result.html | Statistik-Labels, Werte, Zähler und Metazeilen – oder den Host löschen, wenn das Skript keine Zahlen enthält. |
compositions/bg.html | Meist unverändert. Skaliere seine Yoyo-Wiederholungen so, dass sie bei der Root-Dauer enden. |
Wenn die Bibliothek keine passende Grafik enthält: um einen HyperFrames-Link bitten
Die Bibliothek ist references/primitives.md. Wenn ein Abschnitt eine Visualisierung benötigt, die kein Grundbaustein abdeckt (Diagrammtyp, Karte, Zeitleiste, Vergleich oder etwas anderes, das nicht aufgeführt ist), improvisiere nicht selbst. Halte inne und bitte den Benutzer um einen Link:
"Abschnitt 3 ('Umsatz verdreifacht seit 2021') benötigt ein Wachstumsdiagramm und die Bibliothek hat keins. Kannst du einen HyperFrames-Katalog-Link für eine Grafik schicken, die dir gefällt? Ich werde sie auf unsere Marke umstellen."
Um die Auswahl zu erleichtern, kannst du 2–4 Kandidaten aus npx --yes [email protected] catalog "<Suchbegriff>" auflisten, aber lass den Benutzer wählen. Baue während des Wartens die anderen Abschnitte weiter und hinterlasse einen beschrifteten Platzhalter in der Lücke.
Wenn der Link eintrifft:
- Installiere ihn. Das Registry-Item ist das letzte Pfadsegment des Katalog-Links. Führe
npx --yes [email protected] add <name> --no-clipboard --jsonvom Projekt aus. Für einen Link, der nicht aus der Registry stammt, lies die Seite oder Quelle und baue sie neu zusammen. - Passe ihn an die Hausregeln an:
- Tausche die Farben gegen Marken-Tokens und die Panels gegen
.glass; - Verwende Bodoni und Instrument Sans mit den opsz-18-Dateien;
- Setze alle Abstandswerte auf das 4px-Raster;
- Passe ihn an die Inhalts- und Zonen-Spalte an;
- Füge Schimmer, Glanz und Drift-Akzente hinzu;
- Entferne alles Markenfremde, wie flache helle Füllungen, andere Schriftarten oder Schlagschatten-Stile.
- Tausche die Farben gegen Marken-Tokens und die Panels gegen
- Binde ihn ein als Unterkompositions-Host auf der Grafikspur oder integriere seine Bewegung in
diagram.html, wenn er die kontinuierliche Welt teilen muss. Überprüfe, erstelle einen Snapshot und korrigiere wie üblich. - Füge ihn zur Bibliothek hinzu. Hänge einen Eintrag in
references/primitives.mdunter "Von HyperFrames umgestaltet" an: Name, Quelllink, was gezeigt wird und die wichtigsten Parameter. Kopiere die umgestaltete Datei intemplate/compositions/library/, damit das nächste Reel sie ohne erneute Anfrage wiederverwenden kann.
4. Hausregeln (jedes Reel, keine Ausnahmen)
- Falte gleichmäßig. Die Falte sitzt auf halbem Weg zwischen dem untersten Animationsinhalt (Bildunterschriften-Unten, etwa y 900) und dem Oberkopf des Präsentators. Löse es mit
scripts/solve-fold.py <Präsentator-Standbild oder ein Frame> 900und setze--foldinbrand.css(ein Vielfaches von 4). Überprüfe mitscripts/measure-fold.py <Snapshot> <fold>. Überprüfe bei Video ein Frame, in dem der Kopf am höchsten ist. - 4px-Raster. Jeder Abstand, Zwischenraum, Offset, jede Größe und Zeilenhöhe ist ein Vielfaches von 4. Container haben gleichmäßige Abstände und passen sich dem Inhalt an; gib einer Karte niemals eine feste Höhe. Führe
scripts/audit-grid.sh <Projekt>aus; die einzigen erlaubten Ausnahmen sind Haarrandlinien, Glühradien und Tween-Bewegungs-Offsets. - Stabile Serife. Verwende nur die
*-opsz18.woff2Bodoni-Dateien infonts/. Die variable Schriftart wählt automatisch dünne optische Größen für Displays, die nach H.264 und Handy-Downscaling verschwinden. Wechsle niemals zurück zur variablen Datei oder zu Googles Bereich 6..96. - Zonen. App-Leiste 0–175 (frei halten), Animation 192–780, Bildunterschriften-Band 812–904, Präsentator unterhalb
--fold, Inhalts-Spalte x 172–828 (frei von der rechten Schiene). Bildunterschriften leben auf nur einer Spur. - Eine kontinuierliche Diagramm-Welt. Elemente, die über Schritte hinweg bestehen, leben in
diagram.htmlund bewegen sich. Sie treten nie in einer neuen Szenendatei wieder ein. - Determinismus. Verwende nur pausierte GSAP-Timelines, die auf
window.__timelines["<id>"]registriert sind. Verwende gesätenrng()oderhh()anstelle vonMath.randomund keinrequestAnimationFrame, keine Uhren oder Netzwerk. Animierte Zähler und Partikel sind reine Funktionen eines Proxy-Tween-Werts. - Lint-sicherer Aufbau.
- Ziel auf das eigene Root einer Unterkomposition mit
document.querySelector('[data-composition-id="<id>"]:not([data-composition-src])'), niemals#root(mehrere Roots teilen diese ID, wenn sie zusammengesetzt sind). - Präfixiere Element-IDs mit der Komposition (
dg-,hd-,rs-,ti-). - Verwende ein
fromTopro Element-Eigenschafts-Paar, dannto. - Tweene niemals
letterSpacing,width,height,topoderleft; verwende Transforms und Opacity. - Verteile einzelne Labels, sodass sie im Ruhezustand nicht überlappen.
- Ziel auf das eigene Root einer Unterkomposition mit
- Aussehen. Fast schwarzer, warmer Hintergrund mit treibendem Licht und Körnung;
.glassfür jedes Panel; goldener Schimmer auf Akzenten; kleine Kamera-Drift bei jedem Halten; halte jeden fertigen Zustand mindestens 1 s.
5. Prüfen, dann ausliefern
Führe diese Befehle vom Projektverzeichnis aus aus:
npx --yes [email protected] check
npx --yes [email protected] snapshot --at <der Mittelpunkt jedes Abschnitts>
checkmuss mit 0 Fehlern bestehen. Überprüfe alle Warnungen.- Sieh dir das Kontaktblatt an. Beschneide und zoome jedes dichte Bild: Achte auf Überlappungen, abgeschnittenen Text, falsch platzierte Tokens und ungleichmäßige Abstände.
- Führe
measure-fold.pyundaudit-grid.shaus und behebe alles, was sie beanstanden. - Rendere mit
npx --yes [email protected] render; das Ergebnis liegt inrenders/. - Erstelle eine freigegebene Kopie unter 30 MB für die Telefonansicht:
ffmpeg -i renders/<Datei>.mp4 -c:v libx264 -crf 23 -preset slow -pix_fmt yuv420p -movflags +faststart renders/<slug>-share.mp4 - Live-Player: Führe vom Projektstamm
node viewer/build.mjsaus. Es erstellt den Live-Player jedes Reels neu (reel/plus jedesreels/<slug>/) und schreibt das Karussellviewer/index.htmlmit einer Kopie pro Reel inviewer/reels/. Veröffentlicheviewer/index.htmlim Reel-Library-Artifact https://claude.ai/artifact/Joet84qdr6Kb47vYZzc8YR und übergebe alleviewer/reels/*.htmlinfiles. Der Benutzer bevorzugt den Live-HTML-Player gegenüber einem eingebetteten Video. Für ein einzelnes Reel allein schreibenode build-preview.mjsin dessen Ordnerdist/preview.html. - Berichte die Laufzeit, was geprüft wurde (Frames, Faltlücken, Audit) und alles, was noch nicht verifiziert ist.
Referenz
references/primitives.md: jeder visuelle Grundbaustein mit der Datei, die ihn implementiert.template/: das vollständige Upcycling-Reel. Es ist die Qualitätslatte; vergleiche neue Arbeit damit.