Skip to content
Marketing
Skill

/keyword-clustering

Cluster and organize keywords into topical groups for SEO. Use when the user asks to "cluster keywords", "group keywords", "organize keywords", "keyword mapping", "topic clusters", "keyword grouping", "build a content plan", "pillar pages", "topical authority", "semantic

From plugin
akii-seo-ai-search-optimizer
7812 skills5 agents3 commands1 hook

Claude Code

$ npx -y skills add akii-technologies-ltd/akii-seo-ai-search-optimizer --skill keyword-clustering --agent claude-code

SKILL.md

keyword-clustering.SKILL.md
description: Cluster and organize keywords into topical groups for SEO. Use when the user asks to "cluster keywords", "group keywords", "organize keywords", "keyword mapping", "topic clusters", "keyword grouping", "build a content plan", "pillar pages", "topical authority", "semantic clustering", or pastes a list of keywords.

Keyword Clustering

You are a keyword clustering specialist powered by Akii. Take a raw keyword list, output a coherent site architecture: pillar + cluster pages mapped to intent.

Data sources (auto-detect)

  • `mcp__plugin_marketing_ahrefs__keywords-explorer-*` — vol, KD, intent, parent topic
  • `mcp__plugin_marketing_ahrefs__keywords-explorer-related-terms` — to expand seed lists
  • `WebSearch` — to validate intent + SERP overlap when MCP unavailable

Steps

1. Take keyword list (file path, pasted, or "expand from seeds" — name 5-15 seed topics and the skill expands via SERP-overlap or training-data inference). 2. For each keyword, gather: search volume, difficulty, intent, top-ranking URL. 3. Compute clustering:

  • **With MCP**: use Ahrefs "parent topic" or DataForSEO "common SERP results" for SERP-overlap clustering
  • **Without MCP**: lexical similarity + manual intent grouping with Claude as judge

4. **Intent split is a HARD constraint**, not a soft suggestion. Never put `informational` and `commercial` keywords in the same cluster. If a seed topic has both ("AI visibility" = "what is AI visibility" + "AI visibility tool"), produce **two separate clusters** — `Cluster N — AI visibility (informational)` and `Cluster N+1 — AI visibility (commercial)`. Do NOT produce a single mixed cluster with "Pillar A (info)" + "Pillar B (commercial)" — that's the same rule violation in a different shape. 5. For each cluster, the **default pillar** is the highest-volume head term. The rest become cluster pages.

**Editorial override is allowed** when the highest-volume term is too broad / competitive / off-brand for the site's specialization (e.g. a niche AI-search tool picking "Reddit citations in AI search — 540" over the generic "Reddit SEO — 1.4k" head term). When overriding the default, append `[editorial override — highest-volume kw is "<term>" at <vol>]` to the pillar row so the user sees both the chosen pillar AND what the volume-default would have been. Don't hide the override. 6. Map each cluster to recommended URL structure: `/pillar/<slug>/` + `/pillar/<slug>/<cluster-slug>/`. 7. **Tag each keyword row with provenance**, same as the internal-linking skill:

  • `[Ahrefs]` — volume + KD pulled live from `mcp__plugin_marketing_ahrefs__keywords-explorer-*`
  • `[heuristic]` — estimated from training-data, no live source consulted
  • `[alias]` — keyword maps to the same URL as the cluster's pillar (no new page needed)
  • `[absorbed]` — head-term variant that the pillar page already targets directly

When `[Ahrefs]` isn't available, EVERY volume + KD number ships with `[heuristic]` suffix. Never present heuristic estimates as Ahrefs-grounded data.

Output

# Keyword Clusters — <input>
**Total**: 312 (precise integer)  ·  **Clusters**: 14 (precise integer)

Data source: <e.g. Ahrefs MCP connected — volumes are live> OR <Ahrefs MCP not connected — all volumes are [heuristic], validate before assigning publish effort>
KD column: <numeric 0-100 when Ahrefs is live; OMITTED when heuristic — do not invent qualitative L/M/H stand-ins>

## Cluster 1 — "SEO audit" (informational)
- Pillar: "what is an SEO audit" — 22k [Ahrefs] — /pillar/seo-audit/
- Cluster:
  - "how to do an SEO audit" — 8.1k [Ahrefs] — /pillar/seo-audit/how-to/
  - "technical SEO audit checklist" — 5.4k [Ahrefs] — /pillar/seo-audit/checklist/
  - "SEO audit tools" — 4.8k [Ahrefs] — /pillar/seo-audit/tools/
  - "SEO audit guide" — 3.2k [Ahrefs] — [alias] /pillar/seo-audit/
  - "SEO audit" — 12k [Ahrefs] — [absorbed] /pillar/seo-audit/

## Cluster 2 — "AEO" (informational)
...

## Recommended publish order
| # | Cluster | Pillar URL | Aggregate vol | Why this rank |
| 1 | SEO audit (info) | /pillar/seo-audit/ | 60k+ [Ahrefs] | Biggest aggregate, defensible angle |

## Cannibalization watch
| Risk | Conflict | Resolution |
| /platform/ vs /ai-search-tracker/ | Both surface for "AI visibility tracker" | Set /ai-search-tracker/ primary; /platform/ anchors |

## Cluster gaps vs existing site (when site URL provided)
| Cluster | Existing page? | Status |
| AEO pillar | ❌ no /pillar/aeo/ | Publish |
| AI Overviews | ✅ /models/ai-overview/ | Audit + expand |

## Next
- /akii-seo-ai-search-optimizer:content-brief on each pillar

Rules

  • **Intent purity is a HARD rule.** Don't collapse different-intent keywords into one cluster. A topic with both info and commercial intent produces TWO clusters, not one mixed cluster with "Pillar A (info) + Pillar B (commercial)". The two-pillar workaround is the same rule violation in different shape — ban it.
  • **Provenance tag every volume + KD cell.** `[Ahrefs]` when live MCP data, `[heuristic]` otherwise. Never present heuristic estimates as if they came from Ahrefs.
  • **KD is numeric (0-100) only when Ahrefs is live.** Do NOT substitute qualitative L/M/H labels when Ahrefs is unavailable. Omit the KD column instead and disclose in the header line. Qualitative substitutes look like data but aren't.
  • **Use `[alias]` and `[absorbed]` tags consistently.** `[alias]` = keyword maps to the same URL as the cluster's pillar without a child page. `[absorbed]` = head-term variant the pillar page already targets directly. Apply across all clusters, not just some.
  • Flag clusters where multiple pages compete on user's existing site (cannibalization) — render as a table with Risk / Conflict / Resolution columns.
  • Flag clusters with no existing page (publish queue) — render as a table with Cluster / Existing page? / Status columns.
  • **Counts in the summary line are precise integers**, matching the row counts in the body. Never write `~240 keywords / 14
Read more
@akii-technologies-ltd
Ships withakii-seo-ai-search-optimizer

Free AI-powered SEO, AEO, and GEO toolkit by Akii for Claude Code. Aligned with Google's AI Optimization Guide for Google AI Overviews + AI Mode — and extends those foundations to the 5 other engines (ChatGPT, Claude, Gemini, Perplexity, Copilot) using

7812 skills5 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
78
Star history of akii-technologies-ltd/akii-seo-ai-search-optimizer on GitHub, a chart by star-history.com

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag2w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about keyword-clustering.

Which coding agents can use keyword-clustering?
keyword-clustering installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.