feat(seo-skills): multi-backend Data Source Selection (#7)
Replaces single-vendor (Ahrefs-only) tool defaults with a per-task backend menu across all 14 SEO skills. Each skill now lists every capable MCP in allowed-tools and documents how to pick between Semrush, Ahrefs, OurSEO Agent (CLI + MCP), DataForSEO, and GSC in its SKILL.md Data Source Selection section. Tool stubs (~40 new files) populated per skill with capability deltas, call patterns, and explicit "not for this skill when" callouts so the menu is self-correcting. Skills affected: 19-keyword-strategy, 20-serp-analysis, 21-position-tracking, 22-link-building, 23-content-strategy, 24-ecommerce, 25-kpi-framework, 26-international, 27-ai-visibility, 28-knowledge-graph, 31-competitor-intel, 32-crawl-budget, 33-migration-planner, 34-reporting-dashboard. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -24,24 +24,72 @@ Comprehensive competitor intelligence for SEO: auto-discover competitors, build
|
||||
7. **Alert Generation** - Flag significant competitive movements
|
||||
8. **Market Share Estimation** - Organic traffic share within competitive set
|
||||
|
||||
## MCP Tool Usage
|
||||
## Data Source Selection
|
||||
|
||||
### SEO Data
|
||||
Competitor intelligence spans **organic profile** (traffic, keywords), **backlink profile** (DR, refdomains), **content velocity** (top pages, new content), and **Korean platform presence**. Different backends own different slices.
|
||||
|
||||
| Backend | Best for | Notes |
|
||||
|---|---|---|
|
||||
| **Semrush MCP** (`mcp__semrush__*`) | **Default** for organic competitor profile, keyword overlap, traffic trends | `organic_research`, `trends_research`, `overview_research` → `get_report_schema` → `execute_report`. Auto-discovery of competitors. |
|
||||
| **Ahrefs MCP** (`mcp__ahrefs__*`) | Backlink profile, organic competitor discovery, top-pages-by-traffic, historical DR | `site-explorer-organic-competitors`, `site-explorer-organic-keywords`, `site-explorer-top-pages`, `site-explorer-domain-rating-history`, `site-explorer-backlinks-stats`. Pair with Semrush for cross-check. |
|
||||
| **OurSEO** (CLI + MCP) | SERP overlap spot-checks, content similarity, crawl-derived content velocity | `mcp__ourseo__check_serp`, `mcp__ourseo__find_similar_pages`, `mcp__ourseo__crawl_website`. CLI: `our serp competitors`, `our serp ranked-keywords`. |
|
||||
| **OurSEO CLI — Korean** (`our research naver *`) | Naver-engine competitor analysis (Blog/Cafe/Smart Store presence, Naver SERP) | Naver-only; required for Korean market since Semrush/Ahrefs don't cover Naver. |
|
||||
| **WebSearch** | Korean Blog/Cafe/Tistory/Brunch presence checks | Supplement Korean platform mapping when Semrush/Ahrefs underrepresent these. |
|
||||
| **DataForSEO MCP** (`mcp__dfs-mcp__*`) | Fallback for ranked-keywords / SERP competitors when `our` CLI isn't running | Same data as `our serp *`. |
|
||||
|
||||
### How to pick
|
||||
|
||||
1. **User named a backend explicitly** → use it.
|
||||
2. **User preference memory** — read `feedback_seo_tool_preferences.md`; honor the task-type default.
|
||||
3. **Task is backlink-focused** (DR comparison, link gap) → Ahrefs (backlink-graph moat).
|
||||
4. **Task is keyword/traffic-focused** → Semrush (organic competitor view is strongest).
|
||||
5. **Task is Korean-market competitor analysis** → **OurSEO CLI** (`our research naver *` + `our serp * --location 2410`). Korean platforms aren't covered by Semrush/Ahrefs.
|
||||
6. **Default**: Semrush MCP for organic + Ahrefs for backlinks (paired). Korean override: OurSEO CLI.
|
||||
7. **Still ambiguous + non-trivial** → ask once via `AskUserQuestion`.
|
||||
|
||||
### Backend call patterns
|
||||
|
||||
**Semrush MCP (default organic):**
|
||||
```
|
||||
our-seo-agent CLI: Primary competitive data source (future); use --input for pre-fetched JSON
|
||||
WebSearch / WebFetch: Supplementary competitor data
|
||||
mcp__semrush__organic_research(query="<target>", database="us")
|
||||
mcp__semrush__organic_research(query="<competitor>", database="us")
|
||||
mcp__semrush__trends_research(query="<target>", database="us")
|
||||
mcp__semrush__overview_research(query="<target>", database="us")
|
||||
```
|
||||
|
||||
### Notion for Report Storage
|
||||
**Ahrefs MCP (backlink + top pages):**
|
||||
```
|
||||
mcp__notion__notion-create-pages: Save reports to SEO Audit Log
|
||||
mcp__ahrefs__site-explorer-organic-competitors(target="<target>")
|
||||
mcp__ahrefs__site-explorer-organic-keywords(target="<target>", country="us", limit=500)
|
||||
mcp__ahrefs__site-explorer-top-pages(target="<competitor>", country="us")
|
||||
mcp__ahrefs__site-explorer-domain-rating-history(target="<target>", history="weekly")
|
||||
mcp__ahrefs__site-explorer-backlinks-stats(target="<target>")
|
||||
```
|
||||
|
||||
### WebSearch for Korean Market
|
||||
**OurSEO (SERP overlap + content similarity):**
|
||||
```
|
||||
WebSearch: Check Naver Blog/Cafe presence for competitors
|
||||
mcp__ourseo__check_serp(keyword="<keyword>", domain="<target>", country="kr")
|
||||
mcp__ourseo__find_similar_pages(crawl_path="<path>", query="<topic>")
|
||||
mcp__ourseo__crawl_website(url="<competitor>", max_pages=50)
|
||||
```
|
||||
|
||||
**OurSEO CLI (Korean batch):**
|
||||
```bash
|
||||
our serp ranked-keywords <competitor.com> --location 2410 --limit 100
|
||||
our serp competitors <target.com> --location 2410
|
||||
our research naver serp "<keyword>"
|
||||
our research naver keywords ideas "<keyword>"
|
||||
```
|
||||
|
||||
**Korean platform presence (WebSearch):**
|
||||
```
|
||||
WebSearch: blog.naver.com "<competitor brand>"
|
||||
WebSearch: cafe.naver.com "<competitor brand>"
|
||||
WebSearch: tistory.com "<competitor brand>"
|
||||
```
|
||||
|
||||
Always record the chosen data source(s) in the report **Overview** so future runs can compare like-for-like.
|
||||
|
||||
## Workflow
|
||||
|
||||
### Competitor Profiling
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
name: seo-competitor-intel
|
||||
description: |
|
||||
Competitor intelligence and SEO benchmarking. Triggers: competitor analysis, competitive intelligence, competitor comparison, threat assessment, market position, benchmarking.
|
||||
|
||||
# Allowed tools list every backend the skill can pull competitive data from.
|
||||
# Per-task selection happens in SKILL.md > Data Source Selection — NOT here.
|
||||
allowed-tools:
|
||||
- mcp__ahrefs__*
|
||||
- mcp__semrush__* # default — organic_research, trends_research, backlink_research
|
||||
- mcp__ahrefs__* # site-explorer-* (organic competitors, backlinks)
|
||||
- mcp__claude_ai_Ahrefs__* # Ahrefs (Claude.ai namespace)
|
||||
- mcp__ourseo__* # check_serp, find_similar_pages, crawl_website
|
||||
- mcp__dfs-mcp__* # DataForSEO MCP fallback
|
||||
- Bash # `our` CLI — full surface
|
||||
- mcp__notion__*
|
||||
- WebSearch
|
||||
- WebSearch # Naver Blog/Cafe presence checks
|
||||
- WebFetch
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
# OurSEO Agent (CLI + MCP)
|
||||
|
||||
For competitor intel, OurSEO contributes **SERP overlap spot-checks**, **content similarity / topic clustering**, and **Korean-market Naver competitor analysis** that Semrush/Ahrefs don't cover.
|
||||
|
||||
## CLI commands (Claude Code)
|
||||
|
||||
```bash
|
||||
# SERP overlap and competitor SERP pulls
|
||||
our serp competitors <target.com> --location 2410
|
||||
our serp ranked-keywords <competitor.com> --location 2410 --limit 100
|
||||
our serp domain-overview <competitor.com> --location 2410
|
||||
|
||||
# Competitor crawl for content velocity / inventory
|
||||
our collect crawl https://<competitor> --max-pages 100
|
||||
|
||||
# Korean engine competitor analysis (Naver)
|
||||
our research naver serp "<keyword>"
|
||||
our research naver keywords ideas "<keyword>" --limit 30
|
||||
our research keywords compare "<keyword>" --engines naver
|
||||
```
|
||||
|
||||
## MCP tools (Claude Desktop)
|
||||
|
||||
```
|
||||
mcp__ourseo__check_serp(keyword="<keyword>", domain="<target>", country="kr")
|
||||
mcp__ourseo__find_similar_pages(crawl_path="<path>", query="<topic>")
|
||||
mcp__ourseo__crawl_website(url="<competitor>", max_pages=50)
|
||||
```
|
||||
|
||||
## Strengths for this skill
|
||||
|
||||
- **Naver competitor analysis** — only path that covers Naver Blog/Cafe/Smart Store/Knowledge iN competitor presence.
|
||||
- **`find_similar_pages`** uses Vertex AI embeddings on prior crawl data — good for topic-cluster overlap detection between target and competitor.
|
||||
- **SERP spot-checks** are cheap; useful for ad-hoc "do we share top-10 with competitor X for keyword Y" questions.
|
||||
|
||||
## Not for this skill when
|
||||
|
||||
- **Backlink-graph competitor comparison** — Ahrefs.
|
||||
- **Modelled traffic / Authority Score** for the threat-scoring matrix — Semrush.
|
||||
- **Historical trend series** (DR over time, traffic over time) — Ahrefs/Semrush history endpoints.
|
||||
@@ -0,0 +1,35 @@
|
||||
# Semrush MCP
|
||||
|
||||
**Default** for competitor organic profile, keyword overlap, traffic trends, and competitor auto-discovery.
|
||||
|
||||
Call pattern: discovery → `get_report_schema` → `execute_report`.
|
||||
|
||||
## Key reports
|
||||
|
||||
- `organic_research` — organic keywords + competitor pulls for any domain
|
||||
- `trends_research` — period-over-period traffic deltas
|
||||
- `overview_research` — domain-level traffic/visibility for the comparison matrix
|
||||
- `backlink_research` — Authority Score and referring-domain counts (paired with Ahrefs for cross-check)
|
||||
|
||||
## Example
|
||||
|
||||
```
|
||||
mcp__semrush__organic_research(query="<target>", database="us")
|
||||
mcp__semrush__organic_research(query="<competitor>", database="us")
|
||||
mcp__semrush__trends_research(query="<target>", database="us")
|
||||
mcp__semrush__overview_research(query="<competitor>", database="us")
|
||||
```
|
||||
|
||||
Korean market: `database="kr"`.
|
||||
|
||||
## Strengths for this skill
|
||||
|
||||
- **Auto-discovery** of organic competitors via `organic_research`.
|
||||
- Cleanest **keyword overlap** computation across target + competitors.
|
||||
- `trends_research` directly exposes period-over-period — required for threat scoring.
|
||||
|
||||
## Not for this skill when
|
||||
|
||||
- **Backlink-focused competitor comparison** — Ahrefs `site-explorer-organic-competitors` + `-backlinks-stats` is stronger.
|
||||
- **Korean Naver competitor presence** — Semrush is Google-only. Use `our research naver *` + WebSearch.
|
||||
- **SERP overlap spot-check** — `mcp__ourseo__check_serp` is cheaper.
|
||||
Reference in New Issue
Block a user