README.md
# seo-keyword
The skill is [SKILL.md](SKILL.md). Generated by `scripts/build-tested-on.mjs` from openaddict.com. CI checks it against the site, so edit the script, not this file.
## Tested on OpenAddict
Set up for testing, not yet run. What has been searched and run so far: [openaddict.com/skills/coverage](https://openaddict.com/skills/coverage).
references/intent-classification-guide.md
# Intent Classification Guide
Detailed examples of each of the four search intent categories. Use this to tag every keyword in research with its intent before deciding what content (if any) to build.
Intent classification is the most important and most-skipped step in keyword research. Tools surface volume and difficulty. They do not tell you whether the searcher wants to learn, compare, navigate, or buy. Without intent, you produce content that ranks for words but converts nothing.
---
## The four intents
| Intent | The searcher wants to | Right content | Right CTA |
|---|---|---|---|
| **Informational** | Learn something | Article, guide, video | Subscribe, related content |
| **Navigational** | Reach a specific destination | Branded page, login, location | Direct link |
| **Commercial investigation** | Compare options before buying | Comparison, review, list, buyer's guide | Demo, trial, deeper guide |
| **Transactional** | Take an action (buy, sign up, download) | Product page, pricing, signup, checkout | Buy / sign up / download |
The same root word can fall into multiple intents depending on modifier. "Crm" alone is ambiguous. "What is a crm" is informational. "Salesforce login" is navigational. "Best crm for startups" is commercial investigation. "Buy salesforce" is transactional.
---
## Informational intent
The searcher wants to understand, learn, or solve a problem.
### Signals
- Question words: what, why, how, when, where, who
- "Guide," "tutorial," "examples," "definition," "explained"
- Topic-only queries with no commercial modifier ("dmarc records," "css grid")
- "How to" + a task
### Examples
| Query | Intent depth | Notes |
|---|---|---|
| "what is a service blueprint" | Top-of-funnel learning | Definition piece |
| "how to write a creative brief" | How-to | Step-by-step guide |
| "service blueprint examples" | Mid-funnel learning | Examples gallery |
| "service blueprint vs customer journey map" | Comparison-flavored learning | Overlaps with commercial; treat as info if no products in result |
| "why is css grid useful" | Conceptual | Explainer with code examples |
| "history of bauhaus design" | Background | Editorial / long-form |
| "node js error eaddrinuse" | Troubleshooting | Specific fix article |
### What to publish
Long-form articles, guides, glossary entries, video tutorials, original research. Content that earns subscribers, social shares, and backlinks. Not where conversion happens; where awareness builds.
### CTA approach
Soft. "Subscribe to the newsletter," "read the related guide," "join the community." A pricing CTA at the end of an informational piece reads as a bait-and-switch.
### Failure mode
Producing informational content with hard sales CTAs because someone metric'd it as "low conversion." Informational content's job is awareness and authority. Measure it on assists, brand recall, and downstream conversions, not last-click.
---
## Navigational intent
The searcher knows what they want and is using search to get there.
### Signals
- Brand names ("HubSpot," "Notion")
- Brand + modifier ("HubSpot login," "Notion pricing," "Salesforce careers")
- Product names ("MacBook Pro M4," "Tesla Model Y")
- Domain-style queries ("github.com," "facebook")
### Examples
| Query | What the searcher wants |
|---|---|
| "linear" | Linear's homepage |
| "linear login" | Linear's login page |
| "salesforce careers" | Salesforce's careers page |
| "amazon prime" | Amazon Prime's page |
| "github status" | GitHub's status page |
### What to publish
For your own brand: own the navigational queries. The homepage, login page, status page, careers page, contact page, pricing page should rank #1 for branded variants.
For other brands' navigational queries: do not pursue. You will not rank, you should not try, and even if you did, the user does not want you.
The exception: comparison queries ("Linear alternatives," "vs Linear") are not navigational; they are commercial investigation. See below.
### CTA approach
Whatever the destination expects. Login page → login form. Pricing page → buy or trial. Careers page → application.
### Failure mode
Treating "alternatives to" queries as navigational. They are not. They are commercial investigation, and a comparison page is the right format.
---
## Commercial investigation intent
The searcher is in the buying process but not ready to buy. They are comparing, reading reviews, building a shortlist.
### Signals
- "Best [category]" ("best crm for small business")
- "Top [category]" ("top hosting providers")
- "[Category] comparison" ("crm comparison")
- "[Brand] vs [brand]" ("notion vs obsidian")
- "[Brand] alternatives" ("alternatives to mailchimp")
- "[Brand] review" ("notion review")
- "[Category] for [audience]" ("crm for startups")
- "Cheap / affordable / free [category]"
- "Buyer's guide for [category]"
### Examples
| Query | What the searcher wants |
|---|---|
| "best email marketing tool" | A ranked list of options |
| "mailchimp vs convertkit" | A direct comparison |
| "alternatives to mailchimp" | A shortlist of competitors with pros and cons |
| "convertkit review" | Honest assessment from a third party (or the brand's own page if positioning) |
| "crm for solo consultants" | Curated shortlist for a niche |
| "free project management software" | Filtered list with feature notes |
### What to publish
- **For your category (high traffic, broad):** "best of" lists, ranked comparisons, buyer's guides. Honest about tradeoffs. Include yourself if relevant; do not lie about ranking.
- **For your brand vs others:** comparison pages on your own domain ("[YourBrand] vs [Competitor]"). These are the highest-converting content type after pricing pages.
- **For your category by use case:** segment-specific landing pages ("CRM for solo consultants," "CRM for series-A startups"). Use case + CTA.
### CTA approach
Stronger than informational, lighter than transactional. "Try [product] free," "see how it compares," "book a demo," "download the buyer's guide." Multiple CTAs are OK because the visitor's progress is uncertain.
### Failure mode
Writing a "best of" list that is transparently a sales pitch for your product. Readers and Google can both spot this. Honest comparison pages, even when they include you, perform far better than disguised brochures.
---
## Transactional intent
The searcher wants to act now. Buy, sign up, download, contact, get a quote.
### Signals
- "Buy," "purchase," "order"
- "Sign up," "create account"
- "Download"
- "Get a quote," "request a demo," "contact sales"
- Brand + transactional modifier ("buy [product]," "[product] coupon," "[product] discount")
- "[Product] near me" (local-transactional)
- "[Product] free trial"
### Examples
| Query | What the searcher wants |
|---|---|
| "buy iphone 16 pro" | Purchase, fast |
| "salesforce free trial" | Trial signup |
| "download notion mac" | Direct download |
| "request a demo hubspot" | Demo form |
| "plumber near me" | A plumber to call |
| "amazon prime sign up" | Amazon Prime signup flow |
### What to publish
Product pages, pricing pages, signup pages, checkout flows, contact pages. Make the transactional path frictionless. Strong CTAs above the fold. Trust signals near the action.
### CTA approach
The CTA is the page. One primary action, sized and placed so the user cannot miss it. Secondary actions allowed if they protect the primary (e.g., "talk to sales" alongside "start free trial" for enterprise vs SMB).
### Failure mode
Burying the transactional action behind marketing copy. The user came to act. Get out of the way.
---
## Mixed and ambiguous intent
Many queries do not fit cleanly. Use the SERP to disambiguate.
### Method
Open the query in incognito. Look at the top 10 results.
- All articles? Informational.
- All branded landing pages? Navigational or transactional.
- Mix of comparison pages, "best of" lists, and product pages? Commercial investigation.
- Mix of articles and product pages? Mixed - the safer bet is to produce both kinds of content.
### Example: "crm software"
Could be informational ("what is CRM software"), commercial investigation ("which CRM should I pick"), or transactional ("crm software to buy now"). The SERP shows: a definition (HubSpot's), a "best of" list (multiple), several product pages, and a Wikipedia entry. Mixed intent leaning commercial investigation.
The right play: produce a comparison page that opens with a one-paragraph definition. Catches both intents.
---
## Intent shifts across the funnel
The same audience moves through intents.
| Stage | Example query | Intent | Right content |
|---|---|---|---|
| Aware of problem | "team is missing deadlines" | Informational | Article on missed-deadline diagnosis |
| Aware of category | "project management software" | Informational + commercial | Pillar guide |
| Comparing options | "linear vs jira" | Commercial investigation | Comparison page |
| Ready to commit | "linear pricing" | Transactional | Pricing page |
| Already a customer | "linear keyboard shortcuts" | Informational | Help docs |
Build coverage across the funnel for your category. A site that only addresses transactional intent has nothing to rank for at the top of funnel and loses the audience to category-defining publishers.
---
## Tagging in research
When pulling keyword research, tag every row.
| Query | Volume | Difficulty | Intent | Notes |
|---|---|---|---|---|
| "service blueprint" | 8,100 | 32 | Informational | Definition + examples piece |
| "service blueprint vs customer journey" | 1,200 | 28 | Commercial investigation | Comparison piece |
| "service blueprint template" | 2,400 | 25 | Informational + transactional | Template page with download CTA |
| "service blueprint software" | 880 | 41 | Commercial investigation | Buyer's guide |
The intent tag drives the format and the CTA. Without it, content drifts into whatever the writer felt like producing.
---
## Decision rule
Once intent is tagged:
- **Informational:** publish if the topic supports authority-building and the SERP is winnable. Skip if the SERP is dominated by big publishers and you have no asset.
- **Navigational (your brand):** make sure you own it. If not, fix.
- **Navigational (someone else's brand):** skip.
- **Commercial investigation:** publish if you compete in the category. These convert.
- **Transactional:** make sure your product / pricing / signup pages rank for the obvious branded transactional queries. Optimize them aggressively.
---
## When intent surprises you
Sometimes a query you assumed was one intent reveals as another. Trust the SERP over your assumption. The SERP reflects what Google has learned about searcher behavior at scale, which is more reliable than your guess.
references/keyword-research-template.md
# Keyword Research: [Site or Topic Area]
**Date:** [YYYY-MM-DD]
**Scope:** [What this research covers]
**Audience:** [Who we are writing for]
**Tools used:** [Which keyword tools were used]
---
## Summary
**Total keywords analyzed:** [N]
**Clusters identified:** [N]
**Priority clusters (top 20%):** [N]
[2 to 3 sentence overview. The headline themes, the surprising finds, the strategic priorities.]
---
## Top priority clusters
The following clusters scored highest on opportunity, strategic fit, and reasonable difficulty. Produce these first.
### Cluster 1: [Cluster name]
- **Primary keyword:** [keyword] (volume: X, difficulty: Y)
- **Intent:** [Informational / Commercial / Transactional / Navigational]
- **Recommended page type:** [Article / guide / comparison / product page / category]
- **Secondary keywords:** [list 5 to 15]
- **Suggested URL:** [/proposed-slug]
- **Estimated effort:** [Hours or days]
- **Why this cluster:** [1 to 2 sentences on strategic fit]
### Cluster 2: [Cluster name]
- **Primary keyword:**
- **Intent:**
- **Recommended page type:**
- **Secondary keywords:**
- **Suggested URL:**
- **Estimated effort:**
- **Why this cluster:**
[Continue for top 10 to 20 clusters.]
---
## Full keyword sheet
[Link to or attach the spreadsheet.]
Columns:
1. Keyword
2. Volume
3. Difficulty
4. Intent (I/N/C/T)
5. SERP features (featured snippet, AI overview, PAA, video, image, local pack)
6. Cluster
7. Cluster role (primary / secondary / long-tail)
8. Opportunity score (1-5)
9. Strategic fit (1-5)
10. Priority (composite)
11. Notes
---
## Topic map
A visual or hierarchical view of how the clusters relate. This becomes the basis for internal linking and information architecture.
```
[Top-level topic]
├── [Cluster A]
│ ├── Primary: [keyword]
│ └── Subtopics: [keywords]
├── [Cluster B]
│ ├── Primary: [keyword]
│ └── Subtopics: [keywords]
└── [Cluster C]
└── ...
```
---
## Quick wins
Existing pages that already rank on page 2 or low page 1 for high-value keywords. Optimizing these is faster than producing new content.
| URL | Current rank | Target query | Volume | Recommended action |
|---|---|---|---|---|
| | | | | |
| | | | | |
(Pull from search console: queries with average position 5 to 20 and impressions over 100/month.)
---
## Deferred clusters
Clusters that did not make the priority cut and why.
| Cluster | Reason |
|---|---|
| [Cluster name] | Too competitive for current authority |
| [Cluster name] | Low commercial value |
| [Cluster name] | Audience mismatch |
| [Cluster name] | Better suited for paid acquisition |
---
## Refresh schedule
This research should be revisited:
- **Quarterly** for fast-moving topics (tech, news, trends, finance)
- **Annually** for evergreen topics
- **After any major SERP feature change** (e.g., AI overviews appearing on key queries)
- **After authority increases** that unlock harder keywords (e.g., domain rating going up by 10+ points)
SKILL.md
---
name: seo-keyword
description: "Run keyword research, classify by search intent, cluster into topical groups, and prioritize for content production. Use this skill whenever the user asks to do keyword research, find target keywords, identify ranking opportunities, classify search intent, build a topical map, or plan a content strategy around what people search for. Triggers on keyword research, keyword strategy, search intent, keyword clustering, topic clusters, keyword difficulty, search volume, ranking opportunity, content gap, what should I write about, target keyword, primary keyword, secondary keyword, long-tail. Also triggers when planning a content calendar or new site without keywords yet defined."
category: seo-foundation
catalog_summary: "Discovery, intent classification, clustering, prioritization"
display_order: 3
---
# Keyword Research
Find the queries worth ranking for, classify them by intent, cluster them into topics, and prioritize what to produce. Stack-agnostic. Tool-agnostic (works with any keyword tool).
---
## When to use
- Starting a new site or content section
- Planning a content calendar
- Looking for ranking opportunities on an existing site
- Understanding search intent before writing
- Building topic clusters for internal linking
- Identifying content gaps vs competitors
## When NOT to use
- Optimizing a single page where the target query is already known (use `seo-onpage`)
- Comparing your site to a competitor across many dimensions (use `seo-competitor`)
- Auditing existing content for performance (use `seo-content-audit`)
---
## Required inputs
- The site or topic area
- The target audience and what they need
- A keyword tool (Ahrefs, Semrush, Moz, Google Keyword Planner, or similar) OR access to search console for an existing site
- Optional: 3 to 5 known competitors to seed the research
If no tool is available, the skill still works using SERP inspection and search console data alone, but the volume estimates will be rough.
---
## The framework: 4 stages
### Stage 1: Discover
Cast a wide net. Sources:
- **Seed terms** from the brief or the user's vocabulary
- **Competitor keywords** (any keyword tool will export these)
- **Search console queries** for an existing site (find the page-1 and page-2 queries)
- **Related searches and "People also ask"** in actual SERPs
- **Customer language** (support tickets, sales calls, reviews)
- **Forum and community language** (Reddit, niche forums, Stack Overflow)
Goal: 200 to 500 candidate keywords for a typical content sprint. More if planning a year of content.
### Stage 2: Classify by intent
Every keyword maps to one of four intents. Get this right or the rest is noise.
| Intent | Signal | Page type that wins |
|---|---|---|
| **Informational** | "how to," "what is," "why," "best way to" | Article, guide, tutorial |
| **Navigational** | brand or product name + modifier | Brand homepage, product page |
| **Commercial** | "best," "review," "vs," "comparison," "alternatives" | Listicle, comparison, review |
| **Transactional** | "buy," "price," "deal," "near me," "for sale" | Product page, category page |
A keyword tool's volume tells you the demand. The SERP tells you the intent. When in doubt, look at what's actually ranking. If page 1 is articles, the query is informational. If page 1 is product pages, it's transactional.
**Hybrid intents exist.** "Best running shoes" is commercial-investigational. "Best running shoes under $100" is the same intent narrowed by a budget filter. Treat hybrids as their dominant intent and note the modifier.
### Stage 3: Cluster
Group keywords that should target the same page (or topic cluster).
Two clustering approaches:
**Approach A: SERP overlap.** If two keywords share at least 3 of the top 10 results, they target the same page. This is mechanical and reliable.
**Approach B: Topical relevance.** Group keywords by the underlying topic, not just word overlap. "How to start a podcast" and "podcast equipment for beginners" are the same topic, different facets.
Use both. A typical cluster has:
- 1 primary keyword (highest volume, broadest intent)
- 5 to 15 secondary keywords (variations and long-tails)
- 1 page that targets them all
### Stage 4: Prioritize
For each cluster, score on three dimensions:
**Opportunity** (1 to 5):
- Volume (raw search demand)
- Click potential (some queries answer themselves in the SERP, lowering CTR)
- Conversion potential (does this query attract buyers or browsers?)
**Difficulty** (1 to 5):
- Domain authority of top results
- Backlink count of top results
- Content depth and freshness of top results
- Whether the SERP has features (featured snippets, AI overview, video carousel) that compete with organic
**Strategic fit** (1 to 5):
- Does it serve our audience?
- Does it support our positioning?
- Does it link to commercial pages naturally?
**Priority score = Opportunity + Strategic fit - Difficulty.**
Rank the clusters. Top 20 percent get produced first.
---
## Workflow
1. **Define the scope.** What site, what topic area, what audience.
2. **Run discovery.** Pull seeds, competitor exports, search console data, SERP inspections. Aim for 200 to 500 candidates.
3. **Deduplicate and clean.** Remove obvious junk, brand misspellings, irrelevant terms.
4. **Classify by intent.** Mark each keyword.
5. **Cluster.** Group into topical clusters. Aim for 20 to 50 clusters.
6. **Score each cluster** on opportunity, difficulty, and strategic fit.
7. **Prioritize.** Rank by composite score. Identify the top 10 to 20 clusters to produce first.
8. **Output.** Use the template in [`references/keyword-research-template.md`](references/keyword-research-template.md).
---
## Failure patterns
- **Chasing volume without intent.** A 10,000-volume informational keyword does not drive purchases. Match query to commercial outcome.
- **Targeting impossibly competitive keywords.** New sites cannot rank for "credit cards." Find the underserved long-tail variant.
- **Ignoring search console.** Existing sites already rank for queries they did not target. These are the easiest wins.
- **Treating clusters as one-keyword-per-page.** A page can target 10 to 30 related keywords. One-keyword-per-page leads to thin, cannibalized content.
- **Ignoring SERP features.** A query with a featured snippet, AI overview, and a video carousel above the organic results may not be worth pursuing.
- **Static keyword research.** Search demand shifts. Refresh the research at least annually for evergreen sites, quarterly for fast-moving topics.
---
## Output format
Default output: a spreadsheet (CSV or sheet) with one row per keyword and one row per cluster, plus a markdown summary with the top 10 to 20 clusters detailed.
Recommended columns for the keyword sheet:
| Column | Source |
|---|---|
| Keyword | Discovery |
| Volume | Tool |
| Difficulty | Tool |
| Intent | Manual classification |
| SERP features | Manual or tool |
| Cluster | Stage 3 |
| Cluster role (primary/secondary) | Stage 3 |
| Opportunity score | Stage 4 |
| Strategic fit | Stage 4 |
| Priority | Composite |
| Notes | Free text |
---
## If required data is unavailable
This skill's output depends on data, measurements, or tool results it cannot generate on its own. When a required input, tool, or data source is unavailable or unverifiable, the sanctioned output is the deliverable with the gap stated: what was needed, what was actually obtained or verified, and which parts of the output are affected. Fabricating, estimating, or interpolating a required number to complete the deliverable is never sanctioned. A stated gap is a complete answer.
---
## Reference files
- [`references/keyword-research-template.md`](references/keyword-research-template.md) - Spreadsheet column definitions and a markdown summary template.
- [`references/intent-classification-guide.md`](references/intent-classification-guide.md) - Detailed examples of each of the four intent categories.