📺 ASPIRA · WORKFLOW + PRD

YouTube Live

Fluxo histórico do Aspira para detectar lives do YouTube, entrar no chat ao vivo, responder perguntas com persona contextual e, opcionalmente, reagir a chamadas por voz. O sistema está inativo, mas agora com documentação, spec e estado operacional alinhados ao código real.

📍 Canal alvo: lives do Diego / IntusCripto
🧠 Provider main: GPT/OpenAI
🛟 Fallback: Groq
🎙️ Voz opcional: AssemblyAI / legado
🚦 Rate limit e cooldown embutidos
Status
Inativo / desativado
Último estado conhecido
Interrompido em 2026-02-14
Detector
live-detector.js
Agente principal
chat-agent-v5.js
Canal de execução
YouTube Live Chat

Pipeline resumido

Descobrir live → subir agente → ler chat/áudio → responder com persona e contexto

1. DETECÇÃO

Live detector

`live-detector.js` descobre se existe live ativa, resolve `videoId` / `liveChatId` e sobe o agente principal se houver chat disponível.

2. CONTEXTO

Persona + mercado

O agente carrega a persona base do Aspira, a persona específica de YouTube Live e o contexto agregado de mercado antes de decidir como responder.

3. RESPOSTA

Provider principal

As respostas do chat agora saem pelo provider main GPT/OpenAI, com fallback para Groq se o principal falhar.

4. ÁUDIO

Chamadas por voz

Quando habilitado, o fluxo também escuta a live, detecta chamadas ao Aspira e responde no chat com cooldown para evitar spam.

Estado real hoje. O fluxo foi preservado, mas não está operacional em produção contínua. Esta página existe para documentar exatamente isso, com checklist claro para religar sem drift entre PRD e código.
⚠️

Regras críticas

O que mantém o fluxo seguro e útil quando reativado

Não responder tudo

O sistema foi desenhado para menções, oportunidades claras e momentos contextuais, não para virar spam automático no chat da live.

Cooldown obrigatório

Há limites por minuto, por usuário e por janela de respostas proativas para reduzir ruído e evitar comportamento invasivo.

Fallback controlado

Se o provider principal falhar, Groq assume. Se ambos falharem, o correto é degradar silenciosamente e registrar no log.

Reativação só com smoke test

Nada de religar health-check ou automação contínua sem validar detector, live chat, tokens Google e resposta fim a fim.

0

Workflow detalhado

Fluxo atualizado para o estado real do sistema

Fase 0
Ronda, detector e decisão de start
Scripts
smart-ronda.js
live-detector.js
1
Checar janela operacionalO `smart-ronda.js` evita ruído fora dos horários esperados e reduz tentativas desnecessárias de start.
2
Descobrir live ativaO detector consulta a YouTube Data API, resolve a live atual e tenta capturar `videoId` e `liveChatId`.
3
Subir o agenteSe a live estiver elegível, `live-detector.js` sobe `chat-agent-v5.js` com PID file, log e variáveis do provider.
Fase 1
Bootstrap do agente
Entradas
liveChatId
videoId
persona + contexto
1
Carregar personaO agente junta persona base, persona específica de YouTube Live e contexto de mercado consolidado.
2
Montar limitesAplica rate limit global, limiar anti-spam por usuário, cooldown de proactive e limites horários.
3
Entrar no loopComeça o polling do chat e, se `videoId` existir, habilita também o monitoramento de áudio.
Fase 2
Leitura do chat e geração da resposta
LLM
main = GPT/OpenAI
fallback = Groq
1
Filtrar mensagensIgnora ruído, evita responder repetidamente ao mesmo usuário e identifica menções ou oportunidades válidas.
2
Gerar prompt contextualInclui persona, contexto de mercado, mensagem atual e limites de comportamento.
3
Chamar provider mainUsa `OPENAI_API_KEY` e `LIVE_OPENAI_MODEL`. Se falhar, cai automaticamente para Groq.
4
Publicar no live chatA resposta vai para o chat do YouTube com logging local para auditoria posterior.
Fase 3
Áudio e encerramento
Extras
AssemblyAI opcional
Logs + stop manual
1
Transcrever a liveQuando habilitado, usa o caminho preferencial com AssemblyAI e o legado como fallback técnico.
2
Detectar chamada ao AspiraSe Diego chamar o Aspira em voz, o sistema responde no chat respeitando cooldown.
3
Parar e revisarAo fim da live, o processo pode ser encerrado e os logs ficam em `logs/live-agent.log` para revisão.
⚙️

Specs técnicas

Arquivos, segredos, estado e comandos

Arquivos principais

  • `integrations/youtube-live/chat-agent-v5.js`
  • `integrations/youtube-live/live-detector.js`
  • `integrations/youtube-live/smart-ronda.js`
  • `integrations/youtube-live/audio-transcriber*.js`
  • `integrations/youtube-live/env-loader.js`

Provider atual

  • principal: `OPENAI_API_KEY`
  • modelo default: `LIVE_OPENAI_MODEL=gpt-4.1-mini`
  • provider selector: `LIVE_LLM_PROVIDER=main`
  • fallback: `GROQ_API_KEY`

Segredos e tokens

  • YouTube Data API / Google OAuth
  • OpenAI General API
  • Groq API
  • AssemblyAI opcional
  • tokens Google em `integrations/google/tokens.json`

Execução manual

cd /home/molt/.openclaw/workspace/integrations/youtube-live node live-detector.js check node live-detector.js start-agent node live-detector.js stop-agent

Estado local

  • PID: `/tmp/aspira-live-agent.pid`
  • Logs: `/home/molt/.openclaw/workspace/logs/live-agent.log`
  • Ronda state: `ronda-state.json`

Dívida técnica conhecida

  • detector e worker precisam de reteste antes de religar
  • fluxo está preservado, mas sem operação contínua
  • health-check antigo não deve ser religado sem smoke test
📋

PRD resumido

Objetivo, escopo, riscos e reativação

Problema

Durante lives, o Diego precisava de uma camada de resposta rápida e contextual no chat, sem virar um bot barulhento ou fora de tom.

Objetivo

Dar presença ao Aspira dentro da live, responder menções, apoiar perguntas recorrentes e reagir a chamadas por voz com contexto de mercado.

Escopo

  • detectar live
  • subir agente no chat
  • responder por texto
  • opcionalmente ouvir a live
  • respeitar cooldown e limites

Fora de escopo

  • moderação agressiva
  • trading automático
  • ordens onchain/CEX
  • multi-canal fora do YouTube

Critérios de sucesso

  • detecção confiável da live
  • resposta útil e contextual
  • fallback funcional
  • baixo ruído no chat
  • logs claros

Riscos

  • tokens Google expirados
  • drift entre persona e operação real
  • ruído excessivo se limites forem mal calibrados
  • detector sem monitoramento válido

Checklist para reativar

  • validar `YOUTUBE_API_KEY` e OAuth Google
  • executar `node live-detector.js check`
  • confirmar `videoId` + `liveChatId`
  • testar provider main e fallback
  • testar caminho de áudio
  • acompanhar log até o fim da live

Estado desta revisão

  • PRD criado e alinhado
  • docs atualizadas
  • HTML novo no padrão do hub
  • card adicionado ao aspira-workflows
  • Anthropic removido do caminho principal do fluxo
Arquivo de referência detalhado: `integrations/youtube-live/PRD.md` agora concentra a spec textual completa do fluxo.