executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
adspirer-creativeWrite and refresh ad creative with Adspirer — headlines, descriptions, primary text, and ad copy for Google, Meta, TikTok, LinkedIn, and Amazon, plus diagnosing and fixing creative fatigue when CTR falls and frequency rises. Respects each platform's character limits.
Independent GitHub snapshot · Automated classification · Original documentation governs
Follow adspirer-mcp before any tool call. Load the platform skill for its exact limits.
Before writing a single headline, look at what already works:
analyze_search_terms (Google) or get_amazon_search_terms — the actual words people typed to
find this business. Those words belong in the copy.get_ad_performance / get_meta_ad_performance — which existing ad has the best CTR, and why.Ask what makes this business different if it isn't obvious. Generic ad copy is a choice, not a fate.
| Platform | Field | Limit |
|---|---|---|
| Google Search | Headline | 30 |
| Description | 90 | |
| Long headline (PMax) | 90 | |
| Meta | Headline | 255 (~40 visible) |
| Primary text | 2200 (~125 visible) | |
| Description | 255 (~30 visible) | |
| Meta carousel | Card headline | ~40 |
| Headline | 70 | |
| Introductory text | 600 (~150 visible) | |
| TikTok | Ad text | 100 |
| Amazon SB | Headline | 50 |
Where the hard limit and the visible limit differ, write to the visible one. Meta's 2200-character primary text truncates at about 125; anything after that is read by nobody.
Write more than you need and cut. Then check every claim is one the business can actually make — "#1 in the UK" is a legal problem, not a headline.
Rising frequency plus falling CTR is fatigue. The same people keep seeing the same ad. No bid or budget change fixes it — a fatigued ad set with more budget just annoys the same people faster.
Diagnose: detect_meta_creative_fatigue, detect_tiktok_creative_fatigue,
analyze_linkedin_creative_performance. On Meta, a 7-day frequency above ~3 with declining CTR is
the signal.
Fix, in order of leverage:
Change one variable at a time. Swapping the image and the copy and the audience teaches you nothing about which one mattered.
Copy is judged by comparison. Fifteen headlines in a bulleted list all read the same; the same fifteen laid out as cards, grouped by angle, with character counts and the truncation point marked, are a decision the user can actually make.
Either way, render each variant against its platform's visible limit, not the hard one. A Meta primary text that looks fine at 2,200 characters is worthless if the offer sits past 125.
Update in place with update_ad_headlines, update_ad_descriptions, or update_ad_content on
Google; the platform's ad-update tools elsewhere. Keep the winning ad running while the new one
gathers data — pausing the control before the challenger has proven itself is how accounts go
backwards.
Ads may need review before serving. Say so, rather than letting the user think it's live.
Creative fatigue is a recurring problem, not a one-time fix. Rather than promising to check back, offer to schedule a fatigue check on this host — frequency and CTR, every couple of weeks — so the next refresh is prompted by the data instead of by someone remembering.