← AdAgntCONTENT HISTORY

Update to AdAgnt

Snapshot Sep 30, 2026 · 23:11 UTC · version 1.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "adagnt-ad-copy",
  "description": "Write and update ad creative that fits platform limits and the workspace brand voice — Google RSA headlines/descriptions, Meta primary text, LinkedIn intro text, TikTok ad text. Use when drafting new copy or refreshing underperforming ads.",
  "included_files": [],
  "skill_md_contents": "---\nname: adagnt-ad-copy\ndescription: Write and update ad creative that fits platform limits and the workspace brand voice — Google RSA headlines/descriptions, Meta primary text, LinkedIn intro text, TikTok ad text. Use when drafting new copy or refreshing underperforming ads.\n---\n\n# AdAgnt Ad Copy\n\nProduce copy that (a) fits the platform's hard limits, (b) sounds like the brand, and (c) gives the ad-serving algorithm enough distinct material to optimize with.\n\n## Step 1 — Ground in brand voice\n\nRead `STRATEGY.md` before writing a single line. Use:\n\n- **Brand Voice** — tone, words to prefer, words to ban, claims that are/aren't allowed\n- **Business Profile** — the actual value proposition and proof points\n- **Target Audience** — pains and motivations to lead with\n\nIf the section is thin, ask the user three quick questions (tone in three adjectives, one claim they're proudest of, one phrase they never want in an ad) rather than guessing. `suggest_ad_content` can draft candidates from `key_benefits`, `pain_points`, and `proof_points` — treat its output as raw material to edit into brand voice, not final copy.\n\n## Hard limits (count characters before presenting anything)\n\n| Platform | Field | Limit |\n|---|---|---|\n| Google RSA | Headline | **30 chars**, up to 15 headlines (min 3) |\n| Google RSA | Description | **90 chars**, up to 4 descriptions (min 2) |\n| Google | Callout | 25 chars, no CTAs, no trailing period |\n| Google | Sitelink text | 25 chars |\n| Meta | Primary text | ~125 chars visible before truncation |\n| Meta | Headline | 40 chars |\n| Meta | Description | 30 chars |\n| LinkedIn | Intro text | 150 chars before \"…see more\" |\n| LinkedIn | Headline | 70 chars |\n| TikTok | Ad text | 100 chars |\n\nIf any line is over limit, fix it before showing the user. Show character counts next to each line.\n\n## RSA construction rules (Google)\n\n- Supply 8–15 headlines that are genuinely different from each other — vary the angle: value prop, pain point, proof/social trust, offer, CTA, brand. Near-duplicates waste slots.\n- At least a few headlines should carry the primary keyword of the ad group; the rest earn attention.\n- Avoid pinning unless a compliance line must always show — pinning constrains the combinatorial optimizer.\n- Descriptions: 2–4, each a complete thought that works after any headline. Don't end headlines with punctuation; don't SHOUT.\n- No superlatives you can't substantiate, no \"#1\" without a source, and respect any regulated-vertical rules noted in STRATEGY.md.\n\n## Meta / LinkedIn / TikTok notes\n\n- **Meta**: front-load the hook in the first sentence of primary text; the headline carries the offer. Provide 2–3 primary-text variants for testing. For DCO use `create_meta_dco_ad` with multiple assets per slot.\n- **LinkedIn**: professional register, speak to the job-to-be-done, not the demographic. Lead with the business outcome.\n- **TikTok**: conversational and native — copy supports the video, it doesn't carry the ad. Avoid corporate phrasing entirely.\n\n## Step 2 — Present before writing\n\nShow the full copy set in a table with character counts and a one-line rationale per angle. Get explicit approval — creative updates modify live ads and reset learning in some cases.\n\n## Step 3 — Apply (one call, verify, no auto-retry)\n\n- Google: `update_ad_headlines` / `update_ad_descriptions` (pass `customer_id`, `ad_group_id`, `ad_id`, and the full replacement list — these replace, not append). Broader edits: `update_ad_content`. New ads: `create_ad`. Extensions: `add_callout_extensions`, `add_sitelinks`, `add_structured_snippets`.\n- Meta: `update_meta_ad`; inspect current creative first with `get_meta_ad_creatives`.\n- LinkedIn: `update_linkedin_creative`; list current ones with `list_linkedin_creatives`. New variants: `generate_linkedin_ad_creatives` then `add_linkedin_creative`.\n- TikTok: `update_tiktok_ad_group` for placement-level changes; new creative via `add_tiktok_ad`.\n\nEach of these is a paid-account write: call once, and if it errors, verify actual state with the matching read tool before considering another attempt.\n\n## Step 4 — Log it\n\nAppend to STRATEGY.md → Performance History: date, ad IDs touched, what changed, and the hypothesis (e.g. \"pain-point headlines to lift CTR on ad group X\"). When a copy test concludes, record the winner and why under Brand Voice so future copy starts smarter.\n"
}

SHA-256: b304e43891611bcf366f788f593ffc5501874d2f5c35793242aa0bb94456fc81