jpskill.com
✍️ ライティング コミュニティ

blog-multilingual

ブログ記事の作成から多言語翻訳、文化的な調整、SEO対策に必要なhreflangタグやサイトマップ生成までをワンストップで行い、国際的なコンテンツを効率的に公開できる状態にする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. 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".

🇯🇵 日本人クリエイター向け解説

一言でいうと

ブログ記事の作成から多言語翻訳、文化的な調整、SEO対策に必要なhreflangタグやサイトマップ生成までをワンストップで行い、国際的なコンテンツを効率的に公開できる状態にするSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o blog-multilingual.zip https://jpskill.com/download/10525.zip && unzip -o blog-multilingual.zip && rm blog-multilingual.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10525.zip -OutFile "$d\blog-multilingual.zip"; Expand-Archive "$d\blog-multilingual.zip" -DestinationPath $d -Force; ri "$d\blog-multilingual.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して blog-multilingual.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → blog-multilingual フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Blog Multilingual, ワンコマンド国際出版

フラッグシップの多言語オーケストレーターです。ブログの執筆、翻訳、 文化的な適応、そして完全な国際SEOを単一のコマンドに統合します。 すべての対象言語で、hreflangタグ、ローカライズされたJSON-LDスキーマ、およびCMS統合メタデータを含む、すぐに公開できるブログ投稿を生成します。

Chris Mueller氏によるclaude-blog-multilingualを改変(AI Marketing Hub Pro Hub Challengeへの提出、2026年3月、85/100の熟練度で評価)。 オリジナル:https://github.com/Chriss54/multilingual-int このポートは、監査で指摘されたオリジナルのcurl | bashインストーラーと認証情報の処理を削除し、コアスキルとして統合し、 blog-translate/references/の下にある共有の文化適応リファレンスを使用します。

依存関係

このオーケストレーターによって内部的に呼び出されます。

コンポーネント ソース 必須
blog-write claude-blog (このプラグイン) はい
blog-translate claude-blog (このプラグイン) はい
blog-localize claude-blog (このプラグイン) はい ( --localize がオンの場合、デフォルト)
seo-hreflang claude-seo (兄弟プラグイン) いいえ、自己完結型のジェネレーターにフォールバック

seo-hreflangがインストールされていない場合、オーケストレーターは独自の最小限のジェネレーター(以下のフェーズ5)を使用してhreflangタグを発行し、配信サマリーでその制限事項を指摘します。その場合のHreflangの検証は構造的なもののみであり、seo-hreflangが提供するより深い検証ではありません。

コマンド構文

/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 いいえ オフ 文化的な適応をスキップ(翻訳のみ)
--format いいえ auto 出力形式:mdmdx、またはhtml

--languages がない場合は、何かを実行する前にユーザーに一度尋ねてください。 「ブログを公開する言語は何ですか?カンマで区切られたISO 639-1コードを提供してください(例:de,fr,es,ja,pt-BR)。投稿は最初に<source>で記述され、その後翻訳されます。」

ワークフロー

フェーズ1:構成

  1. 引数を解析します。トピック、対象言語、ソース、形式を抽出します。
  2. 各言語コードをISO 639-1に対して検証します(pt-BRes-MXzh-TWのような地域サフィックスも受け入れられます)。
  3. プロジェクトから出力形式を検出します(フロントマターの規則、ファイル拡張子、フレームワークのヒント)または--formatを使用します。
  4. ソース言語を解決します。対象言語が--sourceと等しい場合、通知とともに翻訳リストから削除します。
  5. 現在の作業ディレクトリ内に、出力ディレクトリを作成します。
    multilingual/
      {source-lang}/
      {lang-1}/
      {lang-2}/
      ...

    出力はプロジェクトルート内に留まる必要があります。cwdの外に書き込まないでください。

進捗状況:フェーズ1:構成が完了しました。[N]言語が選択されました([codes])

フェーズ2:オリジナルのブログを執筆

blog-writeサブスキルを呼び出します(/blog writeを介してルーティングして、既存のすべてのルールが適用されるようにします:テンプレートの自動選択、ソース統計、引用カプセル、FAQスキーマ、内部リンクゾーン、チャート、画像埋め込み)。トピックと、ユーザーによって表面化されたblog-writeパラメーターを渡します。

オリジナルをmultilingual/{source-lang}/{slug}.{ext}に保存します。

進捗状況:フェーズ2:オリジナルが記述されました、multilingual/{source-lang}/{slug}.{ext}

フェーズ3:すべての対象言語に翻訳

各対象言語について、blog-translateを呼び出します。

  • 入力:フェーズ2で生成されたオリジナルのブログ投稿。
  • ターゲット:特定の言語コード。
  • ランタイムがサポートしている場合は、並行してターゲットを実行します(言語ごとに1つのタスク)して、実時間(wall-clock time)を短縮します。

翻訳をmultilingual/{lang}/{localized-slug}.{ext}に保存します。

進捗状況:フェーズ3:[lang]に翻訳中([X]/[N])(言語ごと)、その後フェーズ3:すべての翻訳が完了しました

フェーズ4:文化的な適応

--no-localizeが設定されていない場合は、翻訳されたすべての投稿に対してblog-localizeを呼び出します。

  • 入力:翻訳されたブログ投稿。
  • ロケール:対象言語または地域コード。
  • 並行して実行します。

ファイルをインプレースで更新します。ローカライザーはブランドの例を交換し、CTAを適応させ、法的参照を置き換え、形式を調整します。完全な適応パスについては、../blog-localize/SKILL.mdを参照してください。

進捗状況:フェーズ4:[N]言語の文化的な適応が完了しました

フェーズ5:国際SEOの生成

3つのアーティファクトとローカライズされたスキーマを生成します。claude-seoのseo-hreflangスキルがインストールされている場合は、検証をそれに委任します。それ以外の場合は、以下の自己完結型ジェネレーターを使用します。

5a. Hreflangタグ(HTML)

コピー&ペースト可能な<head>用のタグ:

<!-- 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サイトマップフラグメント


<?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 l

(原文はここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

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 , 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 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 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."

Workflow

Phase 1: Configuration

  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])

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, 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}

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.

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.

Phase 5: International SEO Generation

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.

5a. Hreflang Tags (HTML)

Copy-paste ready tags for <head>:

<!-- 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.

5b. Hreflang Sitemap Fragment

<?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.

5c. Hreflang Map (JSON)

Machine-readable mapping for CMS integration:

{
  "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.

5d. Localized Schema (Optional)

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:

{
  "@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.

Phase 6: Delivery Summary

## Multilingual blog complete: [Title]

### Original
- Language: [source]
- File: 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] |

### International SEO assets
- multilingual/hreflang-tags.html
- multilingual/hreflang-sitemap.xml
- multilingual/hreflang-map.json
- Localized schema embedded per version (if requested)

### Total
- [N] posts in [N] languages
- [N] SEO assets generated

### 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.

Cross-References

When Run
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)

Error Handling

Scenario Action
blog-write missing Error: "This skill requires blog-write. Reinstall claude-blog."
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
seo-hreflang not installed Use the self-contained generator, note it in the summary

Commands Recap

Command Purpose
/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