Add SEO skills 33-34 and fix bugs in skills 19-34
New skills: - Skill 33: Site migration planner with redirect mapping and monitoring - Skill 34: Reporting dashboard with HTML charts and Korean executive reports Bug fixes (Skill 34 - report_aggregator.py): - Add audit_type fallback for skill identification (was only using audit_id prefix) - Extract health scores from nested data dict (technical_score, onpage_score, etc.) - Support subdomain matching in domain filter (blog.ourdigital.org matches ourdigital.org) - Skip self-referencing DASH- aggregated reports Bug fixes (Skill 20 - naver_serp_analyzer.py): - Remove VIEW tab selectors (removed by Naver in 2026) - Add new section detectors: books (도서), shortform (숏폼), influencer (인플루언서) Improvements (Skill 34 - dashboard/executive report): - Add Korean category labels for Chart.js charts (기술 SEO, 온페이지, etc.) - Add Korean trend labels (개선 중 ↑, 안정 →, 하락 중 ↓) - Add English→Korean issue description translation layer (20 common patterns) Documentation improvements: - Add Korean triggers to 4 skill descriptions (19, 25, 28, 31) - Expand Skill 32 SKILL.md from 40→143 lines (was 6/10, added workflow, output format, limitations) - Add output format examples to Skills 27 and 28 SKILL.md - Add limitations sections to Skills 27 and 28 - Update README.md, CLAUDE.md, AGENTS.md for skills 33-34 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
171
custom-skills/33-seo-migration-planner/desktop/SKILL.md
Normal file
171
custom-skills/33-seo-migration-planner/desktop/SKILL.md
Normal file
@@ -0,0 +1,171 @@
|
||||
---
|
||||
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 Ahrefs, 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 Ahrefs
|
||||
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
|
||||
|
||||
## MCP Tool Usage
|
||||
|
||||
### Ahrefs for SEO Baseline & Monitoring
|
||||
```
|
||||
mcp__ahrefs__site-explorer-metrics: Current organic metrics (traffic, keywords)
|
||||
mcp__ahrefs__site-explorer-metrics-history: Historical metrics for pre/post comparison
|
||||
mcp__ahrefs__site-explorer-top-pages: Top performing pages for baseline
|
||||
mcp__ahrefs__site-explorer-pages-by-traffic: Pages ranked by traffic for risk scoring
|
||||
mcp__ahrefs__site-explorer-organic-keywords: Keyword rankings per page
|
||||
mcp__ahrefs__site-explorer-referring-domains: Referring domains for risk scoring
|
||||
mcp__ahrefs__site-explorer-backlinks-stats: Backlink overview for migration impact
|
||||
```
|
||||
|
||||
### Firecrawl for URL Inventory & Redirect Verification
|
||||
```
|
||||
mcp__firecrawl__firecrawl_crawl: Crawl entire site for URL inventory
|
||||
mcp__firecrawl__firecrawl_scrape: Verify individual redirect health
|
||||
```
|
||||
|
||||
### Notion for Report Storage
|
||||
```
|
||||
mcp__notion__notion-create-pages: Save reports to SEO Audit Log
|
||||
```
|
||||
|
||||
### Perplexity for Migration Best Practices
|
||||
```
|
||||
mcp__perplexity__search: Research migration best practices and common pitfalls
|
||||
```
|
||||
|
||||
## 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 Ahrefs top pages baseline (traffic, keywords, backlinks per page)
|
||||
4. Fetch site-level metrics (total traffic, keywords, referring domains)
|
||||
5. Enrich URL inventory with Ahrefs traffic/backlink data
|
||||
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 Ahrefs 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
|
||||
|
||||
- Ahrefs data has ~24h freshness lag
|
||||
- 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
|
||||
10
custom-skills/33-seo-migration-planner/desktop/skill.yaml
Normal file
10
custom-skills/33-seo-migration-planner/desktop/skill.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
name: seo-migration-planner
|
||||
description: |
|
||||
SEO site migration planning and monitoring. Triggers: site migration, domain move, redirect mapping, platform migration, URL restructuring, 사이트 이전.
|
||||
allowed-tools:
|
||||
- mcp__ahrefs__*
|
||||
- mcp__firecrawl__*
|
||||
- mcp__notion__*
|
||||
- mcp__perplexity__*
|
||||
- WebSearch
|
||||
- WebFetch
|
||||
@@ -0,0 +1,37 @@
|
||||
# Ahrefs
|
||||
|
||||
> MCP tool documentation for migration planner skill
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `site-explorer-metrics` - Get current organic metrics (traffic, keywords) for a domain
|
||||
- `site-explorer-metrics-history` - Get historical organic metrics for pre/post comparison
|
||||
- `site-explorer-top-pages` - Get top performing pages by traffic for baseline
|
||||
- `site-explorer-pages-by-traffic` - Get pages ranked by organic traffic for risk scoring
|
||||
- `site-explorer-organic-keywords` - Get keyword rankings per page
|
||||
- `site-explorer-referring-domains` - Get referring domain list for risk scoring
|
||||
- `site-explorer-backlinks-stats` - Get backlink overview for migration impact assessment
|
||||
|
||||
## Configuration
|
||||
|
||||
- Requires Ahrefs MCP server configured in Claude Desktop
|
||||
- API access via `mcp__ahrefs__*` tool prefix
|
||||
|
||||
## Examples
|
||||
|
||||
```
|
||||
# Get site baseline metrics
|
||||
mcp__ahrefs__site-explorer-metrics(target="example.com")
|
||||
|
||||
# Get top pages for risk scoring
|
||||
mcp__ahrefs__site-explorer-top-pages(target="example.com", limit=500)
|
||||
|
||||
# Get traffic history for pre/post comparison
|
||||
mcp__ahrefs__site-explorer-metrics-history(target="example.com", date_from="2025-01-01")
|
||||
|
||||
# Get backlink stats for a specific page
|
||||
mcp__ahrefs__site-explorer-backlinks-stats(target="https://example.com/important-page")
|
||||
|
||||
# Get keyword rankings
|
||||
mcp__ahrefs__site-explorer-organic-keywords(target="example.com", limit=200)
|
||||
```
|
||||
@@ -0,0 +1,29 @@
|
||||
# Firecrawl
|
||||
|
||||
> MCP tool documentation for URL inventory crawling and redirect verification
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `firecrawl_crawl` - Crawl entire site to capture all URLs and status codes for migration inventory
|
||||
- `firecrawl_scrape` - Scrape individual pages to verify redirect health (status codes, chains, final URL)
|
||||
|
||||
## Configuration
|
||||
|
||||
- Requires Firecrawl MCP server configured in Claude Desktop
|
||||
- API access via `mcp__firecrawl__*` tool prefix
|
||||
|
||||
## Examples
|
||||
|
||||
```
|
||||
# Crawl full site for URL inventory
|
||||
mcp__firecrawl__firecrawl_crawl(url="https://example.com", limit=5000, scrapeOptions={"formats": ["links"]})
|
||||
|
||||
# Verify a redirect
|
||||
mcp__firecrawl__firecrawl_scrape(url="https://old-example.com/page", formats=["links"])
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- Crawl limit defaults to 5,000 URLs per run
|
||||
- For larger sites, run multiple crawls with path-based filtering
|
||||
- Redirect verification returns status_code, final_url, and redirect_chain
|
||||
@@ -0,0 +1,46 @@
|
||||
# Notion
|
||||
|
||||
> MCP tool documentation for saving migration planning and monitoring reports
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `notion-create-pages` - Create new pages in the SEO Audit Log database
|
||||
- `notion-update-page` - Update existing audit entries
|
||||
- `notion-query-database-view` - Query existing reports
|
||||
- `notion-search` - Search across Notion workspace
|
||||
|
||||
## Configuration
|
||||
|
||||
- Database ID: `2c8581e5-8a1e-8035-880b-e38cefc2f3ef`
|
||||
- All reports saved with Category: "SEO Migration"
|
||||
- Audit ID format: MIGR-YYYYMMDD-NNN
|
||||
|
||||
## Examples
|
||||
|
||||
```
|
||||
# Create migration planning report
|
||||
mcp__notion__notion-create-pages(
|
||||
database_id="2c8581e5-8a1e-8035-880b-e38cefc2f3ef",
|
||||
properties={
|
||||
"Issue": {"title": [{"text": {"content": "사이트 이전 계획 - example.com - 2025-01-15"}}]},
|
||||
"Site": {"url": "https://example.com"},
|
||||
"Category": {"select": {"name": "SEO Migration"}},
|
||||
"Priority": {"select": {"name": "High"}},
|
||||
"Found Date": {"date": {"start": "2025-01-15"}},
|
||||
"Audit ID": {"rich_text": [{"text": {"content": "MIGR-20250115-001"}}]}
|
||||
}
|
||||
)
|
||||
|
||||
# Create post-migration monitoring report
|
||||
mcp__notion__notion-create-pages(
|
||||
database_id="2c8581e5-8a1e-8035-880b-e38cefc2f3ef",
|
||||
properties={
|
||||
"Issue": {"title": [{"text": {"content": "이전 모니터링 보고서 - new-example.com - 2025-02-01"}}]},
|
||||
"Site": {"url": "https://new-example.com"},
|
||||
"Category": {"select": {"name": "SEO Migration"}},
|
||||
"Priority": {"select": {"name": "Critical"}},
|
||||
"Found Date": {"date": {"start": "2025-02-01"}},
|
||||
"Audit ID": {"rich_text": [{"text": {"content": "MIGR-20250201-001"}}]}
|
||||
}
|
||||
)
|
||||
```
|
||||
Reference in New Issue
Block a user