{"id":85425,"plugin_id":"plugin_asdk_app_6aec3e187b888191b53ec5b539c5f590","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-07T00:09:56.682Z","digest":"4619a65e7b1f47ad08d52ef897239c0d2d1a6d5b54f13c386d3b691da333407f","against":null,"payload":{"description":"Find tired Meta ad creatives with Toffu. Use when the user asks which ads are fatigued, what to refresh, why results drop, or for a creative audit. Compares each creative's frequency, CTR and CPA in the last 7 days against the 3 weeks before, and gives a keep, watch, refresh or pause call per ad.","included_files":[],"name":"creative-fatigue","skill_md_contents":"---\nname: creative-fatigue\ndescription: Find tired Meta ad creatives with Toffu. Use when the user asks which ads are fatigued, what to refresh, why results drop, or for a creative audit. Compares each creative's frequency, CTR and CPA in the last 7 days against the 3 weeks before, and gives a keep, watch, refresh or pause call per ad.\n---\n\n# Meta Ads creative fatigue\n\nUse the Toffu tools only. Never apply a change the user has not confirmed.\n\n## Steps\n\n1. Call `get_account_context`. If several Meta ad accounts are connected, ask which one, and pass its id as `account_id`.\n2. Call `creative_report` for the last 7 full days (end date = yesterday). Then call it for the 21 days before. Each row is one ad, with its creative title, text, thumbnail and metrics.\n3. Match the rows by `ad_id`. For each ad with spend in both windows, compute:\n   - CTR change = (CTR last 7 days - CTR before) / CTR before\n   - CPA change = (CPA last 7 days - CPA before) / CPA before, only when both windows have conversions\n   - Frequency in the last 7 days\n4. Count the fatigue signals:\n   - **Frequency:** 3.0 or more for prospecting, 5.0 or more for retargeting (campaign or ad set name with \"retargeting\", \"remarketing\" or \"DPA\").\n   - **CTR decay:** CTR down 25% or more.\n   - **CPA drift:** CPA up 30% or more.\n5. Give each ad one call:\n   - **Keep:** 0 signals.\n   - **Watch:** 1 signal. Check again in 7 days.\n   - **Refresh:** 2 signals. Keep the offer and audience, change the hook or visual.\n   - **Pause:** 3 signals, or spend in the last 7 days above 2x the account CPA with 0 conversions.\n6. Report one table, sorted by signal count and then spend: ad, campaign, thumbnail link, spend, frequency, CTR and CPA in both windows, signals, call. Under it, say what the best creatives have in common (format, hook, offer), from their title and text.\n7. For each ad marked Pause, offer `propose_update_ad` `{\"status\": \"PAUSED\"}`. Show the preview. Call `apply_change` only after the user confirms. Before pausing the last active ad of an ad set, tell the user that the ad set stops delivering.\n\n## Rules\n\n- High frequency with steady CTR and CPA is saturation, not fatigue. Recommend a broader audience, not a pause.\n- A change on fewer than 10 conversions is noise. Say so.\n- Toffu cannot upload new images or videos here. For a refresh, describe the new creative so the user can make it.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}