keyword-research
Skill57 starsChanged 41 days agoMITView on GitHub
Turn a seed topic into a prioritized keyword plan via the OpenGSC MCP: start from the demand you already have in Search Console, discover the market around it, and separate the terms worth a rewrite from the ones worth a new page.
55 other projects use a version of this.
Adopted by
Most recently taken up by
- asospy/asospy-agent-skillstheir own version, first seen Nov 15, 2026
- GroMarketing/keyword-planner-mcptheir own version, first seen Nov 15, 2026
- HyunSeob/skillstheir own version, first seen Nov 15, 2026
- nowork-studio/notfair-plugintheir own version, first seen Nov 11, 2026
- oivanfelipe/claude-skillstheir own version, first seen Nov 8, 2026
- kostja94/marketing-skillstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use seo-project-setup, openseo-review-web-content and 7 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
JwuthriSkillseo-project-setup
Set up a durable local SEO workspace with project context, notes, goals, positioning, preferences, MCP checks, and Search Console data intake.
Also in 11 projects that use this
JwuthriSkillopenseo-review-web-content
Write and review content for the OpenSEO website (web/) — blog posts, guides, feature pages, FAQs. Distills the philosophy for on-brand, useful, accurate content. Use whenever adding or editing user-facing prose in web/content or web/src.
Also in 5 projects that use this
liangdabiaoSkillreview-analysis
对亚马逊商品评论进行深度分析,自动识别产品痛点、分析退货原因,生成改进建议和客服回复模板。Invoke when user uses /review-analysis command with a product ASIN.
Also in 5 projects that use this
akii-technologies-ltdSkillkeyword-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 clustering", or pastes a list of keywords.
Also in 12 projects that use this
opencueSkillserp-analysis
Use when the user asks to "analyze SERPs"; reviews ranking factors, features, intent, AI Overviews, and snippets. SERP分析/搜索结果
Also in 6 projects that use this
- +4 more from Jwuthri
Other versions55 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 55
- every-app/open-seo★ 28ksame name
- Ryze-AI-Adgent/open-seo-mcp-skills★ 8.4ksame name
- nowork-studio/notfair-plugin★ 4.2ksame name
- nowork-studio/toprank★ 4.1ksame name
- Jwuthri/Tracely-ai★ 1.3ksame name
- liangdabiao/amazon-sorftime-research-MCP-skill★ 1.1ksame name
- VladSez/easy-invoice-pdf★ 1.1ksame name
- kostja94/marketing-skills★ 1.1ksame name
- jwuthri-cloud/Tracely-ai★ 979same name
- indranilbanerjee/digital-marketing-pro★ 934same name
45 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- aeo-visibility-reviewSkill
- drops-researchSkill
- gsc-performance-reviewSkill
- link-prospectingSkill
- page-optimizationSkill
- seo-productionSkill
- site-triageSkill
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 3 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 50 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 16
Only one tool here spends money, and most research questions are answered without it.
- Very specific: line 33
If the market would materially change the numbers and the user has not said, ask.
- Very specific: line 71
Call get_keyword_demand with no seed to see what research already exists, then with each seed the user named.
- Very specific: line 73
If a seed has no stored research and the user wants the market around it, tell them what it will cost and ask.
- Very specific: line 75
Use mode: "auto" unless the user wants a specific shape of result: related for semantic neighbours, suggestions for the long tail …
- Very specific: line 78
Leave clickstream off. It doubles the price and only refines volume numbers.
- Very specific: line 82
Check get_generations before recommending anything as new.
- Very specific: line 98
Do not invent metrics. null difficulty means the value was not returned — most often because the market is served by Google Ads data, which …
- Distinctive: line 113
Call it before any other tool.
- Distinctive: line 118
Before any PAID tool, check the research log: if the same research ran within the last 30 days, reuse that result and say so instead of …
“Common” is measured: kept by at least 6 in 10 of the 50 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
OpenGSC Keyword Research
Goal
Produce a short list of keywords the user should act on, each one labelled with what the action actually is — improve an existing page, fix an intent mismatch, or write something new. Volume alone is not a plan.
The free path comes first
Only one tool here spends money, and most research questions are answered without it. Work in this order and stop as soon as the answer is good enough:
- Queries the site already earns.
get_search_performance,get_striking_distance. - Research already bought.
get_keyword_demand— a seed researched in the last 14 days comes back at no cost, and with no seed it lists everything already stored. - Metrics already cached.
get_keyword_metricsfor volume/difficulty on a fixed list. - Only then
research_keywords, which is PAID and needs explicit permission.
An agent that opens with the paid tool has skipped three sources of the same information.
Required inputs
- The site. If unknown, call
list_sitesfirst and ask which one. - One or more seed topics, products, or audience problems.
- Optional: market (2-letter country code, default
us) and language.
If the market would materially change the numbers and the user has not said, ask. A German
market research run against us is not a smaller answer, it is a wrong one.
OpenGSC MCP tools
get_striking_distance: queries at positions 4–20 with real impressions. This is demand the site has already proven it can reach — it outranks anything discovery returns.get_keyword_demand: stored research joined against the site's own GSC positions. Every row carries a verdict (see below). Free. Call before anything paid.get_keyword_metrics: volume, difficulty and CPC for a known keyword list, from the cache the UI and CSV imports fill. A keyword missing here has not been loaded — that is not zero volume.research_keywords: PAID. DataForSEO discovery from one seed, verdicted against GSC. ~$0.03 per call at the default 150 rows. Requiresconfirm: true.get_competitor_gap: keywords competitors rank for, bucketed the same way. Free, but only returns rows if a competitor has already been pulled in the Competitors screen.get_content_groups: if the user has Content Groups or Topic Clusters, map findings onto them — it is how they already think about the site.get_generations: what has already been written. Recommending a page that exists wastes the user's time and makes the rest of the report look unchecked.
The three verdicts
Both get_keyword_demand and research_keywords label every row. The label is the
recommendation; do not re-derive it from position numbers.
| Verdict | What it means | The action |
reach | Ranks in the top 30 — the page exists and is findable | Improve that page. ourUrl is in the row |
wrong_page | Appears in search but far down | Intent mismatch, not a quality problem. Usually a new page, or a repositioned one |
none | Search Console has never shown the site for this | Net-new content |
reach rows are almost always the shortest path to traffic and belong at the top of the plan
regardless of volume.
Workflow
- Resolve the site with
list_sites. - Pull
get_striking_distance(90 days). This is the baseline: existing, provable demand. - Call
get_keyword_demandwith no seed to see what research already exists, then with each seed the user named. - If a seed has no stored research and the user wants the market around it, tell them what it
will cost and ask. Only then call
research_keywordswithconfirm: true. - Use
mode: "auto"unless the user wants a specific shape of result:relatedfor semantic neighbours,suggestionsfor the long tail containing the seed,ideasfor the same meaning in different words. Auto is one billed call; running all three modes is three. - Leave
clickstreamoff. It doubles the price and only refines volume numbers. - Drop branded, off-intent and duplicate terms before presenting anything.
- Prioritize by opportunity, not volume: verdict first, then intent fit, then difficulty against the site's actual standing, then volume.
- Check
get_generationsbefore recommending anything as new.
Output format
Open with the three actions worth doing first and why. Then:
| Priority | Keyword | Verdict | Volume | KD | Intent | Page | Action |
Close with what was spent (spentUsd from the tool response, or "nothing — served from cache")
and what the user should decide next.
Guardrails
- Never call
research_keywordswithout asking. The gate exists because some MCP clients auto-approve; asking is the point of it, not a formality. - Do not invent metrics.
nulldifficulty means the value was not returned — most often because the market is served by Google Ads data, which has no difficulty or intent at all. Say "unknown", never a guess. - An empty
get_keyword_demandmeans nobody has researched that seed. It is not evidence that the market is empty, and must not be reported as one. - Positions from GSC are averages over the window. Call them "avg position", not "rank".
- For anything that becomes "rewrite this page", hand off to the
page-optimizationskill instead of writing the page here.
Site context — read first, free
get_site_context is this skill's step zero. It returns the site's shared memory — business
overview, current goal, positioning, writing preferences, the competitor list, key pages and
the research log — and grounds every decision below in what the operator already told us.
- Call it before any other tool. If it errors or comes back empty, continue without it; never block the workflow on missing context.
- This skill especially needs:
business_overview,current_goal. If a needed section is empty, do a minimal inline fill — ask the user (or infer from the site and confirm), write it back withupdate_site_context, then continue. Never front-load a full interview. - Before any PAID tool, check the research log: if the same research ran within the last 30 days, reuse that result and say so instead of re-buying it.
- On finish, write back what is durable — new or corrected key pages, competitors the work
revealed, positioning facts the user stated — and append a research-log entry if the
session spent paid units (
appendResearchLog).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

