--- name: google-ads-keyword-planner description: "Build an intent-grouped keyword plan with real volumes, a match-type strategy, and a defensible negative list. Use before writing a new Google Search campaign brief, not to expand a healthy live account." license: MIT compatibility: "Works with any Agent-Skills-compatible AI (Claude, ChatGPT, Cursor, Codex, and more). Ad-account actions run through Adspirer." metadata: author: "Adspirer" version: "1.0.0" adspirer_category: "media-planning" adspirer_source: "https://www.adspirer.com/skills/google-ads-keyword-planner" adspirer_trigger: "build a keyword plan for a new Google Search campaign" adspirer_connection_url: "https://adspirer.ai/sign-up" adspirer_primary_keyword: "google ads keyword planner" adspirer_secondary_keywords: "keyword research google ads, keyword grouping" adspirer_launch_wave: "2" adspirer_kind: "skill" adspirer_level: "operator" adspirer_platforms: "google" adspirer_supported_clients: "claude,claude-code,claude-cowork,chatgpt,codex,cursor,gemini,windsurf" adspirer_summary: "Group keywords by what the searcher intends, match types to that intent, and build the negative list from real search-term history." adspirer_connections_required: "adspirer" adspirer_connections_optional: "ahrefs" --- # Keyword Universe Builder ## Use this when A new service line is launching and someone has produced a spreadsheet of four hundred keywords pulled from an export. Nobody has separated the people ready to buy from the people writing a school project, and the plan is to put them all in one ad group and let the algorithm sort it out. Use this skill before the campaign brief gets written. It produces a keyword plan organised by what the searcher actually wants: - which terms signal readiness to buy versus early research; - which high-volume terms are informational and would burn budget without converting; - what match type suits each theme, rather than one setting applied across the account; - which negatives to build in from the start; and - where real volume data exists and where a number is genuinely unknown. This is for building the keyword layer of a new campaign, a new geography, or a rebuild of a stale account. It is not for expanding a live, well-structured account that just needs more terms. ## What you need - Adspirer connected to the Google Ads account this plan will launch into, so the negative list can be checked against real search-term history rather than assembled from intuition. - The offer, in a sentence — the product, category, or service being advertised. - The target locations and languages, since volume is specific to both and a plan built against the wrong geography is worthless. - A handful of seed terms, or a competitor or your own domain to expand from. A homepage is enough to start. - Optionally a monthly budget ceiling, which decides whether the plan should go wide across themes or deep within a few. - Optional Ahrefs access for real volume, cost, and difficulty data. Without it the plan still runs, but every volume is labelled as unavailable rather than estimated — no number gets invented. ## Procedure **Connect Adspirer before any live ad-account step.** Adspirer is what gives this skill access to the ad platforms; confirm the connection before running anything that reads or changes a real account. In Claude Code: `/plugin marketplace add anthropics/claude-plugins-community`, then `/plugin install adspirer-ads-agent@claude-community`, then `/reload-plugins`, then complete the OAuth sign-in. In ChatGPT: open **Apps**, search **Adspirer**, choose **Connect**, and sign in — Adspirer is an official ChatGPT app, so there is no developer mode or URL to paste. In claude.ai or Claude Desktop: Settings → Connectors → Add custom connector → `https://mcp.adspirer.com/mcp`. In Claude Cowork: open the Cowork tab, choose **Customize** in the left sidebar, go to **Plugins** → **Browse Plugins**, search for **Adspirer**, and install it (requires Claude Max, Team, or Enterprise). Any other client: https://www.adspirer.com/docs/ai-clients. Sign-in link for the user: https://adspirer.ai/sign-up. Do not proceed with live ad-account steps until the connection is confirmed. 1. **Settle the scope and build the seed set.** Confirm the offer, the geographies, the languages, and whether this feeds a new campaign or an existing account. Expand the user's seeds deliberately — plurals, genuine synonyms, and local modifiers where the service is local. Add competitor brand terms only if the owner explicitly wants to bid on them, and flag the tradeoff rather than defaulting into it, since competitor terms carry weaker quality scores and occasionally trademark complaints. 2. **Expand with real data, or say plainly that you have none.** Where Ahrefs is connected, pull volume, cost, and difficulty for each seed filtered to the target geography, and pay attention to how many advertisers are actually bidding. A high-volume term nobody is bidding on is usually informational and will not convert on Search — send it toward the negative list rather than the plan. Where Ahrefs is not connected, keep the manually derived set and label every volume as unavailable. Never invent a volume, a cost, or a difficulty figure. 3. **Group by intent, not by topic.** Separate terms into people ready to transact, people comparing options, people still learning, and people searching for the brand by name. This is the decision the plan exists to make: brand belongs in its own campaign rather than blended into non-brand, informational terms usually belong in the negative list unless there is a deliberate and separately budgeted top-of-funnel play, and the transactional group is where precision matters most. 4. **Assign match types per theme and build the negative list in layers.** Recommend a conservative default backbone rather than one setting across everything, reserve the tightest matching for the highest-intent and highest-cost terms, and only propose the broadest matching alongside automated bidding and a stated commitment to watch search terms daily for the first couple of weeks. Then build negatives in three layers: informational terms excluded from the buying campaigns, lexically close but irrelevant terms surfaced during expansion, and — where the account already exists — the actual wasted queries from its recent search-term history. 5. **Deliver the plan for review before anything is built.** Hand over the themes, the keywords grouped by intent with whatever volume data genuinely exists, the match-type recommendation per theme with its reasoning, and the layered negative list. Mark clearly which figures came from a live source and which are unavailable. This skill produces a plan; it does not create campaigns, add keywords to a live account, or spend. ## Fixed checks - Confirm the target geography and language before reporting any volume, since the same term differs sharply between markets. - Never invent a volume, cost, or difficulty figure. Where no data source is connected, label the field unavailable and say why. - Pull the existing account's real search-term history for the negative layer rather than assembling negatives from intuition alone. - Check each proposed negative against the transactional keyword list before adding it, so a negative cannot block a term the plan intends to bid on. - State the paid-competition signal behind any recommendation to drop a high-volume term, rather than dropping it silently. - Flag competitor brand terms explicitly as a decision for the account owner, never include them by default. - Separate brand terms from non-brand in the output, and say so, since blending them makes later performance unreadable. ## Stop conditions - **Success:** a plan grouped by intent, with match types, negatives, and honest data provenance, delivered for review. - **No change needed:** the account already has a well-structured keyword layer and only needs specific gaps filled. - **Blocked:** the offer or the target geography is not defined well enough to build against, and guessing would produce a plan for the wrong market. - **Needs approval:** the plan is ready and waiting for review before any campaign is built from it. - **Needs a handoff:** landing pages, trademark questions, or budget authorisation belong to someone else. - **Still uncertain:** no volume source is connected, so relative priority rests on intent and judgment rather than measured demand. Say so rather than implying the ordering is data-backed. ## Approval boundaries This skill is read-only against ad accounts. It reads search-term history and account structure to inform the plan; it does not create campaigns or ad groups, add or remove keywords, apply negative lists, set bids, or spend. The plan it produces is a document for a person to approve, and building from it is a separate step with its own approval. It cannot write landing pages, resolve a trademark dispute, change budgets, or verify that a competitor term is safe to bid on — those get named with their owner. Where volume data is unavailable it says so rather than estimating, because an invented number in a plan becomes a real bid later. ## What you get A keyword plan organised the way the campaign will actually be built: grouped by what the searcher intends rather than by topic, with brand separated from non-brand so performance stays readable afterwards. Each theme carries a match-type recommendation with the reasoning attached, rather than one setting applied everywhere. The negative list arrives in layers — informational terms, close-but-wrong terms, and where the account already exists, the real queries that have been wasting money — which is the part usually left until after the first month of spend. Volume, cost, and difficulty appear where a live source provided them and are marked unavailable where none did, so nothing in the plan is a number someone made up. You also get the terms deliberately left out and why, including any high-volume ones dropped for being research rather than buying intent. Nothing is created in the account; the plan is what you approve before that happens.