agentleFS
fenjo26fenjo26/OpenGSC/.agents/skills/keyword-research/SKILL.md

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

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.
  • JwuthriSkill

    seo-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

  • JwuthriSkill

    openseo-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

  • liangdabiaoSkill

    review-analysis

    对亚马逊商品评论进行深度分析,自动识别产品痛点、分析退货原因,生成改进建议和客服回复模板。Invoke when user uses /review-analysis command with a product ASIN.

    Also in 5 projects that use this

  • akii-technologies-ltdSkill

    keyword-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

  • opencueSkill

    serp-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

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
  1. Distinctive:

    Only one tool here spends money, and most research questions are answered without it.

    line 16
  2. Very specific:

    If the market would materially change the numbers and the user has not said, ask.

    line 33
  3. Very specific:

    Call get_keyword_demand with no seed to see what research already exists, then with each seed the user named.

    line 71
  4. Very specific:

    If a seed has no stored research and the user wants the market around it, tell them what it will cost and ask.

    line 73
  5. Very specific:

    Use mode: "auto" unless the user wants a specific shape of result: related for semantic neighbours, suggestions for the long tail …

    line 75
  6. Very specific:

    Leave clickstream off. It doubles the price and only refines volume numbers.

    line 78
  7. Very specific:

    Check get_generations before recommending anything as new.

    line 82
  8. Very specific:

    Do not invent metrics. null difficulty means the value was not returned — most often because the market is served by Google Ads data, which …

    line 98
  9. Distinctive:

    Call it before any other tool.

    line 113
  10. Distinctive:

    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 …

    line 118

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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:

  1. Queries the site already earns. get_search_performance, get_striking_distance.
  2. 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.
  3. Metrics already cached. get_keyword_metrics for volume/difficulty on a fixed list.
  4. 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_sites first 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. Requires confirm: 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.

VerdictWhat it meansThe action
reachRanks in the top 30 — the page exists and is findableImprove that page. ourUrl is in the row
wrong_pageAppears in search but far downIntent mismatch, not a quality problem. Usually a new page, or a repositioned one
noneSearch Console has never shown the site for thisNet-new content

reach rows are almost always the shortest path to traffic and belong at the top of the plan regardless of volume.

Workflow

  1. Resolve the site with list_sites.
  2. Pull get_striking_distance (90 days). This is the baseline: existing, provable demand.
  3. Call get_keyword_demand with no seed to see what research already exists, then with each seed the user named.
  4. 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_keywords with confirm: true.
  5. Use mode: "auto" unless the user wants a specific shape of result: related for semantic neighbours, suggestions for the long tail containing the seed, ideas for the same meaning in different words. Auto is one billed call; running all three modes is three.
  6. Leave clickstream off. It doubles the price and only refines volume numbers.
  7. Drop branded, off-intent and duplicate terms before presenting anything.
  8. Prioritize by opportunity, not volume: verdict first, then intent fit, then difficulty against the site's actual standing, then volume.
  9. Check get_generations before recommending anything as new.

Output format

Open with the three actions worth doing first and why. Then:

PriorityKeywordVerdictVolumeKDIntentPageAction

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_keywords without asking. The gate exists because some MCP clients auto-approve; asking is the point of it, not a formality.
  • Do not invent metrics. null difficulty 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_demand means 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-optimization skill 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.

  1. Call it before any other tool. If it errors or comes back empty, continue without it; never block the workflow on missing context.
  2. 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 with update_site_context, then continue. Never front-load a full interview.
  3. 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.
  4. 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).

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.