HOME SKILLS BLOG GITHUB
// SKILL

MULTILINGUAL AUDIT
QA ACROSS ALL LANGUAGES

Shipping a blog post in 4 languages means maintaining 4 versions. Translations drift from the source over time. Hreflang tags break when one language gets republished. Meta descriptions go out of length on one locale and not others. Schema blocks lose a translated field after a refactor. blog-locale-audit catches all of that. Point it at your multilingual content directory and get a structured report of completeness, hreflang correctness, meta parity, and freshness across every language variant.

CONTRIBUTED BY CHRIS MUELLER · PRO HUB CHALLENGE · original repo
$
/blog locale-audit ./content/

REQUIRES CLAUDE BLOG INSTALLED IN CLAUDE CODE

// HOW IT WORKS

4 AUDIT DIMENSIONS.

Multilingual blogs decay quietly. A source post gets a freshness update, but only English ships. A schema block loses its inLanguage field after a refactor. A German meta description balloons past 160 characters because German compound words run longer than English. None of those failures throw errors. They quietly degrade international SEO over months.

blog-locale-audit scans your multilingual content directory and produces a structured report across four dimensions: completeness, hreflang correctness, meta parity, and freshness. Run it standalone for ongoing QA, or wire it into CI with --strict for pre-deploy guards.

01
COMPLETENESS CHECK
Lists source posts that lack translations in your target locales. Identifies orphan translations where the source post no longer exists.
02
HREFLANG VALIDATION
Bidirectional hreflang check. Every language variant must reference every other variant plus x-default. Catches missing and broken hreflang relationships.
03
META PARITY AUDIT
Title and description length per locale. Some languages run longer than English; checks that target-locale meta stays within Google's truncation limits.
04
FRESHNESS TRACKING
Source post updated last week, but the German translation is from 3 months ago? Locale-audit flags every language variant that has drifted from the source date.
// USAGE

HOW TO RUN LOCALE-AUDIT

Commands

CommandWhat it does
/blog locale-audit <directory>Scans the directory for multilingual content and outputs a structured report across completeness, hreflang, meta parity, and freshness

Output format

Locale-audit emits a structured report with severity tiers per finding type (critical, high, medium, warning). Critical findings include missing hreflang return tags and absent x-default. High findings include missing translations and out-of-range meta. Medium covers slug and tag localization. Warning surfaces drifted freshness inside the configurable window.

Default output is markdown. Pass --json for a machine-readable report you can pipe into CI dashboards or downstream tooling. Pass --html to also write locale-audit-report.html alongside the markdown.

CI integration

Pass --strict to exit non-zero on critical findings. Suitable for pre-deploy guards in GitHub Actions, GitLab CI, or any pipeline that blocks on shell exit codes. Combine with --json to publish the structured report as a CI artifact for review.

/blog locale-audit ./content/ --strict --json > locale-audit.json

The skill never edits your content. It only reads and reports. To fix issues, hand off to the specialist skills: /blog translate fills missing translations and refreshes stale ones, /blog localize deepens cultural adaptation, and /blog multilingual regenerates hreflang assets from scratch.

// FAQ

QUESTIONS ABOUT LOCALE-AUDIT

Two directions. First, every source post should have translations in your configured target locales (if you publish in en, es, fr, de, audit flags source posts missing one or more). Second, every translation should have a source (orphan translations where the original post got deleted are flagged as cleanup candidates). The completeness report is a single source of truth for what is shipped where.
blog-locale-audit verifies hreflang relationships are bidirectional. If the English post links to the German variant via hreflang, the German variant must link back to English. Missing return tags break international targeting. x-default tag presence is also checked (recommended for sites with a primary language fallback). Output flags every broken or missing relationship.
Meta description length varies by language. A 145-character English description might run 175 characters when translated to German (longer compound words). Meta parity audit checks every language variant's title and meta description against the 120-160 character target. Out-of-range variants are flagged for retranslation.
Source post updated last week, but the German translation is from 3 months ago? Locale-audit reads dateModified or article:modified_time meta from every variant and flags any translation that has not been updated since the source post's last update. Configurable freshness window (default: flag translations older than 30 days behind source).
Chris Mueller via the AI Marketing Hub Pro Hub Challenge. blog-locale-audit is one of four skills in the multilingual suite (write, translate, localize, locale-audit) plus the blog-translator agent. The suite scored 85/100 Proficient. Original at github.com/Chriss54/claude-blog-multilingual. Chris also contributed seo-hreflang cultural profile enhancements to claude-seo v1.9.0.
// RELATED SKILLS

EXPLORE MORE

VIEW ALL SKILLS →

AUDIT YOUR MULTILINGUAL BLOG
IN 30 SECONDS.

$
git clone --depth 1 https://github.com/AgriciDaniel/claude-blog.git && bash claude-blog/install.sh
VIEW ON GITHUB ALL SKILLS >