XLSX
zzhonglei/GeoCode-Release
Create, edit, analyze, or convert Excel spreadsheets (.xlsx, .xlsm) where the workbook file is the primary deliverable.
Cluster a list of keywords into topical groups with search intent labels, validated search volume, KD, and CPC data.
$ npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill keyword-clustering -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Infrasity-Labs/dev-gtm-claude-skills keyword-clustering --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Infrasity-Labs/dev-gtm-claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/seo-skills/keyword-clustering .claude/skills/keyword-clustering && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "keyword-clustering" agent skill from https://github.com/Infrasity-Labs/dev-gtm-claude-skills/tree/main/seo-skills/keyword-clustering into .claude/skills/keyword-clustering/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-clustering", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Infrasity-Labs/dev-gtm-claude-skills/tree/main/seo-skills/keyword-clusteringType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill keyword-clustering -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Infrasity-Labs/dev-gtm-claude-skills keyword-clustering --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Infrasity-Labs/dev-gtm-claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/seo-skills/keyword-clustering .agents/skills/keyword-clustering && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "keyword-clustering" agent skill from https://github.com/Infrasity-Labs/dev-gtm-claude-skills/tree/main/seo-skills/keyword-clustering into .agents/skills/keyword-clustering/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-clustering", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill keyword-clustering -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Infrasity-Labs/dev-gtm-claude-skills keyword-clustering --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Infrasity-Labs/dev-gtm-claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/seo-skills/keyword-clustering .cursor/skills/keyword-clustering && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "keyword-clustering" agent skill from https://github.com/Infrasity-Labs/dev-gtm-claude-skills/tree/main/seo-skills/keyword-clustering into .cursor/skills/keyword-clustering/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-clustering", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Infrasity-Labs/dev-gtm-claude-skills.git --path seo-skills/keyword-clustering--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill keyword-clustering -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Infrasity-Labs/dev-gtm-claude-skills keyword-clustering --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Infrasity-Labs/dev-gtm-claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/seo-skills/keyword-clustering .gemini/skills/keyword-clustering && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "keyword-clustering" agent skill from https://github.com/Infrasity-Labs/dev-gtm-claude-skills/tree/main/seo-skills/keyword-clustering into .gemini/skills/keyword-clustering/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-clustering", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Infrasity-Labs/dev-gtm-claude-skills keyword-clusteringInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill keyword-clustering -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Infrasity-Labs/dev-gtm-claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/seo-skills/keyword-clustering .github/skills/keyword-clustering && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "keyword-clustering" agent skill from https://github.com/Infrasity-Labs/dev-gtm-claude-skills/tree/main/seo-skills/keyword-clustering into .github/skills/keyword-clustering/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-clustering", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill keyword-clustering -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Infrasity-Labs/dev-gtm-claude-skills keyword-clustering --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Infrasity-Labs/dev-gtm-claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/seo-skills/keyword-clustering .opencode/skills/keyword-clustering && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "keyword-clustering" agent skill from https://github.com/Infrasity-Labs/dev-gtm-claude-skills/tree/main/seo-skills/keyword-clustering into .opencode/skills/keyword-clustering/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-clustering", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
keyword-clusteringCluster a list of keywords into topical groups with search intent labels, validated search volume, KD, and CPC data.
Keyword Clustering is an agent skill from Infrasity-Labs/dev-gtm-claude-skills. 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…
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Documents & Office, covering Keyword research and Excel spreadsheets. It works with Microsoft Excel and Google Sheets. The repository describes itself as: Open-source Claude skills for GEO, AI discoverability, and developer GTM workflows. Built for developer-focused companies that want their documentation to be found, parsed, and… The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 02cfefb. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Keyword Clustering loads about 2k tokens when it runs. Until then it costs about 165 tokens; SKILL.md has 929 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Infrasity-Labs/dev-gtm-claude-skills at commit 02cfefb, republished under its MIT licence (© Infrasity-Labs). 929 words, ~2,008 tokens.
.claude/skills/keyword-clustering/SKILL.md (or your agent's skills folder).Turn a raw keyword list into a structured, validated cluster map delivered as a downloadable Excel file.
Detect which input format the user provided and extract the keyword 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.
The file will be at /mnt/user-data/uploads/. Read it with pandas:
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()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.
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:
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.
Cluster the validated keywords only using a two-axis approach:
Group keywords by shared topic/theme. Use the root concept to name the cluster.
Rules:
Cluster ID (1, 2, 3…)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.
Use your understanding of keyword semantics. Group keywords that:
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).
Read the xlsx SKILL first if available. Use openpyxl for formatting.
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) |
| Intent | Informational / Navigational / Commercial / Transactional |
Sorting: Sort by Cluster ID ascending, then by Search Volume descending within each cluster.
Formatting:
#,##0One row per cluster:
| Column | Description |
|---|---|
| Cluster ID | Number |
| Cluster Name | Name |
| # Keywords | Count of keywords in cluster |
| Avg Search Volume | Average volume across cluster |
| Avg KD | Average KD |
| Dominant Intent | Most common intent label in cluster |
| Top Keyword | Highest-volume keyword in cluster |
Sort by Avg Search Volume descending — highest-opportunity clusters first.
List all keywords removed at the validation step:
| Column | Description |
|---|---|
| Keyword | The dropped keyword |
| Reason | "Zero search volume" or "No data returned" |
If no keywords were dropped, add a single row: "No keywords were dropped."
# Save the workbook
output_path = '/mnt/user-data/outputs/keyword_clusters.xlsx'
wb.save(output_path)Then run recalc if formulas are used:
python scripts/recalc.py /mnt/user-data/outputs/keyword_clusters.xlsxUse present_files to deliver the file to the user.
After presenting the file, give a short summary in chat:
© Infrasity-Labs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in seo-skills/keyword-clustering of Infrasity-Labs/dev-gtm-claude-skills.
Open the folder on GitHubat commit 02cfefb
Keyword Clustering next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Keyword Clustering this skillInfrasity-Labs/dev-gtm-claude-skills | 136 | — | ~2k | Automated safety check: Pass | MIT | |
| XLSXzzhonglei/GeoCode-Release | 189 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Spreadsheet Agentmastra-ai/mastra | 29k | — | ~2.1k | Automated safety check: Pass | Custom licence | |
| Sheets Artifactasgeirtj/system_prompts_leaks | 69k | — | ~1.2k | Automated safety check: Pass | CC0-1.0 | |
| XLSXflonat/flonat-research | 146 | — | ~2.7k | Automated safety check: Pass | Proprietary | |
| Spreadsheet Formula Helpercomposio-community/awesome-codex-skills | 17k | — | ~328 | Automated safety check: Pass | None |
zzhonglei/GeoCode-Release
Create, edit, analyze, or convert Excel spreadsheets (.xlsx, .xlsm) where the workbook file is the primary deliverable.
mastra-ai/mastra
Authoring playbook for building agents that read or write tabular data — Google Sheets, Microsoft Excel, CSV, Airtable, Notion databases, or any spreadsheet.
asgeirtj/system_prompts_leaks
A skill your agent uses when creating, editing, or inspecting a spreadsheet or workbook (Excel, Google Sheets, or CSV), or when the task calls for a reusable budget, model, tracker, or structured…
flonat/flonat-research
Create, read, edit, clean, format, chart, or convert spreadsheet files while preserving spreadsheet-native deliverables.
composio-community/awesome-codex-skills
Write and debug spreadsheet formulas (Excel/Google Sheets), pivot tables, and array formulas; translate between dialects; use when users need working formulas with examples and edge-case checks.
yaklang/hack-skills
CSV/spreadsheet formula injection (DDE, Excel/LibreOffice, Google Sheets IMPORT).
Infrasity-Labs/dev-gtm-claude-skills
Generates a fully structured SEO content outline (not a finished brief) and exports it as a formatted .docx Word document.
Infrasity-Labs/dev-gtm-claude-skills
Generates a fully structured SEO content brief for a target keyword and optionally pushes it to a Notion database.
Infrasity-Labs/dev-gtm-claude-skills
Audits any API documentation site by crawling every endpoint page and scoring each one across 5 checks: description quality, OpenAPI spec presence, body param descriptions, response codes, and…
Infrasity-Labs/dev-gtm-claude-skills
Audits any developer documentation site across 33 checks in 7 categories and produces a scored report (out of 100) with Pass / Warn / Fail status per check.
Infrasity-Labs/dev-gtm-claude-skills
Generates a 3-month SEO performance HTML report for any domain using DataForSEO data.
Infrasity-Labs/dev-gtm-claude-skills
Email triage system that handles both one-time setup and recurring triage in a single skill.
Works with
Categories
Cluster a list of keywords into topical groups with search intent labels, validated search volume, KD, and CPC data. Keyword Clustering is an agent skill from Infrasity-Labs/dev-gtm-claude-skills. Cluster a list of keywords into topical groups with search intent labels, validated search volume, KD, and CPC data.
Keyword Clustering fits situations like: A user provides a list of keywords (pasted; uploaded as CSV/Excel; via Google Sheet URL) and asks to cluster; categorize them.
Run `npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill keyword-clustering -a claude-code`. Or copy the skill folder (seo-skills/keyword-clustering in Infrasity-Labs/dev-gtm-claude-skills) into .claude/skills/keyword-clustering in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill keyword-clustering -a codex`. Or copy the skill folder (seo-skills/keyword-clustering in Infrasity-Labs/dev-gtm-claude-skills) into .agents/skills/keyword-clustering in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill keyword-clustering -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/keyword-clustering, .gemini/skills/keyword-clustering, .github/skills/keyword-clustering and .opencode/skills/keyword-clustering in your project.
Going by SKILL.md and its folder, Keyword Clustering needs the command-line tools its instructions call (python). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Keyword Clustering is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Keyword Clustering: XLSX (zzhonglei/GeoCode-Release, 189 stars), Spreadsheet Agent (mastra-ai/mastra, 29k stars), Sheets Artifact (asgeirtj/system_prompts_leaks, 69k stars) and XLSX (flonat/flonat-research, 146 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Infrasity-Labs (a GitHub user) maintains it in Infrasity-Labs/dev-gtm-claude-skills, which has 136 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on June 28, 2026.
Source: Infrasity-Labs/dev-gtm-claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.