O reel de "N peças", com o rosto real do Nei
Você escreve um roteiro.json; o rtex devolve um reel vertical 1080×1920 sobre um tema só: um gancho forte no quadro 0, os passos numerados com índice, prova com fonte, a ressalva honesta e, no fim, uma pergunta de opinião para o público responder. Quem fala é o avatar do Nei no HeyGen.

O rtex é o motor que o Nei usa para fazer reels (vídeos curtos verticais) do INEMA com o próprio rosto: o avatar dele no HeyGen fala o roteiro, e o motor desenha por cima as telas, a legenda palavra por palavra e o cartão final. Cada vídeo trata de um tema só, num formato fixo: um gancho forte no quadro de abertura, os passos do método em "N peças" e, no fim, uma pergunta de opinião para o público responder nos comentários. Um validador, um crítico automático e um QA conferem o formato antes de publicar. O código é aberto para estudar e adaptar; para gerar o seu vídeo, você precisa do seu próprio avatar no HeyGen, além de Python, Node, ffmpeg e Whisper.
Um formato fixo, com o apresentador de verdade
Dois terços de cima são do conteúdo, o terço de baixo é do Nei falando, o reel inteiro. Todo número tem fonte na tela, e o amarelo aparece como superfície (um fundo amarelo) uma única vez: na pílula com as opções da pergunta final. Palavras destacadas em letra amarela, como AGENTE na manchete, não contam.

🎙️ Avatar real do Nei
A fala vai ao estúdio do HeyGen pela assinatura; o vídeo do avatar volta, o Whisper marca o tempo de cada palavra e o motor encaixa telas e legenda nesse tempo.
🧩 Padrão de peças
Um tema: gancho no quadro 0, prova até 20 s, o problema de quem assiste, "N peças" (os passos) com índice visível, prova, ressalva, máxima depois de um silêncio e uma pergunta de opinião.
✅ Três conferências
O validador cobra a regra; um crítico (claude -p) dá nota ao roteiro; o QA mede duração, ritmo, volume, mudanças de tela por minuto, silêncio, cartão final e o amarelo.
Os nove blocos do padrão rtex
Um tema por vídeo, nesta ordem. O comando checar reprova o roteiro se um bloco obrigatório faltar ou vier fora do lugar. Um vídeo com cinco assuntos diferentes (uma lista) não passa: as "N peças" são os passos do método de um tema só.
- tese: o gancho (quadro 0 e 3 primeiros segundos), detalhado abaixo.
- autoridade: prova na tela até 20 s: um número com fonte (o contador pousa no valor da fonte) ou uma autoridade, também com fonte.
- problema: a dor de quem assiste, logo depois da prova, com absolvição na fala ("não é culpa sua") e um objeto (no modelo, um chat sendo riscado).
- virada: "N peças" anunciadas; o índice 01–N aparece antes do 1º passo e vira pílulas no topo.
- metodo: os passos numerados, um objeto por passo, rótulo "0N / NOME".
- prova: um fato com fonte que confirma o que veio antes.
- ressalva: as limitações, faladas e legíveis, viradas em instrução.
- maxima: antítese curta, depois de 0,5–0,9 s de silêncio (voz e trilha somem).
- cta: a pergunta de opinião (abaixo); o cartão fica 9 s depois da última palavra.
O gancho: quadro 0 e 3 primeiros segundos
Quatro tipos, e só eles
Campo gancho.tipo: contrario (manda parar algo que todo mundo faz: "PARA DE CRIAR AGENTE"), perda (e se algo sumisse?), estatistica_medo (um número que assusta, com fonte na tela) ou historia_terceiro (o caso de outra pessoa, com número e fonte). Proibido: lista ("5 peças do mês", "N coisas…"), "você sabia que…" e "eu fiz…".
Manchete mais forte que a voz
A manchete do quadro 0 (tela.linhas) tem até 6 palavras, em caixa alta, com uma palavra amarela (tela.destaque). É mais agressiva que a fala: o texto segura quem rola o feed sem som, a voz suaviza e explica. Ela já está pronta no quadro 0, que serve de capa. Embaixo, um objeto-metáfora com dano (objeto.params.metafora; hoje o único valor aceito é "fio") muda a cada ~1 s nos 3 primeiros segundos.

A isca: uma pergunta de opinião
O que é
O fim do vídeo é uma pergunta forte, emocional e com lado, ligada à tese, que a pessoa responde com a própria opinião: escolhendo uma de duas ou três palavras ("UM ou VÁRIOS?") ou contando a própria experiência. O Nei diz o lado dele antes, para provocar. A tensão da pergunta já aparece no quadro 0 e volta no fim.
O que não pode
Prometer qualquer coisa a quem comenta. Nada de "te mando", "eu envio", "manda o link", "link na bio", "comenta X que…" nem "está no comentário fixado". Ninguém espera resposta, então o Nei não precisa responder ninguém. Pedir "comenta UM ou VÁRIOS" pode: o que não pode é amarrar o comentário a um prêmio. Links e fontes podem ficar parados no comentário fixado do post.

Glossário rápido
Quadro 0
O primeiro quadro do vídeo. Ele já mostra a manchete pronta e serve de capa.
Isca
O pedido de comentário do fim. No rtex é uma pergunta de opinião (campo isca do roteiro); as opções aparecem na única pílula amarela do vídeo.
Máxima
A frase-resumo do fim, em antítese ("Ela não é burra. Ela só não sabe o teu trabalho."), depois de um silêncio curto.
Palco
A página motor/palco.html que desenha as telas. O render filma essa página a 30 quadros por segundo.
HeyGen e estúdio
HeyGen é o serviço que gera o vídeo do avatar falando. O rtex usa o estúdio (o site, pela assinatura), num navegador aberto na tela virtual :99.
Legenda karaokê
A legenda acende palavra por palavra no tempo da fala, com as palavras-chave coloridas.
LUFS
Medida de volume percebido. −14 LUFS é o volume que as redes usam como padrão.
CTA
"Chamada para ação": o pedido final do vídeo. Aqui é um só: a pergunta de opinião.
Whisper e Playwright
Whisper transcreve a voz e dá o tempo de cada palavra. Playwright abre o palco num navegador e filma cada quadro.
Crítico e revisor
O crítico é um claude -p que dá nota a cada bloco do roteiro. O revisor independente é outra sessão, que só olha o resultado.
QA e folha
QA ("controle de qualidade") é o comando que mede o vídeo pronto. A folha é a imagem que ele monta com 16 quadros do vídeo, para conferir tudo de uma vez.
Pílula
Etiqueta de cantos redondos. As pílulas numeradas no topo (01–03 no roteiro modelo) mostram em que passo o vídeo está; a pílula amarela é a das opções da pergunta final.
Bot e fila
Só na máquina do Nei: o bot é o robô do Telegram que recebe o vídeo para ele assistir; a fila publica um vídeo a cada 2 h no canal do YouTube indicado no roteiro.
O que muda em relação ao r7ex
O rtex parte do motor r7ex v1.1.0 (copiado, não importado: mexer num não afeta o outro). Fica a máquina; mudam o roteiro e a tela.
| r7ex | rtex | |
|---|---|---|
| Roteiro | 7 etapas de gatilho: gancho com número → medo → desejo → facilidade → descoberta → benefício → comentário | 9 blocos de peças: tese → autoridade → problema → virada → método → prova → ressalva → máxima → cta |
| Abertura | título desenhado na imagem de abertura | manchete de até 6 palavras no quadro 0 (gancho contrário, perda, estatística de medo ou história de terceiro) e um objeto que se quebra nos 3 primeiros segundos |
| Avatar | meia tela embaixo no gancho, depois no canto | no terço de baixo o reel inteiro; os 2/3 de cima são do conteúdo |
| Estrutura na tela | painéis no tempo da fala, contador | índice 01–N que vira pílulas no topo, rótulo "0N / NOME" em cada peça |
| Honestidade | — | ressalva obrigatória antes da máxima; todo número com fonte conferida há ≤ 7 dias |
| Fecho | comentário "tá tudo no inema.club" | silêncio, máxima em antítese, pergunta de opinião com lado (sem nada a entregar), cartão de 9 s |
| Cor | preto + amarelo de telejornal | preto INEMA com amarelo racionado: uma única superfície amarela, a pílula das opções da pergunta (o QA conta) |
| Mantido | avatar pelo estúdio do HeyGen, legenda karaokê, ritmo da fala, Whisper, crítico + revisor independente, fila de publicação com timer e envio ao bot do Telegram (esses dois, só na máquina do Nei) | |
Do roteiro ao video.mp4
O rtex.py roda cada passo. O avatar é a parte lenta: o estúdio pode levar de minutos a horas para entregar o vídeo.
Roteiro conferido
checar cobra o gancho, a prova até 20 s, um tema só, ordem dos blocos, índice = método, fala sem algarismo nem "!", fonte em todo número, a pergunta de opinião sem promessa e duração estimada de 60–90 s. critico dá a nota.
Avatar e tempo
A fala vai ao estúdio; o vídeo volta, o Whisper marca as palavras, a fala (o HeyGen fala rápido) é esticada até ~182 palavras/min (no máximo 12%) e entra o silêncio antes da máxima.
Cena, render e QA
cena liga cada tela a uma palavra da fala; render filma o palco, põe o avatar embaixo e a trilha; qa mede tudo e monta a folha.
O que precisa estar na máquina
O motor foi feito para a máquina do Nei (Linux). Os caminhos abaixo estão no código; numa máquina diferente, use as variáveis citadas ou ajuste o arquivo.
Avatar: HeyGen pelo estúdio
Uma conta HeyGen com o seu avatar e a sua voz. O estúdio abre num navegador com janela, por isso precisa de uma tela: a tela virtual :99 (Xvfb). Uma vez só: (1) faça login num perfil do navegador do Playwright; (2) no estúdio, crie um projeto de vídeo com o nome exato TEMPLATE-AVATAR16 (ou outro em RTEX_HEYGEN_TEMPLATE), com o seu avatar e a sua voz: o motor abre esse projeto, faz "editar como novo" e troca a fala; (3) ponha a sua chave da API do HeyGen no arquivo que o download lê (caminho fixo no heygen/heygen-estudio-baixar.mjs; ela só consulta o status e baixa o vídeo).
npx playwright open --user-data-dir ~/.cache/inemaccbot/perfil-heygen https://app.heygen.com # login; ou outro dir em RTEX_HEYGEN_PERFIL mkdir -p ~/projetos/openpcbotv2 echo "HEYGEN_API_KEY=sua-chave" >> ~/projetos/openpcbotv2/.env
Whisper (inemavox)
O inematds/inemavox em ~/projetos/inemavox (ou outro caminho em CS_INEMAVOX). O rtex tenta o Whisper residente na porta 7871 e, sem ele, roda o transcrever_v1.py do inemavox com o large-v3 (cerca de 10 GB na placa de vídeo NVIDIA). O Python do Whisper residente vem de CS_WHISPER_PY; o padrão aponta para um ambiente conda chatterbox da máquina do Nei, então aponte para o seu.
git clone https://github.com/inematds/inemavox ~/projetos/inemavox # dependências: ver o README do inemavox export CS_WHISPER_PY=/caminho/do/seu/python3
Node, ffmpeg, Python
Node 18+, ffmpeg com ffprobe, Python 3 com Pillow, numpy e cairosvg, a fonte DejaVu (pacote fonts-dejavu-core, usada na etiqueta do nome) e a CLI claude logada para o crítico. Os logos dos produtos (ex.: o do Claude no roteiro modelo) vêm de um pacote aberto que o ferramentas/logos.sh baixa uma vez para ~/.cache/r7ex/lobe-icons; sem ele, o passo prints para.
git clone https://github.com/inematds/rtex cd rtex npm i npx playwright install chromium pip install --user pillow numpy cairosvg # ou dentro de um venv bash ferramentas/logos.sh # logos -> ~/.cache/r7ex/lobe-icons Xvfb :99 -screen 0 1920x1080x24 & # só para o estúdio do HeyGen
python3 rtex.py fazer <pasta> --de seu-video.mp4. A fala do vídeo precisa bater com a do roteiro em pelo menos 85% (o motor confere com o Whisper). Nesse caminho não precisa de HeyGen, chave nem Xvfb. O Whisper ouve em português; para um reel em outra língua, use CS_LANG=en ou CS_LANG=es.enviar manda o vídeo ao bot do Telegram do Nei (bin/enviar_bot_v3.mjs) e fila põe o vídeo na fila de publicação do r7ex (~/projetos/r7ex/fila/fila.py, ou RTEX_FILA). Fora da máquina do Nei, pare no qa e publique como preferir.Do tema ao vídeo conferido
Cada edição mora em edicoes/<data>-<slug>/. O atalho fazer (passo 9) roda checar, prints, avatar, cena, render e qa de uma vez.
Crie a edição você
Copia o roteiro modelo (um tema: "um agente só e uma pasta por tarefa") para uma pasta nova com a data de hoje. As fontes do modelo foram conferidas em 28/10/2026 e o checar recusa fonte com mais de 7 dias: depois de 04/11/2026 o modelo intacto reprova de propósito (não é defeito). Troque as fontes pelas suas no passo 2.
python3 rtex.py novo minha-edicao # -> edicoes/AAAA-MM-DD-minha-edicao/roteiro.json
Escreva o roteiro, com as fontes você
Confira cada número na fonte no dia e anote em fontes[] com valor e verificado_em. Depois escreva o gancho, os blocos (formato em "O roteiro.json"), a fala por extenso e a pergunta da isca.
Valide e passe no crítico
checar é regra pura. critico pede nota a um claude -p pela assinatura: passa sem bloqueio, tese (o gancho) ≥ 8, média ≥ 7,5 e nenhum bloco abaixo de 6. Grava critica.json.
python3 rtex.py checar edicoes/AAAA-MM-DD-minha-edicao python3 rtex.py critico edicoes/AAAA-MM-DD-minha-edicao
Libere e envie o avatar você
O envio só sai com um OK escrito para esta produção em avatar/APROVADO_HEYGEN (um avatar por reel). Depois do envio a fala fica congelada: erro de texto se corrige na legenda (campo trocas do roteiro), não num segundo avatar.
mkdir -p edicoes/AAAA-MM-DD-minha-edicao/avatar echo "ok para este reel" > edicoes/AAAA-MM-DD-minha-edicao/avatar/APROVADO_HEYGEN python3 rtex.py avatar-enviar edicoes/AAAA-MM-DD-minha-edicao # grava avatar/video_id.txt
Tire os prints das páginas
Prints reais das páginas do GitHub citadas e os logos. Abra e leia os prints antes de seguir.
python3 rtex.py prints edicoes/AAAA-MM-DD-minha-edicao
Prévia sem avatar opcional
Enquanto o estúdio trabalha, numa cópia da pasta: tempos sintéticos, cena e alguns quadros soltos (em segundos). Acha erro de layout antes do avatar chegar. A prévia não chama o estúdio nem gasta outro avatar.
rm -rf /tmp/previa && cp -r edicoes/AAAA-MM-DD-minha-edicao /tmp/previa python3 ferramentas/tempos_sinteticos.py /tmp/previa python3 rtex.py cena /tmp/previa node motor/render.mjs /tmp/previa --quadros 1,10,20 # -> /tmp/previa/q_1.jpg, q_10.jpg, q_20.jpg
Baixe o avatar e acerte o ritmo
avatar-conferir faz uma consulta (pronto ou processando). avatar espera, baixa, marca as palavras com o Whisper, estica a fala até ~182 palavras/min (o HeyGen fala rápido), põe o silêncio antes da máxima e os 9 s de cartão.
python3 rtex.py avatar-conferir edicoes/AAAA-MM-DD-minha-edicao python3 rtex.py avatar edicoes/AAAA-MM-DD-minha-edicao python3 rtex.py avatar edicoes/AAAA-MM-DD-minha-edicao --de avatar.mp4 # reaproveitar um mp4
Cena, render e QA
O palco a 30 fps, o avatar no terço de baixo, a trilha e −14 LUFS em duas passadas; o QA grava build/qa.json e a folha build/folha.jpg com 16 quadros.
python3 rtex.py cena edicoes/AAAA-MM-DD-minha-edicao python3 rtex.py render edicoes/AAAA-MM-DD-minha-edicao # -> video.mp4 python3 rtex.py qa edicoes/AAAA-MM-DD-minha-edicao
Ou tudo de uma vez
checar → prints → avatar → cena → render → qa. Não roda o critico (passo 3). Sem --de e sem avatar pronto, ele mesmo envia ao estúdio e espera até ~290 min pelo HeyGen; para isso, o arquivo avatar/APROVADO_HEYGEN do passo 4 tem de existir, senão ele para com esse aviso. Com --de não precisa do HeyGen, mas continua precisando do Whisper, dos logos e de internet para os prints do GitHub.
python3 rtex.py fazer edicoes/AAAA-MM-DD-minha-edicao python3 rtex.py fazer edicoes/AAAA-MM-DD-minha-edicao --de seu-video.mp4 # sem o estúdio
Olhe, revise e entregue você
Leia a folha e o qa.json; peça uma revisão a quem não escreveu o roteiro. A isca não promete nada, então não há o que preparar para quem comentar. Na máquina do Nei, enviar manda ao bot e fila põe na fila do canal (nunca upload direto).
python3 rtex.py enviar edicoes/AAAA-MM-DD-minha-edicao python3 rtex.py fila edicoes/AAAA-MM-DD-minha-edicao
O formato do roteiro, em uma tela
Trecho do roteiro modelo, encurtado (as linhas // não são JSON válido; o arquivo completo está em modelo/roteiro.json).
{
"versao": "rtex/1", "tema": "Para de criar agente: um agente só e uma pasta por tarefa",
"gancho": { "tipo": "contrario" },
"isca": { "tipo": "opiniao", "pergunta": "Um agente só ou um para cada tarefa?",
"opcoes": ["UM", "VÁRIOS"], "lado": "um agente só", "tensao": "agente" },
"fontes": [ { "id": "skills", "url": "https://docs.anthropic.com/en/docs/agents-and-tools/agent-skills", "valor": "uma pasta por tarefa", "verificado_em": "2026-10-28" } ],
"trocas": { "é cê cê": "ECC", "três peças": "3 peças" },
"blocos": [
{ "tipo": "tese", "fala": "Se você cria um agente para cada tarefa, eu tenho uma má notícia: o fio que liga todos eles vai arrebentar.",
"tela": { "linhas": ["PARA DE", "CRIAR AGENTE."], "destaque": "AGENTE" },
"objeto": { "comp": "tese", "params": { "metafora": "fio", "nos": ["✉️ e-mail", "📷 Instagram", "📄 propostas"] } } },
// ... autoridade (fonte: skills), problema ("não é culpa sua"), virada ...
{ "tipo": "metodo", "n": 1, "nome": "PROCESSO", "fonte": "skills",
"fala": "Um: o processo. Peça para a IA te entrevistar, uma pergunta por vez, até ela fazer sem você.",
"objeto": { "comp": "pasta", "params": { "titulo": "O processo" } } },
// ... metodo 2–3, prova, ressalva, maxima ...
{ "tipo": "cta", "fala": "Eu já escolhi o meu lado: um agente só. E você? Um agente só ou um para cada tarefa? Comenta um ou vários.",
"objeto": { "comp": "isca", "params": { "em": "Comenta" } } }
],
"publicar": { "descricao": "... Um agente só ou um para cada tarefa?" }
}
Campos principais
tipo (a ordem dos nove blocos) · fala (por extenso, sem algarismo nem "!") · tela (texto grande e destaque) · objeto.comp + objeto.params (o que o palco desenha) · n e nome nos itens do método (iguais ao índice da virada) · fonte (id em fontes). No topo: trocas (como a fala aparece na legenda), cores (palavras coloridas), ritmo e publicar (título, descrição, canal da fila). O checar também exige: gancho.tipo válido e a manchete do quadro 0 com até 6 palavras em caixa alta; objeto.params.metafora na tese; na máxima, linha1 e linha2 com até 7 palavras cada; fontes conferidas há no máximo 7 dias; e, na isca: pergunta terminada em "?" (até 70 caracteres) e dita no CTA, 2 ou 3 opcoes de uma palavra em caixa alta, ditas no CTA (pergunta aberta: exemplo, a resposta que a mão digita), lado, tensao (uma palavra da pergunta que está no quadro 0 e volta no fim) e publicar.descricao terminando com a pergunta. Os campos antigos isca.palavra e isca.entregavel dão erro.
Componentes do palco (objeto.comp)
tese, contador, chat_riscado, indice (com as pílulas de progresso), pasta, repo (print real + estrelas), manchete, selo_prova, ressalva, maxima (flash tipográfico) e isca (a pergunta, a pílula amarela com as opções e a caixa de comentário). A tese com metafora: "fio" desenha o objeto que se quebra no quadro 0.
"Pare de usar skills"
A primeira edição no formato atual: gancho contrário, um tema só (apagar CLAUDE.md, skills e hooks e devolver só o que o modelo errar de novo), três passos e a pergunta de opinião no fim. Roteiro em edicoes/2026-10-28-pare-de-usar-skills/roteiro.json.
O que o QA mediu
| Duração | 76,1 s |
| Ritmo da fala | 188 palavras/min |
| Volume | −14,3 LUFS |
| Mudanças de tela | 38 por minuto |
| Maior trecho parado | 3,5 s |
| Silêncio antes da máxima | 0,52 s |
| Cartão final | 9,0 s |
| Revisor independente | aprovado, 8/10 |
Vai ao ar no canal INEMA (lives3) pela fila de publicação. Kit da auditoria do tema: audit-ablacaocc.
"5 novidades de IA do mês: a mais útil é uma pasta"
A primeira edição, feita inteira com o motor e publicada no YouTube. Ela é do formato v1.0.0: gancho de lista, cinco temas e "comenta PASTA" com links prometidos a quem comentasse. A v1.1.0 trocou isso pelo gancho forte, um tema por vídeo e a pergunta de opinião; o checar atual reprova este roteiro de propósito. Roteiro em edicoes/2026-10-28-cinco-pecas-ia/roteiro.json e propostas de pergunta e manchete para a próxima em PROPOSTA-ISCA.md, na mesma pasta.
O que o QA mediu
| Duração | 81,1 s |
| Resolução | 1080×1920 · 30 fps |
| Ritmo da fala | 180 palavras/min |
| Volume | −14,0 LUFS |
| Mudanças de tela | 36 por minuto |
| Maior trecho parado | 3,5 s |
| Silêncio antes da máxima | 0,58 s |
| Cartão final | 9,0 s |
| Superfícies amarelas | 1 (a isca) |
Quadro a quadro (edição publicada, formato v1.0.0)












A folha que o QA gera

Onde o projeto está
O que existe hoje no repositório e o que fica para depois.
/rtex, modo longo (110–135 s) e versão clara.