Systems Lab

Agent skill

google-ads-pmax-asset-group-optimizer

This skill should be used when the user asks to \"optimize PMax asset groups\", \"analyze asset group performance\", \"configure listing groups\", \"set up search themes\", or mentions \"audience signals optimization\", \"creative testing in PMax\", or \"asset group structure\".

activeSelf-containedInstructions only937 words

Filed under ABM and paid.

From Ad-Superpowers/ad-superpowers-plugin · 120 skills · 5 · pushed 2026-09-10

What it does when it runs

This skill should be used when the user asks to \"optimize PMax asset groups\", \"analyze asset group performance\", \"configure listing groups\", \"set up search themes\", or mentions \"audience signals optimization\", \"creative testing in PMax\", or \"asset group structure\". Do NOT use for: standard Search/Display campaign setup (use search-campaign-builder), bid strategy selection (use learning-phase-tracker).

Read from the skill and the 2 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about google-ads-pmax-asset-group-optimizer

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/Ad-Superpowers/ad-superpowers-plugin.git /tmp/ad-superpowers-plugin
git -C /tmp/ad-superpowers-plugin sparse-checkout set "plugin/skills/google-ads-pmax-asset-group-optimizer"
mkdir -p ~/.claude/skills/google-ads-pmax-asset-group-optimizer
cp -R "/tmp/ad-superpowers-plugin/plugin/skills/google-ads-pmax-asset-group-optimizer/." ~/.claude/skills/google-ads-pmax-asset-group-optimizer/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

Or take the whole library

This repo ships a .claude-plugin manifest, so Claude Code can install all 120 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.

/plugin marketplace add Ad-Superpowers/ad-superpowers-plugin
/plugin

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from Ad-Superpowers/ad-superpowers-plugin/blob/9b6385d2d2d228e4dac096a1d6bc5715c04fa736/plugin/skills/google-ads-pmax-asset-group-optimizer/SKILL.md, which is licensed MIT (repository). 937 words, 18 headings.

Performance Max Asset Group Optimizer

Complete guide for optimizing Performance Max asset groups — from structure and audience signals to creative testing and feed optimization.

Asset group count decision guide in references/decision-trees.md.

MCP Tool Integration

STEP 1: PMax campaign performance overview
google_ads_run_gaql(query="
  SELECT campaign.name, campaign.status,
    metrics.cost_micros, metrics.conversions,
    metrics.cost_per_conversion, metrics.conversions_value
  FROM campaign
  WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
    AND campaign.status = 'ENABLED'
    AND segments.date DURING LAST_30_DAYS
  ORDER BY metrics.cost_micros DESC
")

STEP 2: Asset group performance
google_ads_run_gaql(query="
  SELECT campaign.name, asset_group.name, asset_group.status,
    metrics.impressions, metrics.clicks, metrics.conversions,
    metrics.cost_micros, metrics.cost_per_conversion
  FROM asset_group
  WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
    AND segments.date DURING LAST_30_DAYS
  ORDER BY metrics.cost_micros DESC
")

STEP 3: Search terms (v21+)
google_ads_run_gaql(query="
  SELECT campaign.name, search_term_view.search_term,
    metrics.impressions, metrics.clicks,
    metrics.conversions, metrics.cost_micros
  FROM search_term_view
  WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
    AND segments.date DURING LAST_30_DAYS
  ORDER BY metrics.cost_micros DESC
  LIMIT 100
")

STEP 4: Ad network type breakdown (v22+)
google_ads_run_gaql(query="
  SELECT campaign.name, segments.ad_network_type,
    metrics.impressions, metrics.clicks,
    metrics.conversions, metrics.cost_micros
  FROM campaign
  WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
    AND segments.date DURING LAST_30_DAYS
")

Asset Group Structure

Structuring Options

OptionBest forExample
Category-basedMost commonWomen's / Men's / Accessories
Margin-basedProfit focusHigh / Standard / Clearance
Funnel-basedCustomer journeyProspecting / Retargeting / Cross-sell
Performance-basedData-drivenTop Performers / Testing / Long Tail
Hybrid (recommended)Best of allBestsellers + Category A/B/C + Sale

Asset Requirements

Asset TypeMinRecommendedMaxSpecs
Headlines35-1515Max 30 chars
Long Headlines13-55Max 90 chars
Descriptions24-55Max 90 chars
Images26-10201200x628, 1200x1200, 960x1200
Logos1251200x1200 (square), 1200x300 (landscape)
Videos01-3515-30 sec, 16:9 + 1:1 + 9:16

No video upload = Google auto-creates video from images (often less effective).

Detailed asset variation strategy (headline/image/video types) in references/detailed-reference.md.

Asset Performance Ratings

Per-asset ratings (Best/Good/Low/Pending) removed from API in v22 — check in Google Ads UI only (Campaign → Asset Groups → Asset Performance).

Optimization cycle:

  • Week 1-2: Learning phase — upload all assets, make no changes
  • Week 3-4: First analysis — identify "Low" performers, note trends
  • Week 5-6: First optimization — replace consistently "Low" assets, add "Best" variations
  • Monthly: Full review, replace 20-30% of assets, seasonal updates

Replacement rules: Low >30 days → Replace. Low <30 days → Monitor. Good → Keep, test variations. Best → Keep, create similar. Pending → Wait.

Audience Signals Optimization

Audience Signals = HINTS for Google AI, NOT targeting restrictions. Google will advertise beyond your signals.

Signal priority (strongest to weakest):

  1. Your Data: Customer Match (converters)
  2. Your Data: Website remarketing (high intent)
  3. Custom Segments: Keywords (competitor/product)
  4. Custom Segments: URLs (competitor sites)
  5. In-Market Audiences
  6. Affinity Audiences
  7. Demographics

Example configuration — Bestsellers AG:

  • Your Data: All Purchasers, Product Viewers (90d), Cart Abandoners (30d)
  • Custom Segments: top product names, competitor product pages
  • Interests: relevant In-Market + Affinity categories

Audience signal troubleshooting (ignored signals, too broad/narrow) in references/decision-trees.md.

Search Themes

Keywords you give PMax to understand relevant search queries (hints for AI, not exact targeting).

  • Recommended: 3-7 per asset group (max 25)
  • Types: Branded, Generic Product, Long-tail, Problem-solving
  • Update monthly: check Search Terms report, add high-performers, remove non-performers

Per-category search theme examples in references/detailed-reference.md.

Listing Groups (E-commerce)

Listing Groups determine which products belong to which Asset Group.

Segmentation attributes: Category, Brand, Condition, Item ID, Product Type, Custom Labels (0-4).

Custom Labels strategy:

  • Label 0: Margin Level (High/Medium/Low)
  • Label 1: Performance Tier (Bestseller/Rising Star/Long Tail)
  • Label 2: Seasonal (Spring/Summer/Fall/Winter)
  • Label 3: Promo Status (Full Price/On Sale/Clearance)

Optimization: Identify top 20% products (own asset group, premium signals) and bottom 20% (exclude or improve feed quality). Exclude out-of-stock, below-breakeven margin, seasonally irrelevant products.

PMax New Capabilities (2025-2026)

  • Campaign-level negative keywords (v20): Add via UI or API. Protect specific queries for separate Search campaigns.
  • Search terms reporting (v21): PMax search term data now in API. Use to find negatives and new keyword opportunities.
  • First-party audience exclusions (Mar 2026): Exclude existing customers for pure prospecting.
  • Ad network type breakdown (v22): See which network (Search, Display, YouTube) drives PMax performance.
  • Demographic reporting (Mar 2026): Age/gender breakdowns for budget efficiency analysis.

Creative testing approaches (sequential, split AG, experiments) and asset refresh cadence in references/detailed-reference.md.

Output: Asset Group Optimization Template

# Asset Group Optimization Plan

## Campaign Overview
- **Campaign:** [Name] | **Account:** [Name] | **Period:** [Date range]

## Asset Group Structure
| Asset Group | Products/Focus | Budget % | ROAS | Status |
|-------------|---------------|----------|------|--------|
| [AG 1] | [Products] | [%] | [X]x | [Status] |

## Asset Performance Review
| Asset Type | Rating | Action |
|------------|--------|--------|
| [Headline/Image/Video] | [Best/Good/Low] | [Keep/Replace/Add variation] |

## Audience Signals Review
| Signal Type | Signal | Performance |
|-------------|--------|-------------|
| Your Data | [Signal] | [Performance] |
| Custom | [Signal] | [Performance] |

## Action Items
- Immediate: [This week actions]
- Short-term: [Next 2 weeks]
- Long-term: [Next month]

## Success Metrics
| Metric | Current | Target | Timeline |
|--------|---------|--------|----------|
| ROAS | [X]x | [Y]x | [Date] |
| CPA | $[X] | $[Y] | [Date] |

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what google-ads-pmax-asset-group-optimizer does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.