alex-jb

Bilingual Content Sync Agent — Development skill for Claude Code

Development community

EN ↔ 中文 i18n diff + Claude translate + HITL apply.

How to install Bilingual Content Sync Agent

This entry records only its repository, not the path inside it, so there is no exact command to give. Open alex-jb/bilingual-content-sync-agent and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Bilingual Content Sync Agent does

EN ↔ 中文 i18n diff + Claude translate + HITL apply. Structured outputs + Batch API (50% off). pip · MCP server · MIT.

Alternatives in Development

  • Astro — Astro 5.x components, routing, collections, i18n, SEO, Tailwind, React islands, transitions 2.6k ★
  • Translate Book — Claude Code skill that translates entire books (PDF/DOCX/EPUB) into any language using parallel subagents 542 ★
  • Env — Manage Vercel environment variables 263 ★

README

bilingual-content-sync-agent

**English** | [中文](README.zh-CN.md)

Solo Founder OS agent #4 — keep `en.json` and `zh.json` (or any locale pair) in sync. Diffs, translates missing keys via Claude, queues them in a markdown HITL review file, applies approved edits back to your locale JSON. Never auto-writes without human approval.

[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![PyPI](https://img.shields.io/pypi/v/bilingual-content-sync-agent.svg)](https://pypi.org/project/bilingual-content-sync-agent/) [![Python](https://img.shields.io/badge/python-3.9%2B-blue.svg)](#) [![Model](https://img.shields.io/badge/Claude-Sonnet_4.6-D97706?logoColor=white)](https://anthropic.com)

Built by [Alex Ji](https://github.com/alex-jb) for [VibeXForge](https://github.com/alex-jb/vibex)'s 925 EN/ZH i18n strings. Born from this thought:

*Every feature ships English first. ZH catches up days or weeks later. Tracking which keys are stale is manual labor I do at 1 AM. Same for the next 11 makers I know.*

What it does

en.json + zh.json
        ↓
   diff (find keys present in EN, missing/empty/echo'd in ZH)
        ↓
   translate via Claude Sonnet (vibex-tone glossary baked in)
        ↓
   queue/pending/-review.md
        ↓
   founder edits in Obsidian, moves to queue/approved/
        ↓
   apply → writes back to zh.json (preserves nesting + key order)

CLI

# Coverage report
bilingual-sync stats --en locales/en.json --zh locales/zh.json

# Show what's missing (no LLM call)
bilingual-sync diff --en locales/en.json --zh locales/zh.json

# Translate + write review file (LLM call)
bilingual-sync draft \
  --en locales/en.json \
  --zh locales/zh.json \
  --glossary glossary.json \
  --tone "indie SaaS, gamified, neon-pixel, peer-to-peer"

# After human review → move file to queue/approved/, then:
bilingual-sync apply --en locales/en.json --zh locales/zh.json

Glossary file

Glossary keys force consistent translation