# Bilingual Book Plan

Plans and runs bilingual book translation from EPUB, PDF or text files.

- Repository: https://github.com/yihong0618/bilingual_book_maker (9919 stars)
- Category: Writing
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add yihong0618/bilingual_book_maker --skill bbm-plan -g -a claude-code -y`
Codex: `npx skills add yihong0618/bilingual_book_maker --skill bbm-plan -g -a codex -y`
Cursor: `npx skills add yihong0618/bilingual_book_maker --skill bbm-plan -g -a cursor -y`
Gemini CLI: `npx skills add yihong0618/bilingual_book_maker --skill bbm-plan -g -a gemini-cli -y`

## Description

Translate a book into a bilingual edition with bilingual_book_maker ("bbm") - an EPUB through plan mode (greedy partition, an agent-reviewed classification plan, then a full resumable run), a PDF into a bilingual, reflowable EPUB (--to-epub), or a TXT, SRT or Markdown file. Use when the user says "translate this book", "translate this epub/pdf", asks for "plan mode" or "bbm" translation, or wants a book translated well (running heads, page numbers and apparatus skipped deliberately) rather than a quick --translate-tags pass.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# bbm-plan: translate a book with bilingual_book_maker

This file is the router. Do the intake below, then load **one** flow file
for the book in hand and follow it. The other flow files stay unread.

Repo: the repository this skill ships in (`make_book.py` at its root). Run
every command from the repo root. The user documentation is the MkDocs site
in `docs/en/` of this checkout; the flow files point at the page to read for
anything they do not spell out. `python make_book.py --help` is the
authority on every flag, and `docs/en/cmd.md` lists them all in one place.

## Your stance

You are the trained CLI operator. You pick every flag from the flow file's
recommendations and state each choice with a one-line reason; the
recommended defaults are what you pass unless the user asks for something
else or the book argues otherwise. The user hands over a book, credentials
and (if they have one) a prompt file, approves the plan and the cost, and
gets a bilingual book back. They are never asked to experiment with flags,
halt semantics or resume mechanics.

**The EPUB flow uses `--plan-classify agent`.** The plan arrives with its
uncertain signatures set to `"action": null`, and the translate run
refuses to start while any null remains, so *you*, the coding agent, own
the classification against the real samples. Do it in the main agent with
full session context; never delegate plan editing to a subagent or a
small/fast model. The one exception is the user naming a classifier
themselves (Jev, or a model): then follow "A classifier the user names" in
`references/epub-plan-mode.md`, and still read its skips.

All state lives on disk (`bbm_providers.json`, `.env`, the flow's own
working files, the resume cache, `run.log`), so any step can be redone
after a crash or in a new session.

## Intake

The rest: https://github.com/yihong0618/bilingual_book_maker/blob/HEAD/.agents/skills/bbm-plan/SKILL.md
