Communitygithub.com

akomlik/assemble-timeline

Führt einen genehmigten Cut Table (nach Benutzerbestätigung) entweder im FilmCraft MCP oder DaVinci Resolve Studio MCP aus, speichert das .fcproj/.drp-Projekt in Google Drive 04_Project_Catalog/YEAR/ und exportiert die MP4 nach ~/Movies/Exports/YEAR/.

Was ist assemble-timeline?

Diese Fähigkeit automatisiert die Timeline-Montage und -Überprüfung auf Basis eines genehmigten Cut Tables für FilmCraft und DaVinci Resolve Studio. Sie optimiert den Postproduktions-Workflow, indem sie Medienimport, Szenenplatzierung, Audio-Ducking, Bewegungseffekte (z. B. Ken Burns) und Mehrsprachen-Unterstützung nahtlos integriert. Der empfohlene und standardmäßige Modus ist die visuelle Live-Montage über die FilmCraft-Bridge (Port 9876), die eine sofortige visuelle Rückmeldung mit minimaler Latenz ermöglicht. Als Fallback steht eine Headless-Batch-Verarbeitung über ein Python-Skript zur Verfügung. Die Fähigkeit stellt eine präzise Einhaltung von Audio-Richtlinien sicher, wie z. B. das Ducking von Hintergrundmusik auf einen RMS-Pegel von -28,5 dB unter Sprache, den Verzicht auf Zeitdehnung bei Live-Dialogen und Voice-Over, sowie die obligatorische, synchronisierte Ausblendung am Ende. Unterstützt werden sowohl FilmCraft MCP als auch DaVinci Resolve Studio MCP, mit automatischer Projektspeicherung in Google Drive und MP4-Export in den Ordner ~/Movies/Exports/YEAR/.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/akomlik/antigravity-video-studio/tree/HEAD/.agents/skills/assemble-timeline

In Ihrer bevorzugten KI fragen

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

Dokumentation

Atomic MCP Timeline Assembly & Verification (/assemble-timeline)

Option A: FilmCraft MCP Execution (filmcraft MCP-Server – erfordert FilmCraft v0.17.0+)

1. Umgebungs- und Bridge-Überprüfung

  1. Führe zuerst python3 ./.agents/skills/assemble-timeline/scripts/check_filmcraft_env.py aus, um FilmCraft $≥$ v0.17.0 zu überprüfen, die automatische Synchronisation von filmcraft-cli mit FilmCraft.app sicherzustellen und neu hinzugefügte MCP-Befehle in 00_Archive_Indexes/filmcraft_capabilities.json zu erfassen.
  2. Stelle sicher, dass FilmCraft im Bridge-Modus läuft, wobei Caches nach ~/Movies/Cache_And_Previews umgeleitet werden:
    mkdir -p ~/Movies/Cache_And_Previews && cd ~/Movies/Cache_And_Previews
    open -a FilmCraft --args --control 9876
    

2. Live Visual Assembly Mode (Standard & empfohlen)

Das Live-Verfolgen der Timeline-Montage in der geöffneten FilmCraft-GUI fügt weniger als 1,5 Sekunden zur gesamten Socket-Ausführungszeit hinzu (Aufrufe dauern $< 20\text{ ms}$ über die lokale Bridge) und bietet sofortige visuelle Überprüfung:

  1. Leere Leinwand bei Sekunde 0 öffnen: Erstellt und öffnet sofort die leere .fcproj-Shell in FilmCraft über command_run ({"id": "file.open", "params": {"path": "<fcproj_path>"}}) oder sequence.new. Der Benutzer sieht seine leere 4K-Sequenz bei Sekunde 0 erscheinen.
  2. Gestreamter Medienimport: Rufe media_import mit den absoluten Dateipfaden aller ausgewählten Videoclips, Fotos, Archivmaterialien und ausgewählten 03_Audio_Library/01_Curated_BGM/-Tracks (A2) auf.
  3. Live Szenen-für-Szenen-Stream: Während jede Szene aus dem genehmigten Cut Table verarbeitet wird, werden command_batch-Aufrufe live über die 9876-Bridge gestreamt:
    • playhead.set: Bewegt den Abspielkopf zur Startzeit der Szene.
    • source.overwrite / timeline.insertClip: Platziert das visuelle Clip auf V1 (oder V2 für Overlays/PIP) und synchrones Audio auf A1.
    • motion.apply: Fügt Ken Burns EaseIn/EaseOut-Skalierungs- und Schwenk-Keyframes auf Standbilder ein (100% $ ightarrow$ 108%, oder 134% $ ightarrow$ 142% bei 4:3-Fotos, um Pillarbox-Beschneidung zu verhindern).
    • audio.append: Fügt Hintergrundmusik (A2) mit 1,5 s Einblendung und Anschwellen hinzu.
    • voiceover.insert: Fügt Sprachüberlagerungssegmente (A4) in die Live-Timeline ein, sobald jede Audiocue synthetisiert ist.
  4. Broadcast-Politur:
    • Same-Language Live Dialogue Honor Law: Platziere niemals A4-Sprachüberlagerung in Sprache $L$ über A1-Live-Kameradialog in derselben Sprache $L$ (EN VO respektiert live EN-Dialog; RU VO respektiert live RU-Dialog; UA VO respektiert live UA-Dialog). Wenn A4-VO einen Clip mit fremdsprachigem Kameradialog übersetzt (edition_lang != clip_dialog_lang), senke A1 um -12 dB während aktiver VO-Cues.
    • Natürliche 1.00x Sprachgeschwindigkeit, 1:1 V1 == A1 Lippen-Synchronizität und Gesetz des musikalischen Intros: Wende niemals atempo > 1.0 oder internes Pausenentfernen (stop_periods=-1) auf Live-Kamerasprechen (A1) oder synthetisierte Sprachüberlagerung (A4) an. Passe die Größe der sprechenden visuellen Schnitte (V1) immer so an, dass sie den vollständigen 1.00x gesprochenen Satz (src_in, dur) enthalten, sodass V1 und A1 1:1 in Frame-und-Sample-Synchronisation bleiben (geschnitten über atrim=start=...:end=...,asetpts=PTS-STARTPTS mit dynaudnorm=f=150:g=7:p=0.90, einmal nach amix angewendet) und niemals in nicht dazugehörige Szenen überlaufen. Beginne jede Timeline und jede gerenderte .mp4 immer mit einem 1,5s–2,0s langen Musikintro, bevor die erste Sprach-Cue startet.
    • RMS-kalibriertes Musik-Ducking (-28.5 dB Mittelwert unter Sprache): Messe die mean_volume jedes A2-Musiktracks über ffmpeg volumedetect (compute_bgm_ducked_gain_db) und setze gain_db = -28.5 - raw_mean_db, sodass das geduckte BGM bei einem Mittelwert von -28.5 dB liegt – ganze 12.5 dB leiser als normalisierte -16.0 dB Mittelwerte von Sprachüberlagerung und Live-Dialog, selbst bei heiß gemasterten, schwungvollen Tracks.
    • Markiere A4-Sprachüberlagerung und A1-Dialog als Dialogue (clarity.eqPreset: "Balanced Voice") und führe essentialSound.generateDucking (reduceDb: -6.0, fadeS: 0.45) auf A2 Music aus.
    • Wende einen nativen 1,5s bis 2,0s dip_to_black-Übergang auf das letzte visuelle Clip an.
    • Obligatorischer synchronisierter Outro-Audio-Fade: Der Master-Audioausgang ([fullout]) und die Musik auf A2 MÜSSEN einen synchronisierten 2,0s–2,5s Halbsinus-Ausblendung (afade=t=out:st=<TOTAL_DUR - FADE_DUR>:d=<FADE_DUR>:curve=hsin) ausführen, sodass alle Audiodaten (Musik, Kamera-Rauschen, SFX-Ausläufer) vollständige Stille (-infinity dB) beim oder vor dem letzten Frame erreichen. In .fcproj MUSS die Spur A2 einen EndAtCut-Audio-Fade-Übergang tragen (from: Some(clip.id), to: None, align: "EndAtCut"). Der Ton DARF NIEMALS abrupt enden.
    • Schreibe mehrsprachige Untertitelspuren in caption_tracks (C1) mit enabled: false (burnCaptions: false Standard).

3. Headless Batch Fallback (assemble_engine.py)

Wenn die FilmCraft-GUI nicht läuft oder der Bridge-Modus offline ist, wird die .fcproj direkt über assemble_engine.py in $< 1$ Sekunde zusammengestellt und das 4K-Master-MP4 über filmcraft-cli gerendert.

  • Repository Hygiene Rule: Halte .agents/skills/assemble-timeline/scripts/ strikt für universelle, projektunabhängige Engines reserviert (assemble_engine.py, gpx_widgets.py, generate_voiceover.py, check_filmcraft_env.py). Sollte jemals ein benutzerdefiniertes oder projektspezifisches Montageskript für ein bestimmtes Projekt erstellt werden, speichere es immer im git-ignorierten Katalogordner dieses Projekts (04_Project_Catalog/YEAR/<project_name>/) und niemals innerhalb von .agents/skills/.

4. Visuelle Überprüfung & Master-Render

  1. Rufe render_frame an drei Zeitstempeln (Akt 1 Intro, Mittelpunkt, Epilog) auf, um die Bildausschnitte zu bestätigen.
  2. Rendere das Master-4K-MP4 nach ~/Movies/Exports/YEAR/<project_name>.mp4.
  3. Falls mehrsprachige Editionen angefordert (option_b), remuxe mit lokalisierten Stämmen _UA.mp4 und _RU.mp4.

Option B: DaVinci Resolve Studio MCP Execution (davinci-resolve)

  1. Erstelle eine neue Timeline (1920x1080 oder 3840x2160, 29.97 fps, DaVinci YRGB Color Managed Rec.709).
  2. Importiere die ausgewählten Medien in einen Selects-Bin über media_pool, füge Clips an V1/V2/A1 und Musik an A2 über timeline_edit an, wende Cross Dissolve-Übergänge über transitions an, setze Ken Burns-Zoom-Keyframes über keyframes und stelle Audio-Ducking über audio/inspector ein.
  3. Rufe export_still an drei Zeitstempeln auf, um den Schnitt visuell zu überprüfen, exportiere ein .drp/.drt-Backup nach 04_Project_Catalog/YEAR/<project_name>/ und stelle das endgültige .mp4-Rendering nach ~/Movies/Exports/YEAR/ über render in die Warteschlange.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills