Meta Ads — Fatigue Monitor
When to use
- "Identifica criativos com fadiga nos últimos 7 dias"
- "Quais anúncios tão queimando a audiência?"
- "Check frequency cap breaches in the acme account"
- "CTR dropping ads — last 14 days"
Inputs
- account ref (required)
- adset (optional — scope to a single ad set; omit for full account)
- ctr-drop threshold in % (default 20, from
config/thresholds.json) - frequency cap (default 3.5, from
config/thresholds.json) - lookback days (default 7)
Logic
For each ad:
- Fetch insights for
lookbackdays (current window) - Fetch insights for previous same-length window
- Compute CTR delta:
(current.ctr - previous.ctr) / previous.ctr * 100 - Flag if:
- CTR delta ≤
-ctrDropPct(e.g., dropped 20%+) - OR current frequency ≥
frequencyCap
- CTR delta ≤
Output
- HTML report sorted by worst CTR drop first
- Columns: ad id/name, status, current CTR, previous CTR, delta, frequency, spend, flags
- Markdown summary for Slack
- Printed terminal summary:
N / M ads flagged
Invocation
adskills meta fatigue \
--account acme \
--lookback 7 \
--ctr-drop 20 \
--frequency 3.5
Guardrails
- Never pauses ads automatically — report only. User must trigger pause separately.
- Ads with zero impressions in both windows are skipped silently
- If
previous.ctr = 0, delta is reported as 0 (cannot compute ratio)