Caso real · promo do INEMA.CLUB em 15 s

Vídeo UGC feito do começo ao fim por um agente

Uma arte de referência virou um Short com cenas do Kling, voz do ElevenLabs, lipsync e publicação, sem ninguém abrir editor de vídeo.

Banner: vídeo UGC com agente
Em resumo

Este projeto conta como um agente de IA (o Claude Code) produziu um vídeo promocional de 15 segundos do INEMA.CLUB no estilo UGC, aquele vídeo "de gente real falando com a câmera" das redes sociais. Serve para quem cria conteúdo e quer delegar a produção a um agente. Mostra a ideia, os passos com os comandos usados, as dicas que fizeram diferença e os problemas que apareceram no caminho. Para repetir, você precisa de assinatura do Kling AI, uma conta ElevenLabs, ffmpeg, Python e um navegador logado no Kling.

A ideia

Uma arte, um pedido e o agente faz o resto

O pedido foi uma frase: "quero um vídeo promocional do INEMA de 15 segundos, use o Kling para mostrar o que temos no inema.club usando esta imagem como referência, e depois uma voz do ElevenLabs em português". O agente planejou, mostrou o custo, esperou o ok e produziu.

As seis etapas: ideia, Kling pela assinatura, lipsync no site, voz ElevenLabs, montagem e publicação

💳 Assinatura, não API

O vídeo saiu da assinatura Pro do Kling, pela CLI oficial. Custo: 120 créditos pelas cenas e 10 pelo lipsync, de um saldo de 7.936.

🌐 O agente também usa o site

O Lip Sync do Kling só existe no site. O agente abriu um navegador já logado, enviou as cenas e baixou o resultado sozinho.

🔎 Conferido antes de entregar

Cada etapa foi checada: transcrição da voz, folha de quadros do vídeo, quadro 0 com o gancho e duração de 15 s exatos.

Arte de referência: moça segurando celular com o app INEMA.CLUB
A arte de referência que o Nei mandou. A moça, o cenário e a tela do celular viraram o vídeo.

O que o agente decidiu sozinho

• Formato 9:16, depois de perguntar (Reels e Shorts).
• Pedir ao Kling cenas sem texto, porque ele deforma letras, e pôr os textos por cima, nítidos.
• Roteiro curto, com o ganho na primeira frase: "Aprenda inteligência artificial na prática, de graça".
• Voz feminina brasileira do catálogo do ElevenLabs (Amanda Kelly).
• Trilha local, sem direito autoral de terceiros.

O que precisou de ok: gastar créditos, usar a API do ElevenLabs e publicar no YouTube.

Como fizemos

Da imagem ao Short publicado

Oito etapas. Só a primeira e a de publicação precisaram de uma pessoa: para dizer o formato e dar o ok.

Arte de referência→ Plano + custo (ok)→ Kling: 3 cenas, 15 s→ Voz ElevenLabs→ Textos por cima→ Lip Sync no site→ Montagem ffmpeg→ Bot + YouTube
1

Cenas

kling omni_ref_video com a arte como referência: 15 s, 9:16, 1080p, sem áudio, três tomadas. Uma chamada.

2

Voz

ElevenLabs eleven_multilingual_v2, velocidade 1,12, 13,3 s. Conferida pelo Whisper local.

3

Textos

Python + Pillow desenham 450 quadros PNG, cada texto entrando na palavra falada.

4

Lipsync e final

Cenas de frente passam pelo Lip Sync do site; o ffmpeg junta tudo, tira a marca d'água e nivela o som.

Dicas

O que fez diferença

A principal: use a sua assinatura e dê ao agente a capacidade de operar o site quando a ferramenta não tem CLI.

💳 1. Assinatura primeiro

O Kling tem CLI oficial (kling) que usa os créditos do seu plano. Sem chave de API, sem cobrança separada. O agente roda kling account antes e depois para medir o custo real.

🌐 2. Agente que usa a web

Lip Sync, avatar e outras funções só existem no site. Um Chromium com o seu login, aberto com --remote-debugging-port, deixa o agente enviar arquivos e clicar pelo Playwright.

🔤 3. Nada de texto na geração

Gerador de vídeo deforma letras. Peça "no text, no letters, no logos" e escreva os textos depois, por cima.

📐 4. Formato pelo modelo certo

No image_to_video o vídeo herda o formato da imagem (1:1). Para 9:16 a partir de uma arte quadrada, use omni_ref_video com --aspect_ratio 9:16.

⏱️ 5. Voz cabe no tempo

15 s comportam cerca de 30 palavras. Enxugue o texto e use a velocidade nativa da voz (1,1 a 1,15), em vez de acelerar o áudio depois.

💰 6. Lipsync cobra em blocos de 5 s

Uma cena de 5,08 s custa 10 créditos; cortada em 5,0 s, custa 5.

🎯 7. Gancho no quadro 0

O primeiro quadro já mostra a promessa ("Aprenda IA na prática", "Acesso grátis"). Quem rola o feed decide ali.

🧾 8. Salve cada resposta

Grave o retorno de cada envio (o generationId) em arquivo antes de seguir. Trabalho pago perdido não volta.

Problemas

O que deu errado e como resolvemos

Tudo isto aconteceu de verdade nesta produção. Cada linha diz o problema e a menor correção que resolveu.

Lipsync esquecidoA primeira versão saiu com locução em off: o agente decidiu sozinho que a moça não falaria. Correção: perguntar logo no plano se a pessoa do vídeo fala.
CLI do Kling não aceita áudioSem lipsync pela linha de comando. Correção: Lip Sync pelo site, no navegador logado, com dois scripts Playwright.
"Sem confirmação" que tinha entradoA tela não mostrou o aviso de envio da cena 1, mas o pedido estava na fila. Correção: conferir o histórico antes de reenviar, para não pagar duas vezes.
Download de trabalhos antigosO script de download baixou 12 vídeos de outro projeto com o mesmo padrão de nome. Correção: baixar só os números pedidos.
Marca d'água "KlingAI"Aparece no canto inferior direito das cenas e do lipsync. Correção: zoom de 6% no ffmpeg (crop=1012:1800:34:0).
ElevenLabs recusou o formatoErro 403: mp3_44100_192 só no plano Creator. Correção: mp3_44100_128.
Arquivo de áudio vazioO script abria o arquivo antes de a API responder; com o erro, sobrou um mp3 vazio. Correção: ler a resposta primeiro, gravar depois.
Narração longa demais16,6 s para um vídeo de 15 s. Correção: texto mais curto e velocidade 1,12 na própria voz: 13,3 s.
Quadro 0 vazioOs textos entravam com fade e o primeiro quadro saía limpo. Correção: o gancho já aparece cheio no quadro 0.
Texto azul sumindo"mais liberdade" em azul quase não se via sobre o fundo claro. Correção: caixa escura atrás da frase.
Folha de quadros embaralhadaO glob ordena nomes como texto (0.5, 11, 13, 3…) e a conferência visual ficou fora de ordem. Correção: numerar os quadros (k1, k2, k3…).
Pré-requisitos

O que precisa ter

Tudo roda na sua máquina. O agente usado foi o Claude Code, mas os scripts são comuns e funcionam à mão.

Kling AI (assinatura)

Plano pago e a CLI oficial, logada.

npm i -g @klingai/cli-global
kling login
kling account

ElevenLabs

Conta com chave de API para a narração.

export ELEVENLABS_API_KEY=...

Navegador logado

Chromium com o seu login do Kling e porta de depuração; Playwright só como biblioteca.

chromium --user-data-dir=~/perfil-kling \
  --remote-debugging-port=9333
npm i playwright

ffmpeg + Python

Montagem, cortes e camada de textos.

sudo apt install ffmpeg
pip install pillow

Fonte Montserrat

Black e ExtraBold em ~/.local/share/fonts/ (usadas pelo overlay.py).

Música

Uma trilha sua ou livre, em WAV. No promo foi uma trilha gerada localmente.

Guia de uso · passo a passo

Repetindo a produção

Os comandos abaixo são os que rodaram no promo do INEMA. Troque a arte, o texto e a voz pelos seus.

1

Gere as cenas no Kling

Arte como referência, três tomadas, sem texto. Guarde a resposta: ela tem o generationId.

kling omni_ref_video --model kling-video-v3_0_omni --image ./ref.png \
  --duration 15 --aspect_ratio 9:16 --resolution 1080p \
  --prefer_multi_shots true --enable_audio false \
  "A warm 15-second commercial in three shots, featuring the young woman from <<<image_1>>>.
   Shot 1: she smiles and points at a smartphone. Shot 2: over-the-shoulder, she types on a laptop
   with abstract dashboards. Shot 3: she laughs and waves. No text, no letters, no logos." > submit.json
kling query_tasks <generationId>   # repetir até COMPLETED; baixar works[].url na hora (expira em 24 h)
2

Grave a narração

Cerca de 30 palavras, com o ganho na primeira frase. Confira a duração e a pronúncia.

python3 scripts/tts_elevenlabs.py oi8rgjIfLgJRsQ6rbZh3 vo.mp3 \
  "Aprenda inteligência artificial na prática, de graça! No Inema Clube tem cursos de IA,
   agentes, automação e comunidade. Mais conhecimento, mais liberdade. Acesse: inema ponto clube." 1.12
ffprobe -v error -show_entries format=duration -of csv=p=0 vo.mp3   # 13.27
3

Ache os cortes das cenas

Os tempos de troca de tomada viram C1 e C2 no script de montagem.

ffmpeg -i kling.mp4 -vf "select='gt(scene,0.25)',showinfo" -f null - 2>&1 | grep -o "pts_time:[0-9.]*"
# pts_time:4.625  pts_time:9.91667
4

Prepare os trechos e faça o Lip Sync no site

O montar.sh corta as cenas de frente e o trecho da fala de cada uma. Com o navegador logado aberto na porta 9333, os scripts enviam e baixam.

C1=4.625 C2=9.917 bash scripts/montar.sh          # 1ª vez: gera ls/v91, v93, a91, a93
node scripts/kling_lipsync_enviar.mjs $PWD/ls 91:5 93:5   # confere o custo no botão antes de clicar
node scripts/kling_lipsync_baixar.mjs $PWD/ls 91 93      # 3 a 5 min depois: ls/ks91.mp4, ls/ks93.mp4
5

Monte o vídeo final

Rodando de novo, o script troca as cenas pelas versões com lipsync, desenha os textos e mistura voz e música em −14 LUFS.

C1=4.625 C2=9.917 bash scripts/montar.sh   # → promo-9x16.mp4, 15.000000 s
6

Confira antes de publicar

Uma folha de quadros mostra se o gancho está no quadro 0 e se os textos aparecem.

mkdir -p cs; i=0; for t in 0 1.5 4.8 7.4 9 11.5 14.5; do i=$((i+1))
  ffmpeg -v error -y -ss $t -i promo-9x16.mp4 -frames:v 1 -vf scale=270:-1 cs/f$i.jpg; done
ffmpeg -y -i cs/f%d.jpg -vf tile=7x1 folha.jpg
7

Publique

No INEMA o Short foi para o canal INEMA FTD pelo yt-pubx, que escreve título e descrição; Short não leva thumb.

./yt-pubx publicar promo-9x16.mp4 --canal lives3 --sem-thumb --contexto "..." --dry-run
./yt-pubx publicar promo-9x16.mp4 --canal lives3 --sem-thumb --plano <pasta>/plano.json
Exemplos

O resultado

Duas versões do mesmo promo: a primeira com locução em off e a segunda com a moça falando nas cenas 1 e 3.

Versão 1 · locução em off. Publicada no YouTube.
Versão 2 · lipsync do Kling nas cenas de frente (+10 créditos).
Oito quadros do vídeo bruto do Kling
O que o Kling entregou: celular com a tela do INEMA.CLUB (0–4,6 s), notebook (4,6–9,9 s) e aceno (9,9–15 s). Ele até manteve legível o menu do celular.
Oito quadros do vídeo montado com os textos
Depois da montagem: o gancho no quadro 0, os quatro itens entrando quando são falados, a frase de valor e o fecho INEMA.CLUB.
Recortes do rosto mostrando a boca se movendo
Conferência do lipsync: a boca abre e fecha ao longo da fala nas cenas 1 e 3.
Próximos passos

O que dá para melhorar

Ideias que ficaram de fora desta primeira produção.

Feito
Promo de 15 s, duas versõesCenas no Kling, voz ElevenLabs, textos, lipsync, Short publicado.
Próximo
Perguntar "a pessoa fala?" no planoEvita refazer o vídeo para pôr lipsync depois.
Ideia
Lote de variaçõesMesmo roteiro com outras pessoas, cenários e vozes, para testar qual prende mais.
Ideia
Lipsync em lote, sem clique manualOs scripts já enviam e baixam; falta encadear tudo num comando só.