themattberman/google-ads-copilot · Archived

google-ads-intent-map

Build or update a Google Ads Intent Map from search terms, campaign data, and account context. Pulls live data via MCP or works with manual exports. Produces structure drafts when intent classes need separation.

First seen May 3, 2026

Installation

$ npx skills add themattberman/google-ads-copilot --skill google-ads-intent-map

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from themattberman/google-ads-copilot · top by installs.

npx skills add themattberman/google-ads-copilot

Browse all from themattberman/google-ads-copilot

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 231
License LICENSE
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 6,300 B
  • docs SUMMARY.md 240 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 7 installs

SKILL.md

Google Ads Intent Map

Read first:

  • google-ads/references/operator-thesis.md
  • google-ads/references/intent-map.md
  • google-ads/references/query-patterns.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/learnings.md

Data Acquisition

Connected Mode (MCP available)

Pull via the search tool on google-ads-mcp:

Primary: All search terms for clustering — last 30 days:

SELECT
  search_term_view.search_term,
  campaign.name,
  campaign.advertising_channel_type,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions,
  metrics.conversions_value,
  metrics.all_conversions
FROM search_term_view
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.impressions DESC
LIMIT 1000

Retrieval ladder — if the primary query returns no rows, follow the shared retrieval ladder in data/search-term-retrieval.md. In pmax-fallback mode, use rows for clustering but note that performance metrics are unavailable for intent-class profiling. In limited mode, clustering is blocked — request a UI export.

Supplementary: Campaign and ad group structure (for routing analysis):

SELECT
  campaign.name,
  campaign.advertising_channel_type,
  ad_group.name,
  ad_group.status,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions
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

See data/gaql-recipes.md for additional queries.

Date Range Fallback

If LAST30DAYS returns too few terms for meaningful clustering (<20 terms), fall back to LAST90DAYS, then all-time. Intent mapping benefits from volume — more search terms means better clustering. Always state the date range used.

Export Mode (no MCP)

Ask the user for:

  • Search Terms report: last 30 days, all terms (not just top spenders)
  • Include: Search term, Campaign, Ad group, Impressions, Clicks, Cost, Conversions, Conv. value
  • Campaign names are essential for routing analysis

See data/export-formats.md for recommended format.


Process

  1. Announce mode (connected/export).
  2. In connected mode, run the shared retrieval ladder (data/search-term-retrieval.md). Report retrieval_mode in the output header.
  3. If pmax-fallback, use rows for clustering but note that performance profiling is unavailable. If limited, clustering is blocked — request a UI export.
  4. Load existing Intent Map from workspace/ads/intent-map.md if it exists.
  5. Identify recurring query clusters and modifiers across all terms.
  6. Classify clusters into intent classes:

- Buyer — high commercial intent, ready to convert - Comparison — evaluating options, not yet committed - Informational — learning, researching, no purchase signal - Navigational — looking for a specific brand/page - Branded — searching for your brand specifically - Junk — no plausible path to conversion

  1. For each class: note representative queries, performance profile, and current routing (which campaign/ad group they land in).
  2. Separate high-confidence signals from ambiguous ones.
  3. Infer structural implications — which classes are incorrectly sharing optimization buckets?
  4. Build or update workspace/ads/intent-map.md.
  5. Use the operator summary template when presenting results.

Always Answer

  • What query patterns signal a likely buyer?
  • What patterns signal weak or misleading intent?
  • What traffic types should never be optimized together?
  • What language repeats among likely winners?
  • What should be cut, isolated, or tested next?
  • Where is intent mixing causing structural problems?

Draft Output

Structure Draft

Trigger: Two or more distinct intent classes are sharing a single campaign or ad group, AND the performance gap between them is significant (e.g., 2x+ CPA difference, or one class converts and the other doesn't).

Create a draft using drafts/templates/structure-draft.md:

  • Write to workspace/ads/drafts/YYYY-MM-DD-[account-slug]-structure.md
  • Specify exactly which intent classes to separate, which campaigns/ad groups to split
  • Include keyword lists or patterns that should route to each new bucket
  • Update workspace/ads/drafts/_index.md

Negative Draft (secondary)

Trigger: Intent Map reveals a clear junk class that should be excluded account-wide.

Create using drafts/templates/negative-draft.md if the junk class is better solved by exclusion than by structure.

Always update workspace memory:

  • workspace/ads/intent-map.md — the primary deliverable. Rebuild or update the map.
  • workspace/ads/queries.md — notable clusters
  • workspace/ads/findings.md — strategic observations about intent routing

Output Shape

  1. Account Status block — account name, CID, status, date range used, tracking confidence, mode
  2. Data summary (terms analyzed, date range)
  3. Intent Map (classes with representative queries, performance, current routing)
  4. Routing problems (intent classes sharing wrong buckets)
  5. Structural implications (what should be separated)
  6. Emerging patterns (new intent classes forming)
  7. Confidence assessment per class
  8. Drafts created (with paths and summaries)
  9. Memory updates

Rules

  • Do not confuse underperformance with irrelevance.
  • Do not recommend negatives where isolation is the better move.
  • Prefer pattern interpretation over checklist regurgitation.
  • The Intent Map is the most strategic artifact in the workspace. Treat updates seriously — it compounds across every other skill.
  • When in doubt between "exclude" and "isolate," prefer isolation. You can always exclude later. You can't un-exclude query data you never saw.