Sincroniza lives, transcreve, analisa tópicos com IA, corta com FFmpeg, gera thumbnail e publica no canal de destino — tudo orquestrado por um master-dashboard e N instâncias.
# Parte 1: sobe o master-dashboard (porta 8090) git clone https://github.com/inematds/yt-pub-livesx.git cd yt-pub-livesx ./setup.sh # http://localhost:8090
Pega as lives de um canal de origem, identifica tópicos com IA e publica os recortes num canal de destino com título, descrição, tags e thumbnail. Pensado para rodar como template multi-canal, isolando credenciais e cotas por instância.
Transcrição automática (legendas do YouTube) → análise de tópicos com Piramyd / Claude / OpenRouter → timestamps → corte com FFmpeg.
Lives do YouTube, import de vídeos da pasta imports/ e sync de canais do TikTok para o YouTube — todos caem no mesmo pipeline.
1 master-dashboard agrega tudo na porta 8090; cada canal é uma cópia do template numa porta 809N, com SQLite, OAuth e projeto GCP próprios.
O scheduler de cada canal baixa as lives novas, transcreve, analisa, corta, gera thumbnail e publica via OAuth, registrando tudo no SQLite local. O dashboard controla e o master agrega.
OAuth é por canal e a cota da YouTube Data API é por projeto GCP — separar instâncias garante cotas independentes e isolamento de falhas.
Cada par yt-dashboard<N> + yt-scheduler<N> é independente: se um canal cai, os outros seguem.
Stats clicáveis, horários, tabela de lives por status, aba de clips unificada, reprocessar erros e status do scheduler em tempo real.
Python 3.10+ e algumas ferramentas de linha de comando. Cada canal precisa de um projeto Google Cloud próprio com a YouTube Data API v3 ativa.
Python 3.10+, ffmpeg, yt-dlp, deno (runtime JS do yt-dlp), curl e Pillow.
# ubuntu/debian sudo apt-get install -y python3 ffmpeg curl git pipx install yt-dlp
Usado internamente pelo yt-dlp para alguns extratores.
curl -fsSL https://deno.land/install.sh | sh
YouTube Data API v3 ativada, OAuth Consent (External / Testing) e OAuth Client (Desktop App) com CLIENT_ID + CLIENT_SECRET + API Key.
# scopes necessários youtube, youtube.upload
A instalação é dividida em duas partes: Parte 1 sobe o master (1x por máquina); Parte 2 cria uma instância por canal a partir deste template.
Verifica dependências, instala pacotes Python e sobe o master-dashboard como systemd user service na porta 8090.
git clone https://github.com/inematds/yt-pub-livesx.git cd yt-pub-livesx ./setup.sh # http://localhost:8090
Faz as perguntas (ENTER aceita o default), copia o template para ~/projetos/<nome>, gera o .env e cria os services systemd da instância.
./scripts/setup-canal
Quando o setup-canal pausar, rode o yt-auth em outro terminal, abra o link gerado e autorize com a conta dona do canal de destino.
GWS_CONFIG_DIR=~/projetos/<nome>/config \ python3 ~/projetos/<nome>/scripts/yt-auth # callback salva os tokens em config/credentials.enc
Manual gera o prompt; com --ai piramyd-api roda automático; --dry-run só mostra os tópicos; --publish corta e publica.
yt-clip <video_id> --dry-run # só mostra tópicos yt-clip <video_id> --ai piramyd-api # automático yt-clip <video_id> --publish # corta e publica
Os scripts yt-thumbnail e yt-publish funcionam fora do fluxo automático.
yt-thumbnail --title "Título do clip" --output thumb.jpg yt-publish video.mp4 --title "Título" --description "Desc"
Cada canal tem painel próprio na porta 809N (senha default Inema2026$$$, em config/.env). O master agrega todos em 8090.
python3 dashboard/server.py 8091 # http://localhost:8091
Pensado para operar vários canais de uma vez, com sync de código opcional entre as instâncias.
Instâncias lives1..livesN, cada uma numa porta 809N, com scheduler e dashboard independentes e projeto GCP próprio por canal de destino.
O tiktok_scanner varre canais do TikTok, baixa os vídeos e os joga na fila do pipeline para publicar no canal YouTube de destino.
Largue arquivos em imports/ e o import_worker os transforma em fila do pipeline — thumbnail e publicação inclusos.
Habilite lingering, rode as duas partes e acesse os dashboards via ssh -L sem expor portas publicamente.
O pipeline está funcional para uso interno via SSH tunnel; o foco de melhoria é segurança do dashboard antes de qualquer exposição pública.
credentials.enc + .encryption_key + lives.db e cleanup de lives/.scripts/sync-instances propaga o template para as instâncias opt-in.