Motion-Grafiken für den Podcast
Motion 5.9 hat kein AppleScript-Wörterbuch und keinen CLI-Renderer. Alles hier funktioniert,
indem Motion-Dateien als XML (ozml) behandelt werden und indem Final Cut Pro FCPXML übergeben wird, das
die installierten Titelvorlagen referenziert. Final Cut übernimmt das Rendering.
Die Werkzeuge liegen in agent-motion/:
| Tool | Funktion |
|---|---|
motionkit.py inspect DATEI [--json] | Schichtbaum, Textebenen (Text/Schriftart/Größe/Position), Zeitangaben in Sekunden, was an FCP veröffentlicht wird, Medienreferenzen |
motionkit.py set-text EIN AUS --set "SCHLÜSSEL=TEXT" ... | Textebenen umschreiben. SCHLÜSSEL = Ebenen-ID, Ebenenname oder aktueller Text. \n für Zeilenumbrüche. Korrigiert styleRun-Längen (UTF-16), damit Motion nicht abstürzt |
motionkit.py keyframes DATEI [--grep X] [--all] | Jeder animierte Parameter mit Keyframe-Zeiten/-Werten (Rotation in Radiant) |
motionkit.py preview DATEI --at 1.9 3.2 [--open] | Schreibt Kopien, die zu diesen Zeiten platziert sind; --open öffnet sie im Hintergrund in Motion (open -g) für einen app_screenshot |
motionkit.py install DATEI --name NAME | Kopiert ein Projekt in den Titelordner von Motion als FCP-Titelvorlage |
titles_fcpxml.py SPEZIFIKATION.json -o AUSGABE.fcpxml | Cue-Liste → FCPXML-Projekt mit Titeln zu den richtigen Zeiten und ausgefüllten Texten |
Die Vorlagen der Show
Installiert unter ~/Library/Containers/com.apple.motionapp/Data/Movies/Motion Templates.localized/Titles.localized/Templates/
(FCP-UID-Form: ~/Titles.localized/Templates/<Name>/<Name>.moti). Schnappschüsse der zwei
Hauptvorlagen liegen in agent-motion/*.motn.
- TF_Podcast_title: Haupttitelkarte, 5 s, 29,97, 1080p. Textebenen:
Tiersias Foundation Podcast(zeigt „Tiresias Foundation Podcast“; der Ebenenname hat einen Tippfehler, ihn weiterhin als Schlüssel verwenden) undEpisode 4: Carl Schmitt(die zeilenspezifische Zeile, Futura Medium). Veröffentlicht eine Drop Zone. - Citation v2: Unteres Drittel für Zitate und Quellen, PT Serif. Textebenen:
~Autor Nachname(kursiv; die Show stellt ein~voran),Person Schreibt Alberne Schlagzeile zu(Titel des Werks, kann zwei Zeilen umfassen),20. Apr. 1969(Datum),Veröffentlichung. - Citation v2 ohne Veröffentlichung: Gleiche Vorlage ohne die Veröffentlichungszeile. Ebenfalls Citation v1, Black/Orange/Yellow/PeeTitle, Minister_Types.
Bisherige Verwendung (aus den Podcast3/4-Bibliotheken): Timothy Snyder, Carl Schmitt, Xunzi,
~Eric L. Hutton, übers., ~Armando Iannucci, Reg., 95 U.S. 602. Übersetzer und
Regisseure erhalten einen Rollensuffix. Gerichtsfälle kommen in das Autorenfeld.
Arbeitsablauf
python3 agent-motion/motionkit.py inspect "<Vorlage>.moti", um die Textebenen-Schlüssel zu erhalten.- Schreibe eine Cue-JSON (siehe
agent-motion/examples/ep_demo.json): Vorlage,at(Sekunden auf der Episoden-Zeitachse), optionalduration,texts-Zuordnung. python3 agent-motion/titles_fcpxml.py cues.json -o titles.fcpxml, dann validieren:xmllint --noout --dtdvalid <Kopie von FCPXMLv1_11.dtd> titles.fcpxml. Die DTDs befinden sich in/Applications/Final Cut Pro.app/Contents/Frameworks/Interchange.framework/Versions/A/Resources/. Zuerst eine Kopie erstellen, da xmllint bei Pfaden mit Leerzeichen fehlschlägt.- Übergabe:
--library <Bündel> --pushhinzufügen (kein Klick erforderlich). Ohne--libraryzeigt FCP einen Bibliothekswähler an; dies dem Benutzer überlassen. Die Titel werden über einer Lücke verbunden platziert, sodass sie in den echten Schnitt kopiert werden können.
Für eine einmalige eingebrannte Karte (z. B. ein Thumbnail oder eine Karte mit einer Stiländerung, die FCP nicht
überschreiben kann) set-text auf der .motn verwenden und open -g -a Motion AUSGABE.motn für den Benutzer,
um sie zu begutachten oder zu exportieren.
Verifiziert in FCP 11.0.1 (2026-10-18)
- Nullklick-Import funktioniert:
titles_fcpxml.py cues.json -o x.fcpxml --library Pfad/Zu.fcpbundle --pushfügt<import-options>hinzu (Bibliotheksort, Assets verknüpfen, Warnungen unterdrücken) und sendet es mitopen -g. FCP importiert im Hintergrund und erstellt die Bibliothek, falls sie fehlt. Eine Wegwerf-Bibliothek unterscratch/fcp-test/für Tests verwenden und niemals die echten Bibliotheken des Benutzers ohne Nachfrage. <text>-Reihenfolge = Reihenfolge der Textebenen im Motion-Dokument. Bestätigt: Citation v2's Autor, Überschrift, Datum und Veröffentlichung landen alle in den richtigen Feldern.- Reinen Text senden (Standard
--style none). Dann behält die Vorlage ihre eigene Schriftart, Größe, Farbe und Schatten.--style fontsendet einetext-style-defmit Schriftfamilie/Schnitt/Größe. Jede Stildefinition überschreibt die Vorlage, und Ebenen ohneSize-Parameter (Motion-Standard 48) kamen winzig heraus, bevor der 48-Fallback hinzugefügt wurde.--style fontnur zur bewussten Neugestaltung verwenden. - Die Haupttitelkarte (TF_Podcast_title) wird mit ihrer Animation importiert.
- FCP-Zustand durch
app_screenshotaufcom.apple.FinalCutlesen: Auf das Ereignis klicken, dann auf das Projektsymbol im Browser (Doppelklick auf den Namen startet eine Umbenennung, also Escape drücken), dann auf das Lineal.
Anzeige und Rendering (verifiziert 2026-10-18)
- Vorschaubilder:
motionkit.py preview DATEI --at Z --open, dann Computer-Useapp_screenshotauf Motion (Bündelcom.apple.motionapp), dann auf die Leinwand zoomen. Das Fenster überapp_menu File > Closeschließen. Die Eingabe in das Playhead-Feld von Motion aus dem Hintergrund BEWEGT den Playhead NICHT. Die<currentFrame>-Kopie ist der zuverlässige Weg. - Rendering: Computer Use kann nicht auf File > Share klicken (Export Movie, Save Current Frame).
Den Benutzer bitten, auf Export zu klicken. Shell
screencapturefehlt die Bildschirmaufnahmeberechtigung. - Niemals
open -aohne-gverwenden. Der Benutzer arbeitet auf demselben Bildschirm.
Animation (was das XML preisgibt)
Keyframes sind curve > keypoint{Zeit, Wert, Eingangs-/Ausgangs-Tangenten} unter jedem Parameter
(Transform-Position/Rotation/Skalierung, Deckkraft, Filterparameter). Behaviors (Gather In,
Pen Speed/Pressure) sind eigene Knoten mit Timing- und Control-Parametern. So kann die gesamte
Choreografie gelesen, zeitlich neu angeordnet, verschoben oder programmatisch Keyframes hinzugefügt werden. Dann Vorschau und Screenshot zur Überprüfung.
TF_Podcast_title-Choreografie: Tiresias-Figuren (Gruppe 1/2) gleiten von ±400 px auf 1,5 s ein,
dann schwingen sie ±10 px / ±2° bis 4,87 s. Das Schlangenbildpaar erscheint bei 1,74 s (Skalierung 0,17→0,62 bei
2,1 s, maskiert durch abgerundete Rechtecke) und stößt zwischen Keyframes bei 2,1/3,17/4,14/4,87 s.
Die Titelzeile blendet bei 1,5–1,7 s mit Gather In ab 1,0 s ein, und die Episodenzeile führt Gather In bei 2,37 s aus.
ozml-Notizen
- Zeiten sind
"value timescale flags epoch"; Sekunden = value/timescale. - Textinhalt:
scenenode[factory=Text] > parameter[name=Object] > parameter[id=369] > text. Styling iststyleRun style=ID offset length, daher bricht eine Längenabweichung das Styling. - Fabriken oben ordnen
factoryID→ Art zu (Text, Shape, Replicator, Image...). Die IDs unterscheiden sich pro Datei, daher immer über die Fabriktabelle auflösen. - Apples (alte, immer noch meist korrekte) Referenz: Motion XML Guide im developer.apple.com-Archiv.