| name | fatigue-frequency-manager |
| slug | aaron-fatigue-frequency-manager |
| displayName | Fatigue Frequency Manager · 广告疲劳检测 |
| summary | 广告疲劳检测/频次管理/换素材还是扩人群 |
| description | Use when the user asks to "is my ad fatiguing", "why is CTR dropping at scale", or "should I rotate creative / widen the audience"; reads frequency, CTR and CVR decay against an early-flight baseline and returns Rotate-creative / Widen-audience / Hold triggers with a per-ad-set fatigue read. Not for building the replacement creative — use ad-creative-builder; not for the RQS score or vetoes — use ad-account-auditor. 广告疲劳检测/频次管理/换素材还是扩人群 |
| version | 19.0.0 |
| license | Apache-2.0 |
| compatibility | Claude Code and compatible agent-skill hosts |
| homepage | https://github.com/aaron-he-zhu/aaron-marketing-skills |
| when_to_use | Use when a scaled paid campaign shows rising frequency or falling CTR/CVR and the user needs a rotate-creative vs widen-audience vs hold decision, when diagnosing creative fatigue or audience saturation from a frequency + CTR/CVR trend export, or when setting frequency/decay thresholds for a scaling ad set. Not for producing the new creative (use ad-creative-builder) or the RQS gate score and vetoes (use ad-account-auditor). |
| argument-hint | <campaign/ad-set> [flight window] |
| metadata | {"author":"aaron-he-zhu","version":"19.0.0","discipline":"ad","phase":"scale","geo-relevance":"low","hermes":{"tags":["marketing","ad","scale"],"category":"ad"},"openclaw":{"emoji":"🎯","homepage":"https://github.com/aaron-he-zhu/aaron-marketing-skills"}} |
Fatigue & Frequency Manager
Reads a scaling ad set for creative fatigue and audience saturation — rising frequency, decaying CTR and CVR against an early-flight baseline — and returns a Rotate-creative / Widen-audience / Hold trigger per ad set. This works the ROAS S (spend-efficiency: CTR/CVR/frequency decay) and R (return protection) levers at scale. It does not build the replacement creative (ad-creative-builder owns that) and does not compute the RQS or run vetoes (ad-account-auditor owns the gate).
Quick Start
Frequency on my prospecting set hit 6.2 and CTR halved over two weeks — is it fatigue, and do I rotate or widen?
CVR held but CTR keeps sliding on the same creatives at scale — which trigger fires?
Here's the daily campaign export for Ad Set A — read it for fatigue vs saturation
Skill Contract
Expected output: a per-ad-set fatigue read — frequency now vs baseline, CTR and CVR decay slope against the early-flight baseline, the diagnosis (creative fatigue vs audience saturation vs neither), and one trigger (Rotate-creative / Widen-audience / Hold) with the threshold that fired — plus a handoff summary storable under memory/ad/fatigue-frequency-manager/.
- Reads: the ad set / campaign under review, a daily (or weekly) time-series export with impressions, reach, frequency, clicks/CTR, conversions/CVR and spend; the early-flight baseline window (first stable days after learning-phase exit); target CPA/ROAS; audience size / saturation estimate if the user has it.
- Writes: a user-facing fatigue table plus a reusable summary storable under
memory/ad/fatigue-frequency-manager/.
- Promotes: confirmed Rotate/Widen triggers, the frequency/decay thresholds used, and any measurement-signal risk (CVR drop that may be broken tracking, not real saturation) to
memory/open-loops.md as pending-decision — this skill does not write decisions.md directly.
- Done when: decay is read as a slope against a fixed early-flight baseline (not a raw last-day dip); the diagnosis separates creative fatigue (CTR decays, frequency rises, audience not exhausted) from audience saturation (reach plateaus, frequency climbs because the pool is spent); and exactly one trigger is returned per ad set with the threshold that fired named.
- Primary next skill: use the below.