blog-multilingual

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

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/
.
这款旗舰级多语言编排工具集博客撰写、翻译、文化适配和完整国际化SEO功能于一体,只需一条命令即可完成。它能生成各目标语言下可直接发布的博客文章,附带hreflang标签、本地化JSON-LD schema以及CMS集成元数据。
改编自Chris Mueller开发的
claude-blog-multilingual
(AI Marketing Hub Pro Hub挑战赛提交作品,2026年3月,评分85/100,达到熟练水平)。 原版地址:https://github.com/Chriss54/multilingual-int 本次移植移除了原版中审计指出的
curl | bash
安装程序和凭证处理模块,将其整合为核心技能,并使用
blog-translate/references/
下的共享文化适配参考资源。

Dependencies

依赖项

Invoked internally by this orchestrator:
ComponentSourceRequired
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.
本编排工具内部调用以下组件:
组件来源是否必需
blog-write
claude-blog(本插件)
blog-translate
claude-blog(本插件)
blog-localize
claude-blog(本插件)是(当
--localize
开启时,默认开启)
seo-hreflang
claude-seo(兄弟插件)否,可回退至内置生成器
如果未安装
seo-hreflang
,编排工具将使用自身的轻量生成器(如下文第5阶段)生成hreflang标签,并在交付总结中说明这一限制。此时的hreflang验证仅为结构层面,不具备
seo-hreflang
提供的深度验证能力。

Command Syntax

命令语法

/blog multilingual <topic> --languages <lang1,lang2,...> [--source <lang>] [--no-localize] [--format <md|mdx|html>]
ArgumentRequiredDefaultDescription
<topic>
Yes,Blog topic or working title
--languages
Yes,Comma-separated ISO 639-1 codes (e.g.
de,fr,es,ja,pt-BR
)
--source
No
en
Source language to write the original in
--no-localize
NooffSkip cultural adaptation (translation only)
--format
NoautoOutput 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 ISO 639-1 codes separated by commas (e.g.,
de,fr,es,ja,pt-BR
). The post will be written in
<source>
first, then translated."
/blog multilingual <topic> --languages <lang1,lang2,...> [--source <lang>] [--no-localize] [--format <md|mdx|html>]
参数是否必需默认值描述
<topic>
-博客主题或暂定标题
--languages
-逗号分隔的ISO 639-1代码(例如
de,fr,es,ja,pt-BR
--source
en
撰写原文使用的源语言
--no-localize
off跳过文化适配(仅翻译)
--format
auto输出格式:
md
mdx
html
如果缺少
--languages
参数,在执行前需询问用户一次: "博客需要发布为哪些语言?请提供逗号分隔的ISO 639-1代码(例如
de,fr,es,ja,pt-BR
)。文章将先以
<source>
语言撰写,再进行翻译。"

Workflow

工作流程

Phase 1: Configuration

阶段1:配置

  1. Parse arguments. Extract topic, target languages, source, format.
  2. Validate each language code against ISO 639-1 (region suffixes like
    pt-BR
    ,
    es-MX
    ,
    zh-TW
    are also accepted).
  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}/
      ...
    Output MUST stay inside the project root. Never write outside the cwd.
Progress:
Phase 1: Configuration complete, [N] languages selected ([codes])
  1. 解析参数,提取主题、目标语言、源语言、格式。
  2. 验证每个语言代码是否符合ISO 639-1标准(同时接受带区域后缀的代码,如
    pt-BR
    es-MX
    zh-TW
    )。
  3. 从项目中检测输出格式(根据前置元数据约定、文件扩展名、框架提示),或使用
    --format
    指定的格式。
  4. 确定源语言。如果某个目标语言与
    --source
    指定的语言相同,则将其从翻译列表中移除并发出通知。
  5. 在当前工作目录内创建输出目录:
    multilingual/
      {source-lang}/
      {lang-1}/
      {lang-2}/
      ...
    输出必须保存在项目根目录内,绝不能写入当前工作目录之外的位置。
进度提示:
Phase 1: Configuration complete, [N] languages selected ([codes])
(阶段1:配置完成,已选择[N]种语言([代码]))

Phase 2: Write Original Blog

阶段2:撰写原文博客

Invoke the
blog-write
sub-skill (route through
/blog write
so all existing rules apply: template auto-selection, sourced statistics, citation capsules, FAQ schema, 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}
调用
blog-write
子技能(通过
/blog write
路由,确保所有现有规则生效:自动选择模板、引用统计数据、引用胶囊、FAQ schema、内部链接区域、图表、图片嵌入)。传入主题以及用户提供的任何blog-write参数。
将原文保存至
multilingual/{source-lang}/{slug}.{ext}
进度提示:
Phase 2: Original written, multilingual/{source-lang}/{slug}.{ext}
(阶段2:原文撰写完成,路径为multilingual/{source-lang}/{slug}.{ext})

Phase 3: Translate to All Target Languages

阶段3:翻译为所有目标语言

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
.
针对每个目标语言,调用
blog-translate
  • 输入:阶段2生成的原文博客文章。
  • 目标:指定的语言代码。
  • 在运行时支持的情况下并行处理目标语言(每种语言对应一个任务),以缩短总耗时。
将翻译结果保存至
multilingual/{lang}/{localized-slug}.{ext}
进度提示:针对每种语言显示
Phase 3: Translating to [lang] ([X]/[N])
(阶段3:正在翻译为[语言] ([已完成]/[总数量])),全部完成后显示
Phase 3: All translations complete
(阶段3:所有翻译完成)。

Phase 4: Cultural Adaptation

阶段4:文化适配

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.
Update files in place. 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
.
如果未设置
--no-localize
,则为每篇翻译后的文章调用
blog-localize
  • 输入:翻译后的博客文章。
  • 区域设置:目标语言或区域代码。
  • 并行处理。
就地更新文件。本地化工具会替换品牌示例、调整CTA(号召性用语)、替换法律参考内容,并调整正式程度。完整的适配流程请查看
../blog-localize/SKILL.md
进度提示:
Phase 4: Cultural adaptation complete for [N] languages
(阶段4:已完成[N]种语言的文化适配)。

Phase 5: International SEO Generation

阶段5:国际化SEO生成

Generate three artifacts plus localized schema. If the
seo-hreflang
skill from claude-seo is installed, delegate validation to it. Otherwise use the self-contained generator below.
生成三类资产以及本地化schema。如果已安装claude-seo的
seo-hreflang
技能,则将验证工作委托给它;否则使用下方的内置生成器。

5a. Hreflang Tags (HTML)

5a. Hreflang标签(HTML)

Copy-paste ready tags for
<head>
:
html
<!-- Hreflang tags. Paste into <head> of each language version. -->
<link rel="alternate" hreflang="{source}" href="{source-url}" />
<link rel="alternate" hreflang="{lang-1}" href="{lang-1-url}" />
<link rel="alternate" hreflang="{lang-2}" href="{lang-2-url}" />
<link rel="alternate" hreflang="x-default" href="{source-url}" />
Rules (mirrored from
seo-hreflang
):
  • Every page references all alternates including itself (self-referencing).
  • x-default
    points to the source-language version.
  • All URLs use the same protocol (HTTPS) and trailing-slash convention.
  • Bidirectional: every relationship is reciprocal.
Save to
multilingual/hreflang-tags.html
.
可直接复制粘贴到
<head>
中的标签:
html
<!-- Hreflang tags. Paste into <head> of each language version. -->
<link rel="alternate" hreflang="{source}" href="{source-url}" />
<link rel="alternate" hreflang="{lang-1}" href="{lang-1-url}" />
<link rel="alternate" hreflang="{lang-2}" href="{lang-2-url}" />
<link rel="alternate" hreflang="x-default" href="{source-url}" />
规则(与
seo-hreflang
一致):
  • 每个页面都引用所有替代版本,包括自身(自引用)。
  • x-default
    指向源语言版本。
  • 所有URL使用相同的协议(HTTPS)和尾部斜杠约定。
  • 双向引用:所有关系都是相互的。
保存至
multilingual/hreflang-tags.html

5b. Hreflang Sitemap Fragment

5b. Hreflang站点地图片段

xml
<?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>{source-url}</loc>
    <xhtml:link rel="alternate" hreflang="{source}" href="{source-url}" />
    <xhtml:link rel="alternate" hreflang="{lang-1}" href="{lang-1-url}" />
    <xhtml:link rel="alternate" hreflang="x-default" href="{source-url}" />
  </url>
  <!-- Repeat one <url> block per language version -->
</urlset>
Save to
multilingual/hreflang-sitemap.xml
.
xml
<?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>{source-url}</loc>
    <xhtml:link rel="alternate" hreflang="{source}" href="{source-url}" />
    <xhtml:link rel="alternate" hreflang="{lang-1}" href="{lang-1-url}" />
    <xhtml:link rel="alternate" hreflang="x-default" href="{source-url}" />
  </url>
  <!-- Repeat one <url> block per language version -->
</urlset>
保存至
multilingual/hreflang-sitemap.xml

5c. Hreflang Map (JSON)

5c. Hreflang映射(JSON)

Machine-readable mapping for CMS integration:
json
{
  "sourceSlug": "how-to-avoid-ai-slop",
  "sourceLanguage": "en",
  "generatedDate": "YYYY-MM-DD",
  "versions": [
    {
      "lang": "en",
      "slug": "how-to-avoid-ai-slop",
      "file": "en/how-to-avoid-ai-slop.md",
      "title": "How to Avoid AI Slop in 2026",
      "description": "..."
    },
    {
      "lang": "de",
      "slug": "wie-man-ki-slop-vermeidet",
      "file": "de/wie-man-ki-slop-vermeidet.md",
      "title": "KI-Slop vermeiden in 2026",
      "description": "..."
    }
  ],
  "hreflang": {
    "method": "html",
    "x-default": "en"
  }
}
Save to
multilingual/hreflang-map.json
.
适用于CMS集成的机器可读映射:
json
{
  "sourceSlug": "how-to-avoid-ai-slop",
  "sourceLanguage": "en",
  "generatedDate": "YYYY-MM-DD",
  "versions": [
    {
      "lang": "en",
      "slug": "how-to-avoid-ai-slop",
      "file": "en/how-to-avoid-ai-slop.md",
      "title": "How to Avoid AI Slop in 2026",
      "description": "..."
    },
    {
      "lang": "de",
      "slug": "wie-man-ki-slop-vermeidet",
      "file": "de/wie-man-ki-slop-vermeidet.md",
      "title": "KI-Slop vermeiden in 2026",
      "description": "..."
    }
  ],
  "hreflang": {
    "method": "html",
    "x-default": "en"
  }
}
保存至
multilingual/hreflang-map.json

5d. Localized Schema (Optional)

5d. 本地化Schema(可选)

If the user asks, or if a frontmatter
schema: true
flag is present, attach or update JSON-LD on every language version with
inLanguage
and
translationOfWork
fields:
json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "[Localized title]",
  "description": "[Localized description]",
  "inLanguage": "[lang-code]",
  "isPartOf": { "@type": "Blog", "inLanguage": "[lang-code]" },
  "translationOfWork": {
    "@type": "BlogPosting",
    "inLanguage": "[source-lang]",
    "url": "[source-url]"
  }
}
Use the existing
/blog schema
sub-skill if richer schema (FAQ, Person, Breadcrumb) is wanted on each version.
如果用户要求,或前置元数据中存在
schema: true
标记,则为每个语言版本附加或更新JSON-LD,添加
inLanguage
translationOfWork
字段:
json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "[Localized title]",
  "description": "[Localized description]",
  "inLanguage": "[lang-code]",
  "isPartOf": { "@type": "Blog", "inLanguage": "[lang-code]" },
  "translationOfWork": {
    "@type": "BlogPosting",
    "inLanguage": "[source-lang]",
    "url": "[source-url]"
  }
}
如果需要在每个版本中添加更丰富的schema(FAQ、人物、面包屑),可使用现有的
/blog schema
子技能。

Phase 6: Delivery Summary

阶段6:交付总结

undefined
undefined

Multilingual blog complete: [Title]

多语言博客创建完成:[标题]

Original

原文

  • Language: [source]
  • File: multilingual/{source}/{slug}.{ext}
  • 语言:[source]
  • 文件路径:multilingual/{source}/{slug}.{ext}

Translations

翻译版本

LanguageFileLocalizedKeywords adapted
demultilingual/de/{slug}.mdyes[N]
frmultilingual/fr/{slug}.mdyes[N]
esmultilingual/es/{slug}.mdyes[N]
语言文件路径是否已本地化适配关键词数量
demultilingual/de/{slug}.md[N]
frmultilingual/fr/{slug}.md[N]
esmultilingual/es/{slug}.md[N]

International SEO assets

国际化SEO资产

  • multilingual/hreflang-tags.html
  • multilingual/hreflang-sitemap.xml
  • multilingual/hreflang-map.json
  • Localized schema embedded per version (if requested)
  • multilingual/hreflang-tags.html
  • multilingual/hreflang-sitemap.xml
  • multilingual/hreflang-map.json
  • 每个版本中嵌入的本地化schema(如已请求)

Total

统计信息

  • [N] posts in [N] languages
  • [N] SEO assets generated
  • [N]种语言共[N]篇文章
  • 生成[N]份SEO资产

Next steps

后续步骤

  • Replace
    {url}
    placeholders in hreflang tags with your real URLs.
  • Merge
    hreflang-sitemap.xml
    into your existing sitemap.
  • Run
    /blog locale-audit multilingual/
    to verify completeness.
  • Resolve
    [INTERNAL-LINK]
    placeholders with locale-specific URLs.
  • If claude-seo is installed, run
    /seo hreflang multilingual/
    for deeper validation.
undefined
  • 将hreflang标签中的
    {url}
    占位符替换为实际URL。
  • hreflang-sitemap.xml
    合并到现有站点地图中。
  • 运行
    /blog locale-audit multilingual/
    以验证完整性。
  • [INTERNAL-LINK]
    占位符替换为对应区域的URL。
  • 如果已安装claude-seo,运行
    /seo hreflang multilingual/
    进行深度验证。
undefined

Cross-References

交叉引用

WhenRun
To regenerate or reword the source
/blog write <topic>
To translate one existing file only
/blog translate <file> --to <codes>
To deepen cultural fit on one file
/blog localize <file> --locale <code>
To audit a multilingual directory
/blog locale-audit <directory>
For deeper hreflang validation
/seo hreflang <directory>
(claude-seo, optional)
场景执行命令
重新生成或改写原文
/blog write <topic>
仅翻译单个现有文件
/blog translate <file> --to <codes>
深化单个文件的文化适配
/blog localize <file> --locale <code>
审计多语言目录
/blog locale-audit <directory>
进行深度hreflang验证
/seo hreflang <directory>
(claude-seo,可选)

Error Handling

错误处理

ScenarioAction
blog-write
missing
Error: "This skill requires
blog-write
. Reinstall claude-blog."
One translation failsComplete the rest, report partial results, suggest a retry command
Source language equals a targetSkip that target, log a notice
More than 10 target languagesWarn about wall-clock time, proceed if confirmed
seo-hreflang
not installed
Use the self-contained generator, note it in the summary
场景处理方式
blog-write
缺失
错误提示:"此技能需要
blog-write
。请重新安装claude-blog。"
某一项翻译失败完成其余翻译,报告部分结果,并建议重试命令
源语言与某个目标语言相同跳过该目标语言,记录通知
目标语言超过10种警告总耗时较长,确认后继续执行
seo-hreflang
未安装
使用内置生成器,并在总结中说明

Commands Recap

命令回顾

CommandPurpose
/blog multilingual <topic> --languages de,fr,es
Write source, translate, localize, emit hreflang assets
/blog translate <file> --to de,fr,es
Translate one file into target languages
/blog localize <file> --locale de-DE
Cultural deep-adaptation of one translated file
/blog locale-audit <directory>
Multilingual QA across a directory
命令用途
/blog multilingual <topic> --languages de,fr,es
撰写原文、翻译、本地化、生成hreflang资产
/blog translate <file> --to de,fr,es
将单个文件翻译为目标语言
/blog localize <file> --locale de-DE
对单个翻译文件进行深度文化适配
/blog locale-audit <directory>
对多语言目录进行多语言质量检查