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:
@@ -20,20 +20,58 @@ Analyze backlink profiles, detect toxic links, find competitor link gaps, track
|
||||
5. **Broken Backlink Recovery** - Find and reclaim broken high-DR backlinks
|
||||
6. **Korean Platform Mapping** - Naver Blog, Cafe, Tistory, Brunch, Korean news
|
||||
|
||||
## MCP Tool Usage
|
||||
## Data Source Selection
|
||||
|
||||
### SEO Data
|
||||
This skill can pull backlink data from multiple backends. **Pick one per task** — don't fan out by default (cost + rate limits). Backlink graphs are the most cost-sensitive of all SEO data.
|
||||
|
||||
| Backend | Best for | Notes |
|
||||
|---|---|---|
|
||||
| **Ahrefs MCP** (`mcp__ahrefs__*`) | **Default** — Ahrefs' backlink graph remains the strongest in the industry. All `site-explorer-*` endpoints. | Primary capability: `site-explorer-domain-rating`, `-backlinks-stats`, `-referring-domains`, `-anchors`, `-broken-backlinks`, `-refdomains-history`. |
|
||||
| **Semrush MCP** (`mcp__semrush__*`) | Alternative when user is already in Semrush context or wants a second opinion | `backlink_research` covers similar ground; Authority Score replaces DR. Coverage is competitive but not identical to Ahrefs. |
|
||||
| **OurSEO** | **Not a backlink source.** No backlink graph in the OurSEO stack. | If asked, use OurSEO MCP / CLI only as a supplement for on-page link inventory (`crawl_website` extracts internal/outbound links from the target site itself). |
|
||||
| **WebSearch / WebFetch** | Manual spot-check of a specific referring URL | Useful for verifying anchor / context of a high-value referring page. |
|
||||
|
||||
### 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 comparison across vendors** (e.g., "verify Ahrefs claims with Semrush") → run both, document the source per metric.
|
||||
4. **Default**: **Ahrefs MCP** — backlink work is the one SEO task where Ahrefs is the default, not Semrush.
|
||||
5. **Still ambiguous + non-trivial** → ask once via `AskUserQuestion`.
|
||||
|
||||
### Backend call patterns
|
||||
|
||||
**Ahrefs MCP (default):**
|
||||
```
|
||||
our-seo-agent CLI: Primary backlink data source (future); use --input for pre-fetched JSON
|
||||
WebSearch / WebFetch: Supplementary backlink data
|
||||
mcp__ahrefs__site-explorer-domain-rating(target="<domain>")
|
||||
mcp__ahrefs__site-explorer-backlinks-stats(target="<domain>")
|
||||
mcp__ahrefs__site-explorer-referring-domains(target="<domain>", limit=100)
|
||||
mcp__ahrefs__site-explorer-anchors(target="<domain>")
|
||||
mcp__ahrefs__site-explorer-broken-backlinks(target="<domain>", limit=100)
|
||||
mcp__ahrefs__site-explorer-refdomains-history(target="<domain>", history="weekly")
|
||||
mcp__ahrefs__site-explorer-all-backlinks(target="<domain>", limit=500)
|
||||
mcp__ahrefs__site-explorer-linked-anchors-external(target="<competitor>")
|
||||
```
|
||||
|
||||
### Notion for Report Storage
|
||||
**Semrush MCP (alternative):**
|
||||
```
|
||||
mcp__notion__notion-create-pages: Save audit report to SEO Audit Log
|
||||
mcp__notion__notion-update-page: Update existing audit entries
|
||||
mcp__semrush__backlink_research(query="<domain>", database="us")
|
||||
mcp__semrush__get_report_schema(report_id="...")
|
||||
mcp__semrush__execute_report(report_id="...", params={...})
|
||||
```
|
||||
|
||||
**OurSEO (on-page link inventory, supplement only):**
|
||||
```
|
||||
mcp__ourseo__crawl_website(url="<domain>", max_pages=100)
|
||||
# Extract internal/outbound link inventory from crawl output — NOT a backlink graph.
|
||||
```
|
||||
|
||||
### Korean platform mapping
|
||||
|
||||
Backlinks from Korean platforms (Naver Blog, Cafe, Tistory, Brunch, Korean news) are often underrepresented in both Ahrefs and Semrush. After pulling from the chosen backend, supplement with `WebSearch` for major Korean directories and brand-name queries on Naver to spot-check coverage gaps.
|
||||
|
||||
Always record the chosen data source in the report **Overview** so future audits can compare like-for-like.
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. Backlink Profile Audit
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
name: seo-link-building
|
||||
description: |
|
||||
Link building diagnosis and backlink analysis. Triggers: backlink audit, link building, referring domains, toxic links, link gap, broken backlinks.
|
||||
|
||||
# Allowed tools list every backend the skill can pull backlink data from.
|
||||
# Per-task selection happens in SKILL.md > Data Source Selection — NOT here.
|
||||
allowed-tools:
|
||||
- mcp__ahrefs__*
|
||||
- mcp__ahrefs__* # default — backlink graph is Ahrefs' strongest moat
|
||||
- mcp__claude_ai_Ahrefs__* # Ahrefs (Claude.ai namespace)
|
||||
- mcp__semrush__* # backlink_research (alternative)
|
||||
- mcp__ourseo__* # gap: OurSEO has no backlink graph — Web/MCP only as supplement
|
||||
- mcp__notion__*
|
||||
- WebSearch
|
||||
- WebFetch
|
||||
|
||||
35
custom-skills/22-seo-link-building/desktop/tools/ourseo.md
Normal file
35
custom-skills/22-seo-link-building/desktop/tools/ourseo.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# OurSEO Agent (CLI + MCP)
|
||||
|
||||
**OurSEO is not a backlink-graph backend.** The OurSEO stack does not crawl the public web for inbound links; it only inventories outbound and internal links from the target site itself.
|
||||
|
||||
Use OurSEO here only as a **supplement** to Ahrefs or Semrush — never as the primary backlink source.
|
||||
|
||||
## What OurSEO can do for link work
|
||||
|
||||
```bash
|
||||
# Crawl the target site for outbound and internal link inventory
|
||||
our collect crawl https://<site> --max-pages 200
|
||||
|
||||
# Schema-side sameAs validation (links from JSON-LD)
|
||||
our audit sameas https://<site> --brand "<brand>"
|
||||
```
|
||||
|
||||
MCP equivalent (Claude Desktop):
|
||||
|
||||
```
|
||||
mcp__ourseo__crawl_website(url="<site>", max_pages=200)
|
||||
```
|
||||
|
||||
Output includes per-page `links` dict with internal/external entries — useful for:
|
||||
- Auditing **internal** linking to high-value pages.
|
||||
- Validating that **sameAs** schema links resolve (not dead).
|
||||
- Counting outbound link velocity for content templates.
|
||||
|
||||
## Not for this skill when
|
||||
|
||||
- **Anything inbound** — referring domains, anchor distribution, broken backlinks, DR, link velocity. Use Ahrefs (default) or Semrush.
|
||||
- **Toxic link detection** — needs an authoritative backlink graph; OurSEO has none.
|
||||
|
||||
## Korean platform mapping
|
||||
|
||||
Pair Ahrefs/Semrush output with `WebSearch` for Korean platforms that both vendors underrepresent: Naver Blog, Cafe, Tistory, Brunch, Korean news.
|
||||
30
custom-skills/22-seo-link-building/desktop/tools/semrush.md
Normal file
30
custom-skills/22-seo-link-building/desktop/tools/semrush.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Semrush MCP
|
||||
|
||||
Alternative backlink backend. Use when the user is already in Semrush context, wants a second opinion, or doesn't have an Ahrefs subscription. Ahrefs remains the default for backlink work in this skill.
|
||||
|
||||
Call pattern: discovery → `get_report_schema` → `execute_report`.
|
||||
|
||||
## Key reports
|
||||
|
||||
- `backlink_research` — referring domains, backlink count, anchor distribution
|
||||
- Authority Score (Semrush's equivalent of Ahrefs DR)
|
||||
- Toxic Score for risk flagging
|
||||
|
||||
## Example
|
||||
|
||||
```
|
||||
mcp__semrush__backlink_research(query="<domain>", database="us")
|
||||
mcp__semrush__get_report_schema(report_id="<id>")
|
||||
mcp__semrush__execute_report(report_id="<id>", params={...})
|
||||
```
|
||||
|
||||
## When to use over Ahrefs
|
||||
|
||||
- User explicitly prefers Semrush data.
|
||||
- Cross-vendor verification ("does Semrush agree with Ahrefs on this referring domain?").
|
||||
- Authority Score weighting instead of DR.
|
||||
|
||||
## Not for this skill when
|
||||
|
||||
- **Default backlink work** — Ahrefs has the stronger backlink graph; use it unless the user named Semrush.
|
||||
- **Korean platform refdomains** — both Semrush and Ahrefs underrepresent Naver Blog/Cafe/Tistory; supplement with WebSearch.
|
||||
Reference in New Issue
Block a user