A fábrica de vídeo com agentes|INEMA.CLUB-PRO

Aula 5 · 18 min

Shorts com portão de qualidade: gancho, corte 9:16 e QA

Short que perde os três primeiros segundos não tem segunda chance. O MakeShorts põe dois portões no caminho: um no roteiro, que mede o gancho antes de gravar, e um no vídeo, que mede formato, som e tela parada antes de publicar. Nesta aula você passa e reprova nos dois, com arquivos de ensaio.

Começar a aula
Celular preso na vertical num suporte de mesa mostrando um quadro desfocado, ao lado de um monitor com uma linha do tempo de clipes curtos.

Nesta aula você vai

  1. 1As três camadas do gancho: frase, cena e texto no quadro zero
  2. 2O portão do roteiro: gancho curto, abertura proibida, palavra-chave no começo
  3. 3O portão do vídeo: 1080×1920, 30 fps, h264/aac, −14 LUFS, sem tela preta
  4. 4O cardshorts: short de cartões narrado, cinco estilos

Objetivo: escrever um gancho que passa no portão do roteiro e reprovar ou aprovar um vídeo 9:16 com o QA do makeshorts.

01Os dois portões de um short

Clique em cada etapa.

Clique em cada bloco do diagrama para ver o que ele faz.

makeshorts no commit 52eb799, contrato de QA 1.2.1.

02O gancho em três camadas

Escreva as três antes de gravar e confira se cada uma se sustenta sozinha.

1. Frase

O que você diz nos primeiros dois segundos. Entra direto, com o mínimo de contexto: nada de apresentação.

Exemplo"Seu vídeo morre nos três primeiros segundos."

03O portão do roteiro

Dois roteiros do kit: um que passa e um que reprova. A palavra-chave é "gancho".

Arquivo · kit/exemplos/a5-roteiros/fraco.md
# Roteiro fraco
### FALA
Olá pessoal, hoje eu vou mostrar para vocês uma coisa muito interessante sobre como fazer vídeos curtos que prendem a atenção das pessoas. O gancho tem três camadas: a frase, a cena e o texto. Fica até o fim que no final eu conto o segredo.
Terminal · conferir os roteiros
K=~/projetos/formacao-cinema-ia-fabrica-v72/kit
cd ${TMPDIR:-/tmp}/ensaio-fabrica/a5; Q=makeshorts/.claude/skills/makeshorts/scripts
python3 $Q/qa_roteiro.py "$K/exemplos/a5-roteiros/bom.md" --keyword gancho > bom.txt; echo "bom: $?"
python3 $Q/qa_roteiro.py "$K/exemplos/a5-roteiros/fraco.md" --keyword gancho > fraco.txt; echo "fraco: $?"
grep -hE "❌|RESULTADO" bom.txt fraco.txt
Exemplo do repositório
bom: 0
fraco: 1
RESULTADO: APROVADO (falta: teste da lacuna, tese, fontes — revisão humana)
  ❌ gancho (palavras)        23 palavras: “Olá pessoal, hoje eu vou mostrar para vocês uma coisa muito interessante sobre c” (máx. 9)
  ❌ abertura proibida        começa com “ola”
  ❌ palavra-chave no início  “gancho” fora das primeiras 15 palavras (≈ 5 s)
RESULTADO: REPROVADO

O APROVADO do roteiro avisa o que a máquina não mede: se o gancho abre uma lacuna, se a tese toma lado, se os fatos têm fonte. Isso é com você.

04O portão do vídeo

O bloco clona o makeshorts num commit fixo, faz um vídeo de ensaio de 20 s em 1080×1920 com som normalizado e roda o QA no perfil divulgação.

Terminal · QA de um short de ensaio
E=${TMPDIR:-/tmp}/ensaio-fabrica/a5; rm -rf "$E"; mkdir -p "$E"; cd "$E"
git clone -q https://github.com/inematds/makeshorts.git && git -C makeshorts checkout -q 52eb799
Q=makeshorts/.claude/skills/makeshorts/scripts
ffmpeg -v error -f lavfi -i "testsrc2=s=1080x1920:r=30:d=20" -f lavfi -i "sine=f=220:d=20" \
  -af loudnorm=I=-14:TP=-2:LRA=7 -ar 48000 -c:v libx264 -pix_fmt yuv420p -c:a aac -shortest ensaio-916.mp4
python3 $Q/qa_short.py ensaio-916.mp4 --profile divulgacao > qa.txt; echo "saída: $?"
grep -E "^(✅|⚠️|❌)|RESULTADO" qa.txt
Terminal · o mesmo QA num vídeo 16:9
cd ${TMPDIR:-/tmp}/ensaio-fabrica/a5; Q=makeshorts/.claude/skills/makeshorts/scripts
ffmpeg -v error -y -f lavfi -i "testsrc2=s=1920x1080:r=30:d=20" -f lavfi -i "sine=f=220:d=20" \
  -af loudnorm=I=-14:TP=-2:LRA=7 -ar 48000 -c:v libx264 -pix_fmt yuv420p -c:a aac -shortest ensaio-169.mp4
python3 $Q/qa_short.py ensaio-169.mp4 --profile divulgacao > qa169.txt; echo "saída: $?"
grep -E "^❌|RESULTADO" qa169.txt
Exemplo do repositório
saída: 0
✅ duração                  20.0s
✅ formato                  1080x1920
✅ fps                      30.00
✅ codec vídeo              h264
✅ codec áudio              aac
✅ loudness                 -13.9 LUFS
✅ sem tela preta inicial   imagem desde o frame 0
✅ frame 0 (informação)     0.063 de bordas
⚠️  trechos parados          1 acima de 4 s: 0.0–20.0s — justificar ou quebrar
⚠️  legendas                 não verificadas (passe --srt ou --words); reel sem legenda conferida não vai pro Nei
RESULTADO: APROVADO (falta a revisão humana: gancho, prova, pronúncia)

Os números (−13.9 LUFS, 0.063 de bordas) são desta máquina, ffmpeg 6.1.1; na sua podem variar um pouco. O que vale é a linha RESULTADO. O aviso de legendas cita o fluxo do Nei: no seu, passe --srt.

05Os três perfis do contrato

Duração em segundos e palavras da fala, de references/reel-profiles.json (contrato 1.2.1).

1. divulgacao

Mínimo 15 s, ideal 20 a 50 s, máximo 59 s. Fala de 60 a 125 palavras.

06O segundo motor: cardshorts

roteiro.yaml vira short 9:16 de cartões narrado. MIT. Para renderizar ele pede voz e imagem locais (inemavox e um servidor de imagem com GPU); aqui você só lista os estilos.

Terminal · estilos do cardshorts
cd ${TMPDIR:-/tmp}/ensaio-fabrica/a5
git clone -q https://github.com/inematds/cardshorts.git && git -C cardshorts checkout -q d7f5c6d
cd cardshorts && python3 cardshorts.py estilos | grep -E "^[a-z]" 
grep -E "^(estilo|max_seg):" exemplos/versus/roteiro.yaml
Exemplo do repositório
celular    celular — interface de telefone: notificação, busca, fila e enquete SIM/NÃO
cracha     cracha — alvo, crachás carimbados e cédula; fundo grafite, acento vermelho
documento  documento — papel datilografado, formulário em branco, carimbos e certificado
extrato    extrato — nota fiscal / extrato bancário com borda picotada e carimbos
versus     versus — editorial preto e branco com vermelho; foto x foto, telas divididas, chamadas em Anton
estilo: versus
max_seg: 30          # a velocidade da fala é ajustada para caber (até 1,2x)

O max_seg é teto: a fala é acelerada até 1,2× para caber e, se não couber, o motor falha em vez de cortar.

07Prática

Os dois portões, primeiro com o kit, depois com o seu roteiro.

E1 · QA do vídeo

5 min

Rode "QA de um short de ensaio" e "o mesmo QA num vídeo 16:9".

Pronto quando: RESULTADO: APROVADO (falta a revisão humana: gancho, prova, pronúncia) com saída: 0, e depois ❌ formato 1920x1080, RESULTADO: REPROVADO e saída: 1.

E2 · QA do roteiro

5 min

Rode "conferir os roteiros".

Pronto quando: bom: 0, fraco: 1 e a linha ❌ abertura proibida começa com “ola”.

E3 · O seu gancho

15 min

Escreva ${TMPDIR:-/tmp}/ensaio-fabrica/a5/meu.md com a seção ### FALA de um short seu (60 a 125 palavras) e as três camadas do gancho anotadas fora da seção.

Pronto quando: cd ${TMPDIR:-/tmp}/ensaio-fabrica/a5 && python3 makeshorts/.claude/skills/makeshorts/scripts/qa_roteiro.py meu.md --keyword [sua palavra]; echo "saída: $?" → RESULTADO: APROVADO e saída: 0.

08Teste da aula

A explicação aparece depois da sua resposta.

Pergunta 1 de 4

O qa_short.py aprovou o vídeo. O que ele NÃO conferiu?

09Em três frases

Ganchofrase, cena e texto no quadro zero, cada um entendível sozinho.
Dois portõesqa_roteiro antes de gravar, qa_short antes de publicar.
Humanoa máquina mede formato e regra; lacuna, tese e fonte são com você.

Para ir além

Aula anteriorPróxima aula