Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Keyword Research

v1.0.2

Keyword research and analysis skill for any website. Performs systematic keyword discovery, competitive gap analysis, intent classification, difficulty scori...

0· 72· 2 versions· 1 current· 1 all-time· Updated 11h ago· MIT-0

Install

openclaw skills install seo-keyword-research

Keyword Research Skill

Must load the web-access skill and follow its instructions.

Startup workflow

Step 1: Load the domain profile

Extract the domain from the URL the user provides (e.g. example.com), then read the profile file:

~/.claude/skills/keyword-research/data/{domain}.json
  • Profile exists → Load it directly; skip questions for fields already known; only ask for "focus of this analysis"
  • Profile missing → Create one; ask for all required fields in order, then save

If the user did not provide a URL, ask for the target site URL first, extract the domain, then check for a profile.

Step 2: Fill in missing fields

Only ask for fields not yet stored in the profile:

FieldDescriptionFirst runLater runs
urlFull site URLRequiredSkip if known
businessOne-line business descriptionRequiredSkip if known
regionTarget region (e.g. Singapore)RequiredSkip if known
languageTarget language(s) (e.g. English, Chinese)RequiredSkip if known
competitorsCompetitor site listOptionalSkip if known; user can update anytime
tools.gscGSC accessAsk first time GSC is neededSkip if known
tools.ahrefsAhrefs account tierAsk first timeSkip if known; "none" skips all Ahrefs steps
tools.semrushSemrush account tierAsk first timeSkip if known; "none" skips all Semrush steps
tools.gkpHas Google Ads account (GKP)Ask first timeIf false, use Ahrefs free keyword tools instead
focusFocus of this analysisAsk every time (tasks vary)Ask every time

Step 3: Save or update the profile

After each run (or whenever new info is added), write back to the profile file immediately so the next session starts with complete data.

Profile format (JSON):

{
  "url": "https://www.sunriselink.sg",
  "business": "MOM-licensed domestic helper agency in Singapore, helping families hire maids from Indonesia, Myanmar, Philippines",
  "region": "Singapore",
  "language": ["English", "Chinese"],
  "competitors": ["nationmaid.com.sg", "universal.com.sg", "firstmaid.com.sg"],
  "tools": {
    "gsc": true,
    "ahrefs": "none",
    "semrush": "free",
    "gkp": true
  },
  "updated": "2026-04-15 10:05:23"
}

Valid values for tools.ahrefs and tools.semrush:

  • "paid" — Paid account; full feature access
  • "free" — Free account; limited features (see skip rules)
  • "none" — No account; skip all steps for that tool

If the profile directory does not exist, create it first: mkdir -p ~/.claude/skills/keyword-research/data/

Tool skip rules

Ahrefs:

Account tierStep 2B behaviorStep 3 behavior
"paid"Use Site Explorer + Content Gap (full competitor gap analysis)Use Keywords Explorer
"free"Skip Site Explorer/Content Gap; use site: search to infer competitor content structureUse ahrefs.com/keyword-generator (no login)
"none"Skip all Ahrefs; do not open any Ahrefs pageSame as left

Semrush:

Account tierStep 2B behaviorStep 3 behavior
"paid"Use Keyword Gap (full competitor gap analysis)Use Keyword Magic Tool (unlimited queries)
"free"Skip Keyword Gap; use Keyword Magic Tool (10 queries/day cap—watch usage)Use Keyword Magic Tool (mind the cap)
"none"Skip all Semrush; do not open any Semrush pageSame as left

Other tools:

  • tools.gkp: false → In Step 3D use Ahrefs free keyword tools instead; do not push signing up for Ads
  • tools.gsc: false → Skip Step 1 entirely; start from Step 2

The user may say at any time e.g. "I upgraded Ahrefs to paid" — update tools.ahrefs from "free" to "paid" and save.


Four-step analysis framework

Step 1 — Baseline from existing queries (GSC)

Goal: Find queries that already get impressions but are underutilized—the fastest wins.

Actions (via CDP automation):

Navigate directly to this URL (replace domain) to enable the 28-day window and Position column in one step:

https://search.google.com/search-console/performance/search-analytics?resource_id=sc-domain%3A{domain}&num_of_days=28&metrics=CLICKS%2CIMPRESSIONS%2CCTR%2CPOSITION

⚠️ Use 28 days, not the default 3 months: If the site has not been SEO-optimized for long, a 3-month average mixes in a lot of pre-optimization low-rank data and skews conclusions badly (in practice ~4× difference).

Then set rows-per-page to 500 and extract all data in one pass (steps in references/gsc-operations.md).

Priority filters:

  • Impressions ≥ 30 and CTR 0% → Meta fix opportunity (good rank but no clicks—title/description issue)
  • Average position 11–20 → Page-one push opportunity (page two—close enough to optimize into the top 10)
  • Impressions ≥ 30 and position > 20 → Needs new page or deeper content
  • Queries absent from GSC → Not covered at all; see Step 2

Hit a login wall: Tell the user to log into GSC in Chrome with a property-verified account, then continue. If there is no GSC data (new site), skip to Step 2.

Note: GSC only shows queries the site has already appeared for. Fully uncovered queries are invisible here; discover them in Steps 2–3.

CDP playbook: See references/gsc-operations.md.


Step 2 — Competitor keyword gap

Goal: Find queries competitors rank for where the target site has no presence—the highest-value uncovered opportunities.

A. Identify competitors (if the user did not provide any):

  • Google 2–3 core business terms for the target site
  • Record domains in the top 5 organic SERP results → these are real SEO competitors (not necessarily who the user thinks competes)

B. Competitor analysis (paid Ahrefs/Semrush):

B. Competitor analysis (free alternatives):

Hit a paywall: Ask if the user has an account; if not, use the free path or ask for screenshots/copied data.


Step 3 — Keyword expansion and discovery

Goal: From seed terms, systematically mine long-tail, question, and local variants.

A. Google Autocomplete (free, closest to real search behavior):

  • For each core term, type these patterns in Google and capture all suggestions:
    • [term], [term] how, [term] what, [term] why
    • best [term], [term] vs, [term] cost, [term] near me
    • Mid-query suggestions: add a space mid-phrase, e.g. maid _ singapore

B. AnswerThePublic (3 free searches/day):

  • Open https://answerthepublic.com
  • Enter a core term; pick language/region
  • Export Questions and Prepositions → use for FAQ and blog ideas

C. AlsoAsked (3 free runs):

  • Open https://alsoasked.com
  • Enter a core term → Google PAA question tree
  • PAA queries are SERP-feature opportunities (People Also Ask box)

D. Google Keyword Planner (free; needs Google Ads):

  • Open https://ads.google.com/home/tools/keyword-planner/
  • "Discover new keywords" → enter seeds or target URL
  • Filter by region; review volume bands and competition
  • Note: Without active ads, volume shows as wide bands (e.g. 1K–10K); accounts with spend history get tighter numbers

Google Ads login required: Ads accounts are free to create; no need to run ads. Guide signup if needed, then use Planner.


Step 4 — Intent classification and prioritization

Classify collected queries by intent; rank by difficulty and conversion potential.

Intent taxonomy (every query gets one code):

CodeIntent typeTypical signalsContent angle
IInformationalhow/what/why/guide/tipsBlog posts, FAQ
CCommercial investigationbest/vs/compare/review/topComparison pages, listicles
TTransactionalbuy/hire/contact/book/priceService pages, landing pages
NNavigationalbrand, site nameBrand defense, homepage

Priority score:

Priority score = intent fit (1–5) × conversion potential (1–5) ÷ competition difficulty (1–5)
  • Intent fit: How well the query intent matches the business (perfect = 5, weak = 1)
  • Conversion potential: T=5, C=4, I=2–3, N=1
  • Competition (KD): 0–20=1, 21–40=2, 41–60=3, 61–80=4, 81–100=5

Prioritize: queries with score ≥ 10.

Methodology and sources: references/methodology.md.
Full tool playbook: references/tools.md.
GSC CDP guide (including pitfalls): references/gsc-operations.md.


Output format

## Keyword research report — [Site name]
Date: YYYY-MM-DD | Region: XX | Language(s): XX

### 1. GSC optimization opportunities (existing queries)
| Keyword | Current rank | Impressions | CTR | Recommendation |
|--------|---------|-------|-------|---------|

### 2. Competitor gap keywords (highest value)
| Keyword | Intent | Monthly volume | KD | Competitor has / we lack | Priority score |
|--------|-----|---------|-----|--------------|---------|

### 3. Uncovered long-tail keywords
| Keyword | Intent | Monthly volume | KD | Content recommendation |
|--------|-----|---------|-----|-----------|

### 4. Priority action list (Top 10)
Sort by priority score descending; each row: suggested action (new page / optimize existing / blog) + suggested target URL

Version tags

latestvk97f6m1m1ar2g2hty0qxrxrq1x84zf2y