Search Headline Set
Shared quality bar: ../references/output-standard.md. All numbers cited here live in ../references/thresholds.md.
This skill produces search assets for one ad group at a time, because pinning
and duplication are only judgeable against a single keyword set.
Use this skill when
A Google Ads ad group needs its Responsive Search Ad headlines and descriptions
written or rebuilt, or an existing asset set has weak Ad Strength, or nobody
can say which headlines are pinned and why. Also use it when an ad group has
fewer live headlines than coverage.rsa_headline_floor. Not for Meta or
LinkedIn feed copy, which is paid-social-primary-text-ad-creative. Not for the
opening seconds of a video, which is video-hook-lines-ad-creative. Not for
rewriting one proven angle across funnel stages, which is
funnel-stage-variants-ad-creative.
Required input
- Ad group name and its keyword list, with match types.
- The destination URL, and the text of its first heading and first paragraph.
- The offer as it exists today: price, trial, guarantee, delivery promise.
- Any claim the advertiser wants used, with its source.
- Legal or brand constraints: forbidden words, mandatory disclaimers.
- Existing asset set and Ad Strength, if one is live.
Analysis workflow
- Group the keywords by the job the searcher is doing, not by match type.
Each job becomes a claim family. A family with no keyword behind it does not
get a headline.
- Read the destination heading and first paragraph and record the claim, the
offer and the call to action present there. Apply
match.above_fold_rule
and match.promise_pairs before writing a single line.
- Draft headlines one claim family at a time, each within
limits.rsa_headline_chars. Write past the count you need, then cut.
- Run the duplication pass. Two headlines sharing their main noun and verb are
one headline, per the note on
coverage.rsa_headline_floor. Merge them and
record the merge, so the set is not padded to look full.
- Count distinct claims against
coverage.rsa_headline_floor and total slots
against limits.rsa_headline_slots. Report the gap as a number of missing
claim families, not as a request for more words.
- Write descriptions within
limits.rsa_description_chars, each carrying one
proof or one mechanism, never a restatement of a headline.
- Decide pinning. Pin only what must appear on every impression: a legal line,
a brand requirement, a price the page contradicts if absent. Everything else
stays unpinned so the system can assemble.
- Apply
claims.evidence_rule and claims.superlative_rule to every line.
Mark unsourced factual lines [claim: needs source]. Check
claims.restricted_topics and route those to the platform policy page.
Decision rules
- Distinct claims below
coverage.rsa_headline_floor and no further evidenced
claim available: report the shortfall, do not invent a family to fill it.
- Pins in one position above
limits.rsa_pin_ceiling: rewrite. Heavy pinning
removes the combinations the format exists to test.
- A headline whose claim is absent from the destination above the fold:
investigate the landing page, and hold the headline out of the shipped set.
- Two headlines inside one claim family with no wording difference that changes
the promise: keep one, label the other a duplicate.
- Any superlative without a cited comparison: cut it, and say what evidence
would let it back in.
- Any line this skill produced that carries
[claim: needs source] is
approval_needed, whatever else its verdict says, and the marker is never
stripped to make the set look finished. A marked line is not shippable copy:
it waits for the named source, or it is rewritten without the claim. A marked headline is reported outside the
shipped set, not inside it with a footnote.
Output format
No verdict line. Return a headline table with columns: headline, character
count, claim family, pinned position or unpinned, evidence label, decision
label. Then a description table with the same evidence and decision columns.
Then a short duplication list naming each merged pair. Then
What this could not see, Missing data, Approval gates.
This skill writes assets rather than reading a test or a time series, so it
issues no high confidence label and does not borrow the comparison family's
conditions, which belong to a test nobody has run on this copy yet. Where a row
carries a confidence label it is about the evidence behind a claim and never
about the writing: a line whose source was produced and checked is ship, an
unsourced one is approval_needed. test.min_runtime and test.volume_floor
start to apply the day the set goes live, not while it is being written.
Practical example
Illustrative and fictional. Advertiser "Bramble PM", ad group "project
management software for agencies", 14 keywords. The advertiser supplies 11 draft
headlines, asks for 15, and asks for a claim that the tool has the fastest
onboarding in the category.
Duplication pass: "Set Up In Minutes", "Fast Setup For Teams" and "Quick
Onboarding" share their noun and verb, so those three merge into one claim
family. Three further pairs merge the same way. Eleven drafts minus two from the
trio and one from each pair leaves 6 distinct claims, below
coverage.rsa_headline_floor.
Two evidenced families come off the destination page, taking the set to 8. The
remaining slots up to limits.rsa_headline_slots are left empty rather than
padded.
Shipped headlines, with character counts:
- Agency Project Management (25)
- Built For Agency Teams (22)
- Onboard A Client In A Day (25)
- See Every Project Deadline (26)
- Stop Chasing Timesheets (23)
- One Place For Client Work (25)
- Try Bramble PM Free (19)
- Start Free, No Card Needed (26)
Description 1 (89): "Brief, plan and invoice client work in one place, then give
the client a live view of it."
Declined, and reported outside the shipped set:
- "Fastest Onboarding In The Category" (34). Refused under
claims.superlative_rule: no comparison was supplied, so it is not written in
any form, including a softened "onboarding that is hard to beat". It also runs
past limits.rsa_headline_chars, which is the smaller of the two problems.
Unlocked by a named benchmark against named competitors.
- "Cuts Admin By 6 Hours A Week" (28)
[claim: needs source]. The 6 hour figure
arrived in conversation only, so the line is approval_needed and is not one
of the 8. It joins them the day somebody names the dashboard behind it.
Pinning: one legal line pinned to description 2, nothing else pinned.
Guardrails
- Never pad an asset set with reworded duplicates to reach a slot count.
- Never write a claim the destination page does not carry above the fold.
- Never invent a price, a customer count, a rating or a comparison.
- Never soften an unevidenced claim into a vaguer one to get it past review.
- Do not upload, edit or pause anything in the account. Recommend only.
- Report every line declined and the reason, including lines the advertiser
asked for by name.
1---2name: search-headline-set-ad-creative3description: Builds a full Responsive Search Ad asset set for one Google Ads ad group, decides pinning, and names which headlines are duplicates wearing different words. Use when the deliverable is search text tied to keyword intent and a landing page. Not for Meta or LinkedIn feed copy, which is paid-social-primary-text-ad-creative.4---56# Search Headline Set78Shared quality bar: `../references/output-standard.md`. All numbers cited here live in `../references/thresholds.md`.9This skill produces search assets for one ad group at a time, because pinning10and duplication are only judgeable against a single keyword set.1112## Use this skill when1314A Google Ads ad group needs its Responsive Search Ad headlines and descriptions15written or rebuilt, or an existing asset set has weak Ad Strength, or nobody16can say which headlines are pinned and why. Also use it when an ad group has17fewer live headlines than `coverage.rsa_headline_floor`. Not for Meta or18LinkedIn feed copy, which is paid-social-primary-text-ad-creative. Not for the19opening seconds of a video, which is video-hook-lines-ad-creative. Not for20rewriting one proven angle across funnel stages, which is21funnel-stage-variants-ad-creative.2223## Required input2425- Ad group name and its keyword list, with match types.26- The destination URL, and the text of its first heading and first paragraph.27- The offer as it exists today: price, trial, guarantee, delivery promise.28- Any claim the advertiser wants used, with its source.29- Legal or brand constraints: forbidden words, mandatory disclaimers.30- Existing asset set and Ad Strength, if one is live.3132## Analysis workflow33341. Group the keywords by the job the searcher is doing, not by match type.35 Each job becomes a claim family. A family with no keyword behind it does not36 get a headline.372. Read the destination heading and first paragraph and record the claim, the38 offer and the call to action present there. Apply `match.above_fold_rule`39 and `match.promise_pairs` before writing a single line.403. Draft headlines one claim family at a time, each within41 `limits.rsa_headline_chars`. Write past the count you need, then cut.424. Run the duplication pass. Two headlines sharing their main noun and verb are43 one headline, per the note on `coverage.rsa_headline_floor`. Merge them and44 record the merge, so the set is not padded to look full.455. Count distinct claims against `coverage.rsa_headline_floor` and total slots46 against `limits.rsa_headline_slots`. Report the gap as a number of missing47 claim families, not as a request for more words.486. Write descriptions within `limits.rsa_description_chars`, each carrying one49 proof or one mechanism, never a restatement of a headline.507. Decide pinning. Pin only what must appear on every impression: a legal line,51 a brand requirement, a price the page contradicts if absent. Everything else52 stays unpinned so the system can assemble.538. Apply `claims.evidence_rule` and `claims.superlative_rule` to every line.54 Mark unsourced factual lines `[claim: needs source]`. Check55 `claims.restricted_topics` and route those to the platform policy page.5657## Decision rules5859- Distinct claims below `coverage.rsa_headline_floor` and no further evidenced60 claim available: report the shortfall, do not invent a family to fill it.61- Pins in one position above `limits.rsa_pin_ceiling`: `rewrite`. Heavy pinning62 removes the combinations the format exists to test.63- A headline whose claim is absent from the destination above the fold:64 `investigate` the landing page, and hold the headline out of the shipped set.65- Two headlines inside one claim family with no wording difference that changes66 the promise: keep one, label the other a duplicate.67- Any superlative without a cited comparison: cut it, and say what evidence68 would let it back in.69- Any line this skill produced that carries `[claim: needs source]` is70 `approval_needed`, whatever else its verdict says, and the marker is never71 stripped to make the set look finished. A marked line is not shippable copy:72 it waits for the named source, or it is rewritten without the claim. A marked headline is reported outside the73 shipped set, not inside it with a footnote.7475## Output format7677No verdict line. Return a headline table with columns: headline, character78count, claim family, pinned position or unpinned, evidence label, decision79label. Then a description table with the same evidence and decision columns.80Then a short duplication list naming each merged pair. Then81`What this could not see`, `Missing data`, `Approval gates`.8283This skill writes assets rather than reading a test or a time series, so it84issues no `high` confidence label and does not borrow the comparison family's85conditions, which belong to a test nobody has run on this copy yet. Where a row86carries a confidence label it is about the evidence behind a claim and never87about the writing: a line whose source was produced and checked is `ship`, an88unsourced one is `approval_needed`. `test.min_runtime` and `test.volume_floor`89start to apply the day the set goes live, not while it is being written.9091## Practical example9293Illustrative and fictional. Advertiser "Bramble PM", ad group "project94management software for agencies", 14 keywords. The advertiser supplies 11 draft95headlines, asks for 15, and asks for a claim that the tool has the fastest96onboarding in the category.9798Duplication pass: "Set Up In Minutes", "Fast Setup For Teams" and "Quick99Onboarding" share their noun and verb, so those three merge into one claim100family. Three further pairs merge the same way. Eleven drafts minus two from the101trio and one from each pair leaves 6 distinct claims, below102`coverage.rsa_headline_floor`.103Two evidenced families come off the destination page, taking the set to 8. The104remaining slots up to `limits.rsa_headline_slots` are left empty rather than105padded.106107Shipped headlines, with character counts:108109- Agency Project Management (25)110- Built For Agency Teams (22)111- Onboard A Client In A Day (25)112- See Every Project Deadline (26)113- Stop Chasing Timesheets (23)114- One Place For Client Work (25)115- Try Bramble PM Free (19)116- Start Free, No Card Needed (26)117118Description 1 (89): "Brief, plan and invoice client work in one place, then give119the client a live view of it."120121Declined, and reported outside the shipped set:122123- "Fastest Onboarding In The Category" (34). Refused under124 `claims.superlative_rule`: no comparison was supplied, so it is not written in125 any form, including a softened "onboarding that is hard to beat". It also runs126 past `limits.rsa_headline_chars`, which is the smaller of the two problems.127 Unlocked by a named benchmark against named competitors.128- "Cuts Admin By 6 Hours A Week" (28) `[claim: needs source]`. The 6 hour figure129 arrived in conversation only, so the line is `approval_needed` and is not one130 of the 8. It joins them the day somebody names the dashboard behind it.131132Pinning: one legal line pinned to description 2, nothing else pinned.133134## Guardrails135136- Never pad an asset set with reworded duplicates to reach a slot count.137- Never write a claim the destination page does not carry above the fold.138- Never invent a price, a customer count, a rating or a comparison.139- Never soften an unevidenced claim into a vaguer one to get it past review.140- Do not upload, edit or pause anything in the account. Recommend only.141- Report every line declined and the reason, including lines the advertiser142 asked for by name.