⚙️ A skill por dentro
Abra a tampa do motor. Aqui você vê as 5 fases que transformam o bruto no reel — do corte determinístico ao revisor em loop — e as comportas, scripts e regras de determinismo que garantem que cada etapa saia limpa e repetível.
As cinco caixas azuis são as fases, em ordem. A seta ciano tracejada de volta é o loop de qualidade: o revisor (Fase 5) reprova, o motor conserta e roda de novo, até passar.
Mapa da trilha
Conteúdo detalhado
⚙️ As 5 fases do motor
O caminho que o motor percorre do bruto ao reel — cinco fases, cada uma com sua comporta de qualidade.
O motor detecta os trechos de voz por energia de áudio (silencedetect) e remove silêncios, pausas, repetições e erros, ficando sempre com a última tomada de cada frase.
É a base: um corte previsível e sempre igual para a mesma entrada — nada de "achismo" no timing.
silencedetect, ilhota de voz, última tomada, determinismo.
O motor olha os fotogramas (via /watch), entende o conteúdo e propõe o opening, o tipo de B-roll e o ritmo — montando um plano de montagem (beat sheet).
É o que faz o tratamento se adaptar AO vídeo, em vez de aplicar sempre o mesmo molde.
/watch, tratamento, beat sheet, opening.
O Hyperframes monta as animações e o Firecrawl traz capturas reais de sites/repos. O cold open é obrigatório e nenhum trecho fica mais de 4s sem um golpe visual.
São as fases que dão o "nível pro": ritmo, credibilidade do real e um gancho logo no início.
Hyperframes, Firecrawl, cold open, regra dos 4s.
Efeitos sonoros sutis (whoosh, ching) entram sob a voz — por padrão sem música. Renderiza-se o arquivo e um QC automático caça lacunas e sobreposições, regenerando o que falhar.
SFX bem colocado "produz" o corte; o QC evita entregar um render com furo de sincronia.
SFX, render, QC, regeneração.
Um subagente limpo assiste ao render (via /watch) e dá um veredito PASS ou FAIL. Se FAIL, o motor corrige e repete o ciclo até passar.
É a última comporta antes de entregar — nada sai sem um olhar independente aprovar.
Revisor, subagente, PASS/FAIL, loop.
O revisor é um subagente que não viu como o vídeo foi montado. Ele julga só o resultado, sem o viés de quem construiu.
Quem monta tende a "não ver" os próprios erros; um olhar limpo pega o que o agente principal deixou passar.
Contexto limpo, viés do autor, verificação independente.
Três ideias que amarram a trilha: a comporta dura (verificação bloqueante), o beat sheet (plano de ritmo) e o loop de qualidade (repetir até passar).
Com esse vocabulário você entende por que o motor é confiável, não só "esperto".
Comporta dura, beat sheet, loop de qualidade.
🔧 Comportas, scripts e determinismo
Os scripts e regras que tornam cada fase determinística: mesma entrada, mesma saída, sempre.
O corte usa os limites exatos de silêncio do áudio, não os timestamps do Whisper (que têm jitter de ±0,2–0,3s). O script islands.py acha as ilhotas de voz.
Cortar pelo Whisper deixa restos de silêncio e meias-palavras; cortar pela energia é preciso.
silencedetect, jitter, ilhota, islands.py.
islands.py propõe o que manter (KEEP/DROP), cut.py monta o corte e verify-cut.py confere que ficou limpo — saindo com exit 0 quando passa.
É uma cadeia com checagem no fim: você não anima nada antes do corte passar.
KEEP/DROP, exit 0, comporta dura.
Um lint estático da timeline do Hyperframes: se houver mais de 4s sem um beat visual, ele acusa erro e não deixa renderizar.
A regra dos 4s deixa de ser intenção e vira verificação automática do ritmo.
Lint, beat visual, --max-gap, comporta de ritmo.
Gera "beats" de legenda de 2–3 palavras, sincronizados com a voz, com uma palavra-chave (que você passa em --keywords) pintada na sua cor de acento.
Legendas curtas e com destaque próprio evitam o "look-IA" de legendinha genérica.
Beat de legenda, keyword, área segura.
make-sfx.sh sintetiza a paleta de efeitos (whoosh, boom, ding…) sem baixar nada; mix-sfx.py sobrepõe cada efeito no tempo certo, por baixo da voz, com limitador.
SFX sintetizado é leve, livre de direitos e sempre igual — cabe no pipeline determinístico.
Paleta de SFX, eventos, ducking, limitador.
As animações não usam Math.random() nem Date.now(); nada de repeat infinito (repetições finitas calculadas); timelines em estado paused e registradas.
Só assim o mesmo projeto renderiza o mesmo frame toda vez — condição para lint e QC confiáveis.
Determinismo, repeat finito, paused, reprodutibilidade.