seo-hreflang
Skill0 starsChanged 5 months agoMITView on GitHub
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".
29 other projects use a version of this, 23 of them edited.
Adopted by
Most recently taken up by
- seranking/seo-skillstheir own version, first seen Nov 8, 2026
- alpit-patel/seo-aeo-geo-kitedited, first seen Nov 8, 2026
- zhtyyx/codex-seoedited, first seen Nov 1, 2026
- joaoguirunas/team-osedited, first seen Oct 21, 2026
- DoddleHQ/doddle-seo-geo-skillstheir own version, first seen Oct 20, 2026
- susantedit/claude-skillsedited, first seen Oct 20, 2026
Other versions29 projects use a version of this.
Word for word · 0
None found.
Edited · 23
- AgriciDaniel/claude-seo★ 20k97% same
- zhtyyx/codex-seo★ 15297% same
- coopersimson96/ai-content-system★ 1794% same
- joaoguirunas/team-os★ 695% same
- 01clauding/claude-seo-skill★ 494% same
- avalonreset/legends-seo-dungeon★ 498% same
- megastep/codex-skills★ 494% same
- realwigu/claude-skills★ 494% same
- alpit-patel/seo-aeo-geo-kit★ 295% same
- agrivisionai/claude-skills★ 195% same
13 more not listed
Wrote their own version · 6
- seranking/seo-skills★ 201same name
- ZachArticulateV/designer-pro-and-seo★ 10same name
- oegeyilmaz9/seo-aeo-geo-ultimate★ 6same name
- amirjahfar1/automate-seo-with-claude★ 2same name
- david-corroy/skills-seo-geo★ 0same name
- DoddleHQ/doddle-seo-geo-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository28 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- seo-aeoSkill
- seo-agenticSkill
- seo-auditSkill
- seo-backlinksSkill
- seo-clusterSkill
- seo-competitor-pagesSkill
- seo-content-briefSkill
- seo-contentSkill
- seo-dataforseoSkill
- seo-driftSkill
- seo-ecommerceSkill
- seo-flowSkill
- seo-geoSkill
- seo-googleSkill
- seo-image-genSkill
- seo-imagesSkill
- seo-localSkill
- seo-mapsSkill
- seo-pageSkill
- seo-planSkill
- seo-programmaticSkill
- seo-schemaSkill
- seo-sitemapSkill
- seoSkill
- seo-sxoSkill
- seo-technicalSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
21 rules. 10 are common, 6 are distinctive, and 5 are very specific to this project.
10
Common
Most of the 29 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Common: line 26
Every page must include an hreflang tag pointing to itself
- Common: line 31
If page A links to page B with hreflang, page B must link back to page A
- Common: line 32
Every hreflang relationship must be bidirectional (A→B and B→A)
- Common: line 34
Check all language versions reference each other (full mesh)
- Common: line 39
Only one x-default per set of alternates
- Common: line 40
Must also have return tags from all other language versions
- Very specific: line 43
Must use ISO 639-1 two-letter codes (e.g., en, fr, de, ja)
- Distinctive: line 86
When a site serves those regions with hreflang variants, note in the report whether the business is an aggregator or a direct supplier and …
- Very specific: line 93
If a page has rel=canonical pointing elsewhere, hreflang on that page is ignored
- Common: line 98
All URLs in an hreflang set must use the same protocol (HTTPS or HTTP)
- Common: line 100
After HTTPS migration, update all hreflang tags to HTTPS
- Distinctive: line 105
Use Google Search Console verification for monitoring or cross-site sitemap submission when needed
- Very specific: line 135
Place in <head> section. Every page must include all alternates including itself.
- Common: line 165
Validate language codes: Verify all codes against ISO 639-1 and ISO 3166-1
- Common: line 166
Generate tags: Create hreflang tags for each page including self-referencing
- Very specific: line 197
Every <url> entry must include ALL language alternates (including itself)
- Distinctive: line 229
When analyzing a multi-language site, go beyond technical hreflang validation to assess whether the content is culturally adapted for each …
- Distinctive: line 237
Check CTAs match cultural expectations (direct vs indirect)
- Distinctive: line 238
Check trust signals are locale-appropriate (certifications, legal pages)
- Distinctive: line 239
Check for foreign brand references on localized pages
- Very specific: line 240
Check number/date/currency formatting consistency
“Common” is measured: kept by at least 6 in 10 of the 29 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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, Türkiye)
- Google documents Search experiences that exist only in certain regions
(documentation added 2026-09-08; https://developers.google.com/search/docs/appearance/aggregator-features):
- EEA only: aggregator units and supplier units (hotels, flights, ground transportation, products, and since 2026-09-18 local businesses), the ecosystem carousel, and job-site features.
- Türkiye: places-site features (hotels, local businesses).
- South Africa: a badge and refinement chip for travel, products, car hire, food delivery and ground transportation.
- Structured data carousels in all three, with different query types. 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 scoringreferences/machine-translation-qa.md: Flags unreviewed machine translation, which Google's spam policy treats as scaled content abuse
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. |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

