💰 Balance Monitor Meta
Archivo: /Users/user/rifai-agents/agentes/migrated/balance-monitor-meta.ts · Plist: com.rifai.balance-monitor · Horario: cada hora (StartInterval 3600 s)
Qué hace
Vigila el saldo disponible de la cuenta publicitaria de Meta Ads para que las campañas no se queden sin fondos. Cada hora consulta el balance a la Graph API de Facebook. Si el saldo baja del umbral de 30 € lanza una alerta crítica. La alerta sale por el router de notificaciones hacia Maya (Meta), CEOSEC y Fernando (finanzas). Si el saldo está bien, solo lo registra en el log sin molestar a nadie.
Cómo funciona
1. Parsea .env con el snippet estándar de la flota (sin dotenv).
2. Hace GET a https://graph.facebook.com/v21.0/<META_AD_ACCOUNT_ID>?fields=balance,amount_spent,currency con el access token.
3. Convierte balance y amount_spent de céntimos a euros.
4. Compara el balance contra THRESHOLD = 30 €.
5. Si está por debajo, importa tools/notify-router.js y llama a notify({ event: 'meta_balance_low', level: 'critical', ... }) con un mensaje HTML que incluye saldo, umbral, gasto acumulado y enlace al billing hub de Meta. El level: 'critical' añade automáticamente copia a CEOSEC.
6. Si el balance es ≥ 30 €, solo imprime "Balance OK" y termina.
Datos/APIs
- Meta Graph API (
graph.facebook.com/v21.0) — lectura de balance de la ad account. - Router de notificaciones (
tools/notify-router.ts) → Telegram (Maya/Meta + CEOSEC + Fernando vía eventometa_balance_lownivel critical). - Variables
.env:META_ACCESS_TOKEN,META_AD_ACCOUNT_ID,TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID(el router usa además los tokens de Maya y Fernando).
Cómo probarlo
cd /Users/user/rifai-agents && npx tsx agentes/migrated/balance-monitor-meta.ts
No tiene ventana horaria ni flag FORCE: cada ejecución consulta el balance real. Para no disparar la alerta de Telegram en pruebas, ejecútalo cuando el saldo esté por encima de 30 €, o revisa solo la salida del log (consulta la API igualmente).
Si se rompe / recuperar
launchctl unload ~/Library/LaunchAgents/com.rifai.balance-monitor.plist
launchctl load ~/Library/LaunchAgents/com.rifai.balance-monitor.plist
Logs en /Users/user/rifai-agents/logs/balance-monitor.log. Errores típicos: token Meta caducado (status != 200 → process.exit(1)) o META_AD_ACCOUNT_ID mal formado (debe llevar prefijo act_).
Cómo replicarlo
Origen n8n: workflow snE1yS28Qf4uqLNb "Balance Monitor Meta" (carpeta Secretario). Backup en /Users/user/rifai-agents/backups/n8n-export/. Piezas para rehacerlo:
1. Trigger cron horario (launchd StartInterval 3600).
2. Nodo HTTP GET a la Graph API pidiendo balance,amount_spent,currency.
3. Conversión céntimos→euros y comparación contra umbral (30 €).
4. Rama condicional: si < umbral → notificación crítica vía router (meta_balance_low); si no, no-op.