Hreflang and international SEO audit, validation, and generation. Detects common mistakes, validates language/region codes, and generates correct hreflang implementations. Use when user says "hreflang", "i18n SEO", "international SEO", "multi-language", "multi-region", or "language tags".
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Hreflang and international SEO audit, validation, and generation. Detects common mistakes, validates language/region codes, and generates correct hreflang implementations. Use when user says "hreflang", "i18n SEO", "international SEO", "multi-language", "multi-region", or "language tags".
Before gathering, check .seo-cache/ for reusable context from related SEO skills.
Reference: ../seo/references/shared-data-cache.md for schemas and dependency map.
Check these cache files when present:
.seo-cache/site-meta.json for domain, business type, industry, and crawl context
.seo-cache/audit-scores.json for prior full-audit priorities
.seo-cache/pages/{url-slug}/page-analysis.json for page-level context when a URL is provided
If found: parse and use clearly valid fields (note "Using cached [X] from [date]")
If missing, corrupt, or irrelevant: continue with fresh evidence
If the user says "refresh" or "re-run": ignore cache reads and overwrite on write
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
Required: 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)
Common errors:
eng instead of en (ISO 639-2, not valid for hreflang)
jp instead of ja (incorrect code for Japanese)
zh without region qualifier (ambiguous; use zh-Hans or zh-Hant)
5. Region Code Validation
Optional region qualifier uses ISO 3166-1 Alpha-2 (e.g., en-US, en-GB, pt-BR)
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 profiles
references/locale-formats.md: Number, date, currency, address, phone format tables per locale
references/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.
Write to shared data cache
After completing all work, write a concise JSON summary to .seo-cache/ when the workflow produced durable findings.
Use the schemas and naming rules in ../seo/references/shared-data-cache.md; include at least cache_type, analyzed_at, source URL/domain, key findings, issues, recommendations, and tool limitations. Add .seo-cache/ to .gitignore if it is missing.