Install
openclaw skills install industry-researchWhen the user wants to conduct industry research, keyword research for a campaign, search demand analysis, intent mapping, audience research, or understand w...
openclaw skills install industry-researchYou conduct deep, intent-driven industry research. The core question is "what are people looking for?" -- not "what are competitors doing?" Keyword intent, search demand, and real audience language are the primary signals. Competitor analysis serves the intent research by finding gaps in what's being served.
Check for product marketing context first:
If .agents/product-marketing-context.md exists (or .claude/product-marketing-context.md in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
Then determine:
If dispatched via cron or orchestrator with a specific client name, use the product-marketing-context for that client to derive seed keywords and competitors automatically.
Use Ahrefs to gather keyword data. Try the Ahrefs MCP server first (if available via mcporter or MCP tools list). If MCP is not available, fall back to the Ahrefs REST API at https://api.ahrefs.com/v3 with Authorization: Bearer $AHREFS_API_KEY.
Regardless of access method, gather data from these endpoints/capabilities:
Keywords Explorer overview -- seed keywords (batch up to 10 per request) for volume, difficulty, traffic potential:
POST /keywords-explorer/overview
Body: { "keywords": ["seed1", "seed2", ...], "country": "us" }
Keywords Explorer matching terms -- for each seed keyword, find related keywords (limit: 100 results per seed):
POST /keywords-explorer/matching-terms
Body: { "keyword": "seed keyword", "country": "us", "limit": 100 }
Keywords Explorer related terms -- semantically similar keywords:
POST /keywords-explorer/related-terms
Body: { "keyword": "seed keyword", "country": "us", "limit": 100 }
Cluster results by topic (group keywords sharing the same parent topic or SERP overlap).
Classify each keyword's intent:
Rate limit: Max 60 requests/min. Budget cap: 15 API calls per research run.
If neither Ahrefs MCP nor AHREFS_API_KEY is available, skip this step and note "Ahrefs data unavailable -- no MCP server or API key configured" in the artifact. Continue with Firecrawl+Exa only.
Use exa.js search to find Reddit threads, forum posts, Quora answers about the industry/problem space:
exa.js search "[industry] questions problems reddit" --num-results 10
exa.js search "[industry] advice forum" --num-results 10
exa.js search "site:reddit.com [service] experience" --num-results 10
Use firecrawl.js scrape to extract content from top 5 most relevant results:
firecrawl.js scrape --url "https://reddit.com/r/relevant-thread"
Extract:
Cross-reference with Google's People Also Ask (search for each seed keyword via Exa and extract PAA-style questions):
exa.js search "[seed keyword] questions people also ask" --num-results 5
For each top keyword cluster, use exa.js search to find what currently ranks:
exa.js search "[keyword]" --num-results 10
Use firecrawl.js scrape on top 3 ranking pages per cluster to analyze content depth:
firecrawl.js scrape --url "https://top-ranking-page.com/article"
Identify gaps:
Use firecrawl.js map on each competitor URL to discover their site structure:
firecrawl.js map --url "https://competitor.com"
Use firecrawl.js scrape on their key pages (homepage, services, blog, pricing) -- max 5 pages per competitor:
firecrawl.js scrape --url "https://competitor.com/services"
Analyze:
If Ahrefs is available (MCP or API), use Site Explorer organic-keywords to see what keywords competitors rank for:
GET /site-explorer/organic-keywords?target=competitor.com&limit=50
Identify messaging patterns and gaps -- what positioning angles are unclaimed.
Write the output to .agents/industry-research-{client}.md where {client} is the lowercase client name (e.g., allcare).
Use this artifact template:
# Industry Research: {Client Name}
*Client: {Client Full Name}*
*Last full refresh: YYYY-MM-DD*
## 1. Keyword Clusters & Intent Map
*Last researched: YYYY-MM-DD*
### Cluster: {Topic Name}
| Keyword | Monthly Volume | Difficulty | Intent | Traffic Potential |
|---------|---------------|------------|--------|-------------------|
| keyword phrase | X,XXX | XX | Informational/Transactional | X,XXX |
**Intent distribution:** X% informational, X% transactional
**Primary opportunities:** Summary of top keyword opportunities
## 2. Questions & Pain Points
*Last researched: YYYY-MM-DD*
### What people ask (from PAA, Reddit, forums)
- "Exact question from audience?" (volume: X,XXX)
### Pain points (exact audience language)
- "Verbatim quote from real person" -- Source (Reddit, forum, etc.)
## 3. Content Gaps & Opportunities
*Last researched: YYYY-MM-DD*
### Underserved angles
- **Gap description:** Why it matters and the opportunity
### What's ranking (and what's weak)
| Query | Top Result | Gap/Opportunity |
|-------|-----------|-----------------|
| search query | Current top result | What's missing or weak |
## 4. Competitor Landscape
*Last researched: YYYY-MM-DD*
### Who ranks for our keywords
| Competitor | Ranks For | Positioning | Content Strategy |
|-----------|-----------|-------------|------------------|
| Competitor name | Key keywords | How they position | Blog, city pages, etc. |
### Messaging patterns
- Competitor: "Their messaging angle" -- framing type
- **Gap:** Unclaimed positioning angle
Target artifact size: 3,000-5,000 words. Synthesize and distill -- do not dump raw scraped content.
Each section has its own Last researched: timestamp so consuming skills can verify recency.
firecrawl.js map before scrape)