keyword-clustering
Cluster a list of keywords into topical groups with search intent labels, validated search volume, KD, and CPC data.
Skill by Infrasity-Labs
Chalk Labs
Need help deploying keyword-clustering?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/infrasity-labs-keyword-clustering
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: spreadsheets, data, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/keyword-clustering
What's inside
- Skill name
keyword-clustering- Description
- Cluster a list of keywords into topical groups with search intent labels, validated search volume, KD, and CPC data. Use this skill whenever a user provides a list of keywords (pasted, uploaded as CSV/Excel, or via Google Sheet URL) and asks to cluster, group, map, organize, or categorize them. Also trigger when a user says "keyword cluster", "cluster my keywords", "group these keywords", "keyword map", "keyword strategy from this list", "organize keywords by topic", or pastes or uploads a list of keywords and wants structure from it. Always use this skill — do not attempt keyword clustering manually without following this workflow.
- License
- MIT
- Instructions
- 189 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Keyword Clustering Skill
Turn a raw keyword list into a structured, validated cluster map delivered as a downloadable Excel file.
---
## What This Skill Does
1. **Accepts** keywords from any input format
2. **Validates** each keyword via DataForSEO — fetches search volume, KD, CPC
3. **Filters** out keywords with 0 or null search volume (dead keywords)
4. **Clusters** the validated keywords by topic + search intent
5. **Outputs** a formatted, downloadable Excel file
---
## Step 1: Input Handling
Detect which input format the user provided and extract the keyword list.
### Pasted list
If the user pasted keywords directly in chat (one per line, comma-separated, or numbered), extract each keyword into a clean array. Strip numbers, bullets, extra whitespace.
### CSV or Excel upload
The file will be at `/mnt/user-data/uploads/`. Read it with pandas:
```python
import pandas as pd
# CSV
df = pd.read_csv('/mnt/user-data/uploads/filename.csv')
# Excel
df = pd.read_excel('/mnt/user-data/uploads/filename.xlsx')
# Identify keyword column: look for columns named 'keyword', 'keywords', 'query', 'term', 'search term'
# If ambiguous, pick the first text column or ask the user
keyword_candidates = ['keyword', 'keywords', 'query', 'term', 'search term']
keyword_col = next((col for col in df.columns if col.lower() in keyword_candidates), df.columns[0])
keywords = df[keyword_col].dropna().tolist()
```
### Google Sheet URL
Use `web_fetch` to fetch the sheet as CSV (append `/export?format=csv` to the base URL). Parse with pandas.
**Cap at 500 keywords per run.** If input exceeds 500, tell the user and process the first 500, or ask which subset to use.
---
## Step 2: DataForSEO Validation
Use the `dataforseo_labs_google_keyword_overview` tool to validate all keywords and fetch metrics. Batch in groups of 100 to stay within API limits.
**Required fields to extract per keyword:**
- `search_volume` — monthly searches (Google)
- `keyword_difficulty` — KD score (0–100)
**Filter rule:** Drop any keyword where `search_volume` is `0`, `null`, or missing. These are dead keywords.
Tell the user upfront: "Validating [N] keywords via DataForSEO. This may take a moment..."
After validation, report:
- Total keywords submitted
- Keywords that passed (have search volume)
- Keywords that were dropped (zero/null volume) — list them so the user can see what was removed
**If DataForSEO is unavailable or returns an error:** Tell the user "DataForSEO validation failed — I'll cluster the full list but cannot validate search volume or provide KD/CPC data." Then proceed with the full unvalidated list and skip the volume/KD/CPC columns in the output.
---
## Step 3: Clustering
Cluster the **validated keywords only** using a two-axis approach:
### Axis 1: Topical Cluster
Group keywords by shared topic/theme. Use the root concept to name the cluster.
Rules:
- Each cluster should have a **2–5 word descriptive name** (e.g., "Email Marketing Tools", "Python Data Analysis")
- Aim for clusters of **3–8 keywords**. Prefer more clusters over fewer — if a topic can reasonably be split into two distinct subtopics, split it
- Do NOT over-merge: keywords that target different angles, audiences, or content types should be in separate clusters even if they share a root word
- If a topic is very broad, always create sub-clusters (use a parent + child naming convention, e.g., "SEO – On-Page", "SEO – Technical")
- Assign each cluster a numeric `Cluster ID` (1, 2, 3…)
### Axis 2: Search Intent
For each keyword, assign one of the four standard intent labels:
| Label | Meaning | Signal words |
|---|---|---|
| `Informational` | User wants to learn | what is, how to, guide, tutorial, definition, examples |
| `Navigational` | User wants a specific site/brand | brand name + login/sign in/pricing |
| `Commercial` | User is comparing options | best, top, vs, review, alternative, comparison |
| `Transactional` | User wants to act/buy | buy, download, get, free trial, sign up, hire |
When intent is ambiguous, pick the most likely based on the full keyword phrase. Do not leave intent blank.
### Clustering Logic
Use your understanding of keyword semantics. Group keywords that:
- Share the same core topic or product area
- Would logically appear in the same content piece or site section
- Target the same audience stage
Do NOT group purely by shared word (e.g., don't put "best email marketing software" and "email marketing statistics" in the same cluster just because they share "email marketing" — one is Commercial, one is Informational, and they serve different pages).
---
## Step 4: Build the Excel Output
Read the xlsx SKILL first if available. Use `openpyxl` for formatting.
### Sheet 1: "Keyword Clusters" (main output)
Columns in order:
| Column | Description |
|---|---|
| Cluster ID | Numeric cluster number |
| Cluster Name | Descriptive topic name |
| Keyword | The validated keyword |
| Search Volume | Monthly search volume from DataForSEO |
| KD | Keyword difficulty (0–100) |From Infrasity-Labs/dev-gtm-claude-skills, MIT.
More from Infrasity-Labs/dev-gtm-claude-skills
- 0.675score
landing-page-auditor
Infrasity
Audits any landing or service page across 48 checks in 10 categories for LLM/AI discoverability, GEO readiness, content clarity, schema markup, internal…
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
blog-image
Infrasity-Labs
AI image generation and editing for blog content powered by Gemini via MCP.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
blog-cluster
Infrasity-Labs
Semantic topic cluster planning and automated execution engine for claude-blog.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
churn-prevention
Infrasity-Labs
When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or implement retention strategies.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
blog-google
Infrasity-Labs
Google API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection…
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
anydesign
Infrasity-Labs
Analyze images, websites, and Figma files to extract their design and generate a `design.md` with token system, component inventory, and reconstruction notes.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
blog-translate
Infrasity-Labs
Translate existing blog posts into one or more target languages with SEO-optimized localization.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
ads
Infrasity-Labs
When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
blog-audio
Infrasity-Labs
Generate audio narration of blog posts using Google Gemini TTS.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
claude-md-starter
Infrasity-Labs
Generates a fully structured, project-specific CLAUDE.md by scanning the repo for signal files (package.json, Makefile, .github/workflows/, .env.example…
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
agile-product-owner
Infrasity-Labs
Agile product ownership for backlog management and sprint execution.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
code-reviewer
Infrasity-Labs
Code review automation for TypeScript, JavaScript, Python, Go, Swift, Kotlin, C#, .NET, Java, C, C++, Rust, Ruby, PHP, and Dart/Flutter.
SkillCFreshness: C★ 144Claude Code +9
Signals
- Stars
- 144
- Forks
- 16
- Open issues
- 1
- Last commit (this folder)
- Jun 17, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Infrasity-Labs
- 0.508score
blog-audio
Infrasity-Labs
Generate audio narration of blog posts using Google Gemini TTS.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
blog-cluster
Infrasity-Labs
Semantic topic cluster planning and automated execution engine for claude-blog.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
anydesign
Infrasity-Labs
Analyze images, websites, and Figma files to extract their design and generate a `design.md` with token system, component inventory, and reconstruction notes.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
ads
Infrasity-Labs
When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
agile-product-owner
Infrasity-Labs
Agile product ownership for backlog management and sprint execution.
SkillCFreshness: C★ 144Claude Code +9 - 0.508score
blog-google
Infrasity-Labs
Google API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection…
SkillCFreshness: C★ 144Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get keyword-clustering running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
keyword-clustering skill. Agent Mart. https://agentmart.dev/skills/infrasity-labs-keyword-clustering (last updated 2026-10-24)