seo-hreflang skill (claude-seo)

From Public Agent Wiki

What it does. 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". Part of seo skill (claude-seo: 25 sub-skills, 18 sub-agents) (AgriciDaniel/claude-seo).

Upstream AgriciDaniel/claude-seo
Skill file skills/seo-hreflang/SKILL.md
License MIT (skill folder LICENSE.txt)
Author Daniel Agrici
Fetched 2026-09-10

Install

  • Claude Code: /plugin marketplace add AgriciDaniel/claude-seo; other agents: npx skills add AgriciDaniel/claude-seo --skill seo-hreflang.
  • Raw file: curl -sL https://raw.githubusercontent.com/AgriciDaniel/claude-seo/HEAD/skills/seo-hreflang/SKILL.md

SKILL.md (verbatim)

name: seo-hreflang
description: >
  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".
user-invocable: true
argument-hint: "[url]"
license: MIT
metadata:
  author: AgriciDaniel
  version: "2.2.6"
  category: seo

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-US is valid (language + script + region).
  • Common errors:
    • eng instead of en (ISO 639-2, not valid for hreflang)
    • jp instead of ja (incorrect code for Japanese)
    • zh is valid but ambiguous for script-specific pages; prefer zh-Hans or zh-Hant when 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-uk instead of en-GB (UK is not a valid ISO 3166-1 region code)
    • EU / UN as 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.

6. Canonical URL Alignment

  • Hreflang tags must only appear on canonical URLs
  • If a page has rel=canonical pointing 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

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.

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

  1. Detect languages: Scan site for language indicators (URL path, subdomain, TLD, HTML lang attribute)
  2. Map page equivalents: Match corresponding pages across languages/regions
  3. Validate language codes: Verify all codes against ISO 639-1 and ISO 3166-1
  4. Generate tags: Create hreflang tags for each page including self-referencing
  5. Verify return tags: Confirm all relationships are bidirectional
  6. Add x-default: Set fallback for each page set
  7. 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:xhtml namespace 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:

  1. Identify all language versions and their target markets
  2. Load the relevant cultural profile(s)
  3. Check CTAs match cultural expectations (direct vs indirect)
  4. Check trust signals are locale-appropriate (certifications, legal pages)
  5. Check for foreign brand references on localized pages
  6. Check number/date/currency formatting consistency
  7. 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.

Other files in this skill

references/content-parity.md (verbatim)

Content Parity Audit for Multi-Language Sites

Load this reference when auditing content parity across language versions of a site. Content parity ensures all language versions provide equivalent value and SEO signals.

Original concept: Chris Muller (Pro Hub Challenge)

Content Parity Matrix

For each page that exists in multiple languages, check:

Dimension What to Compare Acceptable Variance Severity if Failing
Page existence Does equivalent page exist in all declared languages? 0% — all declared languages must have the page High
Section structure Same number of H2/H3 sections? ±1 section allowed Medium
FAQ items Same number of FAQ questions? ±2 items allowed Medium
Images Same number of images with localized alt text? Must match exactly Medium
Charts/SVGs Charts present in all versions? Must match exactly Low
Word count Proportional to language expansion ratio? ±30% of expected ratio Low
Schema markup JSON-LD present and localized in all versions? Must match type and key properties High
Title tag Localized with target keyword in local language? Must be localized, not English High
Meta description Localized and within character limits? Must be localized Medium

Freshness Tracking

Detect stale translations by comparing:

  1. File modification timestamps: If EN version was updated after DE version, DE may be stale
  2. Frontmatter dates: Compare date_modified or lastmod across language versions
  3. Content hash comparison: If the source language content hash changed since last translation

Freshness delta thresholds:

  • Fresh: Translated within 7 days of source update → OK
  • Aging: 8-30 days since source update → Low priority update
  • Stale: 31-90 days since source update → Medium priority update
  • Outdated: 90+ days since source update → High priority update

Word Count Ratio Validation

Expected word count ratios vs English source:

Target Language Expected Ratio Acceptable Range
German (DE) 1.25-1.35x 1.10-1.50x
French (FR) 1.15-1.25x 1.00-1.40x
Spanish (ES) 1.15-1.25x 1.00-1.40x
Japanese (JA) 0.75-0.90x 0.60-1.00x
Chinese (ZH) 0.70-0.80x 0.55-0.95x

A German translation that is shorter than the English original likely has missing content. A Japanese translation that is longer than English likely has unnecessary padding.

Cultural Adaptation Quality Gates

Beyond direct translation, check for cultural markers that indicate proper localization:

Check What to Look For Severity
Foreign brand references US-specific brands on non-US pages (e.g., "Walmart" on de-DE) Medium
Foreign statistics US-only data cited on localized pages (e.g., "80% of Americans") Medium
CTA aggressiveness Aggressive CTAs on formal-culture pages (e.g., "BUY NOW!" on ja-JP) Low
Legal references Wrong jurisdiction laws cited (e.g., CCPA on de-DE instead of DSGVO) High
Currency/unit mismatch USD prices on EUR pages, imperial units on metric pages High
Untranslated elements English text remaining in navigation, buttons, alt text, schema Medium

Parity Score Calculation

Score out of 100:

  • Page existence parity: 30 points
  • SEO element parity (title, meta, schema): 30 points
  • Content structure parity (sections, images, FAQ): 25 points
  • Freshness parity: 15 points

Interpretation:

  • 90-100: Excellent parity across all language versions
  • 70-89: Good parity with minor gaps to address
  • 50-69: Significant parity issues affecting some language versions
  • Below 50: Major parity failures requiring immediate attention

Output Format

Present as a matrix table:

| Page | EN | DE | FR | ES | JA | Parity Score |
|------|----|----|----|----|----| -------------|
| /about | ✅ | ✅ | ✅ | ❌ | ✅ | 80/100 |
| /pricing | ✅ | ✅ | ⚠️ | ❌ | ❌ | 45/100 |

references/cultural-profiles.md (verbatim)

Cultural Adaptation Profiles for International SEO

Load this reference when analyzing multi-language sites or generating hreflang implementations. Profiles guide cultural assessment beyond technical validation.

Original concept: Chris Muller (Pro Hub Challenge)

DACH Region (DE, AT, CH)

Dimension Guideline
Formality High. Use "Sie" (formal you). Professional tone expected.
Humor Conservative. Avoid sarcasm and wordplay in CTAs.
CTA Style Indirect preferred. "Jetzt entdecken" over "Jetzt kaufen".
Trust Signals Certifications (TUV, ISO), "Datenschutz" (privacy), Impressum required by law.
Legal Impressum page mandatory. DSGVO (GDPR). Widerrufsrecht (right of withdrawal).
Number Format 1.000,00 (dot for thousands, comma for decimal)
Date Format DD.MM.YYYY
Currency EUR (DE/AT), CHF (CH)
Color Symbolism Blue = trust, Green = eco/nature, Red = caution (not urgency)
Brand Substitution Walmart → MediaMarkt, Home Depot → Hornbach, Amazon → Otto/Zalando
Word Expansion +25-35% vs English (plan for longer headlines and button text)

Francophone (FR, BE, CA-FR, CH-FR)

Dimension Guideline
Formality Medium-high. "Vous" default. "Tu" only for youth/casual brands.
Humor Appreciated when sophisticated. Avoid blunt/direct humor.
CTA Style Elegant phrasing. "Decouvrir nos solutions" over "Achetez maintenant".
Trust Signals "Fabrique en France" (made in France), professional certifications, press mentions.
Legal Mentions legales required. CNIL (data protection). CGV (terms).
Number Format 1 000,00 (space for thousands, comma for decimal)
Date Format DD/MM/YYYY
Currency EUR (FR/BE), CAD (CA-FR), CHF (CH-FR)
Color Symbolism Blue = stability, White = purity/luxury, Red = passion
Brand Substitution Walmart → Carrefour, Amazon → Fnac/Cdiscount, Target → Leclerc
Word Expansion +15-25% vs English

Hispanic (ES, LATAM)

Dimension Guideline
Formality Varies by country. Spain: "Usted" formal. LATAM: mixed.
Humor Warm and relational. Self-deprecating humor accepted.
CTA Style Warm, personal. "Empieza tu viaje" over "Comprar ahora".
Trust Signals Community proof, family/relationship themes, celebrity endorsements popular.
Legal LOPD (Spain data protection). Each LATAM country has own regulations.
Number Format Spain: 1.000,00 / LATAM: varies by country
Date Format DD/MM/YYYY (most), DD-MM-YYYY (some LATAM)
Currency EUR (ES), regional currencies (MXN, ARS, COP, CLP, PEN)
Color Symbolism Red = energy/passion, Yellow = warmth, Blue = trust
Brand Substitution Walmart → Mercadona (ES) / Coppel (MX), Amazon → MercadoLibre
Word Expansion +15-25% vs English

Japanese (JA)

Dimension Guideline
Formality Very high. Keigo (honorific language) expected in business.
Humor Subtle. Avoid direct humor in B2B. Kawaii (cute) elements acceptable in B2C.
CTA Style Subtle and polite. "Otoiawase" (inquire) over direct "buy now".
Trust Signals Company longevity, ISO certifications, endorsements from recognized institutions.
Legal APPI (Act on Protection of Personal Information). Tokutei Shotorihiki law.
Number Format 1,000 (comma for thousands, no decimal in most contexts)
Date Format YYYY/MM/DD or YYYY年MM月DD日
Currency JPY (no decimals)
Color Symbolism White = purity, Red = vitality/celebration, Black = formality
Brand Substitution Amazon → Rakuten, Google Shopping → Yahoo! Shopping Japan
Word Contraction -10-25% vs English (Japanese is more compact)

Default Profile (Unlisted Languages)

When analyzing a locale without a pre-built profile above:

  1. Research formality norms: Check if the language has formal/informal registers (e.g., Korean has 7 speech levels)
  2. Check text direction: LTR vs RTL (Arabic, Hebrew, Farsi, Urdu)
  3. Verify number/date formats: Use CLDR (Unicode Common Locale Data Repository)
  4. Research legal requirements: Privacy law, business registration, consumer protection
  5. Check word expansion ratio: Germanic/Slavic languages expand, CJK languages contract
  6. Verify currency and payment preferences: Local payment methods may need mention
  7. Research color meanings: Colors have different cultural associations globally

How to Use in Analysis

When running /seo hreflang on a multi-language site:

  1. Identify all language versions and their target markets
  2. Load the relevant cultural profile(s)
  3. Check that CTAs, trust signals, and legal pages match the cultural expectations
  4. Flag mismatches as "Cultural Adaptation" findings (Medium severity)
  5. Check number/date/currency formatting consistency within each locale version

references/locale-formats.md (verbatim)

Locale Format Reference for International SEO

Load this reference when validating content parity or generating localized content. Mismatched formats (e.g., US date format on a German page) signal poor localization and reduce user trust.

Original concept: Chris Muller (Pro Hub Challenge)

Number Formats

Locale Thousands Decimal Example
en-US , . 1,234.56
en-GB , . 1,234.56
de-DE . , 1.234,56
de-AT . , 1.234,56
de-CH ' . 1'234.56
fr-FR (space) , 1 234,56
fr-CA (space) , 1 234,56
es-ES . , 1.234,56
es-MX , . 1,234.56
ja-JP , . 1,234
pt-BR . , 1.234,56
it-IT . , 1.234,56
nl-NL . , 1.234,56
ko-KR , . 1,234
zh-CN , . 1,234.56

Date Formats

Locale Format Example
en-US MM/DD/YYYY 04/14/2026
en-GB DD/MM/YYYY 14/04/2026
de-DE DD.MM.YYYY 14.04.2026
fr-FR DD/MM/YYYY 14/04/2026
es-ES DD/MM/YYYY 14/04/2026
ja-JP YYYY/MM/DD or YYYY年MM月DD日 2026/04/14
pt-BR DD/MM/YYYY 14/04/2026
ko-KR YYYY.MM.DD 2026.04.14
zh-CN YYYY年MM月DD日 2026年04月14日

Currency Formats

Locale Symbol Placement Example
en-US $ Before $1,234.56
en-GB £ Before £1,234.56
de-DE After (space) 1.234,56 €
fr-FR After (space) 1 234,56 €
es-ES After (space) 1.234,56 €
ja-JP ¥ Before ¥1,234
pt-BR R$ Before R$ 1.234,56
ko-KR Before ₩1,234
zh-CN ¥ Before ¥1,234.56
de-CH CHF Before CHF 1'234.56

Address Formats

Region Order Example
US/CA Street, City, State ZIP 123 Main St, Austin, TX 78701
UK Street, City, Postcode 10 Downing St, London, SW1A 2AA
DE/AT Street Nr, PLZ City Hauptstr. 1, 10115 Berlin
FR Street, Code Postal City 1 Rue de Rivoli, 75001 Paris
JP Postal City District Street 〒100-0001 東京都千代田区千代田1-1

Phone Formats

Region Format Example
US +1 (XXX) XXX-XXXX +1 (512) 555-0123
UK +44 XXXX XXXXXX +44 2071 234567
DE +49 XXX XXXXXXX +49 30 12345678
FR +33 X XX XX XX XX +33 1 23 45 67 89
JP +81 X-XXXX-XXXX +81 3-1234-5678

Text Expansion Ratios (vs English)

Language Expansion Impact
German +25-35% Longer headlines, buttons, navigation labels
French +15-25% Moderate expansion
Spanish +15-25% Moderate expansion
Italian +15-25% Moderate expansion
Portuguese +15-25% Moderate expansion
Dutch +10-20% Slight expansion
Japanese -10-25% Contraction (more compact)
Korean -10-20% Contraction
Chinese -20-30% Significant contraction

Validation Rules

When checking locale format consistency:

  1. Scan for number patterns on the page (prices, statistics, measurements)
  2. Compare against the expected format for the page's declared language
  3. Flag US-format numbers on non-US pages (e.g., "$1,234.56" on a de-DE page)
  4. Check date formats in blog posts, copyright notices, update timestamps
  5. Verify currency symbols match the target market
  6. Check that phone numbers use international format with correct country code

references/machine-translation-qa.md (verbatim)

Machine-translation QA flag (September 11, 2025 QRG)

Google's January 23, 2025 Quality Rater Guidelines update added explicit language about machine-translated content with no human review as a form of scaled content abuse (§4.6.5). This is also the enforceable webmaster-facing spam policy (updated 2026-05-15), which names "automated transformations like synonymizing, translating, or other obfuscation techniques" as scaled content abuse: https://developers.google.com/search/docs/essentials/spam-policies

"Using automated tools (generative AI or otherwise) as a low-effort way to produce many pages that add little-to-no value."

Machine-translated content is fine when reviewed by a human speaker and corrected. Untranslated MT — or "lightly post-edited" output that still contains hallucinated terms, wrong gender/number agreement, or untranslated proper nouns — is treated as scaled content abuse.

Signals the seo-hreflang audit should surface

Signal Severity Notes
Multiple hreflang alternates point to URLs whose content is identical except for header chrome Critical Indicates the body wasn't translated; just template wrapped.
lang="xx" attribute on <html> doesn't match the body language High Translation pipeline output without a final QA step.
Auto-translated <meta name="description"> longer than 160 chars (untrimmed) Medium The translator overran the snippet limit — no human reviewer caught it.
lang attribute is auto or missing entirely Medium Pages that don't declare their language confuse hreflang + AI crawlers.
Untranslated proper nouns or product names sprinkled in body Low (heuristic) Common MT failure mode; hard to detect automatically.
Schema.org inLanguage field absent or wrong Medium Multi-language audits should cross-check inLanguage vs. body.

What the audit should NOT flag

  • Sites that have a few MT pages clearly labelled as MT (a human-translation-fallback pattern). Google's QRG explicitly permits MT when honestly labelled and clearly scoped.
  • Machine-translated UI strings — those are i18n, not "content".
  • Content with lang="auto" if the audit can't fetch a fallback signal (be conservative; don't claim what we can't verify).

Cross-skill delegation

  • For per-page hreflang validation, stay inside seo-hreflang.
  • For broader scaled-content scoring (entropy of translated pages, AI-pattern detection in body), defer to seo-content via "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run content_quality.py.
  • For "is this translated by Google's own auto-translate widget" detection, look for the .goog-te-banner-frame iframe. There is no per-mechanism exemption: in June 2025 Google removed the robots.txt-blocking guidance for auto-translated pages, and auto/AI- translated content is now judged case-by-case on user value. Use page-level noindex for low-value translated pages, not sitewide blocks; the widget also produces poor passage-citability.

Primary sources

Last verified: 2026-07-09.

Back to seo skill (claude-seo: 25 sub-skills, 18 sub-agents) or Agent skills.