Claude keyword research skill: 10 SEO workflows you can run today
Ten real keyword-research workflows — seed expansion, intent tagging, difficulty and opportunity scoring, clustering into briefs, competitor gaps, long-tail mining, GEO query expansion, a content calendar, title and meta generation, and an internal-link map — each as a single Claude prompt with the exact table it returns.
This is the discovery half of SEO: finding and structuring the terms worth targeting before you write a word. If you already have a site and want to know why it isn’t ranking, the companion piece is the Claude SEO audit skill guide. Research first, audit later.
Already know what skills are? Skip to the cookbook. First time? Read the explainer then come back. Need the install? It’s on the /skills/keyword-research page.

On this page · 21 sections▾
- What this skill does
- The cookbook
- Install + README
- Watch it built
- 01 · Seed term to expanded keyword list with intent tags
- 02 · Difficulty + opportunity scoring of an existing list
- 03 · Cluster keywords into content briefs
- 04 · SERP-intent classification (info / nav / commercial / transactional)
- 05 · Competitor gap analysis
- 06 · Long-tail mining from a head term
- 07 · GEO / answer-engine query expansion
- 08 · Content calendar from a cluster
- 09 · Title and meta generation per cluster
- 10 · Internal-link map from clusters
- Community signal
- The contrarian take
- Real tools shipped
- Gotchas
- Pairs well with
- FAQ
- Sources
What this skill actually does
Sixty seconds of context before the cookbook — what the keyword research skill returns when you invoke it, and the one thing it does NOT do on its own.
What this skill actually does
“Discovers high-value keywords with search intent analysis, difficulty assessment, and content opportunity mapping.”
— openclaw, the skill author · /skills/keyword-research
What Claude returns
When triggered, Claude returns research artifacts — not code. You give it a seed term or a keyword list, and it returns an expanded candidate list with an intent label on every row (informational, navigational, commercial, transactional), a difficulty estimate, and an opportunity read on which terms are winnable. Ask for clustering and it groups the list into topic clusters and writes one content brief per cluster (target term, supporting terms, page type, questions to answer). The deliverable is Markdown tables and briefs you can drop into a content plan.
What it does NOT do
It does not pull live search volume on its own — pair it with an SEO data MCP like dataforseo or ahrefs for real numbers. Estimates without a data source are directional, not exact.
How you trigger it
Expand this seed keyword and tag each one by intent.Score this keyword list for difficulty and opportunity.Cluster these keywords into content briefs.Cost when idle
~100 tokens at idle (the skill name + description in the system prompt). The full workflow and references load only when you trigger it.
The cookbook
Each entry is a research run you could fire today. They follow the real order of a content project — the early ones discover and tag terms, the middle ones score and cluster them, and the later ones turn clusters into a calendar, titles, and an internal-link plan. Every entry pairs with one or two skills or MCP servers you already have on mcp.directory.
One rule runs through all ten: the skill does the thinking, a data MCP grounds it in numbers. Treat its lists as hypotheses, then verify volume before anything reaches a brief.
Install + README
If the skill isn’t on your machine yet, here’s the one-liner. The full install panel (Codex, Copilot, Antigravity variants) is on the skill page — the same UI’s embedded below.
One-line install · by openclaw
Open skill pageInstall
mkdir -p .claude/skills/keyword-research && curl -L -o skill.zip "https://mcp.directory/api/skills/download/1249" && unzip -o skill.zip -d .claude/skills/keyword-research && rm skill.zipInstalls to .claude/skills/keyword-research
Watch it built
There isn’t a video for this exact skill yet, so here’s the closest practitioner walkthrough: running keyword research through an LLM as a workflow, not a one-shot prompt. The posture maps directly onto how the Claude skill below behaves — expand, tag, then verify.
Seed term to expanded keyword list with intent tags
Take one head term and return a wide candidate list, each row already tagged with its search intent (informational, navigational, commercial, transactional). This is the skill's headline move.
ForAnyone staring at a blank content plan with only a topic in mind.
The prompt
Use the keyword-research skill. Seed term: 'mcp server'. Expand it into 40+ related keyword candidates — modifiers, questions, comparisons, and 'best/vs/how' variants. For each, label the dominant search intent (informational / navigational / commercial / transactional) and give a one-line note on the query's goal. Group the table by intent so I can see where the informational long tail sits versus the commercial head. Output as a Markdown table with columns: Keyword, Intent, Note. Save to keywords-mcp-server.md.What slides.md looks like
## Expanded keywords — seed: "mcp server"
| Keyword | Intent | Note |
|---------|--------|------|
| what is an mcp server | Informational | Definition seeker, top of funnel |
| best mcp server for seo | Commercial | Comparing options pre-purchase |
| mcp server vs api | Informational | Concept disambiguation |
| install mcp server claude | Transactional | Ready to act, wants steps |
| mcp server directory | Navigational | Looking for a specific destination |
40 candidates · 18 informational · 9 commercial · 7 transactional · 6 navigationalOne-line tweak
Add 'and flag the 5 candidates a brand-new site could realistically rank for first' to get a starter shortlist out of the same run.
Difficulty + opportunity scoring of an existing list
Feed in a keyword list and get each row scored for difficulty and opportunity, so the easy-but-valuable terms float to the top instead of the vanity head terms.
ForTeams with a 200-row export and no idea which rows to attack first.
The prompt
Use the keyword-research skill. Read keywords.csv (columns: keyword, volume). Score each row for difficulty (1-100, based on SERP competitiveness signals) and opportunity (a blend of volume, intent match to a SaaS product, and how winnable the SERP looks for a mid-authority site). Sort descending by opportunity. Add a 'Verdict' column: Attack now / Build authority first / Skip. Output the top 25 rows as a table and a two-sentence summary of where the quick wins cluster. Save to scored-keywords.md.What slides.md looks like
## Scored keywords (top 25 by opportunity)
| Keyword | Volume | Difficulty | Opportunity | Verdict |
|---------|--------|-----------|-------------|---------|
| claude code skills | 1,300 | 28 | 86 | Attack now |
| mcp directory | 880 | 22 | 81 | Attack now |
| best seo mcp | 210 | 19 | 74 | Attack now |
| seo mcp server | 320 | 47 | 58 | Build authority first |
| seo | 410,000 | 96 | 11 | Skip |
Quick wins cluster around low-difficulty, product-aligned long-tail terms (difficulty < 30).One-line tweak
Swap the SaaS-product assumption for 'an affiliate review site' and the opportunity score re-weights toward commercial-intent terms instead.
Cluster keywords into content briefs
Collapse a flat keyword list into topic clusters, then turn each cluster into a one-page content brief — the target term, the supporting terms, the angle, and the questions to answer.
ForEditors who need to turn a keyword dump into assignable articles.
The prompt
Use the keyword-research skill. Read scored-keywords.md. Group the keywords into 6-10 topic clusters by semantic relevance AND shared search intent — do not merge an informational cluster with a transactional one even if the words look similar. For each cluster, output a content brief: cluster name, primary target keyword, 4-6 supporting keywords, the search intent, the recommended page type (guide / comparison / tool page), and 3 questions the page must answer. One brief per cluster. Save each to briefs/<cluster-slug>.md.What slides.md looks like
## Brief: "Claude skills for SEO"
- Primary keyword: claude code skills
- Supporting: keyword research skill, seo audit skill, seo skill claude
- Intent: Informational (with a soft commercial edge)
- Page type: Guide
- Must answer:
1. What is a Claude skill vs an MCP server?
2. Which SEO skills exist and what does each do?
3. How do you install one?
Cluster size: 11 keywords · combined volume 4,200One-line tweak
Add 'and reject any cluster smaller than 3 keywords as not worth a standalone page' to avoid thin-content briefs.
SERP-intent classification (info / nav / commercial / transactional)
Run a list purely through intent classification, so you stop writing a how-to guide for a query that wants a product page (and losing every time).
ForAnyone whose 'great' article ranks page two because it mismatched intent.
The prompt
Use the keyword-research skill. Classify the search intent of each keyword in queries.txt. For each, return the dominant intent (informational / navigational / commercial / transactional), a confidence note, and the SERP feature most likely to dominate (featured snippet, product carousel, local pack, video). Where a keyword is mixed-intent, say so and recommend whether to split it across two pages. Output a table plus a short list of the queries where my current page type is probably wrong. Save to intent-map.md.What slides.md looks like
## Intent map
| Keyword | Intent | Likely SERP feature | Mixed? |
|---------|--------|---------------------|--------|
| how to install mcp server | Informational | Featured snippet | No |
| best mcp server | Commercial | Carousel + listicles | No |
| mcp server | Informational | Definition + PAA | Yes — split |
| buy mcp hosting | Transactional | Ads + product pages | No |
Probable mismatches: 'mcp server' is being targeted with a product page; it wants a definition first.One-line tweak
Add 'and rewrite each title tag to match the classified intent' to ship the fix in the same pass.
Competitor gap analysis
Compare your keyword footprint to a competitor's and surface the terms they rank for that you don't — the content gaps worth closing.
ForMarketers who know a rival is eating their lunch but can't see where.
The prompt
Use the keyword-research skill. I rank for the keywords in mine.csv. A competitor ranks for competitor.csv. Find the gap: keywords the competitor covers that I don't, filtered to ones that match my product's intent and that a site at my authority level could realistically win. For each gap keyword, note the competitor's likely page type and a one-line angle I could take to do it better. Sort by estimated opportunity. Output the top 20 gaps as a table. Save to gap-analysis.md.What slides.md looks like
## Competitor gap (top 20)
| Gap keyword | Their page type | My angle | Opportunity |
|-------------|----------------|----------|-------------|
| mcp server vs rest api | Blog explainer | Add a decision table they lack | 79 |
| claude skill examples | Listicle | Live install cards, not screenshots | 72 |
| self-host mcp server | Tutorial | Cover Docker + Windows native | 68 |
20 gaps · 12 winnable at current authority · 8 need link-building first.One-line tweak
Point it at three competitor exports at once and ask for 'keywords at least two of the three rank for' to find the consensus gaps.
Long-tail mining from a head term
Pull the long tail out of a single competitive head term — the specific, lower-volume, higher-intent variants a smaller site can actually rank for.
ForNew sites that can't win 'crm' but can win 'crm for solo real estate agents'.
The prompt
Use the keyword-research skill. Head term: 'mcp server'. Mine the long tail: generate 50 specific multi-word variants by combining the head term with audiences, use cases, modifiers (for/with/without/vs/best/free/self-hosted), and question framings. For each, estimate difficulty as Low / Medium / High and tag the intent. Keep only Low and Medium difficulty rows. Output them grouped by the modifier pattern that produced them. Save to long-tail-mcp-server.md.What slides.md looks like
## Long-tail — head: "mcp server"
### Pattern: "for <audience>"
- mcp server for data analysts — Low — Informational
- mcp server for solo founders — Low — Commercial
### Pattern: "<modifier>"
- free self-hosted mcp server — Medium — Transactional
- mcp server without docker — Low — Informational
50 generated · 31 kept (Low/Medium) · 19 dropped (High difficulty).One-line tweak
Add 'and cluster the kept rows into the 5 articles that would cover them all' to jump straight from mining to a plan.
GEO / answer-engine query expansion
Expand a topic into the conversational, question-shaped queries people type into AI answer engines — the GEO layer the skill's description calls out by name.
ForTeams who want to be cited by ChatGPT, Perplexity, and AI Overviews, not just Google's ten blue links.
The prompt
Use the keyword-research skill in GEO mode. Topic: 'choosing an MCP server'. Expand into the natural-language questions a user would ask an AI assistant (not the terse keywords they'd type into Google). Generate 25 conversational prompts across the funnel — definitional, comparative, troubleshooting, and recommendation-seeking. For each, note the answer format an AI engine would prefer (a list, a table, a direct one-sentence answer) so I can structure my page to be quotable. Output grouped by funnel stage. Save to geo-queries.md.What slides.md looks like
## GEO query expansion — "choosing an MCP server"
### Recommendation-seeking
- "What's the best MCP server for SEO work?" → Answer format: ranked list
- "Should I use an MCP server or build my own integration?" → direct answer + table
### Troubleshooting
- "Why won't my MCP server connect in Claude Code?" → numbered steps
25 prompts · 8 definitional · 6 comparative · 6 troubleshooting · 5 recommendation.One-line tweak
Add 'and draft the one-sentence answer an AI engine could lift for each' to pre-write your quotable snippets.
Content calendar from a cluster
Turn a set of keyword clusters into a sequenced publishing calendar — what to write first, what depends on what, and a realistic cadence.
ForSolo founders and small content teams who need an order, not just a backlog.
The prompt
Use the keyword-research skill. Read briefs/ (the cluster briefs from earlier). Build a 12-week content calendar. Sequence by a blend of opportunity score and topical dependency — pillar pages before the supporting posts that link up to them. For each week, list the article title, its primary keyword, the cluster it belongs to, and which earlier piece it should internally link back to. Flag any week that has no internal-link target yet as a dependency risk. Output as a week-by-week table. Save to content-calendar.md.What slides.md looks like
## 12-week content calendar
| Week | Article | Primary keyword | Cluster | Links back to |
|------|---------|-----------------|---------|---------------|
| 1 | What are Claude skills? | claude code skills | Skills (pillar) | — |
| 2 | Keyword research skill guide | keyword research skill | Skills | Week 1 |
| 3 | Best SEO MCP servers | best seo mcp | MCP/SEO (pillar) | Week 1 |
| 4 | SEO audit skill guide | seo audit skill | Skills | Week 2 |
Dependency risk: none — every week after 1 has an internal-link target.One-line tweak
Change '12-week' to 'two posts a week for 6 weeks' and the calendar re-paces without losing the dependency order.
Title and meta generation per cluster
Generate intent-matched title tags and meta descriptions for every keyword in a cluster, respecting length limits and keeping the primary term near the front.
ForAnyone shipping a batch of pages who refuses to hand-write 30 meta descriptions.
The prompt
Use the keyword-research skill. For the 'Claude skills for SEO' cluster, write a title tag (<= 60 chars, primary keyword front-loaded, intent-matched) and meta description (<= 155 chars, one benefit + one reason to click) for each of the 6 keywords. Do not keyword-stuff — each meta should read like a human wrote it. Flag any title that collides with another in the cluster so I don't create duplicate-title pages. Output as a table: Keyword, Title (char count), Meta (char count). Save to titles-meta.md.What slides.md looks like
## Titles + meta — "Claude skills for SEO"
| Keyword | Title (chars) | Meta (chars) |
|---------|---------------|--------------|
| claude code skills | What Are Claude Code Skills? A Plain Guide (43) | The 60-second explainer... (132) |
| keyword research skill | Claude Keyword Research Skill: 10 Workflows (44) | Run seed expansion... (141) |
| seo audit skill claude | Claude SEO Audit Skill Guide (2026) (35) | 10 prompts that audit... (138) |
No title collisions in this cluster.One-line tweak
Add 'and generate two title variants per keyword for A/B testing' to feed a CTR experiment.
Internal-link map from clusters
Derive a concrete internal-linking plan from the cluster structure — which page links to which, with the anchor text to use, so topical authority actually flows.
ForSEOs who built the content but never wired the internal links that make it rank.
The prompt
Use the keyword-research skill. Read briefs/ and content-calendar.md. Build an internal-link map: for each planned page, list which other pages it should link TO and which should link back to IT, with a suggested anchor (the supporting keyword, not 'click here'). Enforce a hub-and-spoke shape — pillar pages are hubs, cluster posts are spokes that link up and sideways to siblings. Flag any orphan page with no inbound internal links. Output an adjacency table: Source page, Target page, Anchor text. Save to internal-links.md.What slides.md looks like
## Internal-link map
| Source page | Target page | Anchor text |
|-------------|-------------|-------------|
| Keyword research skill guide | What are Claude skills? | what a Claude skill is |
| Keyword research skill guide | SEO audit skill guide | run an SEO audit |
| What are Claude skills? (hub) | Keyword research skill guide | keyword research skill |
Orphans: none. Hub 'What are Claude skills?' has 6 inbound spokes.One-line tweak
Add 'and limit each page to 4 outbound internal links to the most relevant siblings' to avoid diluting link equity.
Community signal
Three voices on the parts of this workflow that matter most. The first two are on intent as the qualifying filter — the principle the skill bakes in by tagging intent on expansion — and the third is on why AI ideation needs real data behind it.
“If the intent doesn't align with something your site can realistically serve and convert, the keyword doesn't belong in your plan, regardless of how attractive the volume looks.”
Despina Gavoyannis (Ahrefs) · Blog
Ahrefs' keyword-intent guide arguing intent is a hard qualifying filter that overrides raw search volume — the principle behind use cases 1 and 4.
“Keyword intent is your first filter, not your last.”
Despina Gavoyannis (Ahrefs) · Blog
The closing takeaway of the same piece — intent classification belongs at the start of the workflow, which is why the skill tags intent on expansion.
“Paired with traditional keyword research tools, ChatGPT for keyword research can be a powerful tool in your arsenal.”
Daniel Smullen (Search Engine Journal) · Blog
SEJ framing AI as an augment to data-backed tools, not a replacement — the same reason every use case here pairs the skill with a data MCP.
The contrarian take
Not everyone thinks keyword research should start with keywords at all. The sharpest version of that critique is from Lazhar Ichir (Topicseed):
“Focusing on search volumes makes you lose sight of the larger picture: topical authority.”
Lazhar Ichir (Topicseed) · Blog
From Topicseed's argument that volume-first keyword research undersells topical authority.
Fair, and the skill is built around it — it tags intent and scores opportunity, not volume alone. Volume still scopes effort and ROI, so it stays one signal among several rather than the objective function. There’s a second, narrower critique worth holding alongside it: AI clustering tends to group by semantic similarity rather than true intent, which can merge keywords that deserve separate pages. That’s why use case 3 forbids merging an informational cluster with a transactional one, and why use case 4 grounds the intent read in the live SERP. Keep the model for expansion, clustering, and labeling; gate every candidate against real search data before it earns a brief.
Real keyword tooling people shipped
Concrete examples from public projects. Most don’t use the Claude skill specifically — they’re here to show what a production-grade keyword-research and clustering pipeline looks like, so you have a target shape in mind when you write the prompt.
- Fassih Fayyaz — SEO-Clustering-Tool, an open-source Streamlit app that clusters keywords by SERP-URL overlap plus AI embeddings, with caching to cut API cost
- Lee Foot — search-solved-public-seo, a suite of keyword-clustering scripts that group keywords into topical clusters using sentence transformers
- jfaccioli — seo-keyword-clusters, a Flask + scikit-learn KMeans app that auto-clusters Google Search Console query exports
- chukhraiartur — seo-keyword-research-tool, a Python tool pulling suggestions from Google Autocomplete, People Also Ask, and Related Searches
- HasData — python-for-seo, a 7-tool toolkit that harvests long-tail variations from autocomplete and measures cannibalization via Jaccard index
- evemilano — keyword_clustering_easy_demo, an NLP clustering script using SentenceTransformer embeddings and BERTopic for topic modeling
Gotchas (the four that bite)
Sourced from how AI-assisted keyword research actually fails in practice, plus the skill’s own boundary: it reasons, it doesn’t measure.
It estimates volume — it doesn't measure it
Without a data MCP attached, every volume and difficulty number is a directional guess. Pair the skill with dataforseo, ahrefs, or semrush before you commit a calendar to it. The skill is the strategist; the MCP is the measuring tape.
AI can invent keywords that don't exist
LLMs occasionally surface plausible-looking terms with zero real search demand. Always validate a candidate's volume before it enters a brief — use cases 1, 2, and 6 end at a data MCP for exactly this reason.
Semantic clusters aren't always intent clusters
Two keywords can look similar and still want different pages — one informational, one transactional. Tell the skill to split mixed-intent clusters (use case 3 does), and check the cluster against a live SERP when the call is close.
Intent read from query shape, not the SERP
The skill infers intent from how a query is phrased, which is usually right but not always. For high-stakes terms, ground the read in real results with a SERP MCP like serper-search-and-scrape before you pick a page type.
Pairs well with
Curated to match the cookbook’s actual integrations: the content-side skills that consume the research (seo-content-writer, content-strategy, programmatic-seo, geo-content-optimizer) plus the data MCP servers that ground the numbers (dataforseo, ahrefs, semrush, firecrawl).
Related skills
Related MCP servers
Three posts that compose well with this cookbook: What are Claude Code skills? covers the underlying mechanism, the Claude SEO audit skill guide covers the on-site half once you’ve picked your terms, and Ahrefs vs Semrush vs DataForSEO MCP compares the data providers you’ll pair with the skill.
Frequently asked questions
What does the keyword research skill actually return — a tool, or a report?
A report, not code. You hand it a seed term or a list and it returns Markdown tables: expanded keywords with an intent tag per row, a difficulty estimate, an opportunity read, and — when you ask — topic clusters with one content brief each. Every use case above shows the exact table shape it produces, so you know what you're getting before you run it.
Does the keyword research skill pull real search volume on its own?
No, and that's the one thing to know before you rely on it. The skill reasons about intent, difficulty, and opportunity, but it doesn't query a live keyword database. For real volume and difficulty numbers, pair it with an SEO data MCP — dataforseo, ahrefs, or semrush all expose that data to Claude. Use the skill for the thinking, the MCP for the metrics.
How is this different from the SEO audit skill?
Different job entirely. The keyword research skill is discovery — it finds and clusters the terms you should target before you write anything. The SEO audit skill inspects a site you already have, checking crawlability, Core Web Vitals, and on-page markup. Research comes first, the audit comes later. Our companion piece is the Claude SEO audit skill guide.
Can the keyword research skill classify search intent reliably?
Reasonably, with a caveat. It labels each keyword informational, navigational, commercial, or transactional, and flags mixed-intent terms that should be split across pages (use case 4). The caveat: intent is read from query shape, not from the live SERP. For high-stakes calls, pair it with a SERP MCP like serper-search-and-scrape so the read is grounded in what actually ranks today.
Does the keyword research skill help with GEO and AI answer engines?
Yes — its own description calls out GEO content strategy. Use case 7 expands a topic into the conversational, question-shaped queries people type into ChatGPT, Perplexity, and AI Overviews, and notes the answer format each engine prefers so your page is quotable. Pair it with the geo-content-optimizer skill to optimize the page once the queries are mapped.
Is there a keyword research MCP server I should use instead of the skill?
They solve adjacent problems. The skill does the reasoning — expansion, intent, clustering, briefs — for ~100 tokens at idle. A data MCP like dataforseo, ahrefs, or semrush supplies the raw numbers. The strongest setup runs both: the skill structures the research, the MCP grounds it in real volume. We compare the data providers in the Ahrefs vs Semrush vs DataForSEO MCP guide.
Will AI-generated keyword lists include keywords that don't really exist?
It can happen — LLMs occasionally invent plausible-looking terms. That's exactly why every workflow here ends at a data MCP: validate volume before a keyword enters a brief (use cases 1, 2, and 6 all do this). Treat the skill's list as hypotheses to verify, not a final plan. Search Engine Journal's own how-to warns about this directly.
Sources
Primary
- keyword-research skill on mcp.directory (install + author)
- openclaw/skills — the skill registry this skill ships in
Community
- Despina Gavoyannis (Ahrefs) — Blog
- Daniel Smullen (Search Engine Journal) — Blog
- Shannon Willoby & Brian Dean (Backlinko) — Blog
- James Oliver (Answer Socrates) — Blog
Critical and contrarian
- Lazhar Ichir (Topicseed) on search volume vs topical authority
- Answer Socrates on why AI clustering can confuse semantic similarity with intent
Video
- Nico | AI Ranking — How To (actually) Do Keyword Research With ChatGPT
- Keywords Everywhere — How To Do SEO Keyword Research With ChatGPT
- Alston Antony - AI & SEO Tools — How to Use ChatGPT For SEO Keyword Research (40 AI Prompts)
Internal