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>
221 lines
10 KiB
Markdown
221 lines
10 KiB
Markdown
---
|
|
name: seo-migration-planner
|
|
description: |
|
|
SEO site migration planning and monitoring. Triggers: site migration, domain move, redirect mapping, platform migration, URL restructuring, HTTPS migration, subdomain consolidation, 사이트 이전, 도메인 이전, 리디렉트 매핑.
|
|
---
|
|
|
|
# SEO Migration Planner & Monitor
|
|
|
|
## Purpose
|
|
|
|
Comprehensive site migration planning and post-migration monitoring for SEO: crawl-based URL inventory, traffic/keyword baseline capture via our-seo-agent CLI, redirect map generation with per-URL risk scoring, pre-migration checklist creation, and post-launch traffic/indexation/ranking recovery tracking with automated alerts. Supports domain moves, platform changes, URL restructuring, HTTPS migrations, and subdomain consolidation.
|
|
|
|
## Core Capabilities
|
|
|
|
1. **URL Inventory** - Crawl entire site via Firecrawl to capture all URLs and status codes
|
|
2. **Traffic Baseline** - Capture per-page traffic, keywords, and backlinks via our-seo-agent CLI
|
|
3. **Redirect Map Generation** - Create old URL -> new URL mappings with 301 redirect rules
|
|
4. **Risk Scoring** - Score each URL (0-100) based on traffic, backlinks, and keyword rankings
|
|
5. **Pre-Migration Checklist** - Generate type-specific migration checklist (Korean)
|
|
6. **Post-Migration Traffic Comparison** - Compare pre vs post traffic by page group
|
|
7. **Redirect Health Check** - Detect broken redirects, chains, and loops
|
|
8. **Indexation Tracking** - Monitor indexed page count changes and missing pages
|
|
9. **Ranking Monitoring** - Track keyword position changes for priority keywords
|
|
10. **Recovery Estimation** - Estimate traffic recovery timeline based on migration type
|
|
11. **Alert Generation** - Flag traffic drops >20%, broken redirects, indexation loss
|
|
|
|
## Data Source Selection
|
|
|
|
Site migration spans **URL inventory** (crawl), **traffic/keyword/backlink baseline** (third-party + first-party), **redirect verification** (live HTTP), and **post-launch monitoring** (delta over time). Pick per data class — migration baselines often combine 3-4 backends.
|
|
|
|
| Backend | Best for | Notes |
|
|
|---|---|---|
|
|
| **OurSEO** (CLI + MCP) | **Default** for URL inventory, on-page crawl, index status, technical audit, schema baseline | CLI: `our collect crawl`, `our collect distributed`, `our audit tech`, `our research google index`. MCP: `mcp__ourseo__crawl_website`, `mcp__ourseo__check_index`. Distributed crawler for sites >5K URLs. |
|
|
| **Firecrawl MCP** (`mcp__firecrawl__*`) | Large-scale URL inventory when OurSEO crawler is unavailable; per-URL redirect verification | `firecrawl_crawl` for full site map; `firecrawl_scrape` for redirect health on a specific URL. Useful when target is JS-heavy. |
|
|
| **Ahrefs MCP** (`mcp__ahrefs__*`) | Per-URL **traffic value + backlink count** baseline (risk scoring), top pages by traffic | `site-explorer-top-pages` (traffic per URL), `site-explorer-pages-by-backlinks`, `site-explorer-metrics`, `site-explorer-metrics-history`, `site-explorer-pages-history`. |
|
|
| **Semrush MCP** (`mcp__semrush__*`) | Per-URL organic traffic + keyword baseline | `organic_research`, `url_research`, `overview_research`. |
|
|
| **GSC** (via `our research search-console`) | **First-party impression baseline** — what Google rendered for each URL pre-migration | Required for ground-truth post-migration comparison. Use `pages` / `combined` reports. |
|
|
| **GA4** (via `our research ga4 *`) | First-party traffic baseline (sessions, conversions per URL) | Best for actual user-traffic baseline, complements GSC impressions. |
|
|
| **Perplexity MCP** (`mcp__perplexity__*`) | Research migration best practices, common pitfalls per migration type | Not a data source — guidance enrichment. |
|
|
|
|
### 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. **URL inventory** → **OurSEO** crawler (CLI primary). Use Firecrawl only when OurSEO crawler can't handle the target (e.g., JS-heavy SPA).
|
|
4. **Per-URL traffic value for risk scoring** → Ahrefs `site-explorer-top-pages` is the strongest signal. Semrush `url_research` is the alternate.
|
|
5. **First-party baseline (REQUIRED for accurate post-migration diff)** → GSC + GA4 via `our` CLI. Always capture before migration date.
|
|
6. **Redirect verification** (post-launch) → Firecrawl `firecrawl_scrape` per URL OR `WebFetch` with redirect following.
|
|
7. **Default baseline stack**: OurSEO crawl + Ahrefs top-pages + GSC pages + GA4 traffic. Document every source.
|
|
8. **Still ambiguous + non-trivial** → ask once via `AskUserQuestion`.
|
|
|
|
### Backend call patterns
|
|
|
|
**OurSEO CLI (default — URL inventory + audit):**
|
|
```bash
|
|
our collect crawl https://<site> --max-pages 5000
|
|
our collect distributed https://<site> --workers 8 --max-pages 50000
|
|
our audit tech https://<site>
|
|
our research google index --domain <site>
|
|
```
|
|
|
|
**OurSEO MCP (Claude Desktop):**
|
|
```
|
|
mcp__ourseo__crawl_website(url="<site>", max_pages=5000)
|
|
mcp__ourseo__check_index(domain="<site>")
|
|
```
|
|
|
|
**Firecrawl (URL inventory + redirect verification):**
|
|
```
|
|
mcp__firecrawl__firecrawl_crawl(url="<site>", limit=5000)
|
|
mcp__firecrawl__firecrawl_scrape(url="<specific URL>", formats=["markdown"])
|
|
```
|
|
|
|
**Ahrefs MCP (per-URL traffic + backlink baseline):**
|
|
```
|
|
mcp__ahrefs__site-explorer-top-pages(target="<site>", country="us", limit=500)
|
|
mcp__ahrefs__site-explorer-pages-by-backlinks(target="<site>", limit=500)
|
|
mcp__ahrefs__site-explorer-metrics(target="<site>")
|
|
mcp__ahrefs__site-explorer-metrics-history(target="<site>", history="weekly")
|
|
mcp__ahrefs__site-explorer-pages-history(target="<site>")
|
|
```
|
|
|
|
**Semrush MCP (per-URL organic baseline):**
|
|
```
|
|
mcp__semrush__organic_research(query="<site>", database="us")
|
|
mcp__semrush__url_research(query="<specific URL>", database="us")
|
|
mcp__semrush__overview_research(query="<site>", database="us")
|
|
```
|
|
|
|
**First-party baseline (GSC + GA4):**
|
|
```bash
|
|
our research search-console pages --site sc-domain:<site> --days 90
|
|
our research search-console combined --site sc-domain:<site> --days 90
|
|
our research ga4 traffic --property-id <id>
|
|
our research ga4 landing-pages --property-id <id>
|
|
```
|
|
|
|
**Migration best practices (Perplexity):**
|
|
```
|
|
mcp__perplexity__search(query="SEO migration <type> best practices")
|
|
```
|
|
|
|
Always record the chosen data source(s) per metric in the **planning report's Baseline** section and re-use the same sources in **post-migration monitoring** so the diff is meaningful.
|
|
|
|
## Workflow
|
|
|
|
### Pre-Migration Planning
|
|
1. Accept target domain, migration type, and new domain (if applicable)
|
|
2. Crawl URL inventory via Firecrawl (capture all URLs + status codes)
|
|
3. Fetch top pages baseline via our-seo-agent CLI or pre-fetched data
|
|
4. Fetch site-level metrics (total traffic, keywords, referring domains)
|
|
5. Enrich URL inventory with traffic/backlink data from our-seo-agent CLI
|
|
6. Score risk per URL (0-100) based on traffic weight (40%), backlinks (30%), keywords (30%)
|
|
7. Generate redirect map (old URL -> new URL) based on migration type
|
|
8. Aggregate risk assessment (high/medium/low URL counts, overall risk level)
|
|
9. Generate pre-migration checklist (common + type-specific items, in Korean)
|
|
10. Save baseline and plan to Notion
|
|
|
|
### Post-Migration Monitoring
|
|
1. Accept domain, migration date, and optional baseline JSON
|
|
2. Compare pre vs post traffic using our-seo-agent metrics history
|
|
3. Check redirect health via Firecrawl (broken, chains, loops)
|
|
4. Track indexation changes (pre vs post page count, missing pages)
|
|
5. Track keyword ranking changes for priority keywords
|
|
6. Estimate recovery timeline based on traffic delta and migration type
|
|
7. Generate alerts for significant issues (traffic >20% drop, broken redirects, etc.)
|
|
8. Save monitoring report to Notion
|
|
|
|
## Output Format
|
|
|
|
### Planning Report
|
|
```markdown
|
|
## SEO 사이트 이전 계획: [domain]
|
|
|
|
### 베이스라인
|
|
- 전체 URL 수: [count]
|
|
- 오가닉 트래픽: [traffic]
|
|
- 오가닉 키워드: [keywords]
|
|
- 참조 도메인: [count]
|
|
|
|
### 위험 평가
|
|
- 전체 위험도: [HIGH/MEDIUM/LOW]
|
|
- 고위험 URL: [count]개
|
|
- 중위험 URL: [count]개
|
|
- 저위험 URL: [count]개
|
|
|
|
### 리디렉트 맵 (상위 위험 URL)
|
|
| Source URL | Target URL | Risk Score | Priority |
|
|
|------------|------------|------------|----------|
|
|
|
|
### 사전 체크리스트
|
|
- [ ] Step 1: ...
|
|
- [ ] Step 2: ...
|
|
```
|
|
|
|
### Monitoring Report
|
|
```markdown
|
|
## SEO 이전 모니터링 보고서: [domain]
|
|
### 이전일: [date] | 경과일: [N]일
|
|
|
|
### 알림
|
|
- [severity] [message]
|
|
|
|
### 트래픽 비교
|
|
| Page Group | Pre | Post | Change | Status |
|
|
|------------|-----|------|--------|--------|
|
|
|
|
### 리디렉트 상태
|
|
- 전체: [count] | 정상: [count] | 깨짐: [count] | 체인: [count]
|
|
|
|
### 인덱싱 현황
|
|
- 이전 전: [count] | 이전 후: [count] | 변화: [pct]%
|
|
|
|
### 회복 예상
|
|
- 예상 기간: [weeks]주
|
|
- 현재 회복률: [pct]%
|
|
```
|
|
|
|
## Risk Scoring Methodology
|
|
|
|
| Factor | Weight | Scale |
|
|
|--------|--------|-------|
|
|
| Traffic | 40% | 1,000+ monthly visits = high risk |
|
|
| Backlinks | 30% | 50+ referring domains = high risk |
|
|
| Keywords | 30% | 20+ keyword rankings = high risk |
|
|
|
|
### Priority Classification
|
|
|
|
| Risk Score | Priority | Action |
|
|
|------------|----------|--------|
|
|
| 75-100 | Critical | Manual redirect verification required |
|
|
| 50-74 | High | Priority redirect with monitoring |
|
|
| 25-49 | Medium | Standard redirect |
|
|
| 0-24 | Low | Batch redirect |
|
|
|
|
## Alert Thresholds
|
|
|
|
| Alert Type | Threshold | Severity |
|
|
|------------|-----------|----------|
|
|
| Traffic drop | >20% | warning; >40% critical |
|
|
| Broken redirects | >0 | warning; >10 critical |
|
|
| Redirect chains | >0 | warning |
|
|
| Indexation loss | >10% | warning; >30% critical |
|
|
| Ranking drop | >5 positions (volume 100+) | warning; >20 keywords critical |
|
|
|
|
## Limitations
|
|
|
|
- Data freshness depends on source and collection method
|
|
- Firecrawl crawl limited to 5,000 URLs per run
|
|
- Redirect chain detection depends on Firecrawl following redirects
|
|
- Recovery estimation is heuristic-based on industry averages
|
|
- URL restructuring requires manual mapping rules (no auto-pattern detection)
|
|
|
|
## Notion Output (Required)
|
|
|
|
All reports MUST be saved to OurDigital SEO Audit Log:
|
|
- **Database ID**: `2c8581e5-8a1e-8035-880b-e38cefc2f3ef`
|
|
- **Properties**: Issue (title), Site (url), Category ("SEO Migration"), Priority, Found Date, Audit ID
|
|
- **Language**: Korean with English technical terms
|
|
- **Audit ID Format**: MIGR-YYYYMMDD-NNN
|