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:
Andrew Yim
2026-05-14 03:15:32 +09:00
committed by GitHub
parent 1ca84f67ed
commit e527fb4b0f
71 changed files with 2647 additions and 258 deletions

View File

@@ -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

View File

@@ -1,8 +1,16 @@
name: seo-ai-visibility
description: |
AI search visibility and brand radar monitoring. Triggers: AI search, AI visibility, brand radar, AI citations, share of voice, AI answers, AI mentions.
# AI visibility / Brand Radar is currently Ahrefs-only among the SEO MCPs.
# Per-task selection happens in SKILL.md > Data Source Selection — NOT here.
# Other backends are listed for supplementary brand-monitoring work.
allowed-tools:
- mcp__ahrefs__*
- mcp__ahrefs__* # default (and currently the ONLY) source for Brand Radar / AI visibility
- mcp__claude_ai_Ahrefs__* # Ahrefs (Claude.ai namespace)
- mcp__ourseo__monitor_brand # OurSEO brand monitoring (web mention scan, not AI-search specific)
- mcp__semrush__* # supplementary — Semrush has no Brand Radar equivalent today
- Bash # `our` CLI: `our research google brand`, `our monitor brand`
- mcp__notion__*
- WebSearch
- WebFetch

View File

@@ -0,0 +1,38 @@
# OurSEO Agent (CLI + MCP)
OurSEO is **not an AI-visibility backend.** Use it here only as a supplement for general brand-monitoring work that complements Ahrefs Brand Radar.
## What OurSEO covers
```bash
# Web-wide brand mention scan via Google Custom Search
our research google brand "<brand>" --exclude <own.com>
# Korean engines (Naver brand presence)
our research naver serp "<brand>"
```
MCP equivalent:
```
mcp__ourseo__monitor_brand(brand="<brand>", exclude_domains=["<own.com>"])
```
## How OurSEO + Brand Radar pair
- **Brand Radar** (Ahrefs) → AI search citations, impressions, SOV, cited pages
- **OurSEO monitor_brand** → standard Google search brand mentions across the web
Together they show:
- "Where are we cited in AI vs the open web?"
- "Are the high-citation pages in AI also the ones earning standard organic links?"
- "Does our share of voice in AI match our share in Google brand SERPs?"
## Not for this skill when
- **AI mentions / impressions / SOV / cited domains/pages** — Brand Radar only.
- **AI engine breakdown** — Brand Radar `brand-radar-ai-responses`.
## Important
Treat OurSEO output as a **second axis**, not a substitute. Reporting AI visibility using only `monitor_brand` would mislead the user — those are open-web mentions, not AI citations.

View File

@@ -0,0 +1,21 @@
# Semrush MCP
**Not applicable** for AI search visibility / Brand Radar today. Semrush does not expose an equivalent product as of 2026-05.
Listed in this skill's `allowed-tools` only for forward compatibility if Semrush ships an AI-visibility product.
## Do not use Semrush for
- AI mentions / impressions / share of voice in AI answers
- Cited domains / cited pages in AI responses
- AI engine breakdown (ChatGPT / Gemini / Perplexity / Claude)
- Brand SOV history in AI search
## Use instead
- **Ahrefs Brand Radar** (`mcp__ahrefs__brand-radar-*`) — the only viable backend for the core capability today.
- **OurSEO `monitor_brand`** — for general web-mention monitoring (not AI-search specific) as a supplement.
## If a Semrush AI product ships
Update this stub and re-evaluate the Data Source Selection in `SKILL.md`. Until then, keep Brand Radar as the default and do not attempt to substitute Semrush.