Run the additive migration pass from SKILL-MIGRATION-GUIDE: generate a root SKILL.md for every skill that lacked one, copied from its desktop/SKILL.md (or code/SKILL.md), with name set to the directory name and description + body preserved verbatim. - scripts/migrate_skill_root.py: the reusable, non-destructive migrator (dry-run default). - 61 new root SKILL.md (desktop source for most; code/SKILL.md for 61/62/92). - Untouched: 16/17/95 (already had root); desktop/ and code/ packaging left intact. - All 64 root SKILL.md validate: frontmatter <=1024, kebab name, description present. Still MANUAL (no SKILL.md source — commands/README only), need hand-authored root SKILL.md: 81-mac-optimizer, 90-reference-curator, 91-multi-agent-guide, 94-dintel-bootstrap. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
169 lines
7.4 KiB
Markdown
169 lines
7.4 KiB
Markdown
---
|
|
name: 26-seo-international
|
|
description: |
|
|
International SEO audit and hreflang validation for multi-language and multi-region websites.
|
|
Triggers: hreflang, international SEO, multi-language, multi-region, content parity, x-default, ccTLD, 다국어 SEO.
|
|
---
|
|
|
|
# International SEO Audit
|
|
|
|
## Purpose
|
|
|
|
Audit international SEO implementation: hreflang tags, URL structure patterns, content parity across language versions, redirect logic, and Korean expansion strategies. Identify issues preventing proper multi-language indexing.
|
|
|
|
## Core Capabilities
|
|
|
|
1. **Hreflang Validation** - Bidirectional links, self-reference, x-default, language code validation
|
|
2. **URL Structure Analysis** - ccTLD vs subdomain vs subdirectory pattern detection
|
|
3. **Content Parity Audit** - Page count comparison, key page availability across languages
|
|
4. **Redirect Logic Audit** - IP-based, Accept-Language redirects, forced redirect detection
|
|
5. **Korean Expansion** - Priority markets (ja, zh, en), CJK URL issues, regional search engines
|
|
|
|
## Data Source Selection
|
|
|
|
International SEO spans **hreflang validation** (crawl-derived), **content parity** (crawl-derived), and **per-country traffic** (modelled). Pick one backend per data class.
|
|
|
|
| Backend | Best for | Notes |
|
|
|---|---|---|
|
|
| **OurSEO** (CLI + MCP) | **Default** — hreflang validation, content parity, redirect logic, fix engine | CLI: `our collect crawl`, `our audit tech`, `our fix hreflang`. MCP: `mcp__ourseo__crawl_website`, `mcp__ourseo__audit_page`. Only backend that owns the hreflang FIX path. |
|
|
| **Ahrefs MCP** (`mcp__ahrefs__*`) | Per-country traffic distribution; hreflang issues from Ahrefs site audit | `web-analytics-countries`, `site-explorer-metrics-by-country`, `site-audit-issues`. |
|
|
| **Semrush MCP** (`mcp__semrush__*`) | Per-database organic visibility (compare `kr`, `jp`, `us`, etc.) | `organic_research` with different `database` params; `siteaudit_research` for site-audit issues. |
|
|
| **OurSEO CLI — Naver / per-region SERP** | Korean expansion + regional search engine SERP checks | `our research naver serp`, `our research keywords compare --engines naver`. |
|
|
| **WebSearch / WebFetch** | Test geo/Accept-Language redirect behaviour, verify ccTLD handling | Required for redirect-logic audit — can't be done via SEO MCPs. |
|
|
| **DataForSEO MCP** (`mcp__dfs-mcp__*`) | Per-country SERP fallback when `our` CLI isn't running | `serp_organic_live_advanced` with `location_code` per country. |
|
|
|
|
### 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 hreflang validation / parity / fix** → use **OurSEO** (CLI primary, MCP for Desktop). No alternative owns the fix engine.
|
|
4. **Task is per-country traffic distribution** → Ahrefs `web-analytics-countries` or Semrush `organic_research` across multiple `database` values.
|
|
5. **Task is redirect-logic audit** (IP-based / Accept-Language) → WebFetch with explicit headers.
|
|
6. **Default**: **OurSEO crawl + hreflang audit** for the validation work; Semrush MCP for cross-market visibility.
|
|
7. **Still ambiguous + non-trivial** → ask once via `AskUserQuestion`.
|
|
|
|
### Backend call patterns
|
|
|
|
**OurSEO CLI (default — hreflang validation + fix):**
|
|
```bash
|
|
our collect crawl https://<site> --max-pages 200
|
|
our audit tech https://<site>
|
|
our fix hreflang --site https://<site>
|
|
```
|
|
|
|
**OurSEO MCP (Claude Desktop):**
|
|
```
|
|
mcp__ourseo__crawl_website(url="<site>", max_pages=200)
|
|
mcp__ourseo__audit_page(url="<url>", audit_type="tech")
|
|
```
|
|
|
|
**Ahrefs MCP (per-country traffic):**
|
|
```
|
|
mcp__ahrefs__web-analytics-countries(domain="<site>")
|
|
mcp__ahrefs__site-explorer-metrics-by-country(target="<site>")
|
|
mcp__ahrefs__site-audit-issues(project_id="<id>")
|
|
```
|
|
|
|
**Semrush MCP (cross-market visibility):**
|
|
```
|
|
mcp__semrush__organic_research(query="<site>", database="kr")
|
|
mcp__semrush__organic_research(query="<site>", database="jp")
|
|
mcp__semrush__siteaudit_research(query="<site>", database="us")
|
|
```
|
|
|
|
**Redirect-logic audit (manual):**
|
|
```
|
|
WebFetch: https://<site>/ with Accept-Language: ko-KR
|
|
WebFetch: https://<site>/ with Accept-Language: ja-JP
|
|
WebFetch: https://<site>/ with Accept-Language: en-US
|
|
# Compare redirect chains; flag forced geo/language redirects.
|
|
```
|
|
|
|
Always record the chosen data source(s) in the report **Overview** so future audits can compare like-for-like.
|
|
|
|
## Workflow
|
|
|
|
### 1. Hreflang Validation
|
|
1. Fetch target URL and extract hreflang tags (HTML head, HTTP headers)
|
|
2. If sitemap provided, also extract xhtml:link hreflang from XML sitemap
|
|
3. Validate language codes (ISO 639-1) and region codes (ISO 3166-1)
|
|
4. Check bidirectional links (if A references B, B must reference A)
|
|
5. Verify self-referencing tags on each page
|
|
6. Check x-default tag presence and validity
|
|
7. Detect conflicting hreflang for same language-region
|
|
8. Report all errors with severity levels
|
|
|
|
### 2. URL Structure Analysis
|
|
1. Crawl known language versions of the site
|
|
2. Classify pattern: ccTLD (example.kr), subdomain (ko.example.com), subdirectory (example.com/ko/)
|
|
3. Check consistency across all language versions
|
|
4. Provide recommendation based on business context
|
|
|
|
### 3. Content Parity Audit
|
|
1. Discover all language versions from hreflang tags
|
|
2. Count pages per language version
|
|
3. Check availability of key pages (home, about, contact, products/services)
|
|
4. Compare content freshness (last modified dates) across versions
|
|
5. Flag significant gaps in content availability
|
|
|
|
### 4. Redirect Logic Audit
|
|
1. Test URL with different Accept-Language headers (ko, en, ja, zh)
|
|
2. Check if redirects are forced (no way to override) vs suggested (banner/popup)
|
|
3. Flag forced geo/language redirects as anti-pattern
|
|
4. Recommend proper implementation (suggest, do not force)
|
|
|
|
### 5. Korean Expansion Analysis (Optional)
|
|
1. Analyze current traffic by country via our-seo-agent CLI or pre-fetched data
|
|
2. Recommend priority target markets for Korean businesses
|
|
3. Check CJK-specific URL encoding issues
|
|
4. Advise on regional search engines (Naver, Baidu, Yahoo Japan)
|
|
|
|
## Output Format
|
|
|
|
```markdown
|
|
## 다국어 SEO 감사: [domain]
|
|
|
|
### Hreflang 검증
|
|
- 검사 페이지 수: [count]
|
|
- 오류: [count] (심각 [count], 경고 [count])
|
|
- 양방향 링크 누락: [list]
|
|
- 자기참조 누락: [list]
|
|
- x-default: [있음/없음]
|
|
|
|
### URL 구조
|
|
- 패턴: [ccTLD/subdomain/subdirectory]
|
|
- 일관성: [양호/비일관]
|
|
- 권장사항: [recommendation]
|
|
|
|
### 콘텐츠 동등성
|
|
| 언어 | 페이지 수 | 핵심 페이지 | 최신성 점수 |
|
|
|------|----------|------------|-----------|
|
|
| ko | 150 | 5/5 | 90 |
|
|
| en | 120 | 4/5 | 75 |
|
|
|
|
### 리다이렉트 로직
|
|
- IP 기반 리다이렉트: [있음/없음]
|
|
- 언어 기반 리다이렉트: [있음/없음]
|
|
- 강제 리다이렉트: [있음/없음] (없어야 정상)
|
|
|
|
### 종합 점수: [score]/100
|
|
|
|
### 권장 조치사항
|
|
1. [Priority fixes in Korean]
|
|
```
|
|
|
|
## Notion Output (Required)
|
|
|
|
All audit reports MUST be saved to OurDigital SEO Audit Log:
|
|
- **Database ID**: `2c8581e5-8a1e-8035-880b-e38cefc2f3ef`
|
|
- **Properties**: Issue (title), Site (url), Category (International SEO), Priority, Found Date, Audit ID
|
|
- **Language**: Korean with English technical terms
|
|
- **Audit ID Format**: INTL-YYYYMMDD-NNN
|
|
|
|
## Limitations
|
|
|
|
- Cannot detect server-side IP-based redirects without proxy testing
|
|
- Content language detection requires sufficient text content
|
|
- Large sites (10,000+ pages) require sampling approach
|
|
- Sitemap-based hreflang requires XML sitemap access
|