blog-multilingual について
blog-multilingualは、ブログ執筆、翻訳、文化的な調整、国際SEOを多言語公開のワークフローとしてまとめます。複数言語で発信するチーム向けに、ローカライズ済み記事とhreflang関連データ、CMS連携用メタデータを生成します。
主な機能
- 01原文ブログ記事の執筆
- 02指定言語への翻訳
- 03文化に合わせたコンテンツ調整
- 04hreflangタグ、サイトマップ、マップの生成
- 05ローカライズ済みJSON-LDスキーマの追加(任意)
活用シーン
- 01新しいブログを複数言語で公開
- 02地域別の読者向けに翻訳記事を用意
- 03多言語ページ用のhreflang関連データを生成
- 04CMS連携用に言語版メタデータを提供
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ infrasity-labs/ dev-gtm-claude-skills --skill blog-multilingualインストール後、Claude Code で/blog-multilingualを入力して読み込まれたか確認します。
詳細
ブログの多言語対応、ワンコマンドで国際公開
主要な多言語オーケストレーターです。ブログの執筆、翻訳、文化的な適応、国際 SEO 全般を単一のコマンドに統合します。hreflang タグ、ローカライズされた JSON-LD スキーマ、CMS 連携用メタデータを含む、公開可能なブログ記事をすべての対象言語で作成します。
依存関係
このオーケストレーターから内部的に呼び出されます。
| コンポーネント | ソース | 必須 |
|---|---|---|
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 | いいえ | 自動 | 出力形式:md、mdx、または html |
--languages が指定されていない場合は、何かを実行する前にユーザーに一度だけ確認してください。
「ブログを公開する言語を指定してください。カンマ区切りの ISO 639-1 コードを入力してください(例:de,fr,es,ja,pt-BR)。まず <source> で記事を執筆し、その後に翻訳します。」
ワークフロー
フェーズ 1:設定
- 引数を解析します。トピック、対象言語、ソース、形式を抽出します。
- 各言語コードを ISO 639-1 に照らして検証します(
pt-BR、es-MX、zh-TWなどの地域サフィックスも使用できます)。 - プロジェクトの設定(フロントマターの規約、ファイル拡張子、フレームワークの手がかり)から出力形式を判定するか、
--formatを使用します。 - ソース言語を決定します。対象言語が
--sourceと一致する場合は、通知したうえで翻訳対象から除外します。 - 現在の作業ディレクトリ内に出力ディレクトリを作成します。
出力先は必ずプロジェクトルート内にしてください。cwd の外には絶対に書き込まないでください。multilingual/ {source-lang}/ {lang-1}/ {lang-2}/ ...
進捗:Phase 1: Configuration complete, [N] languages selected ([codes])
フェーズ 2:元のブログ記事を執筆
blog-write サブスキルを呼び出します(既存のすべてのルールを適用するため /blog write 経由で実行します:テンプレートの自動選択、出典付き統計、引用カプセル、FAQ スキーマ、内部リンク領域、グラフ、画像の埋め込み)。トピックと、ユーザーが指定した blog-write のパラメーターを渡します。
元の記事を multilingual/{source-lang}/{slug}.{ext} に保存します。
進捗:Phase 2: Original written, multilingual/{source-lang}/{slug}.{ext}
フェーズ 3:すべての対象言語に翻訳
対象言語ごとに blog-translate を呼び出します。
- 入力:フェーズ 2 で作成した元のブログ記事。
- 対象:個別の言語コード。
- 実行環境が対応している場合は、処理時間を短縮するために対象言語の処理を並列で実行します(言語ごとに 1 つのタスク)。
翻訳を multilingual/{lang}/{localized-slug}.{ext} に保存します。
進捗:言語ごとに Phase 3: Translating to [lang] ([X]/[N])、その後 Phase 3: All translations complete
フェーズ 4:文化的な適応
--no-localize が設定されていない場合は、翻訳したすべての記事について blog-localize を呼び出します。
- 入力:翻訳済みのブログ記事。
- ロケール:対象の言語コードまたは地域コード。
- 並列で実行します。
ファイルをその場で更新します。ローカライザーはブランドの事例を入れ替え、CTA を調整し、法律関連の参照を置き換え、文体の丁寧さを調整します。適応処理の詳細は ../blog-localize/SKILL.md を参照してください。
進捗:Phase 4: Cultural adaptation complete for [N] languages
フェーズ 5:国際 SEO の生成
3 つの成果物とローカライズされたスキーマを生成します。claude-seo の seo-hreflang スキルがインストールされている場合は、検証を委任します。それ以外の場合は、以下の自己完結型ジェネレーターを使用します。
5a. Hreflang タグ(HTML)
<head> にコピーして貼り付けられるタグです。
<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>
</urlset>
multilingual/hreflang-sitemap.xml に保存します。
5c. Hreflang マップ(JSON)
CMS 連携用の機械可読マッピングです。
{
"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. ローカライズされたスキーマ(任意)
ユーザーから依頼があった場合、または frontmatter に schema: true フラグがある場合は、すべての言語版に inLanguage フィールドと translationOfWork フィールドを含む JSON-LD を追加または更新します。
{
"@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]"
}
}
各言語版でより豊富なスキーマ(FAQ、人物、パンくずリスト)が必要な場合は、既存の /blog schema サブスキルを使用します。
フェーズ 6:成果の概要
## 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.
関連項目
| タイミング | 実行するコマンド |
|---|---|
| ソースを再生成または書き直す場合 | /blog write <topic> |
| 既存のファイルを 1 つだけ翻訳する場合 | /blog translate <file> --to <codes> |
| 1 つのファイルの文化的適合性を高める場合 | /blog localize <file> --locale <code> |
| 多言語ディレクトリを監査する場合 | /blog locale-audit <directory> |
| hreflang をさらに詳しく検証する場合 | /seo hreflang <directory>(claude-seo、任意) |
エラー処理
| 状況 | 対応 |
|---|---|
blog-write が見つからない | エラー:「このスキルには blog-write が必要です。claude-blog を再インストールしてください。」 |
| 翻訳の 1 つが失敗する | 残りの翻訳を完了し、部分的な結果を報告して、再試行コマンドを提案します |
| ソース言語がターゲット言語と同じ | そのターゲットをスキップし、通知を記録します |
| ターゲット言語が 10 を超える | 実行時間について警告し、確認後に続行します |
seo-hreflang がインストールされていない | 自己完結型ジェネレーターを使用し、その旨を概要に記載します |
コマンドのまとめ
| コマンド | 目的 |
|---|---|
/blog multilingual <topic> --languages de,fr,es | ソースを作成し、翻訳、ローカライズを行い、hreflang アセットを出力します |
/blog translate <file> --to de,fr,es | 1 つのファイルをターゲット言語に翻訳します |
/blog localize <file> --locale de-DE | 翻訳済みファイル 1 つを文化的に深く適応させます |
/blog locale-audit <directory> | ディレクトリ全体を対象に多言語 QA を実施します |