Os 10 maiores canais de futebol do YouTube (Brasileirão, futebol europeu, mercado da bola e polêmicas), transcritos, conferidos e resumidos num vídeo com a fonte na tela e o Nei comentando.

O futviral é um sistema que faz, sozinho, vídeos verticais (9:16) de 2 a 3 minutos com o resumo do que os 10 maiores canais de futebol do YouTube disseram: Brasileirão, futebol europeu, mercado da bola, polêmicas e negócios do futebol. Ele "assiste" aos vídeos pela transcrição, separa os fatos e os números com a fonte de cada um e monta um vídeo com números grandes, carimbos (RUMOR, NEGOCIANDO, FECHADO, POLÊMICA) e o Nei (Nei Maldaner, criador do INEMA) comentando em avatar. Rumor é tratado como rumor, nenhum clube tem lado e aposta não entra. Serve para quem quer saber, em poucos minutos, o que os principais canais andam falando. Roda num computador com GPU, com a assinatura do Claude Code e do HeyGen.
O futviral lê o que os canais publicaram, confere cada fato contra a transcrição e publica um vídeo pronto. O vídeo relata o que cada canal disse, sempre com a fonte, sem torcer por ninguém.
Cada fato ou número precisa estar na transcrição, com o trecho literal. Canal, data e título aparecem na tela. Placar, valor de transferência e multa só entram se o canal disse.
Contratação, saída ou demissão de técnico só vira "fechado" quando o clube confirma; antes disso é "rumor" ou "negociando". Tudo atribuído a quem disse, sem torcer. Aposta não entra.
Roteiro com o claude -p (assinatura, sem API), transcrição local com Whisper e avatar pelo estúdio do HeyGen. A oferta de troca de plano do HeyGen é sempre recusada.
Etapas encadeadas pelo auto/rodar.sh. Se a conferência reprovar duas vezes, o vídeo não é feito. Dia fraco também não vira vídeo: o bot recebe "sem pauta".
Lista os vídeos dos canais de canais.json (só metadados, yt-dlp), escolhe primeiro o mais visto de cada canal (até 3 por canal, sem repetir vídeo já usado e pulando vídeo/live com mais de 75 min), pega a legenda do YouTube e, se não houver, baixa o áudio e transcreve localmente (inemavox, Whisper large-v3; em inglês para o Fabrizio Romano).
O claude -p lê as transcrições e grava base.md (cada fato, quem disse, o vídeo e o trecho literal), roteiro.json (falas e visuais) e legenda.txt.
O auto/checar.py confere os trechos na transcrição, os números por extenso na fala, pelo menos 5 assuntos, o aviso "Rumor só vale quando o clube confirma.", o CTA do inema.club e reprova qualquer fala de aposta. Reprovou: volta uma vez para correção.
O HeyGen gera o avatar do Nei pelo estúdio (assinatura). Se falhar, sai a versão com a foto e a voz do Nei, que só vai ao bot.
O motor/palco.html é renderizado quadro a quadro pelo Playwright, com contadores, carimbos e a fonte na tela. A imagem é a miniatura do vídeo do canal: lance, gol e escudo de clube não entram.
Na agenda, o vídeo pronto vai primeiro ao bot v3 como prévia; ao meio-dia o auto/publicar-pendente.sh publica no YouTube Inema Club24 (lives24) pelo yt-pubx e manda o link ao bot.
Cada rodada é um modo do auto/rodar.sh. A agenda (timers em systemd/) está ligada: a geração roda às 09:00 e a publicação às 12:00, fora dos horários dos projetos irmãos que usam a mesma GPU e o mesmo HeyGen.
diarioO resumo dos dez, 2 a 3 minutos: os vídeos de ontem e anteontem ainda não usados, com pelo menos cinco assuntos (um por canal sempre que der). Se menos de cinco canais publicaram nesses dois dias, a janela se amplia para cinco dias.semanalBalanço da semana (os 7 dias até ontem), 2 a 3 minutos. Depois, o longo 16:9 "A semana explicada" (5,5 a 7 minutos).domingoO que os canais esperam para a próxima semana (clássicos, decisões, técnico ameaçado, negociações), 2 a 3 minutos. Depois, o longo 16:9 explicado (5,5 a 7 minutos).Escolhidos em 26/10/2026 por medição própria (yt-dlp, mediana de views dos últimos 15 vídeos, canal ativo e falado). Canal de melhores momentos, de reação de torcida e de aposta ficou de fora. Detalhes em pesquisa/canais.md.
Eurão (resumões e histórias do futebol europeu), Fabrizio Romano (mercado mundial, em inglês) e Fred Caldeira (europeu e opinião).
Jovem Pan Esportes (notícias e debate), Jozão (opinião sobre os jogos), Chico Garcia (Brasileirão) e Mauro Cezar (opinião e polêmica).
Tode (mercado da bola diário), Canal do Nicola (mercado brasileiro e bastidores) e TiaGOL (análise e negócios do futebol).
O futviral não é um app isolado: ele usa outras ferramentas do ecossistema INEMA, todas em ~/projetos/, num computador com GPU. O repositório fica em ~/projetos/futviral (os timers do systemd e os links apontam para lá).
yt-dlp para listar e baixar. inemavox (~/projetos/inemavox, com baixar_v1.py e transcrever_v1.py) é o kit local de download e transcrição com Whisper.
Node com Playwright e ffmpeg. motor/node_modules é um link para ~/projetos/eventosextremospub/motor/node_modules; sem esse projeto, rode npm install playwright em motor/.
claude (Claude Code logado na assinatura, chamado como claude -p). O longo de fim de semana usa o motor ~/projetos/explicavideos/engine/v2.
O estúdio do HeyGen aberto num navegador em tela virtual (Xvfb :99), com o perfil já logado do projeto explicavideos. Sem ele, a rodada sai com a foto e a voz clonada do Nei (Chatterbox, voz nei, pelo projeto ~/projetos/cardshorts).
yt-pubx (~/projetos/yt-pubx), a ferramenta que publica no YouTube; lives24 é o nome dele para o canal Inema Club24.
O bot v3 é o bot de Telegram do Nei que recebe cada vídeo e aviso, pelo script ~/projetos/refazvideo/ferramentas/enviar_bot_v3.mjs.
Comandos reais do repositório, executados na raiz do projeto.
O futviral fica em ~/projetos/futviral e usa projetos públicos do INEMA ao lado dele. Precisa também de yt-dlp, ffmpeg, node e do claude logado na assinatura.
cd ~/projetos git clone https://github.com/inematds/futviral for r in inemavox yt-pubx cardshorts explicavideos refazvideo eventosextremospub; do git clone https://github.com/inematds/$r done
Cada irmão tem o próprio README com a configuração: as credenciais do canal no yt-pubx, o bot de Telegram no refazvideo, o perfil do estúdio HeyGen e a tela virtual no explicavideos, a transcrição no inemavox e a voz no cardshorts. O teste do passo 3 já precisa do inemavox, do cardshorts e do refazvideo; a publicação precisa de todos.
A lista fica em canais.json. Para pausar um canal sem apagar, use "ativo": false. O handle é o caminho do canal no YouTube, rk é o rótulo que aparece na tela e lang é a língua do canal para o Whisper (padrão pt).
{"handle": "channel/UCX1em-uaFMS02Rrk_Bowyng", "nome": "Fabrizio Romano", "rk": "MERCADO MUNDIAL", "lang": "en", "ativo": true}
Se outro canal de futebol consolidado aparecer em destaque, o sistema sugere a inclusão na mensagem do bot (nunca canal emergente nem de aposta). Só entra com o ok do Nei.
Rode uma rodada sem o HeyGen, sem o longo e sem mandar para o bot nem para o YouTube. Ainda usa o claude -p (cota da assinatura), baixa o áudio e ocupa a GPU no Whisper. O terminal fica quieto: a saída vai para o log da edição.
SEM_AVATAR=1 SEM_BOT=1 SEM_LONGO=1 auto/rodar.sh diario # teste: sem HeyGen, sem longo e sem enviar tail -f edicoes/$(date +%F)-diario/rodada.log # acompanhar
Na pasta edicoes/AAAA-MM-DD-diario/ ficam o base.md, o roteiro.json, a legenda.txt, o checar.log e o vídeo pronto (video.mp4).
Passe o modo e a data. A rodada completa gera o avatar, publica no lives24 e manda ao bot.
auto/rodar.sh diario 2026-10-26 # rodada completa (avatar + lives24 + bot) SEM_AVATAR=1 auto/rodar.sh diario 2026-10-26 # versão com foto, só para o bot REUSAR_ROTEIRO=1 auto/rodar.sh diario 2026-10-26 # refaz avatar/vídeo/publicação com o roteiro já aprovado VALIDAR=1 auto/rodar.sh diario 2026-10-26 # edição de teste (pasta -validacao), nunca vai ao YouTube
Acrescente a data e o modo em auto/pular.txt.
echo "2026-11-01 semanal" >> auto/pular.txt # pular uma rodada
Geração às 09:00 (diário de segunda a sexta, semanal no sábado, domingo no domingo) e publicação às 12:00. Copie as unidades do systemd de usuário e ative os quatro timers. Para segurar a publicação de um vídeo que já foi ao bot como prévia, crie o arquivo SEGURAR na pasta da edição.
cp systemd/futviral-* ~/.config/systemd/user/ && systemctl --user daemon-reload systemctl --user enable --now futviral-diario.timer futviral-semanal.timer futviral-domingo.timer futviral-publicar.timer systemctl --user list-timers 'futviral-*' touch edicoes/2026-10-27-diario/SEGURAR # não publica essa edição às 12:00
Na agenda, o bot v3 recebe a prévia às 09:00 e o link do Inema Club24 (lives24) depois do meio-dia. Rodada à mão (passo 4) publica na hora. Se não houver pauta ou algo falhar, o bot recebe o aviso.
O roteiro e o portão de conferência seguem estas regras.
Só entra fato que está na transcrição, com canal, data e título na tela e o trecho literal no base.md.
"Rumor só vale quando o clube confirma." em todo vídeo; transferência é "rumor" ou "negociando" até o clube confirmar.
Tudo é atribuído a quem disse. Polêmica é o que ELES disseram; nenhum clube tem lado.
Nada de bet, odd ou palpite. O portão reprova a fala.
Lance, gol, imagem de jogo e escudo de clube não entram (direito de transmissão). A tela usa número, tabela, carimbo e a miniatura do vídeo do canal.
Fala no tom do Nei ("você"), com números por extenso. No fim, uma pergunta para comentar e o CTA do inema.club.