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.
A skill your agent uses when the user asks to "find keywords", "挖词", or "搜什么词"; prioritizes search volume, keyword difficulty, intent, and topic clusters from provided or connected data.
$ npx skills add aaron-he-zhu/aaron-marketing-skills --skill keyword-research -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install aaron-he-zhu/aaron-marketing-skills 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/aaron-he-zhu/aaron-marketing-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/seo-geo/survey/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/aaron-he-zhu/aaron-marketing-skills/tree/main/seo-geo/survey/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/aaron-he-zhu/aaron-marketing-skills/tree/main/seo-geo/survey/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 aaron-he-zhu/aaron-marketing-skills --skill keyword-research -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install aaron-he-zhu/aaron-marketing-skills keyword-research --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aaron-he-zhu/aaron-marketing-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/seo-geo/survey/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/aaron-he-zhu/aaron-marketing-skills/tree/main/seo-geo/survey/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 aaron-he-zhu/aaron-marketing-skills --skill keyword-research -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install aaron-he-zhu/aaron-marketing-skills keyword-research --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aaron-he-zhu/aaron-marketing-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/seo-geo/survey/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/aaron-he-zhu/aaron-marketing-skills/tree/main/seo-geo/survey/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/aaron-he-zhu/aaron-marketing-skills.git --path seo-geo/survey/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 aaron-he-zhu/aaron-marketing-skills --skill keyword-research -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install aaron-he-zhu/aaron-marketing-skills keyword-research --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aaron-he-zhu/aaron-marketing-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/seo-geo/survey/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/aaron-he-zhu/aaron-marketing-skills/tree/main/seo-geo/survey/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 aaron-he-zhu/aaron-marketing-skills 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 aaron-he-zhu/aaron-marketing-skills --skill keyword-research -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/aaron-he-zhu/aaron-marketing-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/seo-geo/survey/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/aaron-he-zhu/aaron-marketing-skills/tree/main/seo-geo/survey/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 aaron-he-zhu/aaron-marketing-skills --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 aaron-he-zhu/aaron-marketing-skills keyword-research --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aaron-he-zhu/aaron-marketing-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/seo-geo/survey/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/aaron-he-zhu/aaron-marketing-skills/tree/main/seo-geo/survey/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-researchA skill your agent uses when the user asks to "find keywords", "挖词", or "搜什么词"; prioritizes search volume, keyword difficulty, intent, and topic clusters from provided or connected data.
Keyword Research is an agent skill from aaron-he-zhu/aaron-marketing-skills. Use when the user asks to "find keywords", "挖词", or "搜什么词"; prioritizes search volume, keyword difficulty, intent, and topic clusters from provided or connected data. Not for competitor-relative coverage gaps — use content-gap-analysis. 关键词研究/内容选题
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/example-report.md`, `references/instructions-detail.md` and `references/keyword-intent-taxonomy.md`). Compatibility notes: Claude Code and compatible agent-skill hosts
It sits in Marketing & SEO, covering Keyword research. The repository describes itself as: 120 marketing skills as an AI marketing staff — plugin, portable skills, or an 8-bot team across 7 disciplines (narrative, SEO/GEO, social, email, paid, influencer, launch) on… The licence is Apache-2.0.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit d5529cb. 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:
python3From 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.
Claude Code and compatible agent-skill hosts
From compatibility in the SKILL.md frontmatter.
Keyword Research loads about 2.1k tokens when it runs, and up to ~6.9k if it reads all its reference files. Until then it costs about 66 tokens; SKILL.md has 824 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 aaron-he-zhu/aaron-marketing-skills at commit d5529cb, republished under its Apache-2.0 licence (© aaron-he-zhu). 824 words, ~2,136 tokens.
.claude/skills/keyword-research/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Discovers, scores, and clusters keywords for SEO and GEO planning.
Research keywords for [topic/product/service]What keywords is [competitor URL] ranking for that I should target?Expected output: a prioritized keyword brief plus the standard handoff summary for memory/research/.
memory/hot-cache.md, memory/open-loops.md, and memory/research/.Unknown with its gap reason, never N/A; keywords are grouped into pillar + cluster hubs; and the deliverable names at least 3 prioritized Quick Win / Growth / GEO opportunities.Emit the standard shape from skill-contract.md §Handoff Summary Format.
Optional integrations: ~~SEO tool, ~~search console. Without tools, ask for seed keywords, audience, goals, and any known metrics. See CONNECTORS.md.
Zero-dependency local helper (no tool needed): python3 "${CLAUDE_PLUGIN_ROOT}/scripts/connectors/suggest.py" "<seed>" --expand harvests free keyword ideas from Google Autocomplete (⚠️ unofficial endpoint). Search volume / difficulty still needs ~~SEO tool or own Search Console data. See scripts/connectors/README.md.
Keyless live-SERP sampling: python3 "${CLAUDE_PLUGIN_ROOT}/scripts/connectors/firecrawl.py" search "<candidate keyword>" --limit 10 (Firecrawl keyless free tier, ~1,000 credits/mo, no key needed) shows who actually ranks for a candidate — feed the top-10 domains and formats into the intent check and the difficulty read as Measured evidence instead of guessing. Volume still needs ~~SEO tool or GSC.
Keyless topic-demand proxy: python3 "${CLAUDE_PLUGIN_ROOT}/scripts/connectors/pageviews.py" "<Topic_Article>" --months 12 returns a topic's real Wikipedia-attention series — Measured direction and seasonality evidence when no volume tool is connected. It is attention, not search volume: use it to rank topics against each other and time them, never to quote a volume number.
Striking-distance shortcut (when ~~search console is connected): before broad discovery, mine your own GSC query data for terms already ranking in positions ~5–20 — page-one tail and page two. These are proven demand a small push can convert, so they are the fastest opportunity set. The Search Analytics API sorts by clicks and has no position filter, so request a high rowLimit and filter the 5–20 window client-side, then attach volume / difficulty / intent to that shortlist. Work this set first; treat its metrics as Measured.
When a user requests keyword research, run eight phases and announce each as [Phase X/8: Name]:
Opportunity = (Volume × Intent Value) / Difficulty, with Intent Value 1 / 1 / 2 / 3.Label every metric Measured (tool/export), User-provided, Calculated, Estimated, Proxy, or Unknown; retain query, locale, language, source ref, observation time, and window per field. Preserve conflicting sources. If an applicable metric is unavailable, mark it Unknown with a missing reason — N/A is only for a genuinely non-applicable field. An attention proxy never becomes search volume, and an Unknown decision-critical input makes the opportunity score NOT_SCORED.
When you have richer signals than volume/difficulty alone, add a second pass on top of the Opportunity score:
Tag each keyword by funnel stage from its pattern:
Work BOFU first when revenue is the goal; use TOFU/MOFU for reach and GEO answer coverage. (Impact×Confidence + funnel-stage scoring adapted from an external SEO-ops competitive analysis.)
Quality bar: every recommendation includes at least one specific number. Rewrite generic advice into a concrete keyword + volume + difficulty + reason.
Reference: See references/instructions-detail.md for the full 8-phase templates, expansion patterns, intent table, difficulty tiers, opportunity matrix, GEO indicators, cluster template, actionable-vs-generic examples, and advanced usage.
See references/example-report.md for a full worked sample.
Write path: memory/research/keyword-research/YYYY-MM-DD-<topic>.md; promote durable keyword priorities to memory/hot-cache.md. See Skill Contract §Save Results Template.
Primary: competitor-analysis. Also: content-gap-analysis and serp-analysis.
© aaron-he-zhu, Apache-2.0. 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 5 other files (references) in seo-geo/survey/keyword-research of aaron-he-zhu/aaron-marketing-skills.
Open the folder on GitHubat commit d5529cb
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in aaron-he-zhu/aaron-marketing-skills, which our catalogue first saw on October 7, 2026.
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 skillaaron-he-zhu/aaron-marketing-skills | 2.9k | 1 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| 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.
aaron-he-zhu/aaron-marketing-skills
A skill your agent uses when auditing a paid ad account for incremental contribution, wasted spend, or measurement integrity before scaling; runs a typed 20-item ROAS profile with verified vetoes…
aaron-he-zhu/aaron-marketing-skills
A skill your agent uses when the user asks to "write ad copy", "generate RSA headlines", or "build ad creative at volume"; produces ad units — RSA headlines/descriptions, hooks, and an angle matrix…
aaron-he-zhu/aaron-marketing-skills
A skill your agent uses when the user asks to "design an A/B test", "set up a creative/landing test", "run an incrementality test", or "is this result statistically and practically material?"…
aaron-he-zhu/aaron-marketing-skills
A skill your agent uses when the user asks to "pick a bid strategy", "set a tCPA/tROAS target", or "plan the learning-phase entry"; produces a bid-strategy choice (tCPA / tROAS / max-conversions /…
aaron-he-zhu/aaron-marketing-skills
A skill your agent uses when the user asks to "QA my conversion tracking before launch", "check my UTMs / pixel / event firing", "set up a tracking pre-flight", or "set the dedup rule so Meta and…
aaron-he-zhu/aaron-marketing-skills
A skill your agent uses when the user asks "what did we pay this creator last time" or to "update the creator roster"; curates creator identity, rate, rights, exclusivity, compliance-event, and…
Categories
A skill your agent uses when the user asks to "find keywords", "挖词", or "搜什么词"; prioritizes search volume, keyword difficulty, intent, and topic clusters from provided or connected data. Keyword Research is an agent skill from aaron-he-zhu/aaron-marketing-skills. Use when the user asks to "find keywords", "挖词", or "搜什么词"; prioritizes search volume, keyword difficulty, intent, and topic clusters from provided or connected data.
Keyword Research fits situations like: the user asks to find keywords; prioritizes search volume; keyword difficulty; topic clusters from provided.
Run `npx skills add aaron-he-zhu/aaron-marketing-skills --skill keyword-research -a claude-code`. Or copy the skill folder (seo-geo/survey/keyword-research in aaron-he-zhu/aaron-marketing-skills) into .claude/skills/keyword-research in your project. Claude Code loads it when a task matches its description.
Run `npx skills add aaron-he-zhu/aaron-marketing-skills --skill keyword-research -a codex`. Or copy the skill folder (seo-geo/survey/keyword-research in aaron-he-zhu/aaron-marketing-skills) 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 aaron-he-zhu/aaron-marketing-skills --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.
Going by SKILL.md and its folder, Keyword Research needs the command-line tools its instructions call (python3). Our summary lists: Python 3. Compatibility (from SKILL.md): Claude Code and compatible agent-skill hosts.
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 Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.5k 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 4.8k 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.
aaron-he-zhu (a GitHub user) maintains it in aaron-he-zhu/aaron-marketing-skills, which has 2,898 GitHub stars. The repository holds 119 skills in this directory. The repository was last updated on October 11, 2026.
Source: aaron-he-zhu/aaron-marketing-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.