Communitygithub.com

Montagem de Linha do Tempo Atômica e Verificação

Executa uma Tabela de Cortes aprovada (após confirmação do usuário) no FilmCraft MCP ou DaVinci Resolve Studio MCP, salva o projeto (.fcproj/.drp) no Google Drive 04_Project_Catalog/YEAR/ e exporta o MP4 para ~/Movies/Exports/YEAR/.

O que é Montagem de Linha do Tempo Atômica e Verificação?

Esta skill permite que um agente de IA monte e verifique uma linha do tempo de vídeo completa a partir de uma Tabela de Cortes aprovada, integrando-se diretamente com ferramentas de edição profissional como FilmCraft (via modo bridge) e DaVinci Resolve Studio (via MCP). Ela executa uma sequência de operações que incluem ingestão de mídia, colocação de clipes em faixas (V1, V2, A1, A2, A4), aplicação de efeitos como Ken Burns e ducking de áudio, e renderização final do mestre 4K. A skill prioriza a montagem visual ao vivo no FilmCraft para verificação instantânea, mas oferece um modo batch headless como fallback. Recursos avançados de pós-produção são implementados, como ducking de música calibrado por RMS (-28.5 dB médio sob fala), fade de saída sincronizado obrigatório, e leis de honra de diálogo ao vivo para evitar sobreposição de locução em línguas correspondentes. Tudo isso resulta em um fluxo de trabalho automatizado de ponta a ponta, do corte à exportação, com backups no Google Drive e suporte a edições multilíngues.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Montagem Atômica da Linha do Tempo e Verificação (/assemble-timeline)

Opção A: Execução via FilmCraft MCP (servidor filmcraft MCP — Requer FilmCraft v0.17.0+)

1. Verificação do Ambiente e da Ponte

  1. Execute primeiro python3 ./.agents/skills/assemble-timeline/scripts/check_filmcraft_env.py para verificar se o FilmCraft está $≥$ v0.17.0, sincronizar automaticamente o filmcraft-cli com o FilmCraft.app e listar quaisquer novos comandos MCP em 00_Archive_Indexes/filmcraft_capabilities.json.
  2. Certifique-se de que o FilmCraft está executando em modo bridge com os caches direcionados para ~/Movies/Cache_And_Previews:
    mkdir -p ~/Movies/Cache_And_Previews && cd ~/Movies/Cache_And_Previews
    open -a FilmCraft --args --control 9876
    

2. Modo de Montagem Visual ao Vivo (Padrão e Recomendado)

Assistir à linha do tempo sendo montada ao vivo na interface gráfica aberta do FilmCraft adiciona menos de 1,5 segundos ao tempo total de execução do socket (as chamadas levam $< 20 ext{ ms}$ sobre a ponte local) e fornece verificação visual instantânea:

  1. Abrir Tela em Branco no Segundo 0: Imediatamente cria e abre a estrutura limpa do .fcproj no FilmCraft via command_run ({"id": "file.open", "params": {"path": "<fcproj_path>"}}) ou sequence.new. O usuário vê sua sequência 4K vazia aparecer no Segundo 0.
  2. Ingestão de Mídia em Fluxo Contínuo: Chame media_import com os caminhos absolutos de todos os cortes de vídeo, fotos, material de arquivo e faixas de 03_Audio_Library/01_Curated_BGM/ (A2) selecionados.
  3. Fluxo Cena por Cena ao Vivo: Conforme cada cena da Tabela de Cortes aprovada é processada, transmita chamadas command_batch ao vivo pela ponte 9876:
    • playhead.set: Move o playhead para o timecode de início da cena.
    • source.overwrite / timeline.insertClip: Coloca o clipe visual na V1 (ou V2 para sobreposições/PIP) e o áudio síncrono na A1.
    • motion.apply: Injeta keyframes de escala e pan do Ken Burns EaseIn/EaseOut em imagens estáticas (100% $ ightarrow$ 108%, ou 134% $ ightarrow$ 142% em fotos 4:3 para evitar corte de letterbox).
    • audio.append: Insere música de fundo A2 com fade-in de 1,5s e aumentos graduais.
    • voiceover.insert: Insere segmentos de locução A4 na linha do tempo ao vivo assim que cada cue de áudio termina de ser sintetizada.
  4. Polimento Broadcast:
    • Lei de Honra de Diálogo ao Vivo no Mesmo Idioma: Nunca coloque Locução A4 no idioma $L$ sobre diálogo de câmera ao vivo A1 falado nesse mesmo idioma $L$ (locução EN honra diálogo ao vivo EN; locução RU honra diálogo ao vivo RU; locução UA honra diálogo ao vivo UA). Quando a locução A4 traduz um clipe contendo diálogo de câmera em idioma estrangeiro (edition_lang != clip_dialog_lang), atenue A1 em -12 dB durante os trechos ativos de locução.
    • Lei de Velocidade de Fala Natural 1.00x, Sincronia Labial 1:1 V1 == A1 e Introdução Musical Inicial: Nunca aplique atempo > 1.0 ou remoção interna de pausas (stop_periods=-1) na fala de câmera ao vivo (A1) ou na Locução sintetizada (A4). Sempre dimensione os cortes visuais de fala (V1) para caber na sentença falada completa 1.00x (src_in, dur) de modo que V1 e A1 permaneçam travados 1:1 em sincronia de quadro e amostra (cortados via atrim=start=...:end=...,asetpts=PTS-STARTPTS com dynaudnorm=f=150:g=7:p=0.90 aplicada uma vez após amix) e nunca transbordem para cenas não relacionadas. Sempre inicie toda linha do tempo e .mp4 renderizado com uma introdução musical de 1,5s–2,0s antes do primeiro trecho de locução começar.
    • Ducking de Música Calibrado por RMS (-28,5 dB Médio Sob Fala): Meça o mean_volume de cada faixa de música A2 via ffmpeg volumedetect (compute_bgm_ducked_gain_db) e defina gain_db = -28,5 - raw_mean_db para que o BGM atenuado fique em -28,5 dB médio — um total de 12,5 dB mais silencioso que a média normalizada de -16,0 dB da Locução e do Diálogo ao Vivo, mesmo em faixas animadas masterizadas com nível alto.
    • Marque a locução A4 e o diálogo A1 como Diálogo (clarity.eqPreset: "Balanced Voice") e execute essentialSound.generateDucking (reduceDb: -6,0, fadeS: 0,45) na Música A2.
    • Aplique a transição nativa dip_to_black de 1,5s a 2,0s no clipe visual final.
    • Fade de Saída de Áudio Sincronizado Obrigatório: A saída de áudio mestre ([fullout]) e a música na A2 DEVEM executar um fade de saída sincronizado de 2,0s–2,5s em meia onda senoidal (afade=t=out:st=<TOTAL_DUR - FADE_DUR>:d=<FADE_DUR>:curve=hsin) para que todo o áudio (música, ruído de câmera, caudas de SFX) atinja o silêncio completo (-infinity dB) no quadro final ou antes. No .fcproj, a faixa A2 DEVE carregar uma transição de fade de áudio EndAtCut (from: Some(clip.id), to: None, align: "EndAtCut"). O som NUNCA deve ser cortado abruptamente.
    • Escreva faixas de legenda multilíngue em caption_tracks (C1) com enabled: false (burnCaptions: false padrão).

3. Fallback Batch Headless (assemble_engine.py)

Se a GUI do FilmCraft não estiver em execução ou o modo bridge estiver offline, monte automaticamente o .fcproj diretamente via assemble_engine.py em $< 1$ segundo e renderize o mestre MP4 4K via filmcraft-cli.

  • Regra de Higiene do Repositório: Mantenha .agents/skills/assemble-timeline/scripts/ estritamente reservado para motores universais e independentes de projeto (assemble_engine.py, gpx_widgets.py, generate_voiceover.py, check_filmcraft_env.py). Se algum script de montagem customizado ou específico para um projeto for criado, salve-o sempre dentro da pasta de catálogo ignorada pelo git desse projeto (04_Project_Catalog/YEAR/<project_name>/) e nunca dentro de .agents/skills/.

4. Verificação Visual e Renderização do Mestre

  1. Chame render_frame em três timestamps (introdução do Ato 1, ponto médio, epílogo) para confirmar o enquadramento.
  2. Renderize o mestre MP4 4K para ~/Movies/Exports/YEAR/<project_name>.mp4.
  3. Se edições multilíngues forem solicitadas (option_b), remuxe com os stems localizados _UA.mp4 e _RU.mp4.

Opção B: Execução via DaVinci Resolve Studio MCP (davinci-resolve)

  1. Crie uma nova linha do tempo (1920x1080 ou 3840x2160, 29,97 fps, DaVinci YRGB Color Managed Rec.709).
  2. Importe a mídia selecionada para um bin Selects via media_pool, anexe clipes em V1/V2/A1 e música em A2 via timeline_edit, aplique transições Cross Dissolve via transitions, defina keyframes de zoom Ken Burns via keyframes e ajuste o ducking de áudio via audio / inspector.
  3. Chame export_still em três timestamps para verificar visualmente o corte, exporte um backup .drp/.drt para 04_Project_Catalog/YEAR/<project_name>/ e coloque na fila a renderização final do .mp4 para ~/Movies/Exports/YEAR/ via render.

Individual skills in this repo

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

Habilidades Relacionadas