Communitygithub.com

akomlik/assemble-timeline

Exécute une Table de Montage approuvée (après confirmation de l'utilisateur) via le MCP FilmCraft ou DaVinci Resolve Studio MCP, sauvegarde le projet .fcproj/.drp dans Google Drive 04_Project_Catalog/YEAR/ et exporte la vidéo MP4 dans ~/Movies/Exports/YEAR/.

Qu'est-ce que assemble-timeline ?

Cette compétence assemble une timeline vidéo complète à partir d'une Table de Montage pré-approuvée, en se connectant soit au serveur MCP FilmCraft (v0.17.0+ en mode bridge) soit au serveur MCP DaVinci Resolve Studio. Elle exécute les opérations de montage image par image : ouverture d'un projet vierge, import des médias, placement des plans sur les pistes vidéo (V1/V2) et audio (A1/A2/A4), application d'effets (Ken Burns, transitions fondues, ducking audio RMS calibré à -28.5 dB), et respect des règles strictes de mixage et de synchronisation labiale. Une fois le montage terminé, elle sauvegarde le projet dans un dossier Google Drive organisé par année, et exporte la vidéo master MP4 4K dans un dossier local. Elle inclut également des vérifications d'environnement et une option de secours sans interface graphique via assemble_engine.py. La compétence est optimisée pour les workflows professionnels de post-production vidéo et prend en charge les éditions multilingues.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Assemblage et vérification de timeline MCP atomique (/assemble-timeline)

Option A : Exécution via FilmCraft MCP (serveur filmcraft — nécessite FilmCraft v0.17.0+)

1. Vérification de l'environnement et du bridge

  1. Exécutez d'abord python3 ./.agents/skills/assemble-timeline/scripts/check_filmcraft_env.py pour vérifier que FilmCraft $≥$ v0.17.0, synchroniser automatiquement filmcraft-cli avec FilmCraft.app, et signaler les nouvelles commandes MCP dans 00_Archive_Indexes/filmcraft_capabilities.json.
  2. Assurez-vous que FilmCraft est en mode bridge avec les caches redirigés vers ~/Movies/Cache_And_Previews :
    mkdir -p ~/Movies/Cache_And_Previews && cd ~/Movies/Cache_And_Previews
    open -a FilmCraft --args --control 9876
    

2. Mode d'assemblage visuel en direct (par défaut et recommandé)

Regarder la timeline s'assembler en direct dans l'interface graphique ouverte de FilmCraft n'ajoute que moins de 1,5 seconde au temps total d'exécution des sockets (les appels prennent $< 20\text{ ms}$ sur le bridge local) et fournit une vérification visuelle instantanée :

  1. Ouvrir un canevas vierge à la seconde 0 : Crée et ouvre immédiatement le shell .fcproj propre dans FilmCraft via command_run ({"id": "file.open", "params": {"path": "<fcproj_path>"}}) ou sequence.new. L'utilisateur voit sa séquence 4K vide apparaître à la seconde 0.
  2. Ingestion de médias en flux : Appelez media_import avec les chemins absolus de tous les plans vidéo sélectionnés, photos, imports d'archives et pistes 03_Audio_Library/01_Curated_BGM/ choisies (A2).
  3. Flux scène par scène en direct : Au fur et à mesure que chaque scène de la Table de Montage approuvée est traitée, diffusez les appels command_batch en direct sur le bridge 9876 :
    • playhead.set : Déplace la tête de lecture au timecode de début de scène.
    • source.overwrite / timeline.insertClip : Place le clip visuel sur V1 (ou V2 pour les incrustations/PIP) et l'audio synchrone sur A1.
    • motion.apply : Injecte les images clés d'échelle et de panoramique Ken Burns EaseIn/EaseOut sur les photos (100% $ ightarrow$ 108%, ou 134% $ ightarrow$ 142% sur les photos 4:3 pour éviter le recadrage en letterbox).
    • audio.append : Ajoute la musique de fond A2 avec fondu d'entrée de 1,5s et gonflements.
    • voiceover.insert : Insère les segments de voix off A4 sur la timeline en direct au fur et à mesure que chaque cue audio termine sa synthèse.
  4. Polissage broadcast :
    • Loi d'honneur du dialogue en direct dans la même langue : Ne placez jamais de voix off A4 dans une langue $L$ par-dessus le dialogue de caméra en direct A1 parlé dans cette même langue $L(la VOENhonore le dialogue en directEN; la VORUhonore le dialogue en directRU; la VOUAhonore le dialogue en directUA). Lorsque la VO A4 traduit un clip contenant le dialogue de caméra en langue étrangère (edition_lang != clip_dialog_lang), réduisez A1de-12 dB` pendant les cues VO actifs.
    • Loi de la vitesse de parole naturelle 1.00x, du lip-sync 1:1 V1 == A1 et de l'intro musicale : N'appliquez jamais atempo > 1.0 ni suppression interne des pauses (stop_periods=-1) à la parole de caméra en direct (A1) ni à la voix off synthétisée (A4). Dimensionnez toujours les plans visuels parlés (V1) pour qu'ils s'adaptent à la phrase parlée complète 1.00x (src_in, dur) afin que V1 et A1 restent verrouillés 1:1 en synchronisation image-échantillon (tranchés via atrim=start=...:end=...,asetpts=PTS-STARTPTS avec dynaudnorm=f=150:g=7:p=0.90 appliqué une fois après amix) et ne débordent jamais dans des scènes non liées. Commencez toujours chaque timeline et chaque .mp4 rendu par une intro musicale de 1,5s–2,0s avant que le premier cue de voix off ne démarre.
    • Ducking musical calibré RMS (moyenne -28,5 dB sous la parole) : Mesurez le mean_volume de chaque piste musicale A2 via ffmpeg volumedetect (compute_bgm_ducked_gain_db) et définissez gain_db = -28.5 - raw_mean_db pour que la musique atténuée se situe à une moyenne de -28,5 dB — soit un silence de 12,5 dB inférieur à la moyenne normalisée -16,0 dB de la voix off et du dialogue en direct, même sur les pistes entraînantes masterisées chaudes.
    • Étiquetez la voix off A4 et le dialogue A1 comme Dialogue (clarity.eqPreset: "Balanced Voice"), et exécutez essentialSound.generateDucking (reduceDb: -6.0, fadeS: 0.45) sur la musique A2.
    • Appliquez une transition native dip_to_black de 1,5s à 2,0s sur le clip visuel de fin.
    • Fondu de sortie audio synchronisé obligatoire : La sortie audio master ([fullout]) et la musique sur A2 DOIVENT exécuter un fondu de sortie sinusoïdal synchronisé de 2,0s–2,5s (afade=t=out:st=<TOTAL_DUR - FADE_DUR>:d=<FADE_DUR>:curve=hsin) afin que tout l'audio (musique, bruit de caméra, queues SFX) atteigne le silence complet (-infinity dB) au plus tard sur l'image finale. Dans .fcproj, la piste A2 DOIT porter une transition audio EndAtCut (from: Some(clip.id), to: None, align: "EndAtCut"). Le son ne doit JAMAIS s'arrêter brutalement.
    • Écrivez les pistes de sous-titres multilingues dans caption_tracks (C1) avec enabled: false (burnCaptions: false par défaut).

3. Solution de secours par lots sans interface (assemble_engine.py)

Si l'interface graphique de FilmCraft n'est pas en cours d'exécution ou si le mode bridge est hors ligne, assemblez automatiquement le .fcproj directement via assemble_engine.py en $< 1$ seconde et générez le master MP4 4K via filmcraft-cli.

  • Règle d'hygiène du dépôt : Conservez .agents/skills/assemble-timeline/scripts/ strictement réservé aux moteurs universels et indépendants du projet (assemble_engine.py, gpx_widgets.py, generate_voiceover.py, check_filmcraft_env.py). Si un script d'assemblage personnalisé ou spécifique à un projet est un jour créé pour un projet particulier, enregistrez-le toujours dans le dossier de catalogue ignoré par git de ce projet (04_Project_Catalog/YEAR/<project_name>/) et jamais dans .agents/skills/.

4. Vérification visuelle et rendu master

  1. Appelez render_frame à trois timestamps (introduction de l'acte 1, milieu, épilogue) pour confirmer le cadrage.
  2. Générez le master 4K MP4 vers ~/Movies/Exports/YEAR/<project_name>.mp4.
  3. Si des éditions multilingues sont demandées (option_b), remuxez avec les pistes localisées _UA.mp4 et _RU.mp4.

Option B : Exécution via DaVinci Resolve Studio MCP (davinci-resolve)

  1. Créez une nouvelle timeline (1920x1080 ou 3840x2160, 29,97 ips, DaVinci YRGB Color Managed Rec.709).
  2. Importez les médias sélectionnés dans un dossier Selects via media_pool, ajoutez les clips sur V1/V2/A1 et la musique sur A2 via timeline_edit, appliquez les transitions Cross Dissolve via transitions, définissez les images clés de zoom Ken Burns via keyframes, et réglez le ducking audio via audio / inspector.
  3. Appelez export_still à trois timestamps pour vérifier visuellement le montage, exportez une sauvegarde .drp/.drt vers 04_Project_Catalog/YEAR/<project_name>/, et placez le rendu final .mp4 dans la file d'attente vers ~/Movies/Exports/YEAR/ via render.

Individual skills in this repo

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

Skills associés