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
- Execute primeiro
python3 ./.agents/skills/assemble-timeline/scripts/check_filmcraft_env.pypara verificar se o FilmCraft está $≥$v0.17.0, sincronizar automaticamente ofilmcraft-clicom oFilmCraft.appe listar quaisquer novos comandos MCP em00_Archive_Indexes/filmcraft_capabilities.json. - 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:
- Abrir Tela em Branco no Segundo 0:
Imediatamente cria e abre a estrutura limpa do
.fcprojno FilmCraft viacommand_run({"id": "file.open", "params": {"path": "<fcproj_path>"}}) ousequence.new. O usuário vê sua sequência 4K vazia aparecer no Segundo 0. - Ingestão de Mídia em Fluxo Contínuo:
Chame
media_importcom os caminhos absolutos de todos os cortes de vídeo, fotos, material de arquivo e faixas de03_Audio_Library/01_Curated_BGM/(A2) selecionados. - Fluxo Cena por Cena ao Vivo:
Conforme cada cena da
Tabela de Cortesaprovada é processada, transmita chamadascommand_batchao 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 naV1(ouV2para sobreposições/PIP) e o áudio síncrono naA1.motion.apply: Injeta keyframes de escala e pan do Ken BurnsEaseIn/EaseOutem 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 fundoA2com fade-in de 1,5s e aumentos graduais.voiceover.insert: Insere segmentos de locuçãoA4na linha do tempo ao vivo assim que cada cue de áudio termina de ser sintetizada.
- Polimento Broadcast:
- Lei de Honra de Diálogo ao Vivo no Mesmo Idioma: Nunca coloque Locução
A4no idioma $L$ sobre diálogo de câmera ao vivoA1falado nesse mesmo idioma $L$ (locuçãoENhonra diálogo ao vivoEN; locuçãoRUhonra diálogo ao vivoRU; locuçãoUAhonra diálogo ao vivoUA). Quando a locuçãoA4traduz um clipe contendo diálogo de câmera em idioma estrangeiro (edition_lang != clip_dialog_lang), atenueA1em-12 dBdurante os trechos ativos de locução. - Lei de Velocidade de Fala Natural
1.00x, Sincronia Labial1:1 V1 == A1e Introdução Musical Inicial: Nunca apliqueatempo > 1.0ou 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 completa1.00x(src_in,dur) de modo queV1eA1permaneçam travados 1:1 em sincronia de quadro e amostra (cortados viaatrim=start=...:end=...,asetpts=PTS-STARTPTScomdynaudnorm=f=150:g=7:p=0.90aplicada uma vez apósamix) e nunca transbordem para cenas não relacionadas. Sempre inicie toda linha do tempo e.mp4renderizado com uma introdução musical de1,5s–2,0santes do primeiro trecho de locução começar. - Ducking de Música Calibrado por RMS (
-28,5 dBMédio Sob Fala): Meça omean_volumede cada faixa de músicaA2viaffmpeg volumedetect(compute_bgm_ducked_gain_db) e definagain_db = -28,5 - raw_mean_dbpara que o BGM atenuado fique em-28,5 dBmédio — um total de12,5 dBmais silencioso que a média normalizada de-16,0 dBda Locução e do Diálogo ao Vivo, mesmo em faixas animadas masterizadas com nível alto. - Marque a locução
A4e o diálogoA1comoDiálogo(clarity.eqPreset: "Balanced Voice") e executeessentialSound.generateDucking(reduceDb: -6,0,fadeS: 0,45) na MúsicaA2. - Aplique a transição nativa
dip_to_blackde 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 naA2DEVEM executar um fade de saída sincronizado de2,0s–2,5sem 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 faixaA2DEVE carregar uma transição de fade de áudioEndAtCut(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) comenabled: false(burnCaptions: falsepadrão).
- Lei de Honra de Diálogo ao Vivo no Mesmo Idioma: Nunca coloque Locuçã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
- Chame
render_frameem três timestamps (introdução do Ato 1, ponto médio, epílogo) para confirmar o enquadramento. - Renderize o mestre MP4 4K para
~/Movies/Exports/YEAR/<project_name>.mp4. - Se edições multilíngues forem solicitadas (
option_b), remuxe com os stems localizados_UA.mp4e_RU.mp4.
Opção B: Execução via DaVinci Resolve Studio MCP (davinci-resolve)
- Crie uma nova linha do tempo (
1920x1080ou3840x2160,29,97fps,DaVinci YRGB Color Managed Rec.709). - Importe a mídia selecionada para um bin
Selectsviamedia_pool, anexe clipes emV1/V2/A1e música emA2viatimeline_edit, aplique transiçõesCross Dissolveviatransitions, defina keyframes de zoom Ken Burns viakeyframese ajuste o ducking de áudio viaaudio/inspector. - Chame
export_stillem três timestamps para verificar visualmente o corte, exporte um backup.drp/.drtpara04_Project_Catalog/YEAR/<project_name>/e coloque na fila a renderização final do.mp4para~/Movies/Exports/YEAR/viarender.