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:
@@ -35,13 +35,62 @@ Monitor and analyze brand visibility in AI-generated search results. This skill
|
||||
4. **Recommendations**: Generate actionable Korean-language recommendations
|
||||
5. **Output**: JSON report and Notion database entry
|
||||
|
||||
## Data Sources
|
||||
## Data Source Selection
|
||||
|
||||
| Source | Purpose |
|
||||
|--------|---------|
|
||||
| `our-seo-agent` CLI | Primary AI visibility data source (future); use `--input` for pre-fetched JSON |
|
||||
| WebSearch / WebFetch | Supplementary AI search data |
|
||||
| Notion MCP | Save audit report to database |
|
||||
**Single-vendor constraint.** AI search visibility / Brand Radar / share-of-voice in AI answers is currently **Ahrefs-only** among connected SEO MCPs. Neither Semrush nor DataForSEO exposes equivalent endpoints today. This is the one SEO skill where the "let the user choose" framing collapses to a one-option menu for the core capability.
|
||||
|
||||
| Backend | Best for | Notes |
|
||||
|---|---|---|
|
||||
| **Ahrefs MCP — Brand Radar** (`mcp__ahrefs__brand-radar-*`) | **Default** (and currently the only viable source) for AI mentions, impressions, share of voice, cited domains/pages, AI response history | Tools: `brand-radar-ai-responses`, `brand-radar-cited-domains`, `brand-radar-cited-pages`, `brand-radar-impressions-overview`, `brand-radar-mentions-overview`, `brand-radar-sov-overview`, `brand-radar-sov-history`, plus `*-entities` variants. |
|
||||
| **Ahrefs MCP — Management** | Configure Brand Radar prompts and reports | `management-brand-radar-prompts`, `management-brand-radar-reports`. |
|
||||
| **OurSEO brand monitoring** (`mcp__ourseo__monitor_brand` / `our research google brand`) | Web-wide brand mention scanning — **not** AI-search specific, but useful as a supplement to compare with AI citations | Catches brand mentions in standard Google search; complements Brand Radar's AI-specific view. |
|
||||
| **WebSearch** | Manual spot-check of AI engines (ChatGPT, Gemini, Perplexity) by querying directly | Not automated — useful for one-off "did the brand appear?" checks. |
|
||||
| **Semrush MCP** | **No equivalent.** Listed in `allowed-tools` only for future compatibility if Semrush adds an AI-visibility product. | Do not attempt to substitute Semrush for Brand Radar today. |
|
||||
|
||||
### How to pick
|
||||
|
||||
1. **User named Ahrefs explicitly** → use Brand Radar.
|
||||
2. **Task is AI mentions / impressions / share of voice / cited pages** → Brand Radar is the only option; use it.
|
||||
3. **Task is general brand monitoring across the web (not AI-specific)** → OurSEO `monitor_brand` is sufficient and cheaper.
|
||||
4. **Task explicitly compares AI vs traditional brand visibility** → run **both** Brand Radar AND OurSEO `monitor_brand`, document the source per data slice.
|
||||
5. **No alternative needed** for the core AI-visibility capability — skip the AskUserQuestion fallback unless the user expresses preference uncertainty.
|
||||
|
||||
### Backend call patterns
|
||||
|
||||
**Ahrefs Brand Radar (default):**
|
||||
```
|
||||
mcp__ahrefs__brand-radar-impressions-overview(brand="<brand>")
|
||||
mcp__ahrefs__brand-radar-mentions-overview(brand="<brand>")
|
||||
mcp__ahrefs__brand-radar-sov-overview(brand="<brand>", competitors=["<comp1>","<comp2>"])
|
||||
mcp__ahrefs__brand-radar-sov-history(brand="<brand>", history="weekly")
|
||||
mcp__ahrefs__brand-radar-cited-domains(brand="<brand>")
|
||||
mcp__ahrefs__brand-radar-cited-pages(brand="<brand>")
|
||||
mcp__ahrefs__brand-radar-ai-responses(brand="<brand>")
|
||||
mcp__ahrefs__brand-radar-impressions-history(brand="<brand>", history="weekly")
|
||||
mcp__ahrefs__brand-radar-mentions-history(brand="<brand>", history="weekly")
|
||||
```
|
||||
|
||||
**Configure prompts / reports:**
|
||||
```
|
||||
mcp__ahrefs__management-brand-radar-prompts()
|
||||
mcp__ahrefs__management-brand-radar-reports()
|
||||
```
|
||||
|
||||
**OurSEO brand monitoring (supplement):**
|
||||
```
|
||||
mcp__ourseo__monitor_brand(brand="<brand>", exclude_domains=["<own.com>"])
|
||||
```
|
||||
|
||||
Or CLI:
|
||||
```bash
|
||||
our research google brand "<brand>" --exclude <own.com>
|
||||
```
|
||||
|
||||
### Tracking note
|
||||
|
||||
Brand Radar requires the brand to be configured in the user's Ahrefs workspace via `management-brand-radar-prompts`. If a query returns empty, first check that the brand is set up — don't conclude "no AI visibility" from an empty Brand Radar response without verifying configuration.
|
||||
|
||||
Always record the chosen data source(s) in the report **Overview** so future audits can compare like-for-like.
|
||||
|
||||
## Notion Output
|
||||
|
||||
|
||||
Reference in New Issue
Block a user