blog-multilingual
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBlog 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 fromby 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 originalclaude-blog-multilingualinstaller and credential handling flagged in the audit, integrates as core skills, and uses the shared cultural-adaptation reference undercurl | bash.blog-translate/references/
这款旗舰级多语言编排工具集博客撰写、翻译、文化适配和完整国际化SEO功能于一体,只需一条命令即可完成。它能生成各目标语言下可直接发布的博客文章,附带hreflang标签、本地化JSON-LD schema以及CMS集成元数据。
改编自Chris Mueller开发的(AI Marketing Hub Pro Hub挑战赛提交作品,2026年3月,评分85/100,达到熟练水平)。 原版地址:https://github.com/Chriss54/multilingual-int 本次移植移除了原版中审计指出的claude-blog-multilingual安装程序和凭证处理模块,将其整合为核心技能,并使用curl | bash下的共享文化适配参考资源。blog-translate/references/
Dependencies
依赖项
Invoked internally by this orchestrator:
| Component | Source | Required |
|---|---|---|
| claude-blog (this plugin) | Yes |
| claude-blog (this plugin) | Yes |
| claude-blog (this plugin) | Yes (when |
| claude-seo (sibling plugin) | No, falls back to a self-contained generator |
If 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 provides.
seo-hreflangseo-hreflang本编排工具内部调用以下组件:
| 组件 | 来源 | 是否必需 |
|---|---|---|
| claude-blog(本插件) | 是 |
| claude-blog(本插件) | 是 |
| claude-blog(本插件) | 是(当 |
| claude-seo(兄弟插件) | 否,可回退至内置生成器 |
如果未安装,编排工具将使用自身的轻量生成器(如下文第5阶段)生成hreflang标签,并在交付总结中说明这一限制。此时的hreflang验证仅为结构层面,不具备提供的深度验证能力。
seo-hreflangseo-hreflangCommand Syntax
命令语法
/blog multilingual <topic> --languages <lang1,lang2,...> [--source <lang>] [--no-localize] [--format <md|mdx|html>]| Argument | Required | Default | Description |
|---|---|---|---|
| Yes | , | Blog topic or working title |
| Yes | , | Comma-separated ISO 639-1 codes (e.g. |
| No | | Source language to write the original in |
| No | off | Skip cultural adaptation (translation only) |
| No | auto | Output format: |
If 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., ). The post will be written in
first, then translated."
--languagesde,fr,es,ja,pt-BR<source>/blog multilingual <topic> --languages <lang1,lang2,...> [--source <lang>] [--no-localize] [--format <md|mdx|html>]| 参数 | 是否必需 | 默认值 | 描述 |
|---|---|---|---|
| 是 | - | 博客主题或暂定标题 |
| 是 | - | 逗号分隔的ISO 639-1代码(例如 |
| 否 | | 撰写原文使用的源语言 |
| 否 | off | 跳过文化适配(仅翻译) |
| 否 | auto | 输出格式: |
如果缺少参数,在执行前需询问用户一次:
"博客需要发布为哪些语言?请提供逗号分隔的ISO 639-1代码(例如)。文章将先以语言撰写,再进行翻译。"
--languagesde,fr,es,ja,pt-BR<source>Workflow
工作流程
Phase 1: Configuration
阶段1:配置
- Parse arguments. Extract topic, target languages, source, format.
- Validate each language code against ISO 639-1 (region suffixes like
,
pt-BR,es-MXare also accepted).zh-TW - Detect output format from the project (frontmatter convention, file
extensions, framework hints) or use .
--format - Resolve source language. If a target language equals , drop it from the translation list with a notice.
--source - Create the output directory inside the current working directory:
Output MUST stay inside the project root. Never write outside the cwd.
multilingual/ {source-lang}/ {lang-1}/ {lang-2}/ ...
Progress:
Phase 1: Configuration complete, [N] languages selected ([codes])- 解析参数,提取主题、目标语言、源语言、格式。
- 验证每个语言代码是否符合ISO 639-1标准(同时接受带区域后缀的代码,如、
pt-BR、es-MX)。zh-TW - 从项目中检测输出格式(根据前置元数据约定、文件扩展名、框架提示),或使用指定的格式。
--format - 确定源语言。如果某个目标语言与指定的语言相同,则将其从翻译列表中移除并发出通知。
--source - 在当前工作目录内创建输出目录:
输出必须保存在项目根目录内,绝不能写入当前工作目录之外的位置。
multilingual/ {source-lang}/ {lang-1}/ {lang-2}/ ...
进度提示:(阶段1:配置完成,已选择[N]种语言([代码]))
Phase 1: Configuration complete, [N] languages selected ([codes])Phase 2: Write Original Blog
阶段2:撰写原文博客
Invoke the sub-skill (route through 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.
blog-write/blog writeSave the original to .
multilingual/{source-lang}/{slug}.{ext}Progress:
Phase 2: Original written, multilingual/{source-lang}/{slug}.{ext}调用子技能(通过路由,确保所有现有规则生效:自动选择模板、引用统计数据、引用胶囊、FAQ schema、内部链接区域、图表、图片嵌入)。传入主题以及用户提供的任何blog-write参数。
blog-write/blog write将原文保存至。
multilingual/{source-lang}/{slug}.{ext}进度提示:(阶段2:原文撰写完成,路径为multilingual/{source-lang}/{slug}.{ext})
Phase 2: Original written, 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: per language, then
.
Phase 3: Translating to [lang] ([X]/[N])Phase 3: All translations complete针对每个目标语言,调用:
blog-translate- 输入:阶段2生成的原文博客文章。
- 目标:指定的语言代码。
- 在运行时支持的情况下并行处理目标语言(每种语言对应一个任务),以缩短总耗时。
将翻译结果保存至。
multilingual/{lang}/{localized-slug}.{ext}进度提示:针对每种语言显示(阶段3:正在翻译为[语言] ([已完成]/[总数量])),全部完成后显示(阶段3:所有翻译完成)。
Phase 3: Translating to [lang] ([X]/[N])Phase 3: All translations completePhase 4: Cultural Adaptation
阶段4:文化适配
If is NOT set, invoke for every translated
post:
--no-localizeblog-localize- 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
for the full adaptation pass.
../blog-localize/SKILL.mdProgress: .
Phase 4: Cultural adaptation complete for [N] languages如果未设置,则为每篇翻译后的文章调用:
--no-localizeblog-localize- 输入:翻译后的博客文章。
- 区域设置:目标语言或区域代码。
- 并行处理。
就地更新文件。本地化工具会替换品牌示例、调整CTA(号召性用语)、替换法律参考内容,并调整正式程度。完整的适配流程请查看。
../blog-localize/SKILL.md进度提示:(阶段4:已完成[N]种语言的文化适配)。
Phase 4: Cultural adaptation complete for [N] languagesPhase 5: International SEO Generation
阶段5:国际化SEO生成
Generate three artifacts plus localized schema. If the skill
from claude-seo is installed, delegate validation to it. Otherwise use the
self-contained generator below.
seo-hreflang生成三类资产以及本地化schema。如果已安装claude-seo的技能,则将验证工作委托给它;否则使用下方的内置生成器。
seo-hreflang5a. 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).
- points to the source-language version.
x-default - 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.html5b. 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.xmlxml
<?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.xml5c. 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.json5d. Localized Schema (Optional)
5d. 本地化Schema(可选)
If the user asks, or if a frontmatter flag is present, attach
or update JSON-LD on every language version with and
fields:
schema: trueinLanguagetranslationOfWorkjson
{
"@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 sub-skill if richer schema (FAQ, Person,
Breadcrumb) is wanted on each version.
/blog schema如果用户要求,或前置元数据中存在标记,则为每个语言版本附加或更新JSON-LD,添加和字段:
schema: trueinLanguagetranslationOfWorkjson
{
"@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 schemaPhase 6: Delivery Summary
阶段6:交付总结
undefinedundefinedMultilingual blog complete: [Title]
多语言博客创建完成:[标题]
Original
原文
- Language: [source]
- File: multilingual/{source}/{slug}.{ext}
- 语言:[source]
- 文件路径:multilingual/{source}/{slug}.{ext}
Translations
翻译版本
| Language | File | Localized | Keywords adapted |
|---|---|---|---|
| de | multilingual/de/{slug}.md | yes | [N] |
| fr | multilingual/fr/{slug}.md | yes | [N] |
| es | multilingual/es/{slug}.md | yes | [N] |
| 语言 | 文件路径 | 是否已本地化 | 适配关键词数量 |
|---|---|---|---|
| de | multilingual/de/{slug}.md | 是 | [N] |
| fr | multilingual/fr/{slug}.md | 是 | [N] |
| es | multilingual/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 placeholders in hreflang tags with your real URLs.
{url} - Merge into your existing sitemap.
hreflang-sitemap.xml - Run to verify completeness.
/blog locale-audit multilingual/ - Resolve placeholders with locale-specific URLs.
[INTERNAL-LINK] - If claude-seo is installed, run for deeper validation.
/seo hreflang multilingual/
undefined- 将hreflang标签中的占位符替换为实际URL。
{url} - 将合并到现有站点地图中。
hreflang-sitemap.xml - 运行以验证完整性。
/blog locale-audit multilingual/ - 将占位符替换为对应区域的URL。
[INTERNAL-LINK] - 如果已安装claude-seo,运行进行深度验证。
/seo hreflang multilingual/
undefinedCross-References
交叉引用
| When | Run |
|---|---|
| To regenerate or reword the source | |
| To translate one existing file only | |
| To deepen cultural fit on one file | |
| To audit a multilingual directory | |
| For deeper hreflang validation | |
| 场景 | 执行命令 |
|---|---|
| 重新生成或改写原文 | |
| 仅翻译单个现有文件 | |
| 深化单个文件的文化适配 | |
| 审计多语言目录 | |
| 进行深度hreflang验证 | |
Error Handling
错误处理
| Scenario | Action |
|---|---|
| Error: "This skill requires |
| One translation fails | Complete the rest, report partial results, suggest a retry command |
| Source language equals a target | Skip that target, log a notice |
| More than 10 target languages | Warn about wall-clock time, proceed if confirmed |
| Use the self-contained generator, note it in the summary |
| 场景 | 处理方式 |
|---|---|
| 错误提示:"此技能需要 |
| 某一项翻译失败 | 完成其余翻译,报告部分结果,并建议重试命令 |
| 源语言与某个目标语言相同 | 跳过该目标语言,记录通知 |
| 目标语言超过10种 | 警告总耗时较长,确认后继续执行 |
| 使用内置生成器,并在总结中说明 |
Commands Recap
命令回顾
| Command | Purpose |
|---|---|
| Write source, translate, localize, emit hreflang assets |
| Translate one file into target languages |
| Cultural deep-adaptation of one translated file |
| Multilingual QA across a directory |
| 命令 | 用途 |
|---|---|
| 撰写原文、翻译、本地化、生成hreflang资产 |
| 将单个文件翻译为目标语言 |
| 对单个翻译文件进行深度文化适配 |
| 对多语言目录进行多语言质量检查 |