keyword-planner
Skill7 starsChanged 5 months agoMITView on GitHub
Get keyword ideas, average monthly search volume, competition, and bid ranges from the local Google Ads Keyword Planner CLI. Use when Codex needs live keyword demand data from Google Keyword Planner for seed keywords or a seed URL, needs JSON keyword idea exports for SEO prioritization, needs country/language-specific demand checks, or needs to exclude already-covered content from keyword research.
- Reads credentials
In this repository22 other files it gives its agents.
- authority-mark-keyword-difficultySkill
- cannibalization-checkSkill
- client-report-writerSkill
- competitor-serp-monitorSkill
- content-decay-monitor-setupSkill
- content-moat-plannerSkill
- content-refresh-briefSkill
- exceed-quality-thresholdSkill
- internal-link-builderSkill
- keyword-opportunity-finderSkill
- live-search-console-dataSkill
- proposal-builderSkill
- refresh-vs-new-contentSkill
- schema-fix-writerSkill
- seo-content-briefSkill
- seo-growth-loopSkill
- seo-offer-architectSkill
- seo-priority-scoreSkill
- seo-strategySkill
- technical-seo-triageSkill
- title-meta-rewriterSkill
- traffic-decay-detectorSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 8 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 16
Use JSON output by default so results can be filtered, sorted, and summarized reliably:
- Distinctive: line 22
Use a URL seed when the user wants ideas from an existing page or competitor page:
- Distinctive: line 28
If sandbox policy requires approval for network/API access, request escalation before running the command.
- Distinctive: line 40
Ask for missing seeds if the user provides neither keywords nor a URL.
- Distinctive: line 48
Create or choose a Google Ads manager account.
- Very specific: line 52
Create authentication credentials for the CLI.
- Distinctive: line 67
If credentials fail, report the exact missing item or Google Ads API error.
- Distinctive: line 73
Use explicit exclusion when the user provides an inventory of existing pages:
- Distinctive: line 100
If the requested market is not one of these, look up the Google Ads geo target constant ID or ask the user for it.
- Very specific: line 105
Use --output json unless the user explicitly asks for a table.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Keyword Planner
Overview
Use the local keyword-planner command to pull Google Keyword Planner ideas and search-volume metrics directly from the Google Ads API. The CLI calls Google's KeywordPlanIdeaService.GenerateKeywordIdeas, which is the API equivalent of the Keyword Planner flow in the Google Ads UI. Prefer this skill when the user asks for keyword volume, keyword ideas, demand validation, CPC/bid ranges, or a keyword list grounded in Keyword Planner rather than SERP estimates or memory.
Google does not charge a separate per-call fee for normal Google Ads API usage, but calls are governed by the developer token's access level and daily operation limits. The user still needs an eligible Google Ads account and approved API access.
Quick Start
Use JSON output by default so results can be filtered, sorted, and summarized reliably:
keyword-planner --keywords "seo tools" "keyword research" --output jsonUse a URL seed when the user wants ideas from an existing page or competitor page:
keyword-planner --url "https://example.com/page" --output jsonIf sandbox policy requires approval for network/API access, request escalation before running the command. The command calls the Google Ads API.
Inputs
Collect or infer:
- Seed keywords with
--keywords, or one seed URL with--url. - Optional
--customer-idifGOOGLE_ADS_CUSTOMER_IDis not already configured. - Optional
--location-ids; default is2840for the United States. - Optional
--language-id; default is1000for English. - Optional existing-content spreadsheet path for exclusion.
Ask for missing seeds if the user provides neither keywords nor a URL. Do not ask for credentials unless the command fails or the user has not configured a Google Ads customer ID.
Access and Credentials
There is no simple "Keyword Planner API key." The required access credential is a Google Ads API developer token, plus authentication credentials for the Google Ads account the CLI should query.
To get access:
- Create or choose a Google Ads manager account. The API Center is available from manager accounts, not ordinary client accounts.
- Open the Google Ads API Center at
https://ads.google.com/aw/apicenterwhile signed in to that manager account. - Complete the API Access form and accept the terms.
- Copy the developer token shown in API Center after Google grants access. New tokens may start with Explorer or Test access before Basic or Standard access is approved.
- Create authentication credentials for the CLI. This local wrapper is written for service-account JSON credentials, so place
google-key.jsonwhere the CLI can find it or pass--key-file. - Set the customer ID and developer token:
GOOGLE_ADS_CUSTOMER_ID=1234567890
GOOGLE_ADS_DEVELOPER_TOKEN=your-developer-tokenThe CLI expects:
- Google Ads API access with service-account credentials.
GOOGLE_ADS_CUSTOMER_IDin.envor--customer-id.- Developer token in
GOOGLE_ADS_DEVELOPER_TOKENor asdeveloper_tokeninsidegoogle-key.json. google-key.json, unless a different path is passed with--key-file.
If credentials fail, report the exact missing item or Google Ads API error. Do not fabricate volume, CPC, or competition data as a fallback.
Existing-Content Exclusion
By default, the CLI excludes matching ideas when outputs/lindy_titles.csv exists. This is useful for net-new content planning but can hide keywords the site already covers.
Use explicit exclusion when the user provides an inventory of existing pages:
keyword-planner --keywords "crm software" --exclude-existing-content exports/pages.csv --output jsonDisable exclusion when the user wants the full Keyword Planner universe, including ideas already covered:
keyword-planner --keywords "crm software" --no-exclude-existing-content --output jsonLocation and Language
The defaults are United States and English. Override location when the user names a country or market:
keyword-planner --keywords "accounting software" --location-ids 2826 --language-id 1000 --output jsonCommon location IDs:
2840: United States2826: United Kingdom2124: Canada2036: Australia
If the requested market is not one of these, look up the Google Ads geo target constant ID or ask the user for it.
Workflow
- Decide whether the request needs live Keyword Planner data. If yes, run the CLI instead of relying on memory.
- Use
--output jsonunless the user explicitly asks for a table. - Include
--no-exclude-existing-contentwhen the user asks for all ideas or volume checks for known terms. - Sort and group results according to the user goal:
- Demand validation: preserve the exact seed and closest variants first.
- Content planning: prioritize relevant, higher-volume, lower-competition ideas.
- Paid-search or commercial research: include competition and top-of-page bid ranges.
- Report the filters used: seed type, location IDs, language ID, and whether existing-content exclusion was on.
Output Fields
The JSON output contains:
keywordavg_monthly_searchescompetitioncompetition_indexlow_top_of_page_bid_microshigh_top_of_page_bid_micros
Convert bid micros to currency units when presenting CPC-style ranges: 1,000,000 micros equals 1.00.
Final Answer
Lead with the actionable read, not the raw dump. Include a compact table with keyword, volume, competition, and bid range when useful. Mention any failed API calls, missing credentials, unavailable markets, or filters that may have removed results.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

