Keyword Miner
Finds keyword gaps and SERP opportunities by analyzing competitor rankings, "People Also Ask" boxes, related searches, and autocomplete suggestions. Identifies low-competition high-intent keywords that represent realistic ranking opportunities. Groups findings into keyword clusters with volume estimates, difficulty assessments, and content recommendations. Designed to feed into content strategy, programmatic SEO planning, and paid search campaigns.
Prerequisites
- WebSearch tool available for SERP analysis and competitor keyword discovery
- Target website URL or business description
- Optional:
agency.config.json for service context and ICP understanding
- Optional: list of competitor URLs for gap analysis
- Optional: seed keywords to start from
Capabilities Used
content-seo-optimizer -- for evaluating existing content against discovered keywords
Phase 0: Intake
- Read
agency.config.json from the project root (if available).
- Extract
services[].keywords for seed keyword ideas relevant to the agency's offerings.
- Extract
icp.segments[].industries to understand target market context.
- Accept parameters:
url -- (required) target website or business to find keywords for
seed_keywords -- (optional) array of starting keywords. If not provided, derive from the site's content and meta tags.
competitor_urls -- (optional) array of competitor URLs for gap analysis
intent -- (optional) filter: informational, commercial, transactional, navigational, or all. Default: all
market -- (optional) geographic market: US, UK, IN, AU, global. Default: derive from config
depth -- quick (top 20 keywords) | standard (50-100 keywords) | deep (200+ keywords). Default: standard
Phase 1: Seed Keyword Expansion
Extract Keywords from Target Site
- Visit target URL, extract:
- Title tags and meta descriptions from key pages
- H1 and H2 headings
- Navigation labels and category names
- Product/service names
- Blog post titles (if blog exists)
- Compile initial keyword list from on-site content
Autocomplete Mining
For each seed keyword, search and capture:
- WebSearch:
{{seed_keyword}} -- note autocomplete suggestions
- WebSearch:
{{seed_keyword}} a, {{seed_keyword}} b, ... {{seed_keyword}} z -- alphabet soup method
- WebSearch:
{{seed_keyword}} for, {{seed_keyword}} vs, {{seed_keyword}} how to
- WebSearch:
best {{seed_keyword}}, {{seed_keyword}} near me, {{seed_keyword}} online
Related Searches
- For each SERP, capture "Related searches" at the bottom of results
- For each SERP, capture "People Also Search For" suggestions
- Capture any "Searches related to" boxes
Phase 2: People Also Ask Mining
For each seed keyword:
- WebSearch the keyword and extract all "People Also Ask" questions
- Click/expand PAA boxes to reveal nested questions (up to 3 levels deep)
- Categorize questions by:
- Informational: "What is...", "How does...", "Why do..."
- Commercial: "Best...", "Top...", "Reviews of..."
- Transactional: "Buy...", "Price of...", "Where to get..."
- Comparison: "X vs Y", "Difference between...", "Alternative to..."
Compile all PAA questions into a master list, deduplicated and categorized.
Phase 3: Competitor Keyword Gap Analysis
If Competitor URLs Provided
For each competitor:
- WebSearch:
site:{{competitor_domain}} -- catalog their indexed pages
- Extract keywords from competitor page titles, headings, and meta descriptions
- WebSearch:
site:{{competitor_domain}} blog -- catalog their content topics
- Identify keywords competitors rank for by searching their page titles
Gap Identification
- Keywords competitors cover that target does not: content gaps
- Keywords target covers but competitors do not: defensible positions
- Keywords ALL competitors cover: table-stakes topics that must be addressed
- Keywords NO ONE covers well: blue ocean opportunities
Comparative SERP Checks
For the most promising gap keywords:
- Search each keyword, check if competitor appears in top 10
- Note the type of content ranking (blog post, product page, tool, video)
- Note domain authority of ranking sites (are they beatable?)
Phase 4: Keyword Qualification
For each discovered keyword, assess:
Search Volume Estimation
- WebSearch:
"{{keyword}}" search volume or "{{keyword}}" monthly searches
- Cross-reference with Google Trends relative interest
- Categorize: High (10K+), Medium (1K-10K), Low (100-1K), Very Low (<100)
- Note trending direction: rising, stable, declining, seasonal
Difficulty Assessment
- Search the keyword, analyze page 1 results:
- Domain authority of ranking sites (all high-DA = hard, mixed = medium, low-DA = easy)
- Content quality of ranking pages (thin content = opportunity)
- Content type ranking (if all are mega-guides, a quick answer page won't compete)
- SERP features present (featured snippets, video carousels, knowledge panels)
- Score difficulty: Easy (can rank in 1-3 months), Medium (3-6 months), Hard (6-12 months), Very Hard (12+ months)
Intent Classification
- Informational: user wants to learn ("how to", "what is", "guide")
- Commercial Investigation: user is comparing options ("best", "vs", "review", "top 10")
- Transactional: user wants to buy/act ("buy", "price", "discount", "sign up", "hire")
- Navigational: user wants a specific site ("brand name", "login", "support")
Business Value
- How directly does this keyword relate to the target's products/services?
- Does ranking for this keyword attract buyers or browsers?
- Can the target credibly create authoritative content on this topic?
- Score: High value (direct revenue), Medium value (pipeline builder), Low value (brand awareness only)
Phase 5: Keyword Clustering
Group qualified keywords into topical clusters:
Cluster Formation
- Group keywords that share the same search intent and can be served by a single page
- Identify the "pillar" keyword for each cluster (highest volume, broadest intent)
- Identify "supporting" keywords that can be subtopics or sections within the pillar content
- Map clusters to content types: blog post, product page, landing page, FAQ page, tool page
Content Mapping
For each cluster:
- Recommended page type (new page, optimize existing page, blog post)
- Target URL path
- Primary keyword (in title, H1, URL)
- Secondary keywords (in H2s, body content)
- Supporting keywords (in related sections, FAQ)
- Internal linking targets (which existing pages should link to/from this content)
Phase 6: Opportunity Scoring
Rank all keyword clusters by opportunity score:
Opportunity Score = (Volume x Intent Value x Business Relevance) / Difficulty
Where:
- Volume: 1-10 scale
- Intent Value: Transactional=10, Commercial=8, Informational=4, Navigational=2
- Business Relevance: 1-10 scale
- Difficulty: 1-10 scale (1=easy, 10=very hard)
Sort clusters by opportunity score descending. Top clusters are the highest-ROI content investments.
Phase 7: Output
Return structured JSON:
{
"target_url": "https://example.com",
"mined_at": "2024-01-15T14:30:00Z",
"depth": "standard",
"market": "US",
"seed_keywords_used": ["shopify agency", "ecommerce development"],
"total_keywords_found": 147,
"keyword_clusters": [
{
"cluster_name": "Shopify Store Setup",
"pillar_keyword": "shopify store setup service",
"opportunity_score": 8.5,
"estimated_volume": "Medium (1K-10K)",
"difficulty": "Medium",
"intent": "Transactional",
"business_value": "High",
"keywords": [
{ "keyword": "shopify store setup service", "volume_tier": "Medium", "difficulty": "Medium", "intent": "Transactional" },
{ "keyword": "hire shopify developer", "volume_tier": "Medium", "difficulty": "Medium", "intent": "Transactional" },
{ "keyword": "shopify store setup cost", "volume_tier": "Medium", "difficulty": "Easy", "intent": "Commercial" },
{ "keyword": "how to set up shopify store", "volume_tier": "High", "difficulty": "Hard", "intent": "Informational" }
],
"paa_questions": [
"How much does it cost to set up a Shopify store?",
"Can I hire someone to build my Shopify store?",
"How long does it take to set up a Shopify store?"
],
"recommended_content": {
"type": "Landing page + supporting blog post",
"target_url": "/services/shopify-store-setup",
"title_suggestion": "Shopify Store Setup Service | Expert Setup in 2 Weeks",
"content_outline": ["Service overview", "What's included", "Pricing tiers", "Timeline", "Portfolio examples", "FAQ"]
}
}
],
"competitor_gaps": [
{
"keyword": "shopify migration service",
"competitors_ranking": ["competitor1.com", "competitor2.com"],
"target_ranking": "Not found in top 50",
"opportunity": "High -- competitors rank with thin content, strong content piece could outrank"
}
],
"quick_wins": [
{
"keyword": "shopify cro audit",
"current_position": "Page 2",
"action": "Optimize existing /services/cro page with better keyword targeting",
"estimated_impact": "Move to page 1, capture ~200 visits/month"
}
],
"trending_keywords": [
{ "keyword": "shopify ai features", "trend": "Rising 150% YoY", "opportunity": "First-mover content advantage" }
],
"summary": {
"total_clusters": 12,
"high_opportunity_clusters": 4,
"estimated_total_monthly_volume": "15K-25K",
"biggest_gap": "No content targeting comparison/vs keywords",
"recommended_priority": ["Cluster 1: Shopify Setup", "Cluster 3: CRO Services", "Cluster 5: Migration Guide"]
}
}
Phase 8: Review Gate
Present findings to the user. The user may:
- Filter clusters by intent type or difficulty
- Request deeper analysis on specific clusters
- Adjust business value scores based on internal priorities
- Export keyword list for use in other tools
Example Usage
Trigger phrases:
- "Find keyword opportunities for [url]"
- "What keywords should [business] target?"
- "Keyword gap analysis: [url] vs [competitor]"
- "Mine keywords for [topic/niche]"
- "Find low-competition keywords for [industry]"
User: Find keyword opportunities for plasho.com
Assistant: [extracts seed keywords from site, mines autocomplete and PAA, analyzes competitors, returns clustered opportunities ranked by score]
User: Keyword gap analysis: plasho.com vs competitor1.com and competitor2.com
Assistant: [identifies keywords competitors rank for that plasho.com does not, returns prioritized gap list with content recommendations]
User: Find low-competition transactional keywords for Shopify development services in India
Assistant: [focuses on transactional intent, India market, filters for easy/medium difficulty, returns actionable keyword clusters]
1---2name: keyword-miner3description: Find keyword gaps, SERP opportunities, and low-competition high-intent keywords4---56# Keyword Miner78Finds keyword gaps and SERP opportunities by analyzing competitor rankings, "People Also Ask" boxes, related searches, and autocomplete suggestions. Identifies low-competition high-intent keywords that represent realistic ranking opportunities. Groups findings into keyword clusters with volume estimates, difficulty assessments, and content recommendations. Designed to feed into content strategy, programmatic SEO planning, and paid search campaigns.910## Prerequisites1112- WebSearch tool available for SERP analysis and competitor keyword discovery13- Target website URL or business description14- Optional: `agency.config.json` for service context and ICP understanding15- Optional: list of competitor URLs for gap analysis16- Optional: seed keywords to start from1718## Capabilities Used19201. `content-seo-optimizer` -- for evaluating existing content against discovered keywords2122## Phase 0: Intake23241. Read `agency.config.json` from the project root (if available).252. Extract `services[].keywords` for seed keyword ideas relevant to the agency's offerings.263. Extract `icp.segments[].industries` to understand target market context.274. Accept parameters:28 - `url` -- (required) target website or business to find keywords for29 - `seed_keywords` -- (optional) array of starting keywords. If not provided, derive from the site's content and meta tags.30 - `competitor_urls` -- (optional) array of competitor URLs for gap analysis31 - `intent` -- (optional) filter: `informational`, `commercial`, `transactional`, `navigational`, or `all`. Default: `all`32 - `market` -- (optional) geographic market: `US`, `UK`, `IN`, `AU`, `global`. Default: derive from config33 - `depth` -- `quick` (top 20 keywords) | `standard` (50-100 keywords) | `deep` (200+ keywords). Default: `standard`3435## Phase 1: Seed Keyword Expansion3637### Extract Keywords from Target Site38- Visit target URL, extract:39 - Title tags and meta descriptions from key pages40 - H1 and H2 headings41 - Navigation labels and category names42 - Product/service names43 - Blog post titles (if blog exists)44- Compile initial keyword list from on-site content4546### Autocomplete Mining47For each seed keyword, search and capture:48- WebSearch: `{{seed_keyword}}` -- note autocomplete suggestions49- WebSearch: `{{seed_keyword}} a`, `{{seed_keyword}} b`, ... `{{seed_keyword}} z` -- alphabet soup method50- WebSearch: `{{seed_keyword}} for`, `{{seed_keyword}} vs`, `{{seed_keyword}} how to`51- WebSearch: `best {{seed_keyword}}`, `{{seed_keyword}} near me`, `{{seed_keyword}} online`5253### Related Searches54- For each SERP, capture "Related searches" at the bottom of results55- For each SERP, capture "People Also Search For" suggestions56- Capture any "Searches related to" boxes5758## Phase 2: People Also Ask Mining5960For each seed keyword:61- WebSearch the keyword and extract all "People Also Ask" questions62- Click/expand PAA boxes to reveal nested questions (up to 3 levels deep)63- Categorize questions by:64 - **Informational**: "What is...", "How does...", "Why do..."65 - **Commercial**: "Best...", "Top...", "Reviews of..."66 - **Transactional**: "Buy...", "Price of...", "Where to get..."67 - **Comparison**: "X vs Y", "Difference between...", "Alternative to..."6869Compile all PAA questions into a master list, deduplicated and categorized.7071## Phase 3: Competitor Keyword Gap Analysis7273### If Competitor URLs Provided74For each competitor:75- WebSearch: `site:{{competitor_domain}}` -- catalog their indexed pages76- Extract keywords from competitor page titles, headings, and meta descriptions77- WebSearch: `site:{{competitor_domain}} blog` -- catalog their content topics78- Identify keywords competitors rank for by searching their page titles7980### Gap Identification81- **Keywords competitors cover that target does not**: content gaps82- **Keywords target covers but competitors do not**: defensible positions83- **Keywords ALL competitors cover**: table-stakes topics that must be addressed84- **Keywords NO ONE covers well**: blue ocean opportunities8586### Comparative SERP Checks87For the most promising gap keywords:88- Search each keyword, check if competitor appears in top 1089- Note the type of content ranking (blog post, product page, tool, video)90- Note domain authority of ranking sites (are they beatable?)9192## Phase 4: Keyword Qualification9394For each discovered keyword, assess:9596### Search Volume Estimation97- WebSearch: `"{{keyword}}" search volume` or `"{{keyword}}" monthly searches`98- Cross-reference with Google Trends relative interest99- Categorize: High (10K+), Medium (1K-10K), Low (100-1K), Very Low (<100)100- Note trending direction: rising, stable, declining, seasonal101102### Difficulty Assessment103- Search the keyword, analyze page 1 results:104 - Domain authority of ranking sites (all high-DA = hard, mixed = medium, low-DA = easy)105 - Content quality of ranking pages (thin content = opportunity)106 - Content type ranking (if all are mega-guides, a quick answer page won't compete)107 - SERP features present (featured snippets, video carousels, knowledge panels)108- Score difficulty: Easy (can rank in 1-3 months), Medium (3-6 months), Hard (6-12 months), Very Hard (12+ months)109110### Intent Classification111- **Informational**: user wants to learn ("how to", "what is", "guide")112- **Commercial Investigation**: user is comparing options ("best", "vs", "review", "top 10")113- **Transactional**: user wants to buy/act ("buy", "price", "discount", "sign up", "hire")114- **Navigational**: user wants a specific site ("brand name", "login", "support")115116### Business Value117- How directly does this keyword relate to the target's products/services?118- Does ranking for this keyword attract buyers or browsers?119- Can the target credibly create authoritative content on this topic?120- Score: High value (direct revenue), Medium value (pipeline builder), Low value (brand awareness only)121122## Phase 5: Keyword Clustering123124Group qualified keywords into topical clusters:125126### Cluster Formation127- Group keywords that share the same search intent and can be served by a single page128- Identify the "pillar" keyword for each cluster (highest volume, broadest intent)129- Identify "supporting" keywords that can be subtopics or sections within the pillar content130- Map clusters to content types: blog post, product page, landing page, FAQ page, tool page131132### Content Mapping133For each cluster:134- Recommended page type (new page, optimize existing page, blog post)135- Target URL path136- Primary keyword (in title, H1, URL)137- Secondary keywords (in H2s, body content)138- Supporting keywords (in related sections, FAQ)139- Internal linking targets (which existing pages should link to/from this content)140141## Phase 6: Opportunity Scoring142143Rank all keyword clusters by opportunity score:144145```146Opportunity Score = (Volume x Intent Value x Business Relevance) / Difficulty147```148149Where:150- Volume: 1-10 scale151- Intent Value: Transactional=10, Commercial=8, Informational=4, Navigational=2152- Business Relevance: 1-10 scale153- Difficulty: 1-10 scale (1=easy, 10=very hard)154155Sort clusters by opportunity score descending. Top clusters are the highest-ROI content investments.156157## Phase 7: Output158159Return structured JSON:160161```json162{163 "target_url": "https://example.com",164 "mined_at": "2024-01-15T14:30:00Z",165 "depth": "standard",166 "market": "US",167 "seed_keywords_used": ["shopify agency", "ecommerce development"],168 "total_keywords_found": 147,169 "keyword_clusters": [170 {171 "cluster_name": "Shopify Store Setup",172 "pillar_keyword": "shopify store setup service",173 "opportunity_score": 8.5,174 "estimated_volume": "Medium (1K-10K)",175 "difficulty": "Medium",176 "intent": "Transactional",177 "business_value": "High",178 "keywords": [179 { "keyword": "shopify store setup service", "volume_tier": "Medium", "difficulty": "Medium", "intent": "Transactional" },180 { "keyword": "hire shopify developer", "volume_tier": "Medium", "difficulty": "Medium", "intent": "Transactional" },181 { "keyword": "shopify store setup cost", "volume_tier": "Medium", "difficulty": "Easy", "intent": "Commercial" },182 { "keyword": "how to set up shopify store", "volume_tier": "High", "difficulty": "Hard", "intent": "Informational" }183 ],184 "paa_questions": [185 "How much does it cost to set up a Shopify store?",186 "Can I hire someone to build my Shopify store?",187 "How long does it take to set up a Shopify store?"188 ],189 "recommended_content": {190 "type": "Landing page + supporting blog post",191 "target_url": "/services/shopify-store-setup",192 "title_suggestion": "Shopify Store Setup Service | Expert Setup in 2 Weeks",193 "content_outline": ["Service overview", "What's included", "Pricing tiers", "Timeline", "Portfolio examples", "FAQ"]194 }195 }196 ],197 "competitor_gaps": [198 {199 "keyword": "shopify migration service",200 "competitors_ranking": ["competitor1.com", "competitor2.com"],201 "target_ranking": "Not found in top 50",202 "opportunity": "High -- competitors rank with thin content, strong content piece could outrank"203 }204 ],205 "quick_wins": [206 {207 "keyword": "shopify cro audit",208 "current_position": "Page 2",209 "action": "Optimize existing /services/cro page with better keyword targeting",210 "estimated_impact": "Move to page 1, capture ~200 visits/month"211 }212 ],213 "trending_keywords": [214 { "keyword": "shopify ai features", "trend": "Rising 150% YoY", "opportunity": "First-mover content advantage" }215 ],216 "summary": {217 "total_clusters": 12,218 "high_opportunity_clusters": 4,219 "estimated_total_monthly_volume": "15K-25K",220 "biggest_gap": "No content targeting comparison/vs keywords",221 "recommended_priority": ["Cluster 1: Shopify Setup", "Cluster 3: CRO Services", "Cluster 5: Migration Guide"]222 }223}224```225226## Phase 8: Review Gate227228Present findings to the user. The user may:229- Filter clusters by intent type or difficulty230- Request deeper analysis on specific clusters231- Adjust business value scores based on internal priorities232- Export keyword list for use in other tools233234## Example Usage235236Trigger phrases:237- "Find keyword opportunities for [url]"238- "What keywords should [business] target?"239- "Keyword gap analysis: [url] vs [competitor]"240- "Mine keywords for [topic/niche]"241- "Find low-competition keywords for [industry]"242243```244User: Find keyword opportunities for plasho.com245Assistant: [extracts seed keywords from site, mines autocomplete and PAA, analyzes competitors, returns clustered opportunities ranked by score]246```247248```249User: Keyword gap analysis: plasho.com vs competitor1.com and competitor2.com250Assistant: [identifies keywords competitors rank for that plasho.com does not, returns prioritized gap list with content recommendations]251```252253```254User: Find low-competition transactional keywords for Shopify development services in India255Assistant: [focuses on transactional intent, India market, filters for easy/medium difficulty, returns actionable keyword clusters]256```