Communitygithub.com

akomlik/assemble-timeline

Ejecuta una tabla de cortes aprobada (tras la confirmación del usuario) en FilmCraft MCP o DaVinci Resolve Studio MCP, guarda el proyecto .fcproj/.drp en Google Drive 04_Project_Catalog/YEAR/ y exporta el MP4 a ~/Movies/Exports/YEAR/.

¿Qué es assemble-timeline?

Esta habilidad ensambla automáticamente una línea de tiempo de vídeo completa a partir de una tabla de cortes aprobada (Cut Table) después de que el usuario confirme con 'OK'. Soporta dos plataformas de edición: FilmCraft MCP (v0.17.0+, con modo puente para ensamblaje visual en vivo) y DaVinci Resolve Studio MCP. El flujo de trabajo incluye verificar el entorno, importar medios, construir escena por escena la línea de tiempo (aplicando transiciones, zooms Ken Burns, audio sincronizado y ducking), añadir pistas de voz y música de fondo con reglas precisas de manejo de idiomas y calibración RMS, y finalizar con transiciones de salida y fundido de audio. Finalmente, exporta el proyecto en formato nativo (.fcproj/.drp) a Google Drive y un máster MP4 4K a la carpeta local de exports. También incluye un modo de respaldo headless para ensamblaje rápido sin la GUI.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Ensamblaje y verificación de línea de tiempo MCP atómica (/assemble-timeline)

Opción A: Ejecución con FilmCraft MCP (servidor filmcraft MCP — Requiere FilmCraft v0.17.0+)

1. Verificación del entorno y del puente

  1. Ejecuta primero python3 ./.agents/skills/assemble-timeline/scripts/check_filmcraft_env.py para verificar que FilmCraft sea $ ge$ v0.17.0, sincronizar automáticamente filmcraft-cli con FilmCraft.app y detectar cualquier comando MCP nuevo añadido en 00_Archive_Indexes/filmcraft_capabilities.json.
  2. Asegúrate de que FilmCraft se esté ejecutando en modo puente con las cachés dirigidas a ~/Movies/Cache_And_Previews:
    mkdir -p ~/Movies/Cache_And_Previews && cd ~/Movies/Cache_And_Previews
    open -a FilmCraft --args --control 9876
    

2. Modo de ensamblaje visual en vivo (predeterminado y recomendado)

Ver cómo se ensambla la línea de tiempo en vivo en la GUI abierta de FilmCraft añade menos de 1,5 segundos al tiempo total de ejecución del socket (las llamadas tardan $< 20\text{ ms}$ sobre el puente local) y proporciona verificación visual instantánea:

  1. Abrir lienzo vacío en el segundo 0: Crea y abre inmediatamente el shell .fcproj limpio en FilmCraft mediante command_run ({"id": "file.open", "params": {"path": "<ruta_fcproj>"}}) o sequence.new. El usuario ve su secuencia vacía 4K aparecer en el segundo 0.
  2. Ingesta de medios en flujo: Llama a media_import con las rutas absolutas de todos los cortes de vídeo seleccionados, fotos, material de archivo y las pistas elegidas de 03_Audio_Library/01_Curated_BGM/ (A2).
  3. Flujo escena por escena en vivo: A medida que se procesa cada escena de la tabla de cortes aprobada, se transmiten llamadas command_batch en vivo a través del puente 9876:
    • playhead.set: Mueve el cabezal de reproducción al timecode de inicio de la escena.
    • source.overwrite / timeline.insertClip: Coloca el clip visual en V1 (o V2 para superposiciones/PIP) y el audio síncrono en A1.
    • motion.apply: Inyecta keyframes de escala y paneo Ken Burns EaseIn/EaseOut en las imágenes fijas (100% $ rightarrow$ 108%, o 134% $ rightarrow$ 142% en fotos 4:3 para evitar el recorte de pillarbox).
    • audio.append: Coloca la música de fondo A2 con fundido de entrada de 1,5 s y aumentos.
    • voiceover.insert: Coloca los segmentos de voz en off A4 en la línea de tiempo en vivo a medida que cada señal de audio termina de sintetizarse.
  4. Pulido de emisión:
    • Ley de respeto al diálogo en vivo en el mismo idioma: Nunca coloques voz en off A4 en el idioma $L$ sobre el diálogo de cámara en vivo A1 hablado en ese mismo idioma $L (ENVO respeta el diálogo en vivoEN; RUVO respeta el diálogo en vivoRU; UAVO respeta el diálogo en vivoUA). Cuando la voz en off A4 traduzca un clip que contenga diálogo de cámara en idioma extranjero (edition_lang != clip_dialog_lang), atenúa A1en-12 dB` durante las señales de voz en off activas.
    • Ley de velocidad de habla natural 1.00x, sincronía labial 1:1 V1 == A1 e introducción musical de apertura: Nunca apliques atempo > 1.0 ni eliminación interna de pausas (stop_periods=-1) al discurso de cámara en vivo (A1) ni a la voz en off sintetizada (A4). Siempre dimensiona los cortes visuales de habla (V1) para que se ajusten a la oración hablada completa a 1.00x (src_in, dur) de modo que V1 y A1 permanezcan bloqueados en sincronía 1:1 de fotograma y muestra (cortados mediante atrim=start=...:end=...,asetpts=PTS-STARTPTS con dynaudnorm=f=150:g=7:p=0.90 aplicado una vez después de amix) y nunca se desborden hacia escenas no relacionadas. Siempre comienza cada línea de tiempo y .mp4 renderizado con una introducción musical de 1.5s–2.0s antes de que comience la primera señal de voz en off.
    • Atenuación de música calibrada por RMS (-28.5 dB de media bajo el habla): Mide el mean_volume de cada pista de música A2 mediante ffmpeg volumedetect (compute_bgm_ducked_gain_db) y establece gain_db = -28.5 - raw_mean_db para que la música atenuada se sitúe en una media de -28.5 dB — Joh 12.5 dB más silenciosa que la voz en off y el diálogo en vivo con media normalizada de -16.0 dB, incluso en pistas animadas masterizadas calientes.
    • Etiqueta la voz en off A4 y el diálogo A1 como Dialogue (clarity.eqPreset: "Balanced Voice"), y ejecuta essentialSound.generateDucking (reduceDb: -6.0, fadeS: 0.45) en la música A2.
    • Aplica la transición nativa dip_to_black de 1,5 s a 2,0 s al clip visual de cierre.
    • Fundido de salida de audio sincronizado obligatorio: La salida de audio maestra ([fullout]) y la música en A2 DEBEN ejecutar un fundido de salida sincronizado de 2.0s–2.5s en media onda sinusoidal (afade=t=out:st=<DURACIÓN_TOTAL - DUR_FUNDIDO>:d=<DUR_FUNDIDO>:curve=hsin) para que todo el audio (música, ruido de cámara, colas de efectos de sonido) alcance el silencio completo (-infinity dB) en el fotograma final o antes. En .fcproj, la pista A2 DEBE llevar una transición de fundido de audio EndAtCut (from: Some(clip.id), to: None, align: "EndAtCut"). El sonido NUNCA debe cortarse abruptamente.
    • Escribe pistas de subtítulos multilingües en caption_tracks (C1) con enabled: false (burnCaptions: false por defecto).

3. Respaldo de procesamiento por lotes sin interfaz gráfica (assemble_engine.py)

Si la GUI de FilmCraft no se está ejecutando o el modo puente está desconectado, ensambla automáticamente el .fcproj directamente mediante assemble_engine.py en $< 1$ segundo y renderiza el máster 4K MP4 mediante filmcraft-cli.

  • Regla de higiene del repositorio: Mantén .agents/skills/assemble-timeline/scripts/ estrictamente reservado para motores universales e independientes del proyecto (assemble_engine.py, gpx_widgets.py, generate_voiceover.py, check_filmcraft_env.py). Si alguna vez se crea un script de ensamblaje personalizado o específico para un proyecto en particular, guárdalo siempre dentro de la carpeta de catálogo ignorada por git de ese proyecto (04_Project_Catalog/YEAR/<nombre_del_proyecto>/) y nunca dentro de .agents/skills/.

4. Verificación visual y renderizado del máster

  1. Llama a render_frame en tres marcas de tiempo (introducción del acto 1, punto medio, epílogo) para confirmar el encuadre.
  2. Renderiza el máster 4K MP4 en ~/Movies/Exports/YEAR/<nombre_del_proyecto>.mp4.
  3. Si se solicitaron ediciones multilingües (option_b), reempaqueta con las pistas localizadas _UA.mp4 y _RU.mp4.

Opción B: Ejecución con DaVinci Resolve Studio MCP (davinci-resolve)

  1. Crea una nueva línea de tiempo (1920x1080 o 3840x2160, 29.97 fps, DaVinci YRGB Color Managed Rec.709).
  2. Importa el material seleccionado en un contenedor Selects mediante media_pool, añade clips a V1/V2/A1 y música a A2 mediante timeline_edit, aplica transiciones Cross Dissolve mediante transitions, establece keyframes de zoom Ken Burns mediante keyframes y configura la atenuación de audio mediante audio / inspector.
  3. Llama a export_still en tres marcas de tiempo para verificar visualmente el corte, exporta una copia de seguridad .drp/.drt a 04_Project_Catalog/YEAR/<nombre_del_proyecto>/ y encola el renderizado final .mp4 en ~/Movies/Exports/YEAR/ mediante render.

Individual skills in this repo

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

Skills relacionados