---
name: Keyword Research
slug: keyword-research
category: SEO
description: Keyword Research turns a seed topic into keyword ideas, Google volume and CPC data, intent, difficulty, and topic clusters. Use it when you need a keyword plan or want to see what a site should rank for.
github: "https://github.com/Ryze-AI-Adgent/open-seo-mcp-skills/tree/main/skills/keyword-research"
language: Shell
stars: 262
forks: 2
install: "npx degit https://github.com/Ryze-AI-Adgent/open-seo-mcp-skills/tree/main/skills/keyword-research ~/.claude/skills/keyword-research"
installs_to: ~/.claude/skills/keyword-research
source_path: skills/keyword-research/SKILL.md
collection_size: 8
category_size: 176
collection_url: "https://dirskills.com/collections/Ryze-AI-Adgent/open-seo-mcp-skills"
added: 2026-09-02T05:20:14.508Z
last_synced: 2026-09-02T05:20:14.508Z
canonical_url: "https://dirskills.com/skills/keyword-research"
---

# Keyword Research

Keyword Research turns a seed topic into keyword ideas, Google volume and CPC data, intent, difficulty, and topic clusters. Use it when you need a keyword plan or want to see what a site should rank for.

**Install:**

```bash
npx degit https://github.com/Ryze-AI-Adgent/open-seo-mcp-skills/tree/main/skills/keyword-research ~/.claude/skills/keyword-research
```

## README

# Keyword Research

Seed → ideas → metrics → clusters. Volumes come from Google Ads planner data (the source everyone else resells), enriched with DataForSEO intent/difficulty.

## Workflow

1. **Expand the seed.** `google_ads__generateKeywordIdeas` with the seed keyword(s) and/or the user's URL. Collect up to ~200 ideas.
2. **Metrics.** `google_ads__generateKeywordHistoricalMetrics` on the candidate list — monthly volume, competition, CPC range, 12-month trend.
3. **Intent + difficulty (optional enrich).** If the workspace exposes DataForSEO tools, call the Labs `keyword_overview` endpoint for the top ~50 (search intent, keyword difficulty, SERP features). Request shape: `native__get_provider_docs` provider `dataforseo`. Skip silently if unavailable — Google metrics alone are enough for a v1 plan.
4. **What they already rank for.** `google_search_console__runRawSearchAnalytics` (dimension `query`, filtered to the topic) — mark keywords the site already has positions for; those are optimize-not-create.
5. **Cluster.** Group by intent and topic into content clusters: pillar + supporting pages. For each cluster: target keyword, supporting keywords, total volume, intent, existing page (if any) or "new page".

## Output

One table per cluster (keyword, volume, CPC, intent, current position if any), then a ranked plan: which clusters to attack first and why (volume × winnability — favor clusters where the site already has striking-distance positions). Plain language, no filler.

## Rules

- Never invent volumes. If a metrics call fails, show the keyword without numbers and say why.
- CPC belongs in the output — it tells the user what the traffic is worth, and this doubles as an ads negative-keyword source.
