Recommend Google Ads campaign and ad group structure based on intent separation, routing problems, brand/non-brand boundaries, competitor isolation, and landing-page fit.
Library skill — the default version is maintained in GitHub; edits you make live in your own clone.
Read first:
- google-ads/references/operator-thesis.md
- google-ads/references/intent-map.md
- google-ads/references/query-patterns.md
- google-ads/references/structure-playbook.md
- google-ads/references/deliverable-templates.md
Read workspace if available:
- workspace/ads/account.md
- workspace/ads/goals.md
- workspace/ads/intent-map.md
- workspace/ads/queries.md
- workspace/ads/winners.md
- workspace/ads/change-log.md
- workspace/ads/learnings.md
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.
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
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
workspace/ads/findings.md — structural observationsworkspace/ads/change-log.md — if recommending changesworkspace/ads/intent-map.md — if routing analysis reveals new intent classes