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".
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 antigravity-blog (blog-write). Optional integration with antigravity-seo (seo-hreflang) for richer hreflang validation.
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 antigravity-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
antigravity-blog (this plugin)
Yes
blog-translate
antigravity-blog (this plugin)
Yes
blog-localize
antigravity-blog (this plugin)
Yes (when --localize is on, default)
seo-hreflang
antigravity-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.
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."
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 antigravity-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. --><linkrel="alternate"hreflang="{source}"href="{source-url}" /><linkrel="alternate"hreflang="{lang-1}"href="{lang-1-url}" /><linkrel="alternate"hreflang="{lang-2}"href="{lang-2-url}" /><linkrel="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"?><urlsetxmlns="http://www.sitemaps.org/schemas/sitemap/0.9"xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>{source-url}</loc><xhtml:linkrel="alternate"hreflang="{source}"href="{source-url}" /><xhtml:linkrel="alternate"hreflang="{lang-1}"href="{lang-1-url}" /><xhtml:linkrel="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:
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 antigravity-seo is installed, run `/seo hreflang multilingual/` for
deeper validation.