Kelpi

Search Intent Mapper

Match intent to the pageLive reads need a Google Ads MCP

Group Google Ads queries by the answer each searcher needs, then map every cluster to one ad-group promise and a page that can support it. Use before adding keywords or restructuring Search.

Install this skill

npx skills add kelpi-ai/google-ads-skills --skill search-intent-mapper

Install it with the open skills CLI, copy the whole file, or paste the prompt into a Claude conversation. No Kelpi account is needed.

View source on GitHub

Why this skill exists

Keywords that share words do not always share a job. Pricing, comparison, login, category shopping, and education each need a different answer. Build clusters from the query language, then give each cluster one promise and one credible destination. If the site cannot answer an intent, call it a gap instead of routing everything to the homepage.

When to use it

  • Before building or restructuring Search campaigns and ad groups.
  • Use a connected Google Ads MCP for read-only context, or paste terms, keywords, current structure, ads, final URLs, and page copy.
  • Bring the offer, supported audiences, brand terms, competitors, and business exclusions.

Run it

Paste an export, or use a Google Ads MCP for live reads.

The copy button includes the task and expected output format, ready for Claude.

Build a READ-ONLY Google Search intent map. Use live account data for context if connected; otherwise use what I paste. Change nothing.

1. Confirm the offer, valid audiences, current campaigns and ad groups, available pages, and business exclusions.
2. Read each query as a job. Separate navigation, pricing, category shopping, comparison, competitor, audience-specific, problem research, and other distinct intents only when the words support that distinction.
3. For each cluster show: intent label, representative queries, the searcher's question, proposed campaign and ad group, one message promise, best final URL, and evidence gaps.
4. Keep each proposed ad group focused on one answerable job. If two terms need different promises or pages, split them.
5. Route brand login to the login page and brand pricing to pricing when those pages exist. Do not send navigation to a generic product page.
6. Put unsupported educational or template intent in a no-fit or content-gap list instead of buying it by default.
7. Flag claims the current page cannot support and name the page or copy needed before launch.

Return the intent map, no-fit terms, page gaps, and a draft structure. Mark every structural change "approval required". End with "No changes were made."

Guardrails

  • Derive intent from query language and supplied context, not a generic funnel label.
  • Do not mix competitor, brand, pricing, and category terms just because they share a product word.
  • Do not send every cluster to the homepage. A page must answer the query and support the ad promise.
  • Keep informational traffic out of a direct-response campaign unless the user has an explicit content objective and a fitting page.
  • This is a structure draft. It never creates campaigns, ad groups, keywords, ads, or negatives.

Good output looks like

A clean map where every query has one job, every ad group gives one answer, every page supports the promise, and unsupported intent is called out instead of forced into the account.

Use it yourself, or let Kelpi keep it moving

Kelpi carries the query, ad, and page context together so each recommendation stays tied to the promise the customer actually sees. The skill stays free either way.

Try Kelpi

Related Google skills