skills/international-seo/SKILL.md
Validates hreflang tags, multi-language configuration, regional targeting, and internationalisation best practices. Use when auditing sites with multiple languages, regions, or localised content.
npx skillsauth add thisisahsaniqbal/nextjs-seo-audit international-seoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit the page for multi-language and regional targeting issues.
When to activate: Only relevant if the site serves multiple languages, regions, or has localised content. If a page is monolingual with no internationalisation signals, report ✅ PASS "No internationalisation issues (single-language site)".
Look for <link rel="alternate" hreflang="..."> in <head>:
| Check | Status | |---|---| | No hreflang tags on a multi-language site | ❌ FAIL "Add hreflang tags to indicate language/region variants" | | Hreflang tags present | ✅ PASS — list all language-region codes found |
| Rule | Violation = |
|---|---|
| Self-referencing hreflang missing (page must include itself) | ❌ FAIL |
| x-default fallback missing | ⚠️ WARN "Add hreflang=\"x-default\" for the default/fallback page" |
| Invalid language code (must be ISO 639-1, e.g. en, fr, de) | ❌ FAIL |
| Invalid region code (must be ISO 3166-1 alpha-2, e.g. en-US, fr-CA) | ⚠️ WARN |
| Hreflang URLs return 4xx or 5xx | ❌ FAIL "Hreflang points to broken URL" |
| Duplicate hreflang entries for same language-region | ⚠️ WARN |
| Check | Status |
|---|---|
| <html lang="..."> missing | ❌ FAIL |
| lang value doesn't match hreflang self-reference | ⚠️ WARN "Mismatch between html lang and hreflang" |
| Properly set | ✅ PASS |
<meta http-equiv="Content-Language" content="..."> → check if presentlang attribute → ⚠️ WARN if mismatchDetect URL pattern used:
| Pattern | Example | Assessment |
|---|---|---|
| Subdirectory | /en/, /fr/, /de/ | ✅ Recommended |
| Subdomain | en.example.com | ✅ Acceptable |
| ccTLD | example.fr, example.de | ✅ Strong geo-targeting |
| URL parameter | ?lang=en | ⚠️ WARN "Not recommended — search engines may ignore parameters" |
| Check | Status |
|---|---|
| Page has lang="en" but content appears in another language | ⚠️ WARN "Language mismatch detected" |
| <title> and <meta description> not translated (same across language variants) | ⚠️ WARN |
| Images with alt text not translated | ⚠️ WARN |
<meta name="geo.region">, <meta name="geo.placename">, <meta name="geo.position"> → ✅ PASS if present<link rel="canonical"> pointing to regional varianthreflang on some pages but not others → flag inconsistencydir="rtl" attribute on <html> or <body>testing
Audits sitemap references, robots.txt directives, canonical tags, crawlability, URL structure, redirect chains, and indexability. Use when checking technical SEO foundations or fixing crawl/index issues.
development
Audits stylesheet loading, inline CSS volume, image alt text, image formats, and Next.js Image component usage. Use when checking page speed related to HTML structure. For render-blocking scripts, image dimensions, lazy loading, and resource hints, see the core-web-vitals skill.
development
Validates HTML5 semantic elements, ARIA landmarks, skip navigation, and page structure. Use when auditing semantic HTML, accessibility, or content structure for SEO. For the lang attribute, see the international-seo skill.
testing
Validates existing JSON-LD structured data and suggests relevant schemas based on auto-detected page type. Does NOT enforce all schema types — only checks what is applicable to the current page context. Use when auditing or generating structured data for search engine rich results.