Agregação automatizada de mercado → Telegram Central (com links) + WhatsApp Avisos (sem links)
Pipeline completo do gatilho ao entregável — executa todo dia às 07:00 BRT
health-check.js valida credenciais (1Password, Firecrawl, Tavily, Groq). Verifica lock file e flag briefing-sent-YYYY-MM-DD.flag. Se já enviado hoje → aborta silenciosamente.aggregate.js com timeout de 10 minutos. Coleta de múltiplas fontes em paralelo: headlines via Firecrawl/Tavily (~982 por dia), tweets via Bird CLI, preços cripto, funding rates, Fear & Greed Index. Semantic Intelligence (Groq) categoriza os itens automaticamente. Saída: output/YYYY-MM-DD.json (~200KB)format-diego-compact-v3.js — versão 100% em português com links. Fallback automático para v2 e v1. Saída: output/YYYY-MM-DD-diego-compact.md (~1.6KB). Estrutura: preços BTC/ETH + Fear & Greed → seções por categoria (₿ CRIPTO, 🌍 MACRO, 🏦 DEFI, 🏛️ INSTITUCIONAL, 📊 ON-CHAIN, ⚡ ALPHAS, 🎁 AIRDROPS, 🔗 TOKENIZAÇÃO)openclaw message send. Contém todas as categorias + URLs originais das fontes (Twitter, TheDefiant, etc).🔗 https://, preserva seções como 🔗 *TOKENIZAÇÃO*). Enviada via wa-sender.js (Baileys standalone, independente do gateway).🔗 https:// removidas, mas seções como 🔗 *TOKENIZAÇÃO* são preservadasEspecificação funcional completa do sistema Daily Briefing
| Campo | Valor |
|---|---|
| Nome | Daily Briefing Cripto — ASPIRA |
| Objetivo | Entregar automaticamente um resumo curado do mercado cripto todo dia às 07:00 BRT para Diego e para o grupo de alunos do IntusCripto Club |
| Owner | Diego Spanevello (IntusCripto) |
| Operado por | ASPIRA (OpenClaw Gateway) |
| Frequência | Diária — 07:00 BRT |
| Destinos | Telegram tópico Central (685) + WhatsApp grupo Avisos |
| Versão atual | 3.0 (2026-03-26) |
| Status | ✅ Produção |
| ID | Requisito | Status |
|---|---|---|
| RF-01 | Coletar automaticamente headlines cripto de múltiplas fontes (Firecrawl, Tavily, Twitter/Bird CLI) | ✅ Implementado |
| RF-02 | Categorizar conteúdo semanticamente via IA (Groq) em: CRIPTO, MACRO, DEFI, INSTITUCIONAL, ON-CHAIN, ALPHAS, AIRDROPS, TOKENIZAÇÃO | ✅ Implementado |
| RF-03 | Incluir dados de mercado em tempo real: preços BTC/ETH, variação 24h, Fear & Greed Index, funding rates | ✅ Implementado |
| RF-04 | Gerar briefing 100% em português brasileiro | ✅ Implementado |
| RF-05 | Enviar para Telegram com links originais das fontes | ✅ Implementado |
| RF-06 | Enviar para WhatsApp Avisos SEM URLs (versão limpa para alunos) | ✅ Implementado |
| RF-07 | Garantir anti-duplicata — nunca enviar duas vezes no mesmo dia | ✅ Implementado |
| RF-08 | Sistema de recovery automático se aggregator falhar | ✅ Implementado |
| RF-09 | Log completo de cada execução em /tmp/briefing-daily.log | ✅ Implementado |
| ID | Requisito | Meta |
|---|---|---|
| RNF-01 | Tempo máximo de execução completa | ≤ 12 minutos (timeout: 720s) |
| RNF-02 | Tamanho do briefing entregue | ≥ 1.000 bytes (validado antes do envio) |
| RNF-03 | Zero credenciais hardcoded | 100% via 1Password vault "Aspira" |
| RNF-04 | Independência do WA gateway plugin | wa-sender.js usa Baileys standalone |
| RNF-05 | Retenção de outputs | 7 dias (JSON + MD), 3 dias (backups) |
| # | Regra | Razão |
|---|---|---|
| 1 | Telegram recebe conteúdo completo com links | Diego usa os links para aprofundar pesquisa |
| 2 | WhatsApp remove linhas 🔗 https:// mas preserva seções 🔗 *NOME* |
Alunos não precisam de links; seções são estrutura visual |
| 3 | Nunca expor paths internos, credenciais ou erros técnicos no grupo Avisos | Grupo público de alunos — segurança |
| 4 | Se Telegram falhar → abortar com flag pending | Telegram é o canal primário |
| 5 | Se WhatsApp falhar → logar e continuar (não abortar) | Canal secundário; não deve bloquear o fluxo |
| 6 | Erro 479 no ACK do WhatsApp é NORMAL — mensagem foi entregue | Comportamento do protocolo LID em grupos |
| Serviço | Item 1Password | Uso |
|---|---|---|
| Firecrawl | Firecrawl API → api_key | Scraping de sites de notícias |
| Tavily | Tavily API → api_key | Search AI + extração |
| Groq | Groq API → password | Categorização semântica (LLM) |
| Twitter/Bird | Twitter Bird → authToken + ct0 | Coleta de tweets cripto |
| Credenciais WA em /credentials/whatsapp/default/ | Envio via Baileys |
Headlines & Notícias
APIs de Mercado
Evolução do sistema desde a criação
| Data | Problema | Solução |
|---|---|---|
| 26/03/2026 | WhatsApp nunca enviou para grupo Avisos desde criação do cron (7 erros) | wa-sender.js (Baileys standalone) — bypass total do gateway plugin |
| 26/03/2026 | avisos-dispatch-update.sh retornava 404 "Not Found" | Desativado — desnecessário com nova arquitetura direta |
| 26/03/2026 | Seção "🔗 *TOKENIZAÇÃO*" era removida junto com URLs | Filtro corrigido para grep -v "^🔗 https://" |
| 16/03/2026 | Zero tweets coletados (error crítico) | Falha transiente de rede/rate limit — alerta foi disparado e limpo |