google-ads-copy
Generate and A/B test Google Ads copy. Use when asked to write ad copy, headlines, descriptions, create ad variants, test ad messaging, improve CTR, or generate RSA (Responsive Search Ad) components. Trigger on "ad copy", "write ads", "headlines", "descriptions", "RSA", "responsi
Install
npx skills add https://github.com/nowork-studio/notfair-plugin/tree/main/google-ads/copy
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install nowork-studio-notfair-plugin@llmmart
git clone https://github.com/nowork-studio/notfair-plugin.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole nowork-studio/notfair-plugin collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Ad Copy Generator + A/B Tester
Write Google Ads RSA copy and run structured tests to find winning messaging.
Setup
Read and follow ../shared/preamble.md (MCP detection, account selection) and ../shared/analysis-principles.md (evidence requirement, guardrails). Both apply throughout.
Reference
Read on demand:
references/rsa-best-practices.md— character limits, headline formulas, pinning, A/B mechanics, common mistakes. The source of truth for what to write.references/rsa-testing-lab.md— how to choose RSA test metrics, diagnose ad-group intent bloat, decide pinning, and avoid chasing Ad Strength over business outcomes.../manage/references/industry-benchmarks.md— industry CTR/CVR benchmarks for sanity-checking targets.../manage/references/quality-score-framework.md— only when QS improvement is the explicit goal.
Business context — non-negotiable input
Every copy decision is grounded in business context. Read {data_dir}/business-context.json and {data_dir}/personas/{accountId}.json first.
- If either file is missing or empty, recommend
/google-ads-auditbefore writing — generic copy that ignores positioning is wasted ad inventory. The full intake procedure (website crawl, schema, bootstrapping) lives in../audit/references/business-context.md. - If the user volunteers new info (new service, changed positioning, seasonal update), merge it in.
How context shapes copy: services map to headline categories; locations earn local-specific headlines (with QS upside); brand voice sets tone and forbidden words; differentiators ARE the value-prop headlines; competitors sharpen positioning (without naming them); seasonality decides urgency vs. evergreen framing; offers feed time-sensitive variants; landing-page content must match (or conversions drop). Personas drive language: their own search-term phrasing in headlines, their pain points in descriptions, their decision-trigger as the CTA angle.
Ad-strength vs. real performance
Ad strength optimizes for Google's diversity goals, not your conversion rate. The hierarchy: conversion rate > CTR > CPA > ad strength. Don't break a high-CTR ad to chase "Excellent". Do treat low ad strength as a useful diversity signal — eight distinct headlines, one per category, no repeats in description bank.
Pulling what to write from
Copy must be grounded in what already converts. Choose available read capabilities for the evidence relevant to the requested copy:
ad_group_ad— current headlines, descriptions, ad-strength, per-ad clicks/CTR/conversions (the baseline to beat)keyword_view— what's converting and which QS components are weaksearch_term_view— the actual phrases customers are typing (the single best language source)campaign— the CTR/CVR benchmark each variant has to clear
For brand-wide rewrites, correlate everything in one pass. For a single ad group, scope each query with WHERE ad_group.id = …. Layer in seasonality and keyword-landscape context from business-context.json.
If the user has a CRM or lead-outcome database with the language customers actually use, mine that — customer language beats marketing language every time.
Copy output contract
Every proposal needs a small decision record, not just a block of headlines:
- A concept ID and one-sentence hypothesis:
persona × motivation × angle. - A claim ledger for every proof, offer, rating, guarantee, price, or superlative: exact source (account data, business context, approved landing page, or user-provided evidence) and whether it is approved for ad use.
- Complete RSA assets with character counts and pin positions, plus a distinct challenger concept when testing.
Do not turn a vague request into fabricated proof. If a claim is attractive but unsupported, label it needs_substantiation and write a claim-free alternative. A citation to a competitor, an unverified review site, or general industry knowledge is not approval to use a claim in an ad.
Competitive copy rules
- Never name a competitor in ad copy (policy risk + you do their brand awareness for free).
- Never use "best" / "#1" without verifiable substantiation. Google requires it; the Trademark team enforces it.
- Do use specific features competitors lack ("Same-Day Service" beats "Better Service"), trust signals ("4.9★ Google · 500+ Reviews"), guarantees, transparent pricing, and location specificity. Verifiable specificity outperforms superlatives.
RSA mechanics
Google RSA: up to 15 headlines (30 chars max) and 4 descriptions (90 chars max). A single character over = rejected. Always count.
references/rsa-best-practices.md is the source of truth for headline formulas, description ordering, and pinning strategy. The compact rule of thumb: pin one Service+Location headline to position 1, one CTA to position 3, leave position 2 unpinned for Google to test value-prop / trust / differentiator headlines, and never pin more than 3 total.
A/B testing — use the experiments framework
When the user wants to test, define the hypothesis, traffic split, measurement, and decision rule, then check which experiment capabilities the live connection supports. Ad-copy tests and larger changes to audience or landing page may need different designs. Running two ads side by side without a controlled split is observational evidence; do not present it as a randomized experiment.
Each variant must test a meaningfully different angle — not word swaps. "Trust & Expertise" vs. "Speed & Convenience" vs. "Price & Value" is a real test; "Call Today" vs. "Call Now" is noise.
Before writing variants, read references/rsa-testing-lab.md when the request mentions testing, pinning, Ad Strength, low CTR/CVR, or mixed-intent ad groups. It encodes the generalized pattern that many RSA problems are really ad-group/query-theme problems.
Before launch, record one primary metric, any guardrail metric (for example CPA or qualified-lead rate), the planned minimum exposure or duration, and the decision rule. Do not peek and declare a winner from an early gap: less than ~100 clicks per variant is usually too early, and even a 2× CVR gap still needs enough conversions and a check for recent changes. The experiment framework's own significance signals are the cleanest input — defer to them when present.
After a winner: pause the loser, then iterate against the winner. Never stop testing.
Operating principles
- Business context is non-negotiable. No
business-context.json/personas→ recommend/google-ads-auditbefore writing. - Confirm before deploying. Show the exact copy, character counts per asset, and pin positions. Get a yes, then push.
- Check reversibility. Record the original state and only promise rollback when the current capability supports it.
- Differentiate, don't imitate. Generic copy that could belong to any competitor is a wasted ad slot.
- Defer to
/google-adsfor bid / budget / keyword work — this skill writes copy and runs creative experiments only.
Files (notfair-plugin)
-
evals
-
evals.json 3.5 KB
{ "skill_name": "google-ads-copy", "evals": [ { "id": 1, "prompt": "Write ad copy for a roof repair business in Portland called 'Acme Roofing'. They offer leak repair, shingle replacement, and roof inspections. They have 4.8 stars on Google with 200+ reviews. They've been in business for 12 years. Target ad group: 'Roof Repair - Portland'.", "expected_output": "RSA copy with 2-3 variants, each with a distinct messaging angle. Every headline must show character count and be <= 30 chars. Every description must show character count and be <= 90 chars. Pin positions should be indicated. Variants should be named by their angle (e.g., 'Trust & Experience', 'Value & Convenience').", "files": [], "expectations": [ "Generates at least 2 distinct RSA variants with named messaging angles", "Every headline shows a character count", "All headlines are <= 30 characters", "Every description shows a character count", "All descriptions are <= 90 characters", "At least one headline includes Portland (location specificity)", "At least one headline references the 4.8 star rating or 200+ reviews (social proof)", "At least one headline references 12 years in business (trust signal)", "Pin positions are indicated (at least H1 pinned to position 1)" ] }, { "id": 2, "prompt": "I want to A/B test my ad copy for the 'Roof Repair' ad group. Current ad has 2.1% CTR over 500 clicks. Here's the current ad:\nH1: Roof Repair Services\nH2: Licensed & Insured\nH3: Call Now for a Quote\nD1: Professional roof repair services for residential and commercial properties. Fast, reliable service.\nD2: Licensed, bonded, and insured. Over 20 years of experience. Free estimates available.\n\nCan you create a challenger variant?", "expected_output": "Creates a challenger variant with a clearly different messaging angle and an experiment plan. Names the variable being tested, primary and guardrail metrics, and a pre-set minimum duration or exposure. Uses the ad-variation experiment path when available rather than treating two simultaneous ads as a conclusive A/B test.", "files": [], "expectations": [ "Creates a challenger variant with a distinctly different angle from the current ad", "Names the variable being tested (e.g., 'urgency vs trust', 'benefit-led vs feature-led')", "Specifies minimum test duration (2 weeks or clicks threshold)", "Uses createAdVariationExperiment or clearly labels any same-ad-group comparison as directional", "Specifies the success metric (CTR and/or conversion rate)", "Character counts shown for all new headlines and descriptions" ] }, { "id": 3, "prompt": "Write RSA copy for my plumbing business. We are the best in Seattle, have thousands of five-star reviews, and offer a lifetime guarantee. I do not have proof for those claims yet.", "expected_output": "Refuses to publish unsupported superiority, review, and guarantee claims. Provides grounded alternatives and a claim ledger that names what evidence would be needed before using the claims.", "files": [], "expectations": [ "Does not use unsupported 'best', review-count, or lifetime-guarantee claims in proposed assets", "Labels unsupported claims as requiring substantiation", "Provides a claim-free alternative rather than stopping at a warning", "Includes character counts for all proposed RSA assets" ] } ] }
-
-
references
-
rsa-best-practices.md 14 KB
# RSA Best Practices Reference Expert knowledge for writing, testing, and optimizing Responsive Search Ads. Specific character limits, formula tables, pinning strategies, and performance benchmarks. > **PMax cross-reference:** For accounts running Performance Max campaigns alongside Search, coordinate RSA messaging with PMax asset groups. PMax may serve text ads on Search inventory — ensure your RSA headlines and descriptions complement (not duplicate) PMax asset group text assets. See PMax documentation for asset group best practices. --- ## Character Limits | Component | Max Characters | Notes | |-----------|---------------|-------| | Headline | 30 | Up to 15 headlines per RSA | | Description | 90 | Up to 4 descriptions per RSA | | Display Path 1 | 15 | Appears after domain in display URL | | Display Path 2 | 15 | Second segment after slash | | Final URL | 2048 | Landing page URL | | Business Name | 25 | Shown in some ad formats | ### Minimum Asset Requirements | Asset | Minimum Required | Recommended | Maximum | |-------|-----------------|-------------|---------| | Headlines | 3 | 11-15 | 15 | | Descriptions | 2 | 3-4 | 4 | | Unique headline angles | 3 | 5+ | -- | --- ## Headline Formula Table ### Service + Location Headlines | # | Formula | Template | Example | Chars | |---|---------|----------|---------|-------| | 1 | Service in City | [Service] in [City] | Plumbing in Austin | 18 | | 2 | City + Service | [City] [Service] Experts | Denver Roofing Experts | 22 | | 3 | Near You | [Service] Near You | AC Repair Near You | 18 | | 4 | Local + Service | Local [Service] in [City] | Local HVAC in Dallas | 20 | ### Value Proposition Headlines | # | Formula | Template | Example | Chars | |---|---------|----------|---------|-------| | 5 | Differentiator | [Unique Benefit] [Service] | Same-Day Emergency Repair | 25 | | 6 | Result Promise | Get [Result] [Timeframe] | Get More Leads in 30 Days | 26 | | 7 | Save + Metric | Save [Amount] on [Service] | Save 40% on Insurance | 22 | | 8 | Award/Rank | #1 Rated [Service] in [City] | #1 Rated Dentist in Miami | 25 | ### Trust Signal Headlines | # | Formula | Template | Example | Chars | |---|---------|----------|---------|-------| | 9 | Years in Business | [N]+ Years of Experience | 25+ Years of Experience | 23 | | 10 | Reviews | [N]-Star Rated on Google | 5-Star Rated on Google | 22 | | 11 | Customers Served | [N]+ Satisfied Customers | 10,000+ Happy Customers | 24 | | 12 | Licensed/Certified | Licensed & Insured [Trade] | Licensed & Insured HVAC | 24 | ### CTA Headlines | # | Formula | Template | Example | Chars | |---|---------|----------|---------|-------| | 13 | Get + Offer | Get Your Free [Offer] | Get Your Free Estimate | 22 | | 14 | Action + Today | [Action] Today | Book a Consultation Today | 26 | | 15 | Call Now | Call Now for [Benefit] | Call Now for Free Quote | 22 | | 16 | Start + Action | Start [Action] Today | Start Saving Today | 18 | ### Urgency / Scarcity Headlines | # | Formula | Template | Example | Chars | |---|---------|----------|---------|-------| | 17 | Limited Time | Limited Time: [Offer] | Limited Time: 20% Off | 22 | | 18 | Ending Soon | [Offer] Ends [Date] | Spring Sale Ends Friday | 23 | | 19 | Spots Left | Only [N] Spots Left | Only 5 Spots Left | 18 | ### Price / Offer Headlines | # | Formula | Template | Example | Chars | |---|---------|----------|---------|-------| | 20 | Starting At | [Service] From $[Price] | Websites From $499 | 18 | | 21 | Discount | [N]% Off [Service] | 30% Off First Month | 20 | | 22 | Free Offer | Free [Deliverable] | Free Roof Inspection | 20 | ### Question Headlines | # | Formula | Template | Example | Chars | |---|---------|----------|---------|-------| | 23 | Need + Service? | Need [Service]? | Need a New Roof? | 16 | | 24 | Looking for? | Looking for [Solution]? | Looking for Fast WiFi? | 22 | ### Benefit Headlines | # | Formula | Template | Example | Chars | |---|---------|----------|---------|-------| | 25 | Adjective + Benefit | [Adjective] [Service] | Affordable Web Design | 21 | | 26 | No + Pain Point | No [Pain Point] | No Hidden Fees Ever | 19 | | 27 | Fast + Outcome | Fast [Outcome] Guaranteed | Fast Turnaround Guaranteed | 27 | --- ## Description Formula Table | # | Category | Formula | Template | Example | Chars | |---|----------|---------|----------|---------|-------| | 1 | Core Benefit + Location | [Benefit] for [audience] in [City]. [CTA]. | Professional plumbing services for homes in Austin. Call today for a free estimate. | 82 | | 2 | Differentiator + CTA | [What makes you different]. [Proof]. [CTA]. | Same-day service with no overtime charges. Serving 10,000+ homes. Book online now. | 85 | | 3 | Trust + Social Proof | [Trust signal]. [Social proof]. [CTA]. | Licensed & insured since 1998. Rated 4.9/5 on Google. Schedule your free consultation. | 89 | | 4 | Urgency + Offer | [Time limit]. [Offer details]. [CTA]. | Spring special ends March 31st. Save 25% on all AC installations. Call now to lock in rates. | 90 | | 5 | Problem + Solution | [Pain point]? [Your solution]. [CTA]. | Tired of slow WiFi? We install enterprise-grade networks for homes. Get a free site survey. | 90 | | 6 | Feature + Benefit | [Feature] so you [benefit]. [CTA]. | 24/7 emergency support so you never wait for help. Request service online in 60 seconds. | 88 | | 7 | Comparison + Advantage | Unlike [alternative], we [advantage]. [CTA]. | Unlike big-box stores, we custom-build every cabinet. Visit our showroom or request a quote. | 90 | | 8 | Risk Reversal + Guarantee | [Guarantee]. [Risk removal]. [CTA]. | 100% satisfaction guarantee or your money back. No contracts, cancel anytime. Start free today. | 90 | | 9 | Credentials + Expertise | [Credential]. [Years/experience]. [CTA]. | Board-certified surgeons with 15,000+ procedures performed. Book your consultation today. | 88 | | 10 | Process + Ease | [How it works in N steps]. [CTA]. | 3 simple steps: request a quote, approve the plan, we handle the rest. Get started in minutes. | 90 | --- ## Pinning Strategy Decision Tree ``` Should I pin this headline? | +-- Is it a legal/compliance requirement? | +-- YES --> Pin to Position 1 or 2 (mandatory) | +-- NO --> Continue | +-- Is it a brand name headline? | +-- YES --> Pin to Position 1 (brand consistency) | +-- NO --> Continue | +-- Is it a price/offer that MUST appear? | +-- YES --> Pin to Position 1 or 2 | +-- NO --> Continue | +-- Does the ad group have a single clear intent? | +-- YES --> Leave unpinned (let Google optimize) | +-- NO --> Continue | +-- Do you have 50+ conversions/month at the campaign level? | +-- YES --> Leave unpinned (enough data for Google to optimize) | +-- NO --> Consider pinning your best 2-3 headlines to Positions 1-2 | DEFAULT --> Leave unpinned. Google's ML needs freedom to test combinations. ``` ### Pinning Impact on Ad Strength | Pins Used | Impact on Ad Strength | Impact on Impressions | |-----------|----------------------|----------------------| | 0 pins | Neutral to positive | Maximum reach | | 1-2 pins | Minor reduction | Minimal impact | | 3-5 pins | Moderate reduction | Noticeable impression reduction (Google has not published exact figures) | | 6+ pins | Significant reduction | Substantial impression reduction — diminishes RSA's optimization ability | | All pinned | Severe; ad strength drops to "Poor" | Major impression reduction — effectively negates the RSA format's advantages | ### Pinning Rules | Rule | Rationale | |------|-----------| | Never pin more than 2 headlines to the same position | Gives Google at least 2 options per slot | | If you pin Position 1, provide 3+ headlines pinned there | Ensures variety even with pinning | | Never pin all 15 headlines | Defeats the purpose of RSA entirely | | Pin descriptions less often than headlines | Descriptions have less positional impact | --- ## Ad Strength Scoring ### What Google's Ad Strength Actually Measures | Ad Strength | What It Means | What It Does NOT Mean | |-------------|---------------|----------------------| | Poor | Too few assets or too similar | Your ads will not convert | | Average | Minimum diversity met | Adequate for conversions | | Good | Solid headline/description variety | You are optimized | | Excellent | Maximum asset diversity | Maximum conversion rate | ### Ad Strength vs. Performance Reality | Scenario | Ad Strength | CTR | Conv. Rate | Verdict | |----------|------------|-----|------------|---------| | Highly targeted ad group, 5 specific headlines | Average | High | High | Keep it. Ad strength is wrong. | | Broad ad group, 15 generic headlines | Excellent | Low | Low | Ad strength is misleading. Fix targeting. | | Brand campaign, 3 pinned headlines | Poor | Very High | Very High | Ignore ad strength for brand. | **When to ignore Ad Strength**: Brand campaigns, single-product ad groups with very specific intent, accounts with <50 conversions/month where Google's ML has insufficient data. **When to respect Ad Strength**: Broad campaigns with mixed intent, new campaigns with no performance data, campaigns spending >$5k/month where impressions matter. --- ## CTR Benchmarks by Ad Position | Ad Position | Avg CTR (Search) | Top Quartile CTR | Bottom Quartile CTR | |-------------|-----------------|-------------------|---------------------| | Position 1 (top) | 6-7% | 10-12% | 3-4% | | Position 2 | 4-5% | 7-8% | 2-3% | | Position 3 | 2-3% | 4-5% | 1-2% | | Position 4+ (bottom of page) | 1-2% | 2-3% | <1% | ### CTR Benchmarks by Industry (Position 1) | Industry | Avg CTR | Good CTR | Excellent CTR | |----------|---------|----------|---------------| | Legal | 4.4% | 6% | 8%+ | | Home Services | 5.2% | 7% | 10%+ | | Healthcare | 3.6% | 5% | 7%+ | | B2B / SaaS | 3.2% | 5% | 7%+ | | E-commerce | 2.8% | 4% | 6%+ | | Finance / Insurance | 3.8% | 5.5% | 8%+ | | Real Estate | 3.7% | 5% | 7%+ | | Education | 4.1% | 6% | 8%+ | | Travel | 4.7% | 6.5% | 9%+ | | Automotive | 4.0% | 5.5% | 7%+ | --- ## A/B Testing Methodology ### Minimum Sample Requirements | Metric | Minimum Threshold | Ideal Threshold | |--------|------------------|-----------------| | Clicks per variant | 200 | 500+ | | Duration | 14 days | 30 days | | Conversions per variant | 50 | 100+ | | Impressions per variant | 1,000 | 5,000+ | ### When to Call a Winner Early | Condition | Can Call Early? | Confidence | |-----------|---------------|------------| | 3x CTR difference, 50+ clicks each | Yes | High | | 2x CTR difference, 100+ clicks each | Yes | High | | Stat sig >99%, 75+ clicks each | Yes | High | | <20% CTR difference, <200 clicks | No | Wait | | Conv. rate difference <10%, <50 conversions | No | Wait | ### What to Test (Priority Order) | Priority | Test Variable | Expected CTR Impact | Min. Test Duration | |----------|--------------|--------------------|--------------------| | 1 | Headline angle (benefit vs. feature) | 15-30% | 14 days | | 2 | CTA phrasing (Get vs. Book vs. Call) | 10-20% | 14 days | | 3 | Price/offer inclusion vs. exclusion | 10-25% | 14 days | | 4 | Urgency language vs. none | 5-15% | 21 days | | 5 | Question vs. statement headline | 5-15% | 21 days | | 6 | Description CTA variation | 5-10% | 21 days | | 7 | Display path text | 3-8% | 14 days | ### Interpreting Test Results | Result | Interpretation | Action | |--------|---------------|--------| | CTR up, Conv. Rate up | Clear winner | Adopt immediately | | CTR up, Conv. Rate flat | More clicks, same quality | Adopt if CPA is acceptable | | CTR up, Conv. Rate down | Attracting wrong clicks | Revert; tighten targeting | | CTR down, Conv. Rate up | Fewer but better clicks | Keep if total conversions increase | | CTR flat, Conv. Rate flat | No meaningful difference | Test a bolder variation | --- ## Headline Variation Requirements ### Minimum Diversity Rules | Rule | Minimum | Recommended | |------|---------|-------------| | Total unique headlines | 8 | 11-15 | | Distinct angles/themes | 3 | 5+ | | Headlines with CTA | 2 | 3 | | Headlines with location | 1-2 | 2-3 (if local) | | Headlines with numbers | 2 | 3-4 | | Character length spread | 3 different lengths | Mix of 15-20, 21-25, 26-30 | ### Angle Distribution for 12-Headline RSA | Angle | Count | Examples | |-------|-------|---------| | Service/Product | 2-3 | "Professional Roof Repair", "Complete Roofing Solutions" | | Value Proposition | 2-3 | "Same-Day Service Available", "No Hidden Fees" | | Trust/Proof | 2 | "25+ Years Experience", "4.9-Star Google Rating" | | CTA | 2 | "Get a Free Quote Today", "Book Online in Minutes" | | Offer/Price | 1-2 | "Spring Sale: 20% Off", "Free Inspection Included" | | Location | 1-2 | "Serving All of Austin", "Dallas Roofing Experts" | --- ## Common RSA Mistakes | Mistake | Why It Hurts | Fix | |---------|-------------|-----| | Too many similar headlines | Google shows redundant combinations; wastes ad slots | Write from 5+ distinct angles | | All headlines same length | Looks repetitive; Google prefers mixing short + long | Vary between 15-30 chars | | No CTA headlines | Misses click intent when Google picks non-CTA combination | Include 2-3 CTA headlines | | Pinning everything | Substantially reduces Google's optimization ability | Pin only what is legally or brand-required | | Ignoring ad strength entirely | Missing easy wins from insufficient asset diversity | Aim for "Good" minimum unless justified | | Only 3 headlines provided | Minimum assets = minimum reach and no testing | Always provide 8+ headlines | | Duplicate keywords in headlines | Wastes headline slots repeating same keyword | Each headline should add new info | | No description CTA | Descriptions without CTA have 10-15% lower CTR | End every description with an action verb | | Display paths left empty | Wastes free keyword real estate in ad | Always fill both display path segments | | Same ad copy across all ad groups | Ignores intent differences between ad groups | Tailor headlines to each ad group's keyword theme | | Testing too many variables at once | Cannot isolate what caused improvement | Change one angle per test cycle | | Not reviewing Search Terms Report | Ad copy may not match actual queries | Check STR monthly; adapt headlines to real queries | -
rsa-testing-lab.md 4.6 KB
# RSA Testing Lab Use this when the user asks to improve CTR, write/test RSAs, pin headlines, compare ad variants, or diagnose ad groups with mixed intent. It complements `rsa-best-practices.md`: that file tells you how to write compliant assets; this file tells you how to decide what to test and when to trust the result. --- ## 1. Choose the test objective first Google's Ad Strength and asset labels are not the business objective. Pick the winner metric before generating copy: - **CTR** — when the bottleneck is low click-through and the landing page converts normally. - **CVR** — when traffic volume is acceptable but query/ad/page promise may be wrong. - **CPA** — lead-gen default when conversion volume is enough. - **ROAS / conversion value per impression** — e-commerce or value-tracked accounts. - **Conversion per impression (CPI)** — useful when both CTR and CVR can move; it rewards ads that create conversions from available impressions. If data is thin, state that the test is directional. Do not call winners from tiny conversion samples. --- ## 2. Diagnose ad-group organization before writing The biggest RSA failure is often not the words — it is putting too many query intents into one ad group, then asking one RSA to match all of them. Before writing: 1. Pull recent search terms for the ad group. 2. Cluster them by intent: service, location, urgency, price, competitor, problem/pain. 3. Compare clusters to the final URL and current RSA assets. 4. If one ad group contains materially different intents, recommend splitting before writing more assets. Examples: - `bookkeeping seattle`, `quickbooks cleanup`, and `tax prep` may need different RSAs/pages. - `Claude MCP server`, `Codex MCP`, and generic `AI agent for Google Ads` may need separate NotFair messaging and negatives. --- ## 3. Test real angles, not word swaps Good tests compare distinct hypotheses: - **Trust / proof:** reviews, years, certifications, named expertise. - **Speed / convenience:** same-day, fast setup, easy process. - **Price / value:** transparent pricing, starting price, fixed-fee plans. - **Pain / problem:** messy books, wasted ad spend, low-quality leads. - **Local / specificity:** city/service fit, neighborhood intent. - **Brand clarity / safety:** independent, approval-gated, not affiliated language where needed. Bad tests: - `Call Today` vs `Call Now`. - Adding many generic headlines just to chase Excellent Ad Strength. - Writing assets for intents not present in the ad group's search terms. --- ## 4. Pinning decision rules Pinning can reduce Google's Ad Strength but improve business outcomes when message control matters. Pin when: - Legal/compliance/brand clarity must always appear. - The ad group is narrow and one service/location promise should anchor every ad. - The campaign has Limited Ad Serving / trust ambiguity and the brand must be explicit. - The landing page headline requires the ad's promise to match word-for-word. Avoid heavy pinning when: - Query intent varies widely and Google needs room to compose. - You are using RSAs to discover which value prop resonates. - You do not have enough volume to test pinned vs unpinned. Default controlled structure: - Pin one service/location or brand-clarity headline to `HEADLINE_1` only when needed. - Optionally pin one CTA to `HEADLINE_3`. - Leave `HEADLINE_2` unpinned for value prop / trust / pain-angle testing. --- ## 5. Experiment mechanics Preferred paths: - Use a supported ad-variation experiment for controlled RSA asset tests. - Use a supported controlled experiment for broader ad, landing-page, or structural tests. - For very low-stakes / low-volume work, before/after can be acceptable, but report confounders. Minimum-read rules: - <100 clicks per variant: usually too early for CTR/CVR conclusions. - ≥20% relative CTR/CVR delta: meaningful directional signal if volume is reasonable. - 2x CVR gap: strong signal, still check conversion count and recent changes. - If the test changes final URL, evaluate both CTR and CVR; an ad can win clicks while losing leads. --- ## 6. Output shape For copy proposals, show: - Baseline problem: entity + metric + window. - Test hypothesis: what angle should improve and why. - Complete RSA assets with character counts. - Pinning plan, if any. - Winner metric and minimum read threshold. - Exact mutation path, but wait for user approval before writing. --- ## Sources - `../../shared/ppc-optimization-pattern-playbook.md` — RSA/ad testing module. - General RSA testing, ad testing metrics, ad group organization, Ad Strength, and ad+landing-page testing patterns.
-
-
SKILL.md 7.5 KB
--- name: google-ads-copy description: Generate and A/B test Google Ads copy. Use when asked to write ad copy, headlines, descriptions, create ad variants, test ad messaging, improve CTR, or generate RSA (Responsive Search Ad) components. Trigger on "ad copy", "write ads", "headlines", "descriptions", "RSA", "responsive search ad", "ad text", "ad creative", "improve CTR", "ad A/B test", "ad variants", "write me an ad", "ad variation experiment", or when the user wants to improve click-through rate on existing ads. argument-hint: "<ad group name, keyword theme, or 'write new ads'>" --- # Ad Copy Generator + A/B Tester Write Google Ads RSA copy and run structured tests to find winning messaging. ## Setup Read and follow `../shared/preamble.md` (MCP detection, account selection) and `../shared/analysis-principles.md` (evidence requirement, guardrails). Both apply throughout. ## Reference Read on demand: - `references/rsa-best-practices.md` — character limits, headline formulas, pinning, A/B mechanics, common mistakes. The source of truth for what to write. - `references/rsa-testing-lab.md` — how to choose RSA test metrics, diagnose ad-group intent bloat, decide pinning, and avoid chasing Ad Strength over business outcomes. - `../manage/references/industry-benchmarks.md` — industry CTR/CVR benchmarks for sanity-checking targets. - `../manage/references/quality-score-framework.md` — only when QS improvement is the explicit goal. ## Business context — non-negotiable input Every copy decision is grounded in business context. Read `{data_dir}/business-context.json` and `{data_dir}/personas/{accountId}.json` first. - If either file is missing or empty, recommend `/google-ads-audit` before writing — generic copy that ignores positioning is wasted ad inventory. The full intake procedure (website crawl, schema, bootstrapping) lives in `../audit/references/business-context.md`. - If the user volunteers new info (new service, changed positioning, seasonal update), merge it in. How context shapes copy: services map to headline categories; locations earn local-specific headlines (with QS upside); brand voice sets tone and forbidden words; differentiators ARE the value-prop headlines; competitors sharpen positioning (without naming them); seasonality decides urgency vs. evergreen framing; offers feed time-sensitive variants; landing-page content must match (or conversions drop). Personas drive language: their own search-term phrasing in headlines, their pain points in descriptions, their decision-trigger as the CTA angle. ## Ad-strength vs. real performance Ad strength optimizes for Google's diversity goals, not your conversion rate. The hierarchy: **conversion rate > CTR > CPA > ad strength.** Don't break a high-CTR ad to chase "Excellent". Do treat low ad strength as a useful diversity signal — eight distinct headlines, one per category, no repeats in description bank. ## Pulling what to write from Copy must be grounded in what already converts. Choose available read capabilities for the evidence relevant to the requested copy: - `ad_group_ad` — current headlines, descriptions, ad-strength, per-ad clicks/CTR/conversions (the baseline to beat) - `keyword_view` — what's converting and which QS components are weak - `search_term_view` — the actual phrases customers are typing (the single best language source) - `campaign` — the CTR/CVR benchmark each variant has to clear For brand-wide rewrites, correlate everything in one pass. For a single ad group, scope each query with `WHERE ad_group.id = …`. Layer in seasonality and keyword-landscape context from `business-context.json`. If the user has a CRM or lead-outcome database with the language customers actually use, mine that — customer language beats marketing language every time. ## Copy output contract Every proposal needs a small decision record, not just a block of headlines: - A **concept ID** and one-sentence hypothesis: `persona × motivation × angle`. - A **claim ledger** for every proof, offer, rating, guarantee, price, or superlative: exact source (account data, business context, approved landing page, or user-provided evidence) and whether it is approved for ad use. - Complete RSA assets with character counts and pin positions, plus a distinct challenger concept when testing. Do not turn a vague request into fabricated proof. If a claim is attractive but unsupported, label it `needs_substantiation` and write a claim-free alternative. A citation to a competitor, an unverified review site, or general industry knowledge is not approval to use a claim in an ad. ## Competitive copy rules - **Never** name a competitor in ad copy (policy risk + you do their brand awareness for free). - **Never** use "best" / "#1" without verifiable substantiation. Google requires it; the Trademark team enforces it. - **Do** use specific features competitors lack ("Same-Day Service" beats "Better Service"), trust signals ("4.9★ Google · 500+ Reviews"), guarantees, transparent pricing, and location specificity. Verifiable specificity outperforms superlatives. ## RSA mechanics Google RSA: up to **15 headlines (30 chars max)** and **4 descriptions (90 chars max)**. A single character over = rejected. Always count. `references/rsa-best-practices.md` is the source of truth for headline formulas, description ordering, and pinning strategy. The compact rule of thumb: pin one Service+Location headline to position 1, one CTA to position 3, leave position 2 unpinned for Google to test value-prop / trust / differentiator headlines, and never pin more than 3 total. ## A/B testing — use the experiments framework When the user wants to test, define the hypothesis, traffic split, measurement, and decision rule, then check which experiment capabilities the live connection supports. Ad-copy tests and larger changes to audience or landing page may need different designs. Running two ads side by side without a controlled split is observational evidence; do not present it as a randomized experiment. Each variant must test a **meaningfully different angle** — not word swaps. "Trust & Expertise" vs. "Speed & Convenience" vs. "Price & Value" is a real test; "Call Today" vs. "Call Now" is noise. Before writing variants, read `references/rsa-testing-lab.md` when the request mentions testing, pinning, Ad Strength, low CTR/CVR, or mixed-intent ad groups. It encodes the generalized pattern that many RSA problems are really ad-group/query-theme problems. Before launch, record one primary metric, any guardrail metric (for example CPA or qualified-lead rate), the planned minimum exposure or duration, and the decision rule. Do not peek and declare a winner from an early gap: less than ~100 clicks per variant is usually too early, and even a 2× CVR gap still needs enough conversions and a check for recent changes. The experiment framework's own significance signals are the cleanest input — defer to them when present. After a winner: pause the loser, then iterate against the winner. Never stop testing. ## Operating principles 1. **Business context is non-negotiable.** No `business-context.json` / `personas` → recommend `/google-ads-audit` before writing. 2. **Confirm before deploying.** Show the exact copy, character counts per asset, and pin positions. Get a yes, then push. 3. **Check reversibility.** Record the original state and only promise rollback when the current capability supports it. 4. **Differentiate, don't imitate.** Generic copy that could belong to any competitor is a wasted ad slot. 5. **Defer to `/google-ads`** for bid / budget / keyword work — this skill writes copy and runs creative experiments only.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.