Hreflang & International SEO
Hreflang and international SEO audit, validation, and generation.
How to use it
- Hit Copy SKILL.md — or use the Claude Code line below to get every file.
- Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
ChatGPT: make a Project and paste it into Instructions.
Neither? Paste it at the top of a new chat — it works for that chat. - Describe your job in plain words. The AI follows the skill from there.
npx degit AgriciDaniel/claude-seo/skills/seo-hreflang#main ~/.claude/skills/seo-hreflangFor one project only, change the path to .claude/skills/seo-hreflang. This skill also uses cultural-profiles.md — copying SKILL.md alone won't be enough. See the folder on GitHub.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Show the full text284 lines
Hreflang & International SEO
Validate existing hreflang implementations or generate correct hreflang tags for multi-language and multi-region sites. Supports HTML, HTTP header, and XML sitemap implementations.
Validation Checks
1. Self-Referencing Tags
- Every page must include an hreflang tag pointing to itself
- The self-referencing URL must exactly match the page's canonical URL
- Missing self-referencing tags cause Google to ignore the entire hreflang set
2. Return Tags
- If page A links to page B with hreflang, page B must link back to page A
- Every hreflang relationship must be bidirectional (A→B and B→A)
- Missing return tags invalidate the hreflang signal for both pages
- Check all language versions reference each other (full mesh)
3. x-default Tag
- Recommended when a selector/fallback URL exists: designates the fallback page for unmatched languages/regions
- Typically points to the language selector page or English version
- Only one x-default per set of alternates
- Must also have return tags from all other language versions
4. Language Code Validation
- Must use ISO 639-1 two-letter codes (e.g.,
en,fr,de,ja) - An optional ISO 15924 script subtag is the documented, official mechanism
for script:
zh-Hant(Traditional) /zh-Hans(Simplified). Script may combine with a region, e.g.zh-Hans-USis valid (language + script + region). - Common errors:
enginstead ofen(ISO 639-2, not valid for hreflang)jpinstead ofja(incorrect code for Japanese)zhis valid but ambiguous for script-specific pages; preferzh-Hansorzh-Hantwhen targeting a script
5. Region Code Validation
- Optional region qualifier uses ISO 3166-1 Alpha-2 (e.g.,
en-US,en-GB,pt-BR) - Format:
language-REGION(lowercase language, uppercase region) - A country code alone is invalid, you cannot specify a region without a
language (Google's own bad example is
be, which is actually the Belarusian language code, not Belgium). - Common errors:
en-ukinstead ofen-GB(UK is not a valid ISO 3166-1 region code)EU/UNas a region (not valid ISO 3166-1 values)es-LA(Latin America is not a country; use specific countries)- Region without language prefix
5b. Geo-targeting signal hierarchy
- Practical locale-signal heuristic: ccTLD > hreflang annotations > server location/IP > addresses/language/currency/Business Profile. Do not present this as a confirmed Google ranking order. hreflang is a hint, not a directive. Google ignores locational meta tags and HTML geotargeting attributes.
- The Search Console International Targeting report and the manual country-targeting setting were removed in 2022, do not recommend setting country targeting in GSC; hreflang is the remaining lever.
5c. Region-specific Search units (EEA, South Africa, Turkiye)
- Google documents Search experiences that exist only in certain countries: aggregator units, supplier units, and carousels for hotel, flight, long-distance transport, and product queries shown to users in the EEA, South Africa, and Turkiye (documentation added 2026-09-08). Eligibility and participation are documented per unit; they are not ranking signals.
- When a site serves those regions with hreflang variants, note in the report whether the business is an aggregator or a direct supplier and point to the regional documentation, so the client is not surprised by a different result layout in those markets.
6. Canonical URL Alignment
- Hreflang tags must only appear on canonical URLs
- If a page has
rel=canonicalpointing elsewhere, hreflang on that page is ignored - The canonical URL and hreflang URL must match exactly (including trailing slashes)
- Non-canonical pages should not be in any hreflang set
7. Protocol Consistency
- All URLs in an hreflang set must use the same protocol (HTTPS or HTTP)
- Mixed HTTP/HTTPS in hreflang sets causes validation failures
- After HTTPS migration, update all hreflang tags to HTTPS
8. Cross-Domain Support
- Hreflang works across different domains (e.g., example.com and example.de)
- Cross-domain hreflang requires return tags on both domains
- Use Google Search Console verification for monitoring or cross-site sitemap submission when needed
- Sitemap-based implementation recommended for cross-domain setups
Common Mistakes
| Issue | Severity | Fix |
|---|---|---|
| Missing self-referencing tag | Critical | Add hreflang pointing to same page URL |
| Missing return tags (A→B but no B→A) | Critical | Add matching return tags on all alternates |
| Missing x-default when fallback behavior is required | Medium | Add x-default pointing to fallback/selector page |
Invalid language code (e.g., eng) |
High | Use ISO 639-1 two-letter codes |
Invalid region code (e.g., en-uk) |
High | Use ISO 3166-1 Alpha-2 codes |
| Hreflang on non-canonical URL | High | Move hreflang to canonical URL only |
| HTTP/HTTPS mismatch in URLs | Medium | Standardize all URLs to HTTPS |
| Trailing slash inconsistency | Medium | Match canonical URL format exactly |
| Hreflang in both HTML and sitemap | Low | Choose one method (sitemap preferred for large sites) |
| Language without region when needed | Low | Add region qualifier for geo-targeted content |
Implementation Methods
Method 1: HTML Link Tags
Best for: Sites with <50 language/region variants per page.
<link rel="alternate" hreflang="en-US" href="https://example.com/page" />
<link rel="alternate" hreflang="en-GB" href="https://example.co.uk/page" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page" />
Place in <head> section. Every page must include all alternates including itself.
Method 2: HTTP Headers
Best for: Non-HTML files (PDFs, documents).
Link: <https://example.com/page>; rel="alternate"; hreflang="en-US",
<https://example.com/fr/page>; rel="alternate"; hreflang="fr",
<https://example.com/page>; rel="alternate"; hreflang="x-default"
Set via server configuration or CDN rules.
Method 3: XML Sitemap (Recommended for large sites)
Best for: Sites with many language variants, cross-domain setups, or 50+ pages.
See Hreflang Sitemap Generation section below.
Method Comparison
| Method | Best For | Pros | Cons |
|---|---|---|---|
| HTML link tags | Small sites (<50 variants) | Easy to implement, visible in source | Bloats <head>, hard to maintain at scale |
| HTTP headers | Non-HTML files | Works for PDFs, images | Complex server config, not visible in HTML |
| XML sitemap | Large sites, cross-domain | Scalable, centralized management | Not visible on page, requires sitemap maintenance |
Hreflang Generation
Process
- Detect languages: Scan site for language indicators (URL path, subdomain, TLD, HTML lang attribute)
- Map page equivalents: Match corresponding pages across languages/regions
- Validate language codes: Verify all codes against ISO 639-1 and ISO 3166-1
- Generate tags: Create hreflang tags for each page including self-referencing
- Verify return tags: Confirm all relationships are bidirectional
- Add x-default: Set fallback for each page set
- Output: Generate implementation code (HTML, HTTP headers, or sitemap XML)
Hreflang Sitemap Generation
Sitemap with Hreflang
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/page</loc>
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" />
<xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
<xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
</url>
<url>
<loc>https://example.com/fr/page</loc>
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" />
<xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
<xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
</url>
</urlset>
Key rules:
- Include the
xmlns:xhtmlnamespace declaration - Every
<url>entry must include ALL language alternates (including itself) - Each alternate must appear as a separate
<url>entry with its own full set - Split at whichever comes first: 50,000 URLs or 50MB uncompressed per sitemap file
Output
Hreflang Validation Report
Summary
- Total pages scanned: XX
- Language variants detected: XX
- Issues found: XX (Critical: X, High: X, Medium: X, Low: X)
Validation Results
| Language | URL | Self-Ref | Return Tags | x-default | Status |
|---|---|---|---|---|---|
| en-US | https://... | ✅ | ✅ | ✅ | ✅ |
| fr | https://... | ❌ | ⚠️ | ✅ | ❌ |
| de | https://... | ✅ | ❌ | ✅ | ❌ |
Generated Hreflang Tags
- HTML
<link>tags (if HTML method chosen) - HTTP header values (if header method chosen)
hreflang-sitemap.xml(if sitemap method chosen)
Recommendations
- Missing implementations to add
- Incorrect codes to fix
- Method migration suggestions (e.g., HTML to sitemap for scale)
Cultural Adaptation Assessment
When analyzing a multi-language site, go beyond technical hreflang validation to assess whether the content is culturally adapted for each target market.
Load references/cultural-profiles.md for pre-built profiles (DACH, Francophone, Hispanic, Japanese).
Assessment steps:
- Identify all language versions and their target markets
- Load the relevant cultural profile(s)
- Check CTAs match cultural expectations (direct vs indirect)
- Check trust signals are locale-appropriate (certifications, legal pages)
- Check for foreign brand references on localized pages
- Check number/date/currency formatting consistency
- Flag cultural adaptation issues as Medium severity
Output: Cultural Adaptation Score per language version (0-100) with specific findings.
Content Parity Audit
Command: /seo hreflang audit <directory-or-url>
Audit content parity across all language versions of a site or local content directory.
Load references/content-parity.md for the full parity matrix and scoring methodology.
What it checks:
- Page existence across all declared languages
- Section structure equivalence (H2/H3 count)
- SEO element parity (title, meta, schema localization)
- Word count ratio validation (DE should be 25-35% longer than EN, JA 10-25% shorter)
- Freshness tracking (stale translations detected via timestamps)
- Cultural marker scanning (foreign brands, wrong legal references, untranslated elements)
Output: Parity matrix table with per-page scores and prioritized action items.
Locale Format Validation
Load references/locale-formats.md for number, date, currency, address, and phone format
reference tables per locale.
Checks:
- Number format consistency (e.g., "1,000.00" should be "1.000,00" on de-DE pages)
- Date format matches locale expectations
- Currency symbols and placement correct for target market
- Phone numbers use international format with correct country code
Reference Files
Load on-demand as needed (do NOT load all at startup):
references/cultural-profiles.md: DACH, Francophone, Hispanic, Japanese cultural adaptation profilesreferences/locale-formats.md: Number, date, currency, address, phone format tables per localereferences/content-parity.md: Content parity audit methodology and scoring
Error Handling
| Scenario | Action |
|---|---|
| URL unreachable (DNS failure, connection refused) | Report the error clearly. Do not guess site structure. Suggest the user verify the URL and try again. |
| No hreflang tags found | Report the absence. Check for other internationalization signals (subdirectories, subdomains, ccTLDs) and recommend the appropriate hreflang implementation method. |
| Invalid language/region codes detected | List each invalid code with the correct replacement. Provide a corrected hreflang tag set ready to implement. |
| Cultural profile not available for language | Use the Default Profile checklist from cultural-profiles.md. Note that assessment is based on general guidelines, not a pre-built profile. |
| Content parity directory empty | Report that no content files were found. Suggest verifying the directory path or providing a URL for live site analysis. |
| 1 | |
| 2 | name seo-hreflang |
| 3 | description > |
| 4 | Hreflang and international SEO audit, validation, and generation. Detects |
| 5 | common mistakes, validates language/region codes, and generates correct |
| 6 | hreflang implementations. Use when user says "hreflang", "i18n SEO", |
| 7 | "international SEO", "multi-language", "multi-region", or "language tags". |
| 8 | user-invocable true |
| 9 | argument-hint "[url]" |
| 10 | license MIT |
| 11 | metadata |
| 12 | author AgriciDaniel |
| 13 | version "2.3.1" |
| 14 | category seo |
| 15 | |
| 16 | |
| 17 | # Hreflang & International SEO |
| 18 | |
| 19 | Validate existing hreflang implementations or generate correct hreflang tags |
| 20 | for multi-language and multi-region sites. Supports HTML, HTTP header, and |
| 21 | XML sitemap implementations. |
| 22 | |
| 23 | ## Validation Checks |
| 24 | |
| 25 | ### 1. Self-Referencing Tags |
| 26 | Every page must include an hreflang tag pointing to itself |
| 27 | The self-referencing URL must exactly match the page's canonical URL |
| 28 | Missing self-referencing tags cause Google to ignore the entire hreflang set |
| 29 | |
| 30 | ### 2. Return Tags |
| 31 | If page A links to page B with hreflang, page B must link back to page A |
| 32 | Every hreflang relationship must be bidirectional (A→B and B→A) |
| 33 | Missing return tags invalidate the hreflang signal for both pages |
| 34 | Check all language versions reference each other (full mesh) |
| 35 | |
| 36 | ### 3. x-default Tag |
| 37 | Recommended when a selector/fallback URL exists: designates the fallback page for unmatched languages/regions |
| 38 | Typically points to the language selector page or English version |
| 39 | Only one x-default per set of alternates |
| 40 | Must also have return tags from all other language versions |
| 41 | |
| 42 | ### 4. Language Code Validation |
| 43 | Must use ISO 639-1 two-letter codes (e.g., `en`, `fr`, `de`, `ja`) |
| 44 | An **optional ISO 15924 script subtag** is the documented, official mechanism |
| 45 | for script: `zh-Hant` (Traditional) / `zh-Hans` (Simplified). Script may |
| 46 | combine with a region, e.g. `zh-Hans-US` is valid (language + script + region). |
| 47 | Common errors: |
| 48 | `eng` instead of `en` (ISO 639-2, not valid for hreflang) |
| 49 | `jp` instead of `ja` (incorrect code for Japanese) |
| 50 | `zh` is valid but ambiguous for script-specific pages; prefer `zh-Hans` or `zh-Hant` when targeting a script |
| 51 | |
| 52 | ### 5. Region Code Validation |
| 53 | Optional region qualifier uses ISO 3166-1 Alpha-2 (e.g., `en-US`, `en-GB`, `pt-BR`) |
| 54 | Format: `language-REGION` (lowercase language, uppercase region) |
| 55 | A **country code alone is invalid**, you cannot specify a region without a |
| 56 | language (Google's own bad example is `be`, which is actually the Belarusian |
| 57 | *language* code, not Belgium). |
| 58 | Common errors: |
| 59 | `en-uk` instead of `en-GB` (UK is not a valid ISO 3166-1 region code) |
| 60 | `EU` / `UN` as a region (not valid ISO 3166-1 values) |
| 61 | `es-LA` (Latin America is not a country; use specific countries) |
| 62 | Region without language prefix |
| 63 | |
| 64 | ### 5b. Geo-targeting signal hierarchy |
| 65 | Practical locale-signal heuristic: **ccTLD > hreflang annotations > |
| 66 | server location/IP > addresses/language/currency/Business Profile**. Do not |
| 67 | present this as a confirmed Google ranking order. hreflang is a |
| 68 | **hint, not a directive**. Google **ignores** locational meta tags and |
| 69 | HTML geotargeting attributes. |
| 70 | The Search Console **International Targeting report and the manual |
| 71 | country-targeting setting were removed in 2022**, do **not** recommend setting |
| 72 | country targeting in GSC; hreflang is the remaining lever. |
| 73 | |
| 74 | ### 5c. Region-specific Search units (EEA, South Africa, Turkiye) |
| 75 | Google documents Search experiences that exist only in certain countries: |
| 76 | **aggregator units**, **supplier units**, and carousels for hotel, flight, |
| 77 | long-distance transport, and product queries shown to users in the EEA, |
| 78 | South Africa, and Turkiye (documentation added 2026-09-08). Eligibility and |
| 79 | participation are documented per unit; they are not ranking signals. |
| 80 | When a site serves those regions with hreflang variants, note in the report |
| 81 | whether the business is an aggregator or a direct supplier and point to the |
| 82 | regional documentation, so the client is not surprised by a different result |
| 83 | layout in those markets. |
| 84 | |
| 85 | ### 6. Canonical URL Alignment |
| 86 | Hreflang tags must only appear on canonical URLs |
| 87 | If a page has `rel=canonical` pointing elsewhere, hreflang on that page is ignored |
| 88 | The canonical URL and hreflang URL must match exactly (including trailing slashes) |
| 89 | Non-canonical pages should not be in any hreflang set |
| 90 | |
| 91 | ### 7. Protocol Consistency |
| 92 | All URLs in an hreflang set must use the same protocol (HTTPS or HTTP) |
| 93 | Mixed HTTP/HTTPS in hreflang sets causes validation failures |
| 94 | After HTTPS migration, update all hreflang tags to HTTPS |
| 95 | |
| 96 | ### 8. Cross-Domain Support |
| 97 | Hreflang works across different domains (e.g., example.com and example.de) |
| 98 | Cross-domain hreflang requires return tags on both domains |
| 99 | Use Google Search Console verification for monitoring or cross-site sitemap submission when needed |
| 100 | Sitemap-based implementation recommended for cross-domain setups |
| 101 | |
| 102 | ## Common Mistakes |
| 103 | |
| 104 | | Issue | Severity | Fix | |
| 105 | |-------|----------|-----| |
| 106 | | Missing self-referencing tag | Critical | Add hreflang pointing to same page URL | |
| 107 | | Missing return tags (A→B but no B→A) | Critical | Add matching return tags on all alternates | |
| 108 | | Missing x-default when fallback behavior is required | Medium | Add x-default pointing to fallback/selector page | |
| 109 | | Invalid language code (e.g., `eng`) | High | Use ISO 639-1 two-letter codes | |
| 110 | | Invalid region code (e.g., `en-uk`) | High | Use ISO 3166-1 Alpha-2 codes | |
| 111 | | Hreflang on non-canonical URL | High | Move hreflang to canonical URL only | |
| 112 | | HTTP/HTTPS mismatch in URLs | Medium | Standardize all URLs to HTTPS | |
| 113 | | Trailing slash inconsistency | Medium | Match canonical URL format exactly | |
| 114 | | Hreflang in both HTML and sitemap | Low | Choose one method (sitemap preferred for large sites) | |
| 115 | | Language without region when needed | Low | Add region qualifier for geo-targeted content | |
| 116 | |
| 117 | ## Implementation Methods |
| 118 | |
| 119 | ### Method 1: HTML Link Tags |
| 120 | Best for: Sites with <50 language/region variants per page. |
| 121 | |
| 122 | |
| 123 | <link rel="alternate" hreflang="en-US" href="https://example.com/page" /> |
| 124 | <link rel="alternate" hreflang="en-GB" href="https://example.co.uk/page" /> |
| 125 | <link rel="alternate" hreflang="fr" href="https://example.com/fr/page" /> |
| 126 | <link rel="alternate" hreflang="x-default" href="https://example.com/page" /> |
| 127 | |
| 128 | |
| 129 | Place in `<head>` section. Every page must include all alternates including itself. |
| 130 | |
| 131 | ### Method 2: HTTP Headers |
| 132 | Best for: Non-HTML files (PDFs, documents). |
| 133 | |
| 134 | |
| 135 | Link: <https://example.com/page>; rel="alternate"; hreflang="en-US", |
| 136 | <https://example.com/fr/page>; rel="alternate"; hreflang="fr", |
| 137 | <https://example.com/page>; rel="alternate"; hreflang="x-default" |
| 138 | |
| 139 | |
| 140 | Set via server configuration or CDN rules. |
| 141 | |
| 142 | ### Method 3: XML Sitemap (Recommended for large sites) |
| 143 | Best for: Sites with many language variants, cross-domain setups, or 50+ pages. |
| 144 | |
| 145 | See Hreflang Sitemap Generation section below. |
| 146 | |
| 147 | ### Method Comparison |
| 148 | | Method | Best For | Pros | Cons | |
| 149 | |--------|----------|------|------| |
| 150 | | HTML link tags | Small sites (<50 variants) | Easy to implement, visible in source | Bloats `<head>`, hard to maintain at scale | |
| 151 | | HTTP headers | Non-HTML files | Works for PDFs, images | Complex server config, not visible in HTML | |
| 152 | | XML sitemap | Large sites, cross-domain | Scalable, centralized management | Not visible on page, requires sitemap maintenance | |
| 153 | |
| 154 | ## Hreflang Generation |
| 155 | |
| 156 | ### Process |
| 157 | **Detect languages**: Scan site for language indicators (URL path, subdomain, TLD, HTML lang attribute) |
| 158 | **Map page equivalents**: Match corresponding pages across languages/regions |
| 159 | **Validate language codes**: Verify all codes against ISO 639-1 and ISO 3166-1 |
| 160 | **Generate tags**: Create hreflang tags for each page including self-referencing |
| 161 | **Verify return tags**: Confirm all relationships are bidirectional |
| 162 | **Add x-default**: Set fallback for each page set |
| 163 | **Output**: Generate implementation code (HTML, HTTP headers, or sitemap XML) |
| 164 | |
| 165 | ## Hreflang Sitemap Generation |
| 166 | |
| 167 | ### Sitemap with Hreflang |
| 168 | |
| 169 | <?xml version="1.0" encoding="UTF-8"?> |
| 170 | <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" |
| 171 | xmlns:xhtml="http://www.w3.org/1999/xhtml"> |
| 172 | <url> |
| 173 | <loc>https://example.com/page</loc> |
| 174 | <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" /> |
| 175 | <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" /> |
| 176 | <xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" /> |
| 177 | <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" /> |
| 178 | </url> |
| 179 | <url> |
| 180 | <loc>https://example.com/fr/page</loc> |
| 181 | <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" /> |
| 182 | <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" /> |
| 183 | <xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" /> |
| 184 | <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" /> |
| 185 | </url> |
| 186 | </urlset> |
| 187 | |
| 188 | |
| 189 | Key rules: |
| 190 | Include the `xmlns:xhtml` namespace declaration |
| 191 | Every `<url>` entry must include ALL language alternates (including itself) |
| 192 | Each alternate must appear as a separate `<url>` entry with its own full set |
| 193 | Split at whichever comes first: 50,000 URLs or 50MB uncompressed per sitemap file |
| 194 | |
| 195 | ## Output |
| 196 | |
| 197 | ### Hreflang Validation Report |
| 198 | |
| 199 | #### Summary |
| 200 | Total pages scanned: XX |
| 201 | Language variants detected: XX |
| 202 | Issues found: XX (Critical: X, High: X, Medium: X, Low: X) |
| 203 | |
| 204 | #### Validation Results |
| 205 | | Language | URL | Self-Ref | Return Tags | x-default | Status | |
| 206 | |----------|-----|----------|-------------|-----------|--------| |
| 207 | | en-US | https://... | ✅ | ✅ | ✅ | ✅ | |
| 208 | | fr | https://... | ❌ | ⚠️ | ✅ | ❌ | |
| 209 | | de | https://... | ✅ | ❌ | ✅ | ❌ | |
| 210 | |
| 211 | ### Generated Hreflang Tags |
| 212 | HTML `<link>` tags (if HTML method chosen) |
| 213 | HTTP header values (if header method chosen) |
| 214 | `hreflang-sitemap.xml` (if sitemap method chosen) |
| 215 | |
| 216 | ### Recommendations |
| 217 | Missing implementations to add |
| 218 | Incorrect codes to fix |
| 219 | Method migration suggestions (e.g., HTML to sitemap for scale) |
| 220 | |
| 221 | ## Cultural Adaptation Assessment |
| 222 | |
| 223 | When analyzing a multi-language site, go beyond technical hreflang validation to assess |
| 224 | whether the content is culturally adapted for each target market. |
| 225 | |
| 226 | Load `references/cultural-profiles.md` for pre-built profiles (DACH, Francophone, Hispanic, Japanese). |
| 227 | |
| 228 | **Assessment steps:** |
| 229 | Identify all language versions and their target markets |
| 230 | Load the relevant cultural profile(s) |
| 231 | Check CTAs match cultural expectations (direct vs indirect) |
| 232 | Check trust signals are locale-appropriate (certifications, legal pages) |
| 233 | Check for foreign brand references on localized pages |
| 234 | Check number/date/currency formatting consistency |
| 235 | Flag cultural adaptation issues as Medium severity |
| 236 | |
| 237 | **Output:** Cultural Adaptation Score per language version (0-100) with specific findings. |
| 238 | |
| 239 | ## Content Parity Audit |
| 240 | |
| 241 | **Command:** `/seo hreflang audit <directory-or-url>` |
| 242 | |
| 243 | Audit content parity across all language versions of a site or local content directory. |
| 244 | |
| 245 | Load `references/content-parity.md` for the full parity matrix and scoring methodology. |
| 246 | |
| 247 | **What it checks:** |
| 248 | Page existence across all declared languages |
| 249 | Section structure equivalence (H2/H3 count) |
| 250 | SEO element parity (title, meta, schema localization) |
| 251 | Word count ratio validation (DE should be 25-35% longer than EN, JA 10-25% shorter) |
| 252 | Freshness tracking (stale translations detected via timestamps) |
| 253 | Cultural marker scanning (foreign brands, wrong legal references, untranslated elements) |
| 254 | |
| 255 | **Output:** Parity matrix table with per-page scores and prioritized action items. |
| 256 | |
| 257 | ## Locale Format Validation |
| 258 | |
| 259 | Load `references/locale-formats.md` for number, date, currency, address, and phone format |
| 260 | reference tables per locale. |
| 261 | |
| 262 | **Checks:** |
| 263 | Number format consistency (e.g., "1,000.00" should be "1.000,00" on de-DE pages) |
| 264 | Date format matches locale expectations |
| 265 | Currency symbols and placement correct for target market |
| 266 | Phone numbers use international format with correct country code |
| 267 | |
| 268 | ## Reference Files |
| 269 | |
| 270 | Load on-demand as needed (do NOT load all at startup): |
| 271 | `references/cultural-profiles.md`: DACH, Francophone, Hispanic, Japanese cultural adaptation profiles |
| 272 | `references/locale-formats.md`: Number, date, currency, address, phone format tables per locale |
| 273 | `references/content-parity.md`: Content parity audit methodology and scoring |
| 274 | |
| 275 | ## Error Handling |
| 276 | |
| 277 | | Scenario | Action | |
| 278 | |----------|--------| |
| 279 | | URL unreachable (DNS failure, connection refused) | Report the error clearly. Do not guess site structure. Suggest the user verify the URL and try again. | |
| 280 | | No hreflang tags found | Report the absence. Check for other internationalization signals (subdirectories, subdomains, ccTLDs) and recommend the appropriate hreflang implementation method. | |
| 281 | | Invalid language/region codes detected | List each invalid code with the correct replacement. Provide a corrected hreflang tag set ready to implement. | |
| 282 | | Cultural profile not available for language | Use the Default Profile checklist from cultural-profiles.md. Note that assessment is based on general guidelines, not a pre-built profile. | |
| 283 | | Content parity directory empty | Report that no content files were found. Suggest verifying the directory path or providing a URL for live site analysis. | |
| 284 |