Vídeo 9:16 · Futebol · automático

O que o futebol do YouTube disse, em 3 minutos

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.

Banner RADAR FUTEBOL: o que os 10 maiores canais de futebol do YouTube disseram, em 3 minutos
Em resumo

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 que é

Um radar de futebol que se monta sozinho

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.

Fluxo do futviral: coleta, transcrição, roteiro, conferência, avatar e publicação

🔎 Só fato com fonte

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.

📰 Rumor é rumor

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.

🔒 Tudo pela assinatura

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.

Como funciona

Da transcrição ao YouTube, sem mão humana no meio

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".

Coleta→ Transcrição→ Roteiro→ Conferência→ Avatar→ Vídeo→ YouTube + bot
1

Coleta e transcrição

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).

2

Roteiro

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.

3

Conferência

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.

4

Avatar

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.

5

Vídeo

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.

6

Publicação

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.

Rodadas

Três tipos de rodada

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.

Diário
Rodada 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.
Sábado
Rodada 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).
Domingo
Rodada 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).
Os 10 canais

Quem o futviral acompanha

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.

🌍 Futebol europeu e mercado mundial

Eurão (resumões e histórias do futebol europeu), Fabrizio Romano (mercado mundial, em inglês) e Fred Caldeira (europeu e opinião).

📺 Notícias, debate 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).

💼 Mercado da bola e negócios

Tode (mercado da bola diário), Canal do Nicola (mercado brasileiro e bastidores) e TiaGOL (análise e negócios do futebol).

Pré-requisitos

O que precisa estar na máquina

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á).

Coleta e transcrição

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.

Render

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/.

Roteiro

claude (Claude Code logado na assinatura, chamado como claude -p). O longo de fim de semana usa o motor ~/projetos/explicavideos/engine/v2.

Avatar e voz

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).

Publicação

yt-pubx (~/projetos/yt-pubx), a ferramenta que publica no YouTube; lives24 é o nome dele para o canal Inema Club24.

Aviso no Telegram

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.

Guia de uso · passo a passo

Instalar, escolher os canais, testar e rodar

Comandos reais do repositório, executados na raiz do projeto.

1

Baixar o projeto e os irmãos

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.

2

Escolher os canais

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.

3

Testar sem avatar e sem publicar

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).

4

Rodar à mão

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
5

Pular uma rodada

Acrescente a data e o modo em auto/pular.txt.

echo "2026-11-01 semanal" >> auto/pular.txt   # pular uma rodada
6

Ligar a agenda e segurar uma publicação

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
7

Acompanhar no Telegram e no YouTube

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.

Regras de cada vídeo

O que todo vídeo cumpre

O roteiro e o portão de conferência seguem estas regras.

📌 Fonte na tela

Só entra fato que está na transcrição, com canal, data e título na tela e o trecho literal no base.md.

📰 Rumor é rumor

"Rumor só vale quando o clube confirma." em todo vídeo; transferência é "rumor" ou "negociando" até o clube confirmar.

⚖️ Sem torcer

Tudo é atribuído a quem disse. Polêmica é o que ELES disseram; nenhum clube tem lado.

🚫 Sem aposta

Nada de bet, odd ou palpite. O portão reprova a fala.

📺 Sem imagem de jogo

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.

🗣️ Tom do Nei e CTA

Fala no tom do Nei ("você"), com números por extenso. No fim, uma pergunta para comentar e o CTA do inema.club.