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

@@ -0,0 +1,54 @@
# Google Search Console
**Required** for migration baseline + post-launch monitoring. GSC is the only source for first-party impressions / clicks per URL pre-migration — modelled estimates from Semrush/Ahrefs cannot substitute.
## CLI commands
```bash
# Pre-migration baseline (PULL THIS BEFORE THE MIGRATION DATE)
our research search-console pages --site sc-domain:<old-domain> --days 90
our research search-console combined --site sc-domain:<old-domain> --days 90
our research search-console queries --site sc-domain:<old-domain> --days 90
# Post-migration (after new domain is verified in GSC)
our research search-console pages --site sc-domain:<new-domain> --days 28
our research search-console combined --site sc-domain:<new-domain> --days 28
```
`sc-domain:` prefix for Domain-verified properties; URL-prefix uses plain URL.
## Baseline checklist
Pre-migration, capture at minimum:
| File | Source | Window |
|---|---|---|
| `gsc-pages-90d.json` | `our research search-console pages` | 90 days pre-migration |
| `gsc-combined-90d.json` | `our research search-console combined` | 90 days pre-migration |
| `gsc-queries-90d.json` | `our research search-console queries` | 90 days pre-migration |
Store these alongside the OurSEO crawl baseline in the migration workspace.
## Post-launch monitoring
1. Wait for the new domain to verify in GSC (~24h after DNS propagation + sitemap submission).
2. Pull `pages` and `combined` on the new domain at +7d, +14d, +28d, +60d, +90d.
3. Diff against the baseline: which URLs lost impressions? Which queries dropped?
4. Cross-reference with OurSEO redirect verification — broken redirects are the most common cause of impression loss.
## Ahrefs GSC alternates
If both old and new domains are connected as Ahrefs projects:
```
mcp__ahrefs__gsc-pages(project_id="<id>")
mcp__ahrefs__gsc-pages-history(project_id="<id>")
mcp__ahrefs__gsc-performance-history(project_id="<id>")
```
## Not for this skill when
- **Pre-migration baseline before GSC verification** of the property — not possible. Get the domain verified well in advance.
- **Competitor migration analysis** — GSC is single-site.
Gotcha: `our-claude-skills/custom-skills/15-seo-search-console/code/gotcha/gsc-cli-integration.md`.

View File

@@ -0,0 +1,54 @@
# OurSEO Agent (CLI + MCP)
**Default** for URL inventory, on-page crawl, technical audit, and index-status baseline. Distributed crawler scales to large catalogs.
## CLI commands (Claude Code)
```bash
# URL inventory crawl (pre-migration)
our collect crawl https://<old-site> --max-pages 5000
our collect distributed https://<old-site> --workers 8 --max-pages 50000
# Technical audit (catches redirect chains, canonical issues that affect migration)
our audit tech https://<old-site>
# Index baseline
our research google index --domain <old-site>
# Schema baseline (preserve schema across migration)
our analyze mysql-batch --session <id> --export missing-schema --format excel
# Post-migration: re-run on new domain and diff
our collect crawl https://<new-site> --max-pages 5000
our research google index --domain <new-site>
our audit tech https://<new-site>
```
## MCP tools (Claude Desktop)
```
mcp__ourseo__crawl_website(url="<site>", max_pages=5000)
mcp__ourseo__check_index(domain="<site>")
mcp__ourseo__audit_page(url="<url>", audit_type="tech")
```
## Strengths for this skill
- **Distributed crawl** with URL-hash partitioning — handles catalogs >50K URLs.
- **Resume support** (`--resume`) — critical for multi-day baseline captures.
- **MySQL workspace** stores baseline crawl; post-migration diff is a SQL query against the same DB.
- **Index status spot-check** via `check_index` — finds URLs Google still has indexed from the old domain.
## Pair with Firecrawl
Firecrawl (`mcp__firecrawl__*`) is already in this skill's `allowed-tools`:
- Use **OurSEO** as the default crawler for most sites.
- Switch to **Firecrawl** when the target is JS-heavy (React/Vue/Angular SPA) and OurSEO's HTTP-level crawler under-reports URLs.
- Use Firecrawl `firecrawl_scrape` for per-URL **redirect verification** post-launch (cheaper than re-crawling the whole site).
## Not for this skill when
- **Per-URL traffic value for risk scoring** — Ahrefs `site-explorer-top-pages` / Semrush `url_research`.
- **First-party impression baseline** — GSC `pages` (REQUIRED for accurate post-migration diff).
- **GA4 traffic baseline** — `our research ga4 *` (covered in OurSEO CLI but distinct from crawl path).

View File

@@ -0,0 +1,39 @@
# Semrush MCP
For migrations, Semrush contributes **per-URL organic baseline**, **traffic value baseline**, and **cross-database comparison** when the migration involves a market change.
Call pattern: discovery → `get_report_schema``execute_report`.
## Key reports
- `organic_research` — full organic keyword list for the domain (baseline)
- `url_research` — per-URL organic data (KPI for redirect risk scoring)
- `overview_research` — site-level traffic + visibility baseline
- `trends_research` — period-over-period traffic deltas (post-launch monitoring)
## Example
```
# Pre-migration baseline
mcp__semrush__organic_research(query="<old-domain>", database="us")
mcp__semrush__url_research(query="<specific old URL>", database="us")
mcp__semrush__overview_research(query="<old-domain>", database="us")
# Post-migration monitoring
mcp__semrush__trends_research(query="<new-domain>", database="us")
```
Korean market: `database="kr"`.
## Strengths for this skill
- **`url_research`** gives per-URL organic data — useful input for redirect risk scoring alongside Ahrefs traffic value.
- **`trends_research`** simplifies post-migration period-over-period delta.
- Cross-database comparison helps validate visibility recovery across markets.
## Not for this skill when
- **URL inventory** — OurSEO `crawl_website` / Firecrawl `firecrawl_crawl`.
- **Backlink baseline** for risk scoring — Ahrefs `site-explorer-pages-by-backlinks`.
- **First-party impression baseline** — GSC `pages` / `combined` reports.
- **Redirect health checking post-launch** — Firecrawl `firecrawl_scrape` or WebFetch.