/blog-multilingual
One-command multilingual blog creation. Writes a blog post, translates it into user-specified languages, applies cultural adaptation, and emits hreflang tags, sitemap entries, and a CMS-ready language map. The complete write-to-publish pipeline for international content.
$ npx -y skills add AgriciDaniel/claude-blog --skill blog-multilingual --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/blog-multilingual
Context preview
The summary Claude sees to decide when to auto-load this skill.
One-command multilingual blog creation. Writes a blog post, translates it into user-specified languages, applies cultural adaptation, and emits hreflang tags, sitemap entries, and a CMS-ready language map. The complete write-to-publish pipeline for international content.
SKILL.md
blog-multilingual.SKILL.mdname: blog-multilingual
description: >
One-command multilingual blog creation. Writes a blog post, translates it
into user-specified languages, applies cultural adaptation, and emits
hreflang tags, sitemap entries, and a CMS-ready language map. The complete
write-to-publish pipeline for international content. Orchestrates blog-write,
blog-translate, blog-localize, and (optionally) seo-hreflang.
Use when user says "multilingual blog", "blog multilingual", "write in
multiple languages", "international blog", "mehrsprachiger Blog", "blog
multilingue", "blog multilingue", "create blog in German and French".
user-invokable: true
argument-hint: "<topic> --languages <comma-separated-codes>"
license: MIT
compatibility: Requires claude-blog (blog-write). Optional integration with claude-seo (seo-hreflang) for richer hreflang validation.
metadata:
author: AgriciDaniel
version: "2.1.1"
category: blog
Blog Multilingual, One-Command International Publishing
The flagship multilingual orchestrator. Combines blog writing, translation, cultural adaptation, and full international SEO into a single command. Produces publication-ready blog posts in every target language with hreflang tags, localized JSON-LD schema, and CMS-integration metadata.
> Adapted from `claude-blog-multilingual` by Chris Mueller (AI Marketing Hub > Pro Hub Challenge submission, March 2026, scored 85/100 Proficient). > Original: https://github.com/Chriss54/multilingual-int > This port removes the original `curl | bash` installer and credential > handling flagged in the audit, integrates as core skills, and uses the > shared cultural-adaptation reference under `blog-translate/references/`.
Dependencies
Invoked internally by this orchestrator:
| Component | Source | Required | |-----------|--------|----------| | `blog-write` | claude-blog (this plugin) | Yes | | `blog-translate` | claude-blog (this plugin) | Yes | | `blog-localize` | claude-blog (this plugin) | Yes (when `--localize` is on, default) | | `seo-hreflang` | claude-seo (sibling plugin) | No, falls back to a self-contained generator |
If `seo-hreflang` is not installed, the orchestrator emits hreflang tags using its own minimal generator (Phase 5 below) and notes the limitation in the delivery summary. Hreflang validation in that case is structural only, not the deeper validation `seo-hreflang` provides.
Command Syntax
/blog multilingual <topic> --languages <lang1,lang2,...> [--source <lang>] [--no-localize] [--format <md|mdx|html>]
| Argument | Required | Default | Description | |----------|----------|---------|-------------| | `<topic>` | Yes | required | Blog topic or working title | | `--languages` | Yes | required | Comma-separated Google-compatible hreflang tags (e.g. `de,fr,es-MX,ja,pt-BR`) | | `--source` | No | `en` | Source language to write the original in | | `--no-localize` | No | off | Skip cultural adaptation (translation only) | | `--format` | No | auto | Output format: `md`, `mdx`, or `html` |
If `--languages` is missing, ask the user once before running anything: "Which languages should the blog be published in? Provide hreflang tags separated by commas (e.g., `de,fr,es-MX,ja,pt-BR`). The post will be written in `<source>` first, then translated."
Workflow
Phase 1: Configuration
1. Parse arguments. Extract topic, target languages, source, format. 2. Validate each language code with the shared multilingual locale rules used by `blog-translate`, `blog-localize`, and `blog-locale-audit`: ISO 639-1 language in lowercase, optional ISO 15924 script in title case, optional ISO 3166-1 Alpha-2 region in uppercase. Require a region or explicit neutral mode for ambiguous language-only targets such as `es`, `pt`, and `zh`. 3. Detect output format from the project (frontmatter convention, file extensions, framework hints) or use `--format`. 4. Resolve source language. If a target language equals `--source`, drop it from the translation list with a notice. 5. Create the output directory inside the current working directory:
multilingual/
{source-lang}/
{lang-1}/
{lang-2}/
...Keep all output inside the project root; do not write outside the cwd.
Progress: `Phase 1: Configuration complete, [N] languages selected ([codes])`
Phase 2: Write Original Blog
Invoke the `blog-write` sub-skill (route through `/blog write` so all existing rules apply: template auto-selection, sourced statistics, citation capsules, Article schema priority, FAQPage only as an entity signal when visible FAQ content exists, internal-link zones, charts, image embedding). Pass the topic and any blog-write parameters surfaced by the user.
Save the original to `multilingual/{source-lang}/{slug}.{ext}`.
Progress: `Phase 2: Original written, multilingual/{source-lang}/{slug}.{ext}`
Phase 3: Translate to All Target Languages
For each target language, invoke `blog-translate`:
- Input: the original blog post produced in Phase 2.
- Target: the specific language code.
- Run targets in parallel where the runtime supports it (one Task per
language) to reduce wall-clock time.
Save translations to `multilingual/{lang}/{localized-slug}.{ext}`.
Progress: `Phase 3: Translating to [lang] ([X]/[N])` per language, then `Phase 3: All translations complete`.
Phase 4: Cultural Adaptation
If `--no-localize` is NOT set, invoke `blog-localize` for every translated post:
- Input: the translated blog post.
- Locale: the target language or region code.
- Run in parallel.
Apply the localized output only after resolving the generated path inside `multilingual/`, rejecting symlinks, and creating a backup when overwriting. The localizer swaps brand examples, adapts CTAs, substitutes legal references, and adjusts formality. See `../blog-localize/SKILL.md` for the full adaptation pass.
Progress: `Phase 4: Cultural adaptation complete for [N] languages`.
Phase 5: International SEO
Read more
name: blog-multilingual description: > One-command multilingual blog creation. Writes a blog post, translates it into user-specified languages, applies cultural adaptation, and emits hreflang tags, sitemap entries, and a CMS-ready language map. The complete write-to-publish pipeline for international content. Orchestrates blog-write, blog-translate, blog-localize, and (optionally) seo-hreflang. Use when user says "multilingual blog", "blog multilingual", "write in multiple languages", "international blog", "mehrsprachiger Blog", "blog multilingue", "blog multilingue", "create blog in German and French". user-invokable: true argument-hint: "<topic> --languages <comma-separated-codes>" license: MIT compatibility: Requires claude-blog (blog-write). Optional integration with claude-seo (seo-hreflang) for richer hreflang validation. metadata: author: AgriciDaniel version: "2.1.1" category: blog
Blog Multilingual, One-Command International Publishing
The flagship multilingual orchestrator. Combines blog writing, translation, cultural adaptation, and full international SEO into a single command. Produces publication-ready blog posts in every target language with hreflang tags, localized JSON-LD schema, and CMS-integration metadata.
> Adapted from `claude-blog-multilingual` by Chris Mueller (AI Marketing Hub > Pro Hub Challenge submission, March 2026, scored 85/100 Proficient). > Original: https://github.com/Chriss54/multilingual-int > This port removes the original `curl | bash` installer and credential > handling flagged in the audit, integrates as core skills, and uses the > shared cultural-adaptation reference under `blog-translate/references/`.
Dependencies
Invoked internally by this orchestrator:
| Component | Source | Required | |-----------|--------|----------| | `blog-write` | claude-blog (this plugin) | Yes | | `blog-translate` | claude-blog (this plugin) | Yes | | `blog-localize` | claude-blog (this plugin) | Yes (when `--localize` is on, default) | | `seo-hreflang` | claude-seo (sibling plugin) | No, falls back to a self-contained generator |
If `seo-hreflang` is not installed, the orchestrator emits hreflang tags using its own minimal generator (Phase 5 below) and notes the limitation in the delivery summary. Hreflang validation in that case is structural only, not the deeper validation `seo-hreflang` provides.
Command Syntax
/blog multilingual <topic> --languages <lang1,lang2,...> [--source <lang>] [--no-localize] [--format <md|mdx|html>]
| Argument | Required | Default | Description | |----------|----------|---------|-------------| | `<topic>` | Yes | required | Blog topic or working title | | `--languages` | Yes | required | Comma-separated Google-compatible hreflang tags (e.g. `de,fr,es-MX,ja,pt-BR`) | | `--source` | No | `en` | Source language to write the original in | | `--no-localize` | No | off | Skip cultural adaptation (translation only) | | `--format` | No | auto | Output format: `md`, `mdx`, or `html` |
If `--languages` is missing, ask the user once before running anything: "Which languages should the blog be published in? Provide hreflang tags separated by commas (e.g., `de,fr,es-MX,ja,pt-BR`). The post will be written in `<source>` first, then translated."
Workflow
Phase 1: Configuration
1. Parse arguments. Extract topic, target languages, source, format. 2. Validate each language code with the shared multilingual locale rules used by `blog-translate`, `blog-localize`, and `blog-locale-audit`: ISO 639-1 language in lowercase, optional ISO 15924 script in title case, optional ISO 3166-1 Alpha-2 region in uppercase. Require a region or explicit neutral mode for ambiguous language-only targets such as `es`, `pt`, and `zh`. 3. Detect output format from the project (frontmatter convention, file extensions, framework hints) or use `--format`. 4. Resolve source language. If a target language equals `--source`, drop it from the translation list with a notice. 5. Create the output directory inside the current working directory:
multilingual/
{source-lang}/
{lang-1}/
{lang-2}/
...Keep all output inside the project root; do not write outside the cwd.
Progress: `Phase 1: Configuration complete, [N] languages selected ([codes])`
Phase 2: Write Original Blog
Invoke the `blog-write` sub-skill (route through `/blog write` so all existing rules apply: template auto-selection, sourced statistics, citation capsules, Article schema priority, FAQPage only as an entity signal when visible FAQ content exists, internal-link zones, charts, image embedding). Pass the topic and any blog-write parameters surfaced by the user.
Save the original to `multilingual/{source-lang}/{slug}.{ext}`.
Progress: `Phase 2: Original written, multilingual/{source-lang}/{slug}.{ext}`
Phase 3: Translate to All Target Languages
For each target language, invoke `blog-translate`:
- Input: the original blog post produced in Phase 2.
- Target: the specific language code.
- Run targets in parallel where the runtime supports it (one Task per
language) to reduce wall-clock time.
Save translations to `multilingual/{lang}/{localized-slug}.{ext}`.
Progress: `Phase 3: Translating to [lang] ([X]/[N])` per language, then `Phase 3: All translations complete`.
Phase 4: Cultural Adaptation
If `--no-localize` is NOT set, invoke `blog-localize` for every translated post:
- Input: the translated blog post.
- Locale: the target language or region code.
- Run in parallel.
Apply the localized output only after resolving the generated path inside `multilingual/`, rejecting symlinks, and creating a backup when overwriting. The localizer swaps brand examples, adapts CTAs, substitutes legal references, and adjusts formality. See `../blog-localize/SKILL.md` for the full adaptation pass.
Progress: `Phase 4: Cultural adaptation complete for [N] languages`.
Phase 5: International SEO
claude-blog is a Claude Code skill suite that writes, optimizes, audits, localizes, and refreshes blog content at scale. Every article is evaluated for Google-aligned usefulness and internal AI citation readiness heuristics.
Repo: AgriciDaniel/claude-blog
Other skills on claude-blog.
- /blog-analyze
Audit and score blog posts on a 5-category 100-point scoring system covering content quality, SEO optimization, E-E-A-T signals, technical elements, and AI citation readiness. Includes advisory editorial style diagnostics (sentence-length variation, configured phrase lists,
Open skill - /blog-audio
Generate audio narration of blog posts using Google Gemini TTS. Supports summary narration, full article read-aloud, and two-speaker podcast/dialogue mode with 30 voice options. Outputs MP3 with HTML5 audio embed code. Works standalone via /blog audio or internally from
Open skill - /blog-audit
Full-site blog health assessment scanning all blog files for quality scores, orphan pages, topic cannibalization, stale content, and AI citation readiness. Runs canonical batch analysis before site-wide checks. Produces per-post scores and a prioritized action queue. Use when
Open skill - /blog-brand
Establish durable brand and voice context for cross-skill consumption. Generates BRAND.md (audience, positioning, do/don't editorial rules, taboo phrases, competitor differentiation) and VOICE.md (existing persona JSON re-expressed as readable prose), both written to the project
Open skill - /blog-brief
Generate detailed content briefs for blog posts with target keywords, content outlines, competitive analysis, recommended statistics, image and chart suggestions, word count targets, internal linking architecture, template recommendations (12 types), TL;DR drafts,
Open skill - /blog-calendar
Generate editorial calendars for blogs with topic clusters, publishing schedules, material-change reviews, update plans, seasonal opportunities, content mix formula, template integration, and distribution scheduling. Plans monthly or quarterly calendars around reader needs,
Open skill

