Comfy Director
História primeiro, imagens depois. Filmes de IA com múltiplas tomadas falham na edição, não na renderização: batidas que não se causam mutuamente são lidas como uma montagem vestida de história, não importa quão boa seja cada cena.
CONTEXTO OBRIGATÓRIO: a skill comfy (mecânica da CLI + o caminho de receitas — apply/capture/foreach — para gráficos reutilizáveis de múltiplos estágios). Em qualquer trabalho com falha, use comfy-debug.
Ordem das operações
- Conceito — uma ideia que um estranho possa recontar.
- Roteiro — antes de tocar no pipeline. Entregue-o ao usuário primeiro.
- Lista de tomadas — cada cena mapeada para uma estratégia de continuidade.
- Design de áudio — baseado nas batidas emocionais do roteiro, não depois da imagem.
- Produzir → conformar → CQ.
Pular a etapa 2 e ir direto para as renderizações é a causa nº 1 de cortes descartados.
Regras do roteiro
- Um protagonista que a câmera possa seguir. Reconhecível em cada tomada.
- Teste de causalidade: cada corte responde "e POR CAUSA DISSO…" — nunca "e então, em outro lugar…". Se uma batida puder ser reordenada sem quebrar nada, ainda não é uma história.
- Teste do estranho: alguém sem contexto deve recontar a trama em duas frases ("X queria A, B o impediu, ele fez C, então D").
- Batidas carregam tempos que somam a duração alvo.
Regras do conceito
- A marca/produto é sentido, não nomeado: defenda sua filosofia; piadas internas e lore da comunidade citados na tela são lidos como fan-service.
- Uma técnica que o cliente menciona ("transferência de estilo", um nome de modelo) é uma centelha, não uma ordem — use-a apenas se a ideia precisar. Construir o filme em torno de uma técnica é a marca de um fornecedor, não de um diretor.
- A estranheza deve se compor: sujeito E objeto E cenário surpreendentes. Um elemento estranho em um quadro normal é decoração.
Gerando tomadas
- Tomadas fotorrealistas: linguagem de cinegrafista/película de ação ao vivo APENAS. Um nome de ilustrador/anime/mangá em um prompt fotorrealista o envenena. Referências ilustradas pertencem apenas a tomadas deliberadamente estilizadas.
- Prompts de movimento descrevem COMO a cena se move, não o que está nela (veja as armadilhas de vídeo da skill
comfy— armadilhas de modelos t2v/i2v, SaveVideo, configuração de fps).
Kit de ferramentas de continuidade
Escolha por tomada, em ordem aproximada de força:
| Estratégia | Use para |
|---|---|
| Imagem de referência de personagem/local levada para cada gráfico i2v da tomada | identidade do protagonista |
| Mesma identidade, novos enquadramentos via edição de imagem de referência (um herói → N ângulos) | rosto reconhecível entre cortes |
| Keyframe da tomada N sela a tomada N+1 (restilo ou quadro final com referência de imagem) | ação contígua |
| Cabeça falante alimentada com o ÁUDIO EXATO que toca (KlingAvatar), corte entre ângulos da mesma cabeça com sincronia labial — nunca B-roll sobre o VO | diálogo que deve parecer real |
| Linhas de guarda-roupa/luz/lente repetidas textualmente em cada prompt | cola barata de linha de base |
Se uma tomada não puder manter a continuidade, reescreva o roteiro para que não precise dessa tomada — não entregue a quebra.
Áudio
- Trilha sonora = pequenas cues desenhadas unidas nos pivôs da história; uma longa geração não seguirá um arco dinâmico (ela inverte exatamente onde você precisa do pico).
- Posicione o VO por matemática: duração do stem vs janela da batida, antes da mixagem.
- Reduza a trilha sob o VO; normalizado o loudness da mixagem final (~-14 LUFS).
- Diálogo deve ter sincronia labial por construção. Dirija a boca a partir do áudio exato que toca (
sound_filedo KlingAvatar) e corte entre ângulos da mesma cabeça com sincronia labial — B-roll sobre um VO contínuo é lido como montagem, e bocas inventadas por i2v derivam. "Sem sincronia labial / não parece real" é a rejeição clássica. (Gere áudio no gráfico —LoadAudioda nuvem não vê uploads; veja as armadilhas de áudio docomfy.) - Trave a voz e o elenco pelo OUVIDO antes das renderizações caras. Voz/sotaque é subjetivo e ilegível a partir de uma forma de onda — renderize algumas tomadas baratas de TTS candidatas de uma linha, peça ao usuário para escolher, DEPOIS incorpore a vencedora nas tomadas caras e propensas a
transient_authde avatar/sincronia labial. Re-renderizar todas elas com uma voz rejeitada é a queima evitável. Mesma lógica para a aparência do protagonista: aprove o still do herói antes de gerar cada tomada a partir dele. - Verifique a mixagem por medição, não por fé. Você não consegue ouvir a renderização — use
ffmpeg volumedetectem cada seção: um final "silêncio morto" ou uma linha enterrada aparece como uma janela perto de -91 dB. Confirme que cada batida está presente no nível antes de declarar como concluída.
Operações de produção
- ANEXE CADA envio — tomadas, keyframes, stems de áudio, reenvios — a
job_ids.txt(<nome_do_job> <id_do_prompt>) no momento do envio. Apenas anexe: um reenvio ganha uma nova linha (shot_s3_resubmit <id>), nunca uma sobrescrita, para que prompt_ids mortos mantenham sua identidade de tomada. - Mantenha
LOG.mdna raiz do projeto: um log de eventos apenas anexado, escrito no momento do evento, não no fim da sessão — uma linha por envio/reenvio (+ código de falha), por veredito de CQ (+ motivo de re-roll), e por decisão que invalida trabalho anterior: reescalações, mudanças de prompt, qual imagem de referência ou stem agora é canônico. Descobertas quadro a quadro ficam emqc/QC_LOG.md;LOG.mdas indexa.
17:36 ERROR shot_s3 transient_auth -> RESUBMIT 27dd45b4 (mesmo workflow, sem re-login)
17:44 QC shot_s2 FAIL background-crawl -> re-roll (mesmo kf, nova seed); recortar batida se 2ª falhar
17:50 DECISION reescalar protagonista -> ref_ray.png canônico; vo2, vo6 obsoletos, re-gerar
- Contrato de recuperação: um agente sucessor com memória zero deve retomar apenas a partir do disco:
LOG.md(o que aconteceu, por quê) →job_ids.txt(quais jobs) →comfy jobs status(seus estados). Uma decisão que não está emLOG.mdmorre com a sessão — jobs concluídos mas obsoletos (stems de VO de um elenco antigo) parecem idênticos aos bons. - ffprobe cada clipe baixado; normalize duração/dimensões fora do padrão antes de conformar.
- CQ um quadro de cada clipe contra o roteiro antes de cortar.
- Duração exata: apare/corte por batida no ffmpeg, não confie na sorte.
Erros comuns (cada um matou um corte real)
| Erro | Resultado |
|---|---|
| Renderizações antes do roteiro | "Oito batidas bonitas que não se causam" |
| Lore da comunidade na tela | "Muito direto, fan-service" |
| Técnica mencionada pelo cliente como conceito | "Eu disse para gerar ideias" |
| Sem plano de continuidade | Protagonista muda de rosto a cada corte |
| Uma geração de música de 40s | O arco inverte no clímax |
| B-roll sobre um VO contínuo | "Parece montagem / áudio não combina" |
| Voz fixada em N tomadas antes do usuário ouvir | Re-renderizar tudo quando ele rejeitar |
| Clipes de cabeça falante unidos sem corte | Voz sai do sync (avatar expande vídeo além do áudio) |