Do roteiro ao reel ilustrado, sem pagar nada
Você escreve um roteiro.json; o rtexjp devolve um reel vertical 1080×1920 em azul-marinho, com avatar ilustrado do Nei, mascote robô, voz do Nei (ou a sua) e um único pedido de opinião: "comenta PAGO ou LOCAL".

O rtexjp é um motor que monta vídeos curtos verticais (reels) ilustrados, em azul-marinho, a partir de um roteiro escrito num arquivo de texto (roteiro.json). É o motor que o Nei usa nos reels do INEMA, aberto para quem quiser estudar ou adaptar: sem gravar a si mesmo e sem pagar serviço de avatar. Ele gera a voz, desenha cada cena quadro a quadro, mistura a trilha e confere sozinho se o vídeo segue o formato. Precisa de um computador com placa de vídeo (GPU), Python, Node, ffmpeg e dois servidores locais: o de voz (inemavox) e o de imagem (flux2-klein).
Vem configurado com a voz e o avatar do Nei. Para usar os seus, aponte as variáveis de ambiente RTEXJP_VOZ_REF (gravação de referência da voz) e RTEXJP_AVATAR_REF (foto do avatar) para os seus arquivos, descreva o seu personagem em RTEXJP_AVATAR_DESC (sem isso as poses saem com o boné, os óculos e a barba do Nei) e gere as poses de novo; nada no código precisa ser editado. Esses dois arquivos não vêm no repositório (veja Pré-requisitos).
Um formato fixo, conferido por um validador
Todo reel segue o mesmo esqueleto: gancho no quadro 0, prova com fonte, o problema de quem assiste, peças numeradas, ressalva honesta, máxima e uma pergunta de opinião. O motor desenha; o validador reclama se algo sair do formato.

🎨 Ilustrado, sem lip-sync
Avatar ilustrado do Nei grande, embaixo (≈ 43 % da altura), em 11 poses ligadas à emoção da fala (susto, dúvida, aponta, explica, polegar…), um desenho-herói por cena e um mascote robô. Ninguém precisa gravar nada.
🎙️ Voz do Nei, local
Voz por TTS local (inemavox chatterbox), 160–190 palavras por minuto, Whisper local marcando o tempo de cada palavra para a legenda e os gatilhos de cena.
✅ QA automático
Mede duração, ritmo da fala, volume (−14 LUFS), trocas visuais por minuto, prova até 20 s, opções da isca plantadas antes, CTA sem promessa de entrega, cartão final e silêncio antes da máxima. Sai um qa.md e um contact.jpg.
As nove regras do padrão rtexjp
É isso que o comando checar e o QA cobram em cada edição.
- Gancho no quadro 0, de um destes tipos: contrário (manda parar algo que todo mundo faz), perda (e se X sumisse?), estatística de medo com fonte, ou história de terceiro com número. Proibido: lista ("5 coisas…"), "você sabia que…", "eu fiz…".
- Manchete do quadro 0 com até ~6 palavras, caixa alta, uma palavra em amarelo, mais agressiva que a fala. Um objeto com dano desenhado (riscado de vermelho, quebrado), o avatar reage no 1º segundo e algo muda a cada ~1 s nos 3 primeiros segundos. O quadro 0 serve de capa.
- Prova até 20 s: o print real da página da fonte, o número na manchete e a linha
fonte:embaixo. - O problema de quem assiste, com absolvição ("não é culpa sua, ninguém te deu o mapa"). Aqui a pergunta final já é plantada: as opções aparecem em amarelo.
- Um tema por vídeo, em 2–5 peças com índice visível e barra de pílulas no topo; um objeto por frase, mudando a cada 2–3 s.
- Todo número tem fonte escrita na tela (
fonte: …). - Ressalva honesta falada, num cartão de alerta (vermelho = problema, verde = certo).
- Máxima em antítese, depois de 0,8 s de silêncio real (voz e trilha param).
- CTA de opinião: o Nei diz o lado dele e faz uma pergunta forte, respondida com uma palavra ("comenta PAGO ou LOCAL"). O cartão mostra a pergunta e as opções, a caixa de comentário digita uma opção, publica e confirma; fica ~10 s, sem despedida. Nunca promete entrega ("te mando", "eu envio"): ninguém responde comentários. Link e fonte ficam parados no comentário fixado.
Glossário rápido
Isca de opinião
A pergunta do fim, com duas opções de uma palavra (no 1º vídeo, PAGO ou LOCAL). A tensão aparece no quadro 0, as opções são plantadas cedo e só elas (e a palavra quente da manchete) ficam em amarelo.
Máxima
A frase-resumo do fim, em antítese ("Ser dono do teu sistema nunca foi saber cada linha. É saber o que segura o quê."). Vem depois de um silêncio curto.
Palco
A página motor/palco.html que desenha cada cena. O render tira uma foto dela por quadro.
Cama musical
Trilha baixa por baixo da voz, que abaixa quando a voz fala e para no silêncio antes da máxima.
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 é sempre um só, uma pergunta de opinião respondida com uma palavra.
TTS e lip-sync
TTS é a voz gerada a partir do texto. Lip-sync é a boca mexendo junto com a fala; o rtexjp não faz, o avatar só muda de pose.
Whisper e Playwright
Whisper transcreve a voz e dá o tempo de cada palavra. Playwright abre o palco num navegador sem janela e tira a foto de cada quadro.
Flash tipográfico
Uma tela rápida só com texto grande entre as peças, para o vídeo não ficar parado.
Tipos de bloco
tese = afirmação (o gancho, o problema); autoridade = a prova com fonte; virada = o índice que anuncia as peças; metodo = cada peça; planta é só o id do bloco que planta as opções da pergunta final.
Batida
Um trecho do bloco que troca manchete, desenho e pose na palavra marcada em em. É o que faz algo mudar a cada 2–3 s.
Desenho-herói
O objeto ilustrado grande no meio da tela (terminal quebrado, mapa, cadeado), tirado da biblioteca motor/assets/objetos/.
O visual v1.2, de cima para baixo
- Rótulo em monoespaçada (≥ 30 px) e, nas peças, as pílulas 01–03.
- Manchete em Sora ExtraBold, centrada, 2–3 linhas, ≥ 96 px, quase branca, com uma palavra em azul-aço claro (amarela só no quadro 0).
- Desenho-herói ou print real, grande, entre a manchete e o avatar.
- Legenda karaokê numa faixa própria, com a palavra dita destacada.
- Avatar grande, embaixo e centralizado, na pose da batida; o rosto fica acima dos 80 % da altura.
O fundo tem holofote e grão leve e alterna entre o marinho e um papel azul-gelo ("tema": "claro" na cena), com letras marinho. No silêncio antes da máxima o último quadro fica congelado com o avatar pensativo: nunca tela vazia.
Portão de beleza: o QA mede no próprio palco, em duas amostras por bloco, a manchete (≥ 96 px), todo texto (≥ 30 px), a área ocupada (≥ 55 % do quadro útil), o contraste do texto (≥ 4,5:1) e a altura do avatar (≥ 38 %). Vale para roteiros com "versao": "rtexjp/3".
Seis passos, um comando cada
O rtexjp.py roda os passos em ordem. O palco é uma página HTML desenhada por window.render(t): a mesma build/cena.json sempre gera o mesmo vídeo. A voz, não: o TTS sai um pouco diferente a cada vez (por isso o passo voz aceita refazer só alguns blocos).
Roteiro e validação
checar confere o esqueleto pelo campo tipo: começa em tese, virada antes do primeiro metodo (2–5 peças), ressalva antes da maxima, maxima logo antes do cta no fim. O 2º exemplo usa tese (gancho) → autoridade (prova) → tese (problema + opções) → virada → metodo ×3 → ressalva → maxima → cta.
Voz e cena
voz gera um áudio por bloco, acelera até 1,15× e junta; cena cruza o roteiro com o tempo de cada palavra.
Render, mix e QA
render fotografa o palco quadro a quadro; mix põe a trilha (que para no silêncio da máxima); qa mede tudo.
O que precisa estar na máquina
Tudo roda localmente. Nenhuma API paga é chamada. Os caminhos vêm de variáveis de ambiente, com o padrão da máquina do Nei; se a sua for diferente, exporte as variáveis (tabela abaixo) e nada no código precisa mudar.
Voz: inemavox + ambiente chatterbox
O projeto inematds/inemavox clonado em ~/projetos/inemavox (o motor chama o tts_direct.py e o whisper_daemon.py dele). O TTS chatterbox e o Whisper large-v3 rodam num ambiente Python à parte (no Nei, o conda env chatterbox em ~/miniconda3/envs/chatterbox); se o seu estiver em outro lugar, aponte as variáveis abaixo. Se clonar em outro lugar, exporte RTEXJP_INEMAVOX com o caminho. O Whisper large-v3 ocupa cerca de 10 GB na placa de vídeo (GPU NVIDIA), mais o chatterbox. Testado em Linux.
git clone https://github.com/inematds/inemavox ~/projetos/inemavox cd ~/projetos/inemavox && python3 -m venv venv ./venv/bin/pip install -r requirements.txt # o rtexjp chama venv/bin/python tts_direct.py # chatterbox + faster-whisper num ambiente próprio (ver o README do inemavox) export CHATTERBOX_PYTHON=/caminho/do/env/bin/python3 # TTS export CS_WHISPER_PY=/caminho/do/env/bin/python3 # Whisper
Imagem: flux2-klein
O servidor inematds/inemaimg com o modelo flux2-klein (padrão http://localhost:8000/generate, ou o endereço em RTEXJP_IMG_URL), mais a foto de referência do avatar (RTEXJP_AVATAR_REF). Só é preciso nos passos opcionais 4 e 5 (poses e desenhos de cena); as poses do Nei e a biblioteca de desenhos já vêm prontas.
Node, ffmpeg, Python
Node 18 ou mais novo, ffmpeg (com o ffprobe, que vem junto) e Python 3 com Pillow e numpy.
git clone https://github.com/inematds/rtexjp cd rtexjp npm i npx playwright install chromium pip install --user pillow numpy # ou dentro de um venv
Caminhos e variáveis de ambiente
RTEXJP_INEMAVOX · pasta do inemavox (TTS + Whisper) | ~/projetos/inemavox |
RTEXJP_VOZ_REF · gravação de referência da voz (.wav) | ~/projetos/timesmkt3/media/voice-refs/nei.wav |
RTEXJP_IMG_URL · servidor de imagem flux2-klein | http://localhost:8000/generate |
RTEXJP_AVATAR_REF · foto de referência do avatar | ~/projetos/inema-referencias/nei-avatar.jpg |
RTEXJP_AVATAR_DESC · traços e roupa do personagem no pedido de imagem (em inglês) | boné preto, óculos, barba grisalha, camiseta azul-aço (o Nei) |
RTEXJP_TRILHA · cama musical do mix | motor/assets/trilha.mp3 |
CS_WHISPER_PY · Python do ambiente com faster-whisper (servidor do Whisper e plano B) | ~/miniconda3/envs/chatterbox/bin/python3 |
CHATTERBOX_PYTHON · Python do ambiente do chatterbox, exigido pelo tts_direct.py do inemavox | o do ambiente chatterbox |
# exemplo: tudo em outros caminhos, sem editar o código export RTEXJP_INEMAVOX=~/inemavox export RTEXJP_VOZ_REF=~/minha-voz.wav export RTEXJP_AVATAR_REF=~/minha-foto.jpg export RTEXJP_AVATAR_DESC="same face, short brown hair, no glasses. She wears a plain navy blazer" export RTEXJP_IMG_URL=http://outra-maquina:8000/generate
Do roteiro ao final.mp4
Cada edição mora em edicoes/<id>/. O atalho tudo (passo 10) roda de uma vez checar, voz, cena, render, mix e qa (sem a prévia de quadros do passo 7).
Aponte a sua voz de referência você
O passo da voz clona a voz de uma gravação curta. O padrão aponta para a gravação do Nei, que não vem no repositório; sem apontar a sua, o passo voz falha. Grave uns 10 a 20 segundos da sua fala limpa, em WAV, e exporte RTEXJP_VOZ_REF. Se for trocar o avatar também, exporte RTEXJP_AVATAR_REF com uma foto sua e RTEXJP_AVATAR_DESC com os seus traços e a roupa, e rode o passo 4.
export RTEXJP_VOZ_REF=~/minha-voz.wav export RTEXJP_AVATAR_REF=~/minha-foto.jpg # só se for trocar o avatar
Escreva o roteiro você
Copie o roteiro do exemplo e troque o conteúdo. O formato está resumido logo abaixo do guia, em "O roteiro.json".
mkdir -p edicoes/minha-edicao cp edicoes/2026-10-28-china-fecha/roteiro.json edicoes/minha-edicao/ # depois edite
Valide as regras do formato
Sem gosto, só regra. Reprova: ordem dos blocos errada, menos de 2 ou mais de 5 peças, índice diferente do número de peças, algarismo ou exclamação na fala (escreva os números por extenso), fonte que não existe em fontes, palavra de destaque_fala ou de gatilho que não está na fala, número na tela sem fonte, silêncio antes da máxima fora de 0,5–0,9 s. Gancho: gancho.tipo fora da lista, gancho de lista/"você sabia"/"eu fiz", manchete do quadro 0 com mais de ~6 palavras, sem caixa alta ou sem a palavra quente, sem objeto com dano, prova depois do 3º bloco. Isca: pergunta sem "?", opções que não são uma palavra em caixa alta, opção fora da fala do CTA ou não plantada antes, lado do Nei não dito antes da pergunta, entregável, ou CTA prometendo entrega ("te mando", "eu envio", "comenta X que…"). Roteiro no formato antigo (palavra + entregável, sem gancho) passa só com aviso de LEGADO.
python3 rtexjp.py checar edicoes/minha-edicao
Poses do avatar opcional
As 11 poses do Nei (camiseta azul-aço) já vêm em motor/avatar/: susto, surpreso, duvida, queixo, apontando, olha, explica, polegar, bracos, segurando, mostrando. Rode só se trocou o personagem: a foto (RTEXJP_AVATAR_REF) e a descrição de traços e roupa (RTEXJP_AVATAR_DESC, em inglês, que vai no pedido ao flux2-klein). Passe nomes para refazer só essas. Olhe cada pose antes de seguir: o fundo verde é recortado sozinho, mas mão torta ou fundo escuro pedem outra tentativa.
python3 motor/gerar_avatar.py # todas python3 motor/gerar_avatar.py susto duvida # só essas
Desenhos-herói e print da prova opcional
Cada batida do roteiro mostra um objeto ilustrado grande entre a manchete e o avatar, no mesmo estilo flat. Eles ficam numa biblioteca reaproveitável, motor/assets/objetos/<nome>.png, com o pedido e a seed em indice.json. Já vêm 18 (terminal quebrado, mapa com pinos, mapa rasgado, lupa sobre arquivos, balão de explicação, dominós, alerta de custo, pasta, chave, cadeado, torneira com cadeado, computador de mesa, HD guardado, iceberg, etiqueta de preço, medidor, balança e carteira vazia). Para um novo, descreva o objeto em inglês; se sair torto ou manchado, troque a seed. A prova usa um print real da página da fonte, guardado em edicoes/<id>/prova/ e citado no campo print da batida.
python3 motor/gerar_objeto.py foguete "a small blue rocket taking off" 11 python3 motor/gerar_objeto.py --lista node motor/capturar_prova.mjs https://github.com/dono/repo edicoes/minha-edicao/prova/pagina.png node motor/capturar_prova.mjs https://github.com/dono/repo edicoes/minha-edicao/prova/estrelas.png --clip 1130,180,130,44
Voz por bloco + tempo de cada palavra
Um áudio por bloco com a voz do Nei; o Whisper marca cada palavra em build/tempos.json. Passe nomes de bloco para refazer só esses. O Whisper roda como servidor do inemavox (whisper_daemon.py, com o Python de CS_WHISPER_PY); se ele não subir, o motor usa o transcrever_v1.py do inemavox com esse mesmo Python. O log fica em ~/.cache/whisper_daemon.log.
python3 rtexjp.py voz edicoes/minha-edicao # todos os blocos python3 rtexjp.py voz edicoes/minha-edicao p2 ressalva # só esses
Monte a cena e confira quadros soltos
cena grava build/cena.json. Antes do render completo, tire alguns quadros (em segundos) para olhar.
python3 rtexjp.py cena edicoes/minha-edicao node motor/render.mjs edicoes/minha-edicao/build --quadros 0,10,20 # -> edicoes/minha-edicao/quadros/
Render 1080×1920 a 30 fps
O Playwright fotografa o palco quadro a quadro e o ffmpeg junta em build/video.mp4 (mudo).
python3 rtexjp.py render edicoes/minha-edicao
Mixagem e QA
Voz + trilha baixa (que para no silêncio da máxima), volume final em −14 LUFS. A trilha que vem em motor/assets/trilha.mp3 é a cama dos reels do Nei: para publicar os seus, aponte RTEXJP_TRILHA para uma música cuja licença você conheça; depois o QA grava qa.md, build/qa.json e contact.jpg. Critério que falhar aparece com ❌ no qa.md e o comando termina com um erro do Python (CalledProcessError): é o sinal de QA reprovado, não um bug.
python3 rtexjp.py mix edicoes/minha-edicao # -> final.mp4 python3 rtexjp.py qa edicoes/minha-edicao # -> qa.md, contact.jpg
Ou tudo de uma vez
Roda checar → voz → cena → render → mix → qa. Para se o checar reprovar.
python3 rtexjp.py tudo edicoes/minha-edicao
Olhe antes de publicar você
Abra o contact.jpg e assista ao vídeo. Título, descrição (terminando na pergunta) e comentário fixado (com o link do repositório e a fonte, parados, sem virar recompensa) ficam no bloco publicar do roteiro. A publicação fica fora deste repositório.
O formato do roteiro, em uma tela
Um objeto com id, versao, titulo, gancho, isca, fontes, a lista blocos e o bloco publicar. Trecho real do 1º exemplo, encurtado (as linhas // não são JSON válido; o arquivo completo está em edicoes/2026-10-28-china-fecha/roteiro.json):
{
"id": "2026-10-28-china-fecha", "versao": "rtexjp/3",
"gancho": { "tipo": "perda", "objeto": "torneira cromada fechada com cadeado vermelho..." },
"isca": { "tipo": "opiniao", "pergunta": "Se a torneira fechar, você paga ou roda local?",
"opcoes": ["PAGO", "LOCAL"], "lado": "Eu já rodo a minha aqui em casa" },
"fontes": [ { "id": "mofcom", "valor": "pela 1ª vez, modelos grandes de IA na lista de exportação controlada",
"linha": "Recode China AI · 21/10/2026 · sobre o rascunho de 16/10" } ],
"blocos": [
{ "id": "tese", "tipo": "tese", "pose": "susto",
"fala": "E se a China fechar a torneira da IA grátis? O modelo barato que você usa hoje pode sumir.",
"tela": { "texto": "A CHINA FECHA A TORNEIRA?", "destaque": "FECHA" },
"cena": { "comp": "quadro", "params": { "beats": [
{ "manchete": ["A CHINA", "FECHA A", "TORNEIRA?"], "destaque": "FECHA A",
"objeto": "torneira_fechada", "carimbo": "LICENÇA", "pose": "susto" },
{ "em": "sumir", "manchete": ["PODE", "SUMIR"], "objeto": "carteira_vazia", ... } ] } } },
// ... autoridade (prova com print), tese (problema + opções), virada, metodo ×3, ressalva ...
{ "id": "maxima", "tipo": "maxima", "silencio_antes_s": 0.8, "cena": { "comp": "maxima", ... },
"fala": "IA grátis nunca foi sua. Era emprestada. Sua é a que roda na sua máquina." },
{ "id": "cta", "tipo": "cta", "hold_s": 7.5, "cena": { "comp": "opiniao", "params": { "digita": "LOCAL" } },
"fala": "Eu já rodo a minha aqui em casa. E você, se a torneira fechar: paga ou roda local? Comenta PAGO ou LOCAL." }
],
"publicar": { "titulo": "...", "descricao": "... termina na pergunta?", "comentario_fixado": "fonte + pergunta" }
}
Campos de cada bloco
tipo (ordem acima) · fala (por extenso, sem algarismo) · fala_tts (opcional, grafia para o TTS pronunciar certo) · tela (texto grande e a palavra em destaque) · cena.comp + cena.params (o que o palco desenha; params.gatilhos liga uma mudança de cena a uma palavra da fala) · pose do avatar · destaque_fala (palavras coloridas na legenda) · fonte (id em fontes) · rotulo e n (número da peça). Só na maxima: silencio_antes_s (0,5–0,9). Só no cta: hold_s, quanto o cartão fica depois da última palavra (5–9 s; com a fala, o cartão inteiro dá ~10 s). No topo: gancho.tipo (contrario, perda, estatistica, historia) e gancho.objeto; isca com tipo: "opiniao", pergunta, opcoes e lado.
Componentes do palco (cena.comp)
Formato atual: gancho (quadro 0 com objeto danificado), contador (aceita decimais), duas (problema + as opções da isca), indice, mapa, explica, impacto, ressalva, flash, opiniao (cartão da pergunta). Da 1ª edição, ainda no palco: titulo, frase, pasta, repo, carro, equipe, cta (legado). O mascote robô é desenhado pelo próprio palco, ao lado do avatar, e reage à cena (interrogação, alerta, visto). Poses: bracos, queixo, apontando, segurando, surpreso, mostrando. Os parâmetros de cada componente estão nos exemplos edicoes/2026-10-28-china-fecha/roteiro.json e edicoes/2026-10-28-paga-200/roteiro.json.
Dois vídeos feitos com o motor
Um tema em duas partes: e se a China parar de entregar IA grátis e a IA paga subir de US$ 200 para US$ 5 mil? O 1º vídeo fica com o lado da China; o 2º, com o preço. Os dois seguem o formato atual (azul-marinho, visual v1.2, gancho, prova com print real da fonte, ressalva honesta e pergunta de opinião). Os números são tratados como cenário: o rascunho chinês ainda não é lei e os US$ 5 mil são estimativa, e cada vídeo diz isso na parte honesta.
1º vídeo · "E se a China fechar a torneira da IA grátis?" gancho de perda
A prova é o rascunho de controle de exportação publicado pela China em 16/10/2026: pela primeira vez, modelos grandes de IA entram na lista do que só sai do país com licença. Três passos (baixe, rode, separe) e a pergunta PAGO ou LOCAL. Arquivos em edicoes/2026-10-28-china-fecha/ (o bloco publicar do roteiro traz título, descrição e comentário fixado).
O que o QA mediu
| Duração | 79,7 s |
| Resolução | 1080×1920 · 30 fps |
| Ritmo da fala | 174 palavras/min |
| Volume | −14,0 LUFS |
| Trocas visuais | 24,8 por minuto |
| Manchete / menor texto | ≥ 98 px / ≥ 30 px |
| Área ocupada / avatar | ≥ 55 % / 43 % da altura |
| Contraste do texto | ≥ 5,2:1 |
| Prova (fato com fonte) | aos 6,6 s |
| Opções da isca antes do CTA | 47,7 s antes |
| CTA sem promessa de entrega | sim |
| Silêncio antes da máxima | 0,85 s |
| Cartão final (fala + 7,5 s segurado) | 14,6 s |
O player toca o edicoes/2026-10-28-china-fecha/final.mp4 do repositório. Baixar o final.mp4 (21 MB)
Quadro a quadro (1º vídeo)








A folha de contato do 1º vídeo

2º vídeo · "Você paga 200 dólares. A IA custa até 5 mil." gancho de número
A prova é uma análise interna do Cursor, publicada pela Forbes e resumida pelo the-decoder em 07/03/2026: o plano de US$ 200 do Claude Code pode consumir até US$ 5 mil de computação por mês. Três passos (meça, separe, plano B) e a pergunta PAGA ou SAI. Arquivos em edicoes/2026-10-28-paga-200/.
O que o QA mediu
| Duração | 74,2 s |
| Resolução | 1080×1920 · 30 fps |
| Ritmo da fala | 175 palavras/min |
| Volume | −14,0 LUFS |
| Trocas visuais | 22,7 por minuto |
| Manchete / menor texto | ≥ 96 px / ≥ 30 px |
| Área ocupada / avatar | ≥ 56 % / 43 % da altura |
| Contraste do texto | ≥ 5,2:1 |
| Prova (número com fonte) | aos 6,0 s |
| Opções da isca antes do CTA | 59,7 s antes |
| CTA sem promessa de entrega | sim |
| Silêncio antes da máxima | 0,84 s |
| Cartão final (fala + 7,5 s segurado) | 14,6 s |
O player toca o edicoes/2026-10-28-paga-200/final.mp4 do repositório. Baixar o final.mp4 (20 MB)
Quadro a quadro (2º vídeo)








A folha de contato do 2º vídeo

Onde o projeto está
O que existe hoje no repositório.
checar, isca de opinião sem entregável, caminhos por variável de ambiente.motor/assets/objetos/), print real na prova, manchete Sora centrada, legenda karaokê, papel azul-gelo alternando com o marinho, grão e holofote, e o portão de beleza no QA.