Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Run keyword research, classify by search intent, cluster into topical groups, and prioritize for content production. Use this skill whenever the user asks to do keyword research, find target keywords, identify ranking opportunities, classify search intent, build a topical map, or plan a content strategy around what people search for. Triggers on keyword research, keyword strategy, search intent, keyword clustering, topic clusters, keyword difficulty, search volume, ranking opportunity, content g
.claude/skills/rampstackco-seo-keyword/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-12 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 76% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 73% | 0% |
Find the queries worth ranking for, classify them by intent, cluster them into topics, and prioritize what to produce. Stack-agnostic. Tool-agnostic (works with any keyword tool).
seo-onpage)seo-competitor)seo-content-audit)If no tool is available, the skill still works using SERP inspection and search console data alone, but the volume estimates will be rough.
Cast a wide net. Sources:
Goal: 200 to 500 candidate keywords for a typical content sprint. More if planning a year of content.
Every keyword maps to one of four intents. Get this right or the rest is noise.
| Intent | Signal | Page type that wins | |---|---|---| | Informational | "how to," "what is," "why," "best way to" | Article, guide, tutorial | | Navigational | brand or product name + modifier | Brand homepage, product page | | Commercial | "best," "review," "vs," "comparison," "alternatives" | Listicle, comparison, review | | Transactional | "buy," "price," "deal," "near me," "for sale" | Product page, category page |
A keyword tool's volume tells you the demand. The SERP tells you the intent. When in doubt, look at what's actually ranking. If page 1 is articles, the query is informational. If page 1 is product pages, it's transactional.
Hybrid intents exist. "Best running shoes" is commercial-investigational. "Best running shoes under $100" is the same intent narrowed by a budget filter. Treat hybrids as their dominant intent and note the modifier.
Group keywords that should target the same page (or topic cluster).
Two clustering approaches:
Approach A: SERP overlap. If two keywords share at least 3 of the top 10 results, they target the same page. This is mechanical and reliable.
Approach B: Topical relevance. Group keywords by the underlying topic, not just word overlap. "How to start a podcast" and "podcast equipment for beginners" are the same topic, different facets.
Use both. A typical cluster has:
For each cluster, score on three dimensions:
Opportunity (1 to 5):
Difficulty (1 to 5):
Strategic fit (1 to 5):
Priority score = Opportunity + Strategic fit - Difficulty.
Rank the clusters. Top 20 percent get produced first.
references/keyword-research-template.md.Default output: a spreadsheet (CSV or sheet) with one row per keyword and one row per cluster, plus a markdown summary with the top 10 to 20 clusters detailed.
Recommended columns for the keyword sheet:
| Column | Source | |---|---| | Keyword | Discovery | | Volume | Tool | | Difficulty | Tool | | Intent | Manual classification | | SERP features | Manual or tool | | Cluster | Stage 3 | | Cluster role (primary/secondary) | Stage 3 | | Opportunity score | Stage 4 | | Strategic fit | Stage 4 | | Priority | Composite | | Notes | Free text |
This skill's output depends on data, measurements, or tool results it cannot generate on its own. When a required input, tool, or data source is unavailable or unverifiable, the sanctioned output is the deliverable with the gap stated: what was needed, what was actually obtained or verified, and which parts of the output are affected. Fabricating, estimating, or interpolating a required number to complete the deliverable is never sanctioned. A stated gap is a complete answer.
references/keyword-research-template.md - Spreadsheet column definitions and a markdown summary template.references/intent-classification-guide.md - Detailed examples of each of the four intent categories.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-12 | fail→pass | 11,875 | 4,755 | -60% | 1 | 1 | 0% | 2,032 | 2,607 | +28% | 0 | 0 | — |
case-01 | fail→pass | 17,688 | 19,639 | +11% | 1 | 1 | 0% | 3,169 | 5,584 | +76% | 0 | 0 | — |
case-02 | fail→pass | 27,310 | 23,529 | -14% | 1 | 1 | 0% | 5,718 | 6,274 | +10% | 0 | 0 | — |
case-03 | fail→pass | 17,544 | 20,723 | +18% | 1 | 1 | 0% | 3,202 | 5,988 | +87% | 0 | 0 | — |
case-04 | fail→fail | 14,969 | 15,464 | +3% | 1 | 1 | 0% | 2,702 | 4,420 | +64% | 0 | 0 | — |
case-05 | fail→fail | 29,576 | 19,366 | -35% | 1 | 1 | 0% | 5,037 | 5,181 | +3% | 0 | 0 | — |
case-11 | fail→fail | 13,257 | 10,039 | -24% | 1 | 1 | 0% | 2,489 | 3,743 | +50% | 0 | 0 | — |
case-06 | fail→fail | 13,213 | 13,538 | +2% | 1 | 1 | 0% | 2,382 | 4,050 | +70% | 0 | 0 | — |
case-07 | pass→pass | 15,979 | 10,334 | -35% | 1 | 1 | 0% | 2,770 | 3,437 | +24% | 0 | 0 | — |
case-08 | pass→pass | 9,187 | 4,494 | -51% | 1 | 1 | 0% | 1,521 | 2,480 | +63% | 0 | 0 | — |
case-09 | pass→pass | 12,268 | 11,418 | -7% | 1 | 1 | 0% | 2,336 | 3,891 | +67% | 0 | 0 | — |
case-10 | pass→pass | 14,383 | 8,694 | -40% | 1 | 1 | 0% | 2,334 | 3,164 | +36% | 0 | 0 | — |
case-13 | pass→pass | 10,933 | 11,062 | +1% | 1 | 1 | 0% | 1,839 | 3,530 | +92% | 0 | 0 | — |
case-14 | pass→pass | 10,719 | 7,899 | -26% | 1 | 1 | 0% | 1,860 | 3,126 | +68% | 0 | 0 | — |
case-15 | fail→pass | 11,511 | 9,648 | -16% | 1 | 1 | 0% | 1,986 | 3,432 | +73% | 0 | 0 | — |
case-16 | pass→pass | 12,101 | 8,351 | -31% | 1 | 1 | 0% | 2,060 | 3,064 | +49% | 0 | 0 | — |
case-17 | pass→pass | 13,111 | 9,296 | -29% | 1 | 1 | 0% | 2,098 | 3,301 | +57% | 0 | 0 | — |
case-18 | fail→pass | 13,791 | 11,463 | -17% | 1 | 1 | 0% | 2,508 | 3,822 | +52% | 0 | 0 | — |
case-19 | fail→pass | 12,794 | 10,560 | -17% | 1 | 1 | 0% | 2,053 | 3,477 | +69% | 0 | 0 | — |
case-20 | fail→pass | 11,644 | 7,310 | -37% | 1 | 1 | 0% | 1,855 | 2,913 | +57% | 0 | 0 | — |
case-21 | fail→pass | 14,477 | 10,227 | -29% | 1 | 1 | 0% | 2,222 | 3,272 | +47% | 0 | 0 | — |
case-22 | pass→pass | 14,605 | 10,840 | -26% | 1 | 1 | 0% | 2,027 | 3,226 | +59% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.