SEO Keyword Clustering
AgriciDaniel/claude-seo
Clusters keywords by how much their search results overlap and designs a hub-and-spoke content plan with an internal link matrix and an interactive cluster map.
When the user wants to research keywords, find keyword opportunities, run a keyword gap analysis, build topic clusters, or compare what competitors rank for.
$ npx skills add unifapi-agent/agents --skill keyword-research -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install unifapi-agent/agents keyword-research --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/unifapi-agent/agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/seo-agent/keyword-research .claude/skills/keyword-research && 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-research" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/seo-agent/keyword-research into .claude/skills/keyword-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-research", 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/unifapi-agent/agents/tree/main/skills/seo-agent/keyword-researchType 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 unifapi-agent/agents --skill keyword-research -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install unifapi-agent/agents keyword-research --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unifapi-agent/agents.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/seo-agent/keyword-research .agents/skills/keyword-research && 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-research" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/seo-agent/keyword-research into .agents/skills/keyword-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-research", 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 unifapi-agent/agents --skill keyword-research -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install unifapi-agent/agents keyword-research --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unifapi-agent/agents.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/seo-agent/keyword-research .cursor/skills/keyword-research && 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-research" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/seo-agent/keyword-research into .cursor/skills/keyword-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-research", 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/unifapi-agent/agents.git --path skills/seo-agent/keyword-research--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 unifapi-agent/agents --skill keyword-research -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install unifapi-agent/agents keyword-research --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unifapi-agent/agents.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/seo-agent/keyword-research .gemini/skills/keyword-research && 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-research" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/seo-agent/keyword-research into .gemini/skills/keyword-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-research", 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 unifapi-agent/agents keyword-researchInstalls 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 unifapi-agent/agents --skill keyword-research -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/unifapi-agent/agents.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/seo-agent/keyword-research .github/skills/keyword-research && 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-research" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/seo-agent/keyword-research into .github/skills/keyword-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-research", 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 unifapi-agent/agents --skill keyword-research -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install unifapi-agent/agents keyword-research --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unifapi-agent/agents.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/seo-agent/keyword-research .opencode/skills/keyword-research && 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-research" agent skill from https://github.com/unifapi-agent/agents/tree/main/skills/seo-agent/keyword-research into .opencode/skills/keyword-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "keyword-research", 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-researchWhen the user wants to research keywords, find keyword opportunities, run a keyword gap analysis, build topic clusters, or compare what competitors rank for.
Keyword Research is an agent skill from unifapi-agent/agents. When the user wants to research keywords, find keyword opportunities, run a keyword gap analysis, build topic clusters, or compare what competitors rank for. Also use on "keyword research," "keyword gaps," "what should I target," "competitor keywords," "search volume," "keyword difficulty," "keyword opportunities," "long-tail keywords," "topic clusters," "what keywords am I missing," or "find keywords for my niche." For diagnosing an existing site, see the seo-audit skill. For structured data, see the schema skill.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `README.md` and `references/scoring.md`).
It sits in Marketing & SEO, covering Keyword research. The repository describes itself as: Open-source marketing agents for Claude, ChatGPT, Codex, OpenClaw & Hermes. One plugin: SEO audits, GEO / AI-visibility, local SEO, KOL pricing, social listening & competitive… The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit fb53247. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).
From 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 Research loads about 2.7k tokens when it runs, and up to ~4.1k if it reads all its reference files. Until then it costs about 134 tokens; SKILL.md has 1,070 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 unifapi-agent/agents at commit fb53247, republished under its MIT licence (© unifapi-agent). 1,070 words, ~2,723 tokens.
.claude/skills/keyword-research/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.You are a keyword strategist. Your goal is to turn a seed list (or a competitor domain) into a ranked, defensible set of keyword opportunities and topic clusters — each backed by live SERP and volume evidence, not a scraped keyword dump or a black-box "difficulty" number.
This is an enhanced skill: it reads live public data through UnifAPI. Every keyword in the output carries a volume figure, an intent label, and a winnability read pulled from a real SERP, so the operator can defend the priority order instead of trusting a vendor score.
A scraped keyword list tells you nothing about whether you can win the query. The expansion, the metrics, and the SERP all have to come from the same live source so they're comparable. Use the unifapi skill to connect (OAuth MCP), then call the operations below, grouped by job. Pass location + language consistently across every call.
seo/keywords/ideas (same-category terms from a seed), seo/keywords/related (semantically related queries), seo/keywords/suggestions (long-tail queries containing the seed), seo/keywords/autocomplete (live autocomplete). Run all four and dedupe to widen coverage beyond the obvious head terms.seo/keywords/overview (volume + CPC + competition + KD + intent in one pull — the primary metrics call), seo/keywords/difficulty (isolated 0–100 top-10 chance), seo/keywords/intent (informational / navigational / commercial / transactional with probabilities), seo/keywords/history (12-mo trend → seasonality).seo/keywords/for-site lists what the target domain already ranks for, so you don't recommend what it already owns and can spot striking-distance pages.seo/competitors/domain (find the real organic competitors first), seo/competitors/ranked-keywords (every query a competitor ranks for, with position + URL), seo/competitors/domain-intersection (queries two domains both rank for — set the target as one side to find what it's missing), seo/competitors/page-intersection (pages competing for shared queries).seo/serp with target set to the user's domain returns the organic results, target visibility, SERP features (PAA, AI Overview, video, local pack), and current target position. This is what grounds the winnability score.UnifAPI reads public data only — it never changes the site, submits keywords, or touches an account. Keep each response's billing block so the report can state real record cost.
location + language). Read .agents/product-marketing.md / .claude/product-marketing.md / legacy product-marketing-context.md first if present, so intent fit can be judged against what the product actually does.seo/keywords/for-site on the target so you know what it already ranks for (don't recommend owned terms; flag #11–30 as striking distance) — and seo/competitors/domain to confirm who the real organic competitors are before doing gap work.ranked-keywords and domain-intersection output. Drop exact duplicates and other companies' brand terms.seo/keywords/overview so volume, KD, and intent come from a single consistent pull; fall back to difficulty / intent / history only to fill a missing axis or test seasonality.seo/serp is the expensive call — don't run it on everything. Take the top ~20–40 candidates by raw volume × intent fit, run seo/serp on each (target set), and read winnability: page-1 authority, whether a forum/Reddit/Wikipedia slot is winnable, which SERP features appear, and the current target position.Each shortlisted keyword gets an Opportunity Score (0–100) = weighted blend of three normalized sub-scores (each 0–10, multiplied by its weight, summed, scaled to 100):
| Factor | Weight | 0–10 sub-score from live evidence |
|---|---|---|
| Volume | 0.35 | Log-banded monthly volume from overview. ≤50 → 1; 51–200 → 3; 201–1k → 5; 1k–5k → 7; 5k–20k → 9; >20k → 10. |
| Intent fit | 0.35 | How well the keyword's intent matches the desired action. Transactional/commercial the product satisfies → 9–10; comparison/"best"/"vs" → 7–8; informational the product can credibly answer → 4–6; off-topic or competitor-navigational → 0–3. |
| Winnability | 0.30 | Inverse of SERP strength from seo/serp. Weak page 1 (forums, thin pages, no big brands; KD <30) → 8–10; mixed (KD 30–55) → 4–7; locked by high-authority incumbents or KD >70 → 1–3. +1 (cap 10) if target ranks 11–30 (striking distance). |
Opportunity = (Volume×0.35 + IntentFit×0.35 + Winnability×0.30) × 10
Tie-breakers, in order: striking-distance position first, then a SERP feature the planned format can win (PAA for FAQ content), then lower CPC competition. Flag any keyword where volume is high but winnability is near-zero as aspirational — long build, not a quick win. The full normalization tables, the intent-fit decision tree, the adjustment rules, and worked sub-score math are in references/scoring.md.
Lead with the ranked opportunity table, then the competitor-gap table, then the topic clusters.
# Keyword Opportunities — {target} vs {competitors} ({YYYY-MM-DD}, {location}/{language})
## Ranked Opportunities
| # | Keyword | Vol/mo | Intent | KD | Winnability | Opp. | Cluster | Target pos. | Who owns page 1 | Why winnable (evidence) |
| --- | -------------------------- | ------ | ------------- | --- | ----------- | ---- | ------------- | ----------- | ---------------- | ----------------------------------------------------------------------- |
| 1 | best ci tool for monorepos | 2.4k | commercial | 34 | 8 | 81 | ci comparison | none | g2.com, dev.to | Page 1 = 2 listicles + a forum, no vendor owns it — seo/serp 2026-06-04 |
| 2 | how to cache turborepo | 880 | informational | 22 | 9 | 74 | turbo how-to | #14 | reddit.com, docs | Striking distance (#14) + PAA box our docs can answer |
## Competitor Gap (they rank, we don't)
| Keyword | Vol/mo | Intent | Competitor & pos. | Our pos. | Source |
| -------------------- | ------ | ---------- | ----------------- | -------- | ----------------------------------- |
| monorepo ci pipeline | 1.3k | commercial | vercel.com #3 | none | seo/competitors/domain-intersection |
| turborepo vs nx | 720 | commercial | vercel.com #2 | none | seo/competitors/ranked-keywords |
## Topic Clusters
- **ci comparison** (head: "best ci tool", clustered vol 6.1k) — best ci tool for monorepos, turborepo vs nx, ci for typescript monorepo …
- **turbo how-to** (head: "turborepo", clustered vol 4.4k) — how to cache turborepo, turborepo remote cache, …
## Cost
UnifAPI records consumed: {from billing}, or best estimate.After the tables: for each top pick, give the SERP record + run date and the one-line "why winnable." Hand clusters to the content side; hand structural fixes (a page that ranks but loses a feature it should own) back to seo-audit.
Seed turborepo, target acme.dev, competitor vercel.com, US/English. keywords/ideas + related + suggestions yield ~120 terms; for-site shows acme already owns 8; overview prices the rest. Shortlist top 30 by volume × intent. seo/serp on "best ci tool for monorepos" (vol 2.4k, commercial, KD 34) → page 1 = two listicles + a Reddit thread, no dominant vendor, target absent, PAA present → Winnability 8. Opportunity = (7×0.35 + 9×0.35 + 8×0.30) × 10 = 81, ranked #1.
© unifapi-agent, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in skills/seo-agent/keyword-research of unifapi-agent/agents.
Open the folder on GitHubat commit fb53247
Keyword Research 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 Research this skillunifapi-agent/agents | 589 | — | ~2.7k | Automated safety check: Pass | MIT | |
| SEO Keyword ClusteringAgriciDaniel/claude-seo | 19k | 2 repos | ~3.3k | Automated safety check: Pass | MIT | |
| Evaluate Skillevery-app/open-seo | 23k | — | ~1.8k | Automated safety check: Notes | MIT | |
| SEO Content Brief GeneratorAgriciDaniel/claude-seo | 19k | 2 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Blog GoogleAgriciDaniel/claude-blog | 2.3k | 1 repos | ~3.3k | Automated safety check: Notes | MIT | |
| FLOW SEO FrameworkAgriciDaniel/claude-seo | 19k | 2 repos | ~1.4k | Automated safety check: Pass | MIT |
AgriciDaniel/claude-seo
Clusters keywords by how much their search results overlap and designs a hub-and-spoke content plan with an internal link matrix and an interactive cluster map.
every-app/open-seo
Test a candidate OpenSEO skill end to end by running fresh, isolated Codex sessions against the local backend and scoring the reports they save.
AgriciDaniel/claude-seo
Builds research-backed SEO content briefs with competitor scoring, per-section word counts and page-type templates, for new pages or improving existing ones.
AgriciDaniel/claude-blog
Google API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity…
AgriciDaniel/claude-seo
Brings the FLOW framework's stage-specific SEO prompts into the agent, from keyword discovery through backlinks, on-page work and conversion to local SEO, loaded on demand.
AgriciDaniel/codex-seo
Live SEO data via DataForSEO MCP server. An agent skill from AgriciDaniel/codex-seo.
unifapi-agent/agents
When the user wants to track how often their brand or domain gets mentioned across ChatGPT and AI search engines over a set of prompts, and how that share of voice compares to named competitors over…
unifapi-agent/agents
When a seller or SDR wants to catch public buying intent on X/Twitter and LinkedIn — someone asking for a tool they sell, complaining about or switching off a competitor, or hiring for a role that…
unifapi-agent/agents
When the user wants to research customers from public communities, or synthesize customer language, pains, and objections.
unifapi-agent/agents
When the user wants to add, fix, or optimize schema markup and structured data on their site.
unifapi-agent/agents
When the user wants to audit, review, or diagnose SEO issues on their site.
unifapi-agent/agents
A skill your agent uses when working with UnifAPI public-data APIs or the UnifAPI MCP server: connecting OAuth MCP clients, discovering operations, calling social/search/scrape/news APIs…
Categories
When the user wants to research keywords, find keyword opportunities, run a keyword gap analysis, build topic clusters, or compare what competitors rank for. Keyword Research is an agent skill from unifapi-agent/agents. When the user wants to research keywords, find keyword opportunities, run a keyword gap analysis, build topic clusters, or compare what competitors rank for.
Keyword Research fits situations like: wants to research keywords; find keyword opportunities; run a keyword gap analysis; build topic clusters.
Run `npx skills add unifapi-agent/agents --skill keyword-research -a claude-code`. Or copy the skill folder (skills/seo-agent/keyword-research in unifapi-agent/agents) into .claude/skills/keyword-research in your project. Claude Code loads it when a task matches its description.
Run `npx skills add unifapi-agent/agents --skill keyword-research -a codex`. Or copy the skill folder (skills/seo-agent/keyword-research in unifapi-agent/agents) into .agents/skills/keyword-research 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 unifapi-agent/agents --skill keyword-research -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-research, .gemini/skills/keyword-research, .github/skills/keyword-research and .opencode/skills/keyword-research in your project.
SKILL.md names no scripts, command-line tools or credentials: Keyword Research is instructions for the agent only.
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 Research is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Keyword Research: SEO Keyword Clustering (AgriciDaniel/claude-seo, 19k stars), Evaluate Skill (every-app/open-seo, 23k stars), SEO Content Brief Generator (AgriciDaniel/claude-seo, 19k stars) and Blog Google (AgriciDaniel/claude-blog, 2.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
unifapi-agent (a GitHub organization) maintains it in unifapi-agent/agents, which has 589 GitHub stars. The repository holds 47 skills in this directory. The repository was last updated on September 5, 2026.
Source: unifapi-agent/agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.