🔥 Meta Fatigue Detector (fatiga creativa de ads)
Archivo: agentes/marketing/meta-fatigue-detector.ts · Plist: com.rifai.meta-fatigue · Horario: Cada hora (StartInterval 3600s)
Qué hace
Vigila los anuncios ACTIVE de Meta cada hora y detecta fatiga creativa. Guarda un histórico de métricas por ad y si un anuncio tiene frecuencia >2.0 y su CTR ha caído más de un 30% respecto a hace ~3 días, lo marca como "quemado". Cuando hay ads en fatiga avisa por el router (evento meta_fatigue), que cruza a Maya (Meta) y a Mario (creativo, porque hay que renovar el creativo), con recomendaciones de acción.
Cómo funciona
1. Carga .env y el histórico data/meta-ads-history.json.
2. GET /{ACCT}/ads con insights last_7d (spend, impressions, clicks, ctr, frequency) solo de ads ACTIVE.
3. Por ad: registra snapshot {ts, ctr, freq, spend}; busca un snapshot de hace >72h para calcular el cambio de CTR.
4. Detección: freq > 2.0 && ctrChange < -0.3 → fatigado.
5. Guarda histórico (recorta a 30 puntos por ad) y, si hay fatigados, notifica (meta_fatigue).
Datos/APIs
- Meta Graph API v21.0 (ads + insights).
- notify-router → evento
meta_fatigue(Maya + Mario). - Vars .env:
META_ACCESS_TOKEN,META_AD_ACCOUNT_ID.
Cómo probarlo
cd /Users/user/rifai-agents && npx tsx agentes/marketing/meta-fatigue-detector.ts
Espera: nº de ads activos y, por cada uno, freq X · CTR Y% con el cambio (o "sin histórico" la primera vez). Si detecta fatiga, lista los ads quemados y envía alerta. Necesita ≥2 ejecuciones separadas >72h para tener histórico real. Solo lee y alerta, no pausa ads.
Si se rompe / recuperar
launchctl unload ~/Library/LaunchAgents/com.rifai.meta-fatigue.plist
launchctl load ~/Library/LaunchAgents/com.rifai.meta-fatigue.plist
- Logs:
/Users/user/rifai-agents/logs/meta-fatigue.log - Histórico:
data/meta-ads-history.json(borrarlo reinicia las comparativas).
Cómo replicarlo
- Pull horario de insights de ads ACTIVE.
- Histórico JSON por ad (últimos 30 snapshots).
- Regla de fatiga (freq>2.0 + caída CTR>30% vs >72h).
- Cross-talk vía router a Maya+Mario. No ejecuta acciones sobre la cuenta (solo avisa).