Install
$ agentstack add skill-muvon-octomind-tap-ad-google ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Overview
This skill defines exactly what to produce for a Google Ads creative. It is platform-spec only: the slots Google exposes, the limits they enforce, and the assets they expect. It does not cover keyword strategy, bidding, audience signals, or conversion tracking — those are separate concerns.
Use this skill whenever the deliverable is the actual ad copy or asset set that will be pasted into Google Ads Editor or uploaded to a Performance Max asset group.
Instructions
Campaign Types Covered
| Type | What You Produce | |------|------------------| | Search (RSA) | Headlines × 15, descriptions × 4, paths × 2, sitelinks (optional), callouts | | Performance Max | Headlines, long headlines, descriptions, long descriptions, business name, images, logos, videos | | Display | Responsive display assets — headlines, long headline, descriptions, images, logo, video |
Out of scope for this skill: keyword lists, negative keywords, bid strategy, audience signals, conversion goals.
Responsive Search Ads (RSA) — Slots
| Slot | Count | Hard Limit | Notes | |------|-------|-----------|-------| | Headline | up to 15 | 30 chars each | Google picks 3 to show per impression | | Description | up to 4 | 90 chars each | Google picks 2 to show per impression | | Path | 2 | 15 chars each | Display URL only — does not affect destination | | Final URL | 1 | URL | The actual landing page | | Sitelink | 0–6 | Headline 25, description 35×2 | Optional extension | | Callout | 0–10 | 25 chars each | Optional extension | | Structured snippet | 0–2 | 25 chars per value | Optional extension |
RSA Production Rules
- Produce at least 8 headlines and 3 descriptions. Fewer reduces the ad strength signal.
- Pin only when policy or brand requires it. Pinning H1 forces it to position 1 every impression, which kills Google's optimisation surface.
- Include the primary keyword in at least 3 headlines. Search intent match drives quality score.
- Vary headline angles: benefit, feature, social proof, urgency, question. Repeating the same angle across all 15 wastes slots.
- Descriptions complement headlines — do not restate the same benefit twice.
- Display path is brand surface only. Use it to reinforce the click target (
/pricing,/demo,/free-trial). - Final URL must contain the offer named in the ad. No bait-and-switch.
Performance Max — Slots
| Asset Group Slot | Count Range | Limit | Notes | |------------------|-------------|-------|-------| | Headline | 3–15 | 30 chars | Same as RSA headlines | | Long headline | 1–5 | 90 chars | Used in display/video placements | | Description | 1–5 | 90 chars | Standard description | | Long description | 1 | 90 chars | Used in some display formats | | Business name | 1 | 25 chars | Brand surface across placements | | Image — landscape | up to 20 | 1.91:1 | 1200×628 recommended | | Image — square | up to 20 | 1:1 | 1200×1200 recommended | | Image — portrait | up to 20 | 4:5 | 960×1200 recommended (≥3 portraits lifts mobile placement significantly) | | Logo — square | up to 5 | 1:1 | 1200×1200, min 128×128 | | Logo — landscape | up to 5 | 4:1 | 1200×300 (optional) | | Video | 0–5 per aspect ratio (15 total max) | 16:9, 9:16, or 1:1 | 10s minimum, YouTube-hosted. ≥1 9:16 vertical (10-60s) required for Shorts placement | | CTA | 1 | ≤10 char custom override OR enum | Custom CTA now exposed in Editor 2.12+ | | Sitelink | 2+ | Standard sitelink limits | Required for full eligibility | | Callout | 2+ | 25 chars | Required for full eligibility |
Demand Gen — Slots (Replaced Discovery Ads in 2024)
Demand Gen serves across YouTube (In-Stream, In-Feed, Shorts), Discover, Gmail, and Maps. The biggest pitfall is reusing PMax/RSA copy — Demand Gen has DIFFERENT char limits.
| Slot | Count | Limit | Notes | |------|-------|-------|-------| | Headline | up to 5 | 40 chars | NOT 30 — most common reuse error | | Long headline (video ads only) | up to 5 | 90 chars | | | Description | up to 5 | 90 chars | | | Business name | 1 | 25 chars | | | CTA | 1 | Enum OR ≤10 char custom | Demand Gen exposes CTA explicitly | | Image 1.91:1 | up to 20 | 1200×628 | | | Image 1:1 | up to 20 | 1200×1200 | | | Image 4:5 | up to 20 | 960×1200 | | | Image 9:16 (NEW for Shorts) | up to 20 | 1080×1920 | | | Logo | up to 5 | 1:1, min 128×128 | | | Video | 1-5 per aspect ratio | 16:9 / 1:1 / 9:16 | 5s min (10s+ for in-stream), MP4 | | Carousel | 2-10 cards | Ratios must match across cards | | | Product feed | optional | Merchant Center linkage | For commerce | | Sitelinks (video ads) | up to 4 | Standard sitelink limits | |
Demand Gen CTA enum (subject to vertical eligibility): Apply Now, Book Now, Contact Us, Download, Get Quote, Learn More, Order Now, Shop Now, Sign Up, Subscribe, Visit Site, Watch Now.
Demand Gen vs PMax vs Search RSA — When to Use Which
| Campaign | When | |----------|------| | Search RSA | High-intent, branded, bottom funnel. Quality-score driven | | Performance Max | Conversion goal + creative assets + all-surface reach. Best for eCom with feed | | Demand Gen | Demand creation, visual story, YouTube/Discover/Gmail surfaces, top/mid funnel | | Display | Remarketing or cheap reach only — not a primary spend channel in 2026 |
Display — Responsive Display Slots
| Slot | Count Range | Limit | |------|-------------|-------| | Headline | up to 5 | 30 chars | | Long headline | 1 | 90 chars | | Description | up to 5 | 90 chars | | Business name | 1 | 25 chars | | Image — landscape | 1–15 | 1.91:1, 1200×628 | | Image — square | 1–15 | 1:1, 1200×1200 | | Logo — square | 1 | 1:1 | | Logo — landscape | 0–5 | 4:1 | | Video | 0–5 | YouTube-hosted, 30s max recommended |
CTA Behavior
Google does not expose a CTA button field for RSA — the CTA lives in the headline/description copy. For Performance Max and Display, an auto-generated CTA appears based on the ad copy and conversion action; the agent does not set it directly. So:
- Write the CTA INSIDE a headline or description ("Start free trial", "Get the demo", "See pricing")
- Do not waste a slot on a generic CTA-only line like "Click here" — every slot must contain product/value
- For PMax/Display, ensure at least one headline contains the conversion verb you want the auto-CTA aligned to
Policy Constraints (Common Disapprovals + 2025-2026 Updates)
- Trademark in headline without authorisation — auto-disapproval
- Superlatives without verifiable claim ("#1", "best", "cheapest") — manual review trigger
- Exclamation points: max 1 per ad total across headlines and descriptions
- ALL CAPS words: not allowed except for acronyms (CRM, SEO, API). LLM enforcement now catches evasion ("B-E-S-T")
- Punctuation: no repeated punctuation ("Save!! Now!!"), no symbols replacing letters ("S@ve")
- Restricted categories (healthcare, finance, gambling, alcohol, dating) — additional certification required
- Personal pronouns in display URL paths look spammy:
/you-need-thiswill flag
2025-2026 Policy Updates:
- Asset-level disapprovals (April 2026, PMax + Demand Gen) — Google now disapproves individual assets, not the whole group. Submit 8-10 assets per slot as buffer.
- AI-generated content disclosure (March 2026) — Any AI-generated creative element (image, video, voice) must carry "AI Generated" label. Deepfake-style human likeness banned outright.
- LLM semantic review — Text assets parsed by LLM, not regex. False-positive trigger categories: healthcare imagery (15-25%), before/after (20-30%), superlatives (10-15%), testimonials (15-20%), financial charts (10-20%).
- Predictive enforcement — Google flags ads before they violate based on account history + vertical. New accounts in regulated verticals see pre-emptive limited serving.
- Hidden-fees rule (auto retail Oct 2025, spillover expected) — All-in pricing required in vehicle ads; subscription/SaaS likely next.
Output Format
# Google Ads — [Product] [Campaign Name]
## Campaign Type
[Search RSA / Performance Max / Display]
## Final URL
[Landing page URL]
## Headlines ([N]/15)
1. [Headline] — [chars/30]
2. [Headline] — [chars/30]
...
## Descriptions ([N]/4)
1. [Description] — [chars/90]
2. [Description] — [chars/90]
...
## Paths (RSA only)
- Path 1: [path] — [chars/15]
- Path 2: [path] — [chars/15]
## Pinning Map (only if required)
| Position | Pinned Headlines | Reason |
|----------|------------------|--------|
| H1 | #1, #3 | Brand name required |
## PMax / Display Additions
- Long headline: [copy] — [chars/90]
- Long description: [copy] — [chars/90]
- Business name: [name] — [chars/25]
## Visual Asset Specs (PMax / Display)
- Landscape 1.91:1 — [scenario brief]
- Square 1:1 — [scenario brief]
- Portrait 4:5 — [scenario brief, mobile lift]
- Logo square 1:1 — [supplied]
- Video 16:9 — [hook timing + scene plan if produced]
## Extensions
- Sitelinks: [list with link text + URL]
- Callouts: [list of 25-char callouts]
## Pre-Submit Checklist
- [ ] At least 8 headlines, 3 descriptions
- [ ] Primary keyword in 3+ headlines
- [ ] No ALL CAPS, no repeated punctuation, ≤1 "!"
- [ ] No unauthorised trademark
- [ ] Final URL matches the ad's promise
- [ ] Pinning only where strictly required
When NOT to Use This Skill
- Keyword research → out of scope
- Audience or signal selection → out of scope
- Bid strategy or budget setup → out of scope
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Muvon
- Source: Muvon/octomind-tap
- License: Apache-2.0
- Homepage: https://octomind.run/tap/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.