Ads
Generate, audit, and refresh Google Ads responsive search ad copy in 6 languages. 10 Claude Code / claude.ai skills. Open source.
npx -y skills add marek-kujda/ad-copy-skill-pack --skill adsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generate Google Ads Responsive Search Ad copy. Use when the user asks to create, write, or generate RSA headlines and descriptions, Google Ads copy, or search ad variations.
SKILL.md
3.6 KB, as published. Nobody here has run it
/ads — Generate Google Ads RSA Copy
Input Required
Ask the user for the following (skip any already provided):
- Campaign name — for CSV organization
- Ad group name — for CSV organization
- Target keywords — primary + secondary keywords
- Landing page — one of:
- A key from the landing pages registry (e.g.,
pricing) — see.claude/skills/landing-pages/SKILL.md - A full URL (will be analyzed on the fly)
- Skip if USPs are provided manually
- A key from the landing pages registry (e.g.,
- Language — EN / DE / FR / ES / AR / PL (default: infer from keywords)
- Key USPs / offers — what makes this product/service unique
- Target persona — which persona from
.claude/skills/icp/SKILL.mdto target (or describe inline) - Competitors (optional) — to differentiate messaging
Execution Steps
Step 1: Analyze Context
- Check if landing page was provided as a registry key → load cached analysis from
.claude/skills/landing-pages/cache_[key].md - If cache doesn't exist yet, fetch the URL, analyze it, and save cache for future use
- If a raw URL was provided (not a registry key), fetch and analyze it directly
- Review target keywords for search intent (informational, commercial, transactional)
- Load brand voice from
.claude/skills/brand-voice/SKILL.md - Load ICP and persona details from
.claude/skills/icp/SKILL.md - Load platform rules from
.claude/skills/google-ads-rules/SKILL.md - Identify the strongest messaging angles
Step 2: Generate Headlines (15)
Create exactly 15 headlines, each ≤30 characters. Ensure diversity:
- 3–4 headlines with exact target keyword
- 2–3 benefit-driven headlines
- 2–3 feature-driven headlines
- 2 CTA headlines (action verbs)
- 1–2 social proof / authority headlines
- 1–2 urgency or differentiator headlines
For each headline, output:
[XX chars] Headline text | Category: [type]
Step 3: Generate Descriptions (4)
Create exactly 4 descriptions, each ≤90 characters:
- Description 1: Primary value proposition + CTA
- Description 2: Key features/benefits summary
- Description 3: Social proof or trust signal + CTA
- Description 4: Urgency/offer or differentiator + CTA
For each description, output:
[XX chars] Description text
Step 4: Validate
- Verify ALL character counts (headlines ≤30, descriptions ≤90)
- Check keyword presence (min 2 headlines with target keyword)
- Check CTA presence (min 1 description with clear CTA)
- Check diversity (no two headlines with identical concept)
- Flag any issues
Step 5: Export CSV
Save to output/rsa_[campaign]_[adgroup]_[date].csv in Google Ads Editor format.
CRITICAL: Write CSV as UTF-8 with BOM (\ufeff as first byte, or encoding="utf-8-sig" in Python).
Without BOM, Google Ads Editor and Excel on Windows will corrupt diacritics (ą, ö, é, ñ → garbage).
Campaign,Ad Group,Headline 1,Headline 2,...,Headline 15,Description 1,...,Description 4,Path 1,Path 2,Final URL
Step 6: Suggest Iterations
After presenting the copy, suggest:
- Which headlines might underperform and why
- Alternative angles worth testing
- Pin recommendations (which headlines to pin to positions 1–3)
Iteration Shortcuts
- "more like #3" or "change #7" → regenerate specific items
- "make it more [adjective]" → adjust tone across all copy
- Always re-validate character counts after changes