Los 10 mayores canales de fútbol de YouTube (Brasileirão, fútbol europeo, mercado de fichajes y polémicas), transcritos, verificados y resumidos en un video con la fuente en pantalla y Nei comentando.

futviral es un sistema que hace, solo, videos verticales (9:16) de 2 a 3 minutos con el resumen de lo que dijeron los 10 mayores canales de fútbol de YouTube: Brasileirão, fútbol europeo, mercado de fichajes, polémicas y negocios del fútbol. "Mira" los videos a través de la transcripción, separa los hechos y los números con la fuente de cada uno y arma un video con números grandes, sellos (RUMOR, NEGOCIANDO, FECHADO (cerrado), POLÊMICA (polémica)) y Nei (Nei Maldaner, creador de INEMA) comentando en avatar. El rumor se trata como rumor, ningún club tiene preferencia y las apuestas no entran. Sirve para quien quiere saber, en pocos minutos, de qué están hablando los principales canales. Funciona en una computadora con GPU, con la suscripción de Claude Code y de HeyGen.
futviral lee lo que publicaron los canales, verifica cada hecho contra la transcripción y publica un video listo. El video cuenta lo que dijo cada canal, siempre con la fuente, sin hinchar por nadie.
Cada hecho o número tiene que estar en la transcripción, con el fragmento literal. Canal, fecha y título aparecen en pantalla. Marcador, monto de transferencia y cláusula de rescisión solo entran si el canal lo dijo.
Un fichaje, una salida o el despido de un técnico solo pasa a "fechado" (cerrado) cuando el club lo confirma; antes es "rumor" o "negociando". Todo se atribuye a quien lo dijo, sin hinchar por nadie. Las apuestas no entran.
Guion con claude -p (suscripción, sin API), transcripción local con Whisper y avatar por el estudio de HeyGen. La oferta de cambio de plan de HeyGen siempre se rechaza.
Etapas encadenadas por auto/rodar.sh. Si la verificación reprueba dos veces, el video no se hace. Un día flojo tampoco se convierte en video: el bot recibe "sem pauta" (sin tema).
Lista los videos de los canales de canais.json (solo metadatos, yt-dlp), elige primero el más visto de cada canal (hasta 3 por canal, sin repetir un video ya usado y saltando videos/lives de más de 75 min), toma los subtítulos de YouTube y, si no los hay, descarga el audio y lo transcribe localmente (inemavox, Whisper large-v3; en inglés para Fabrizio Romano).
claude -p lee las transcripciones y guarda base.md (cada hecho, quién lo dijo, el video y el fragmento literal), roteiro.json (textos hablados y visuales) y legenda.txt.
auto/checar.py verifica los fragmentos en la transcripción, los números escritos con letras en el habla, al menos 5 temas, el aviso "Rumor só vale quando o clube confirma." (el rumor solo vale cuando el club lo confirma), el CTA de inema.club y reprueba cualquier frase sobre apuestas. Si reprueba: vuelve una vez para corrección.
HeyGen genera el avatar de Nei por el estudio (suscripción). Si falla, sale la versión con la foto y la voz de Nei, que solo va al bot.
motor/palco.html se renderiza cuadro por cuadro con Playwright, con contadores, sellos y la fuente en pantalla. La imagen es la miniatura del video del canal: jugadas, goles y escudos de clubes no entran.
En la agenda, el video listo va primero al bot v3 como vista previa; al mediodía auto/publicar-pendente.sh lo publica en el YouTube Inema Club24 (lives24) con yt-pubx y manda el enlace al bot.
Cada ronda es un modo de auto/rodar.sh. La agenda (timers en systemd/) está activada: la generación corre a las 09:00 y la publicación a las 12:00, fuera de los horarios de los proyectos hermanos que usan la misma GPU y el mismo HeyGen.
diarioEl resumen de los diez, de 2 a 3 minutos: los videos de ayer y anteayer aún no usados, con al menos cinco temas (uno por canal siempre que se pueda). Si menos de cinco canales publicaron en esos dos días, la ventana se amplía a cinco días.semanalBalance de la semana (los 7 días hasta ayer), de 2 a 3 minutos. Después, el video largo 16:9 "A semana explicada" (La semana explicada), de 5,5 a 7 minutos.domingoLo que los canales esperan para la próxima semana (clásicos, definiciones, técnico en la cuerda floja, negociaciones), de 2 a 3 minutos. Después, el video largo 16:9 explicado (de 5,5 a 7 minutos).Elegidos el 26/10/2026 con medición propia (yt-dlp, mediana de vistas de los últimos 15 videos, canal activo y hablado). Quedaron fuera los canales de mejores momentos, de reacción de hinchas y de apuestas. Detalles en pesquisa/canais.md (en portugués).
Eurão (resúmenes e historias del fútbol europeo), Fabrizio Romano (mercado mundial, en inglés) y Fred Caldeira (fútbol europeo y opinión).
Jovem Pan Esportes (noticias y debate), Jozão (opinión sobre los partidos), Chico Garcia (Brasileirão) y Mauro Cezar (opinión y polémica).
Tode (mercado de fichajes diario), Canal do Nicola (mercado brasileño y detrás de escena) y TiaGOL (análisis y negocios del fútbol).
futviral no es una app aislada: usa otras herramientas del ecosistema INEMA, todas en ~/projetos/, en una computadora con GPU. El repositorio está en ~/projetos/futviral (los timers de systemd y los enlaces apuntan ahí).
yt-dlp para listar y descargar. inemavox (~/projetos/inemavox, con baixar_v1.py y transcrever_v1.py) es el kit local de descarga y transcripción con Whisper.
Node con Playwright y ffmpeg. motor/node_modules es un enlace a ~/projetos/eventosextremospub/motor/node_modules; sin ese proyecto, ejecuta npm install playwright en motor/.
claude (Claude Code con sesión iniciada en la suscripción, llamado como claude -p). El video largo del fin de semana usa el motor ~/projetos/explicavideos/engine/v2.
El estudio de HeyGen abierto en un navegador en pantalla virtual (Xvfb :99), con el perfil ya con sesión iniciada del proyecto explicavideos. Sin él, la ronda sale con la foto y la voz clonada de Nei (Chatterbox, voz nei, con el proyecto ~/projetos/cardshorts).
yt-pubx (~/projetos/yt-pubx), la herramienta que publica en YouTube; lives24 es el nombre que usa para el canal Inema Club24.
El bot v3 es el bot de Telegram de Nei que recibe cada video y cada aviso, con el script ~/projetos/refazvideo/ferramentas/enviar_bot_v3.mjs.
Comandos reales del repositorio, ejecutados en la raíz del proyecto.
futviral está en ~/projetos/futviral y usa proyectos públicos de INEMA instalados a su lado. También necesita yt-dlp, ffmpeg, node y claude con sesión iniciada en la suscripción.
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 hermano tiene su propio README con la configuración: las credenciales del canal en yt-pubx, el bot de Telegram en refazvideo, el perfil del estudio de HeyGen y la pantalla virtual en explicavideos, la transcripción en inemavox y la voz en cardshorts. La prueba del paso 3 ya necesita inemavox, cardshorts y refazvideo; la publicación necesita todos.
La lista está en canais.json. Para pausar un canal sin borrarlo, usa "ativo": false. El handle es la ruta del canal en YouTube, rk es la etiqueta que aparece en pantalla y lang es el idioma del canal para Whisper (por defecto pt).
{"handle": "channel/UCX1em-uaFMS02Rrk_Bowyng", "nome": "Fabrizio Romano", "rk": "MERCADO MUNDIAL", "lang": "en", "ativo": true}
Si otro canal de fútbol consolidado aparece destacado, el sistema sugiere incluirlo en el mensaje del bot (nunca un canal emergente ni de apuestas). Solo entra con el visto bueno de Nei.
Ejecuta una ronda sin HeyGen, sin el video largo y sin enviar al bot ni a YouTube. Igual usa claude -p (cuota de la suscripción), descarga el audio y ocupa la GPU con Whisper. La terminal queda en silencio: la salida va al log de la edición.
SEM_AVATAR=1 SEM_BOT=1 SEM_LONGO=1 auto/rodar.sh diario # prueba: sin HeyGen, sin video largo y sin enviar tail -f edicoes/$(date +%F)-diario/rodada.log # seguir el progreso
En la carpeta edicoes/AAAA-MM-DD-diario/ quedan base.md, roteiro.json, legenda.txt, checar.log y el video listo (video.mp4).
Pasa el modo y la fecha. La ronda completa genera el avatar, publica en lives24 y lo manda al bot.
auto/rodar.sh diario 2026-10-26 # ronda completa (avatar + lives24 + bot) SEM_AVATAR=1 auto/rodar.sh diario 2026-10-26 # versión con foto, solo para el bot REUSAR_ROTEIRO=1 auto/rodar.sh diario 2026-10-26 # rehace avatar/video/publicación con el guion ya aprobado VALIDAR=1 auto/rodar.sh diario 2026-10-26 # edición de prueba (carpeta -validacao), nunca va a YouTube
Agrega la fecha y el modo en auto/pular.txt.
echo "2026-11-01 semanal" >> auto/pular.txt # saltar una ronda
Generación a las 09:00 (diario de lunes a viernes, semanal el sábado, domingo el domingo) y publicación a las 12:00. Copia las unidades al systemd de usuario y activa los cuatro timers. Para retener la publicación de un video que ya fue al bot como vista previa, crea el archivo SEGURAR en la carpeta de la edición.
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 # no publica esa edición a las 12:00
En la agenda, el bot v3 recibe la vista previa a las 09:00 y el enlace de Inema Club24 (lives24) después del mediodía. Una ronda a mano (paso 4) publica en el momento. Si no hay tema o algo falla, el bot recibe el aviso.
El guion y el portón de verificación siguen estas reglas.
Solo entra un hecho que está en la transcripción, con canal, fecha y título en pantalla y el fragmento literal en base.md.
"Rumor só vale quando o clube confirma." (el rumor solo vale cuando el club lo confirma) en todo video; una transferencia es "rumor" o "negociando" hasta que el club la confirme.
Todo se atribuye a quien lo dijo. La polémica es lo que ELLOS dijeron; ningún club tiene preferencia.
Nada de bets, cuotas ni pronósticos. El portón reprueba la frase.
Jugadas, goles, imágenes de partidos y escudos de clubes no entran (derechos de transmisión). La pantalla usa números, tablas, sellos y la miniatura del video del canal.
Habla en el tono de Nei (hablándole directo al espectador, "você"), con los números escritos con letras. Al final, una pregunta para comentar y el CTA de inema.club.