google-ads-structure
Installation
SKILL.md
Google Ads Structure
Read first:
google-ads/references/operator-thesis.mdgoogle-ads/references/intent-map.mdgoogle-ads/references/query-patterns.mdgoogle-ads/references/structure-playbook.mdgoogle-ads/references/deliverable-templates.md
Read workspace if available:
workspace/ads/account.mdworkspace/ads/goals.mdworkspace/ads/intent-map.mdworkspace/ads/queries.mdworkspace/ads/winners.mdworkspace/ads/change-log.mdworkspace/ads/learnings.md
Data Acquisition
Connected Mode (MCP available)
Pull via the search tool on google-ads-mcp:
Primary: Ad group structure with performance:
SELECT
campaign.name,
campaign.advertising_channel_type,
ad_group.name,
ad_group.status,
ad_group.type,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions,
metrics.cost_per_conversion
FROM ad_group
WHERE campaign.status = 'ENABLED'
AND ad_group.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
ORDER BY campaign.name, ad_group.name
Primary: Keywords per ad group (intent mixing check):
SELECT
campaign.name,
ad_group.name,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
ad_group_criterion.status,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM keyword_view
WHERE campaign.status = 'ENABLED'
AND ad_group.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
ORDER BY campaign.name, ad_group.name
Supplementary: Search terms (to verify routing):
SELECT
search_term_view.search_term,
campaign.name,
ad_group.name,
metrics.cost_micros,
metrics.conversions
FROM search_term_view
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
LIMIT 300
See data/gaql-recipes.md for additional queries.
Export Mode (no MCP)
Ask the user for:
- Campaign list with types, budgets, bid strategies
- Ad group list with campaign parent
- Keywords per ad group (at least the main ones)
- Search terms report helps but is not strictly required
Process
- Announce mode (connected/export).
- Identify where unlike intent is currently mixed.
- Determine whether the problem is better solved by split, merge, or routing.
- Evaluate whether current campaign and ad group boundaries reflect real commercial meaning.
- Recommend actions: keep / clean up / split / merge / route / rebuild.
- Update workspace memory.
Core Questions
- What traffic types are wrongly sharing one optimization bucket?
- Where is generic structure hiding high-intent signal?
- Where are negatives doing patchwork for a deeper structure problem?
- What structure would make bidding, copy, LPs, and reporting cleaner?
Draft Output
Structure Draft
Trigger: Analysis identifies intent mixing with measurable performance impact.
Create using drafts/templates/structure-draft.md:
- Write to
workspace/ads/drafts/YYYY-MM-DD-[account-slug]-structure.md - Specify: current state, proposed state, keywords to move, budget impact, risk, reversibility
- Note dependencies on other drafts (e.g., "Add negatives first to prevent traffic bleed during restructure")
- Update
workspace/ads/drafts/_index.md
Always update workspace memory:
workspace/ads/findings.md— structural observationsworkspace/ads/change-log.md— if recommending changesworkspace/ads/intent-map.md— if routing analysis reveals new intent classes
Rules
- Do not split just because the account feels messy.
- Do not over-segment thin volume.
- Recommend routing when negatives can solve the problem more cleanly than new structure.
- Distinguish between cleanup and full rebuild.
Related skills