Loading...
Loading...
Translate entire books (PDF/DOCX/EPUB) into any language using Claude Code parallel subagents with resumable chunked pipeline
npx skill4agent add aradotso/trending-skills translate-book-parallelSkill by ara.so — Daily 2026 Skills collection.
Input (PDF/DOCX/EPUB)
│
▼
Calibre ebook-convert → HTMLZ → HTML → Markdown
│
▼
Split into chunks (~6000 chars each)
│ manifest.json tracks SHA-256 hashes
▼
Parallel subagents (8 concurrent by default)
│ each: read chunk → translate → write output_chunk*.md
▼
Validate (manifest hash check, 1:1 source↔output match)
│
▼
Merge → Pandoc → HTML (with TOC) → Calibre → DOCX / EPUB / PDF# 1. Calibre (provides ebook-convert)
# macOS
brew install --cask calibre
# Linux
sudo apt-get install calibre
# Or download from https://calibre-ebook.com/
# 2. Pandoc
brew install pandoc # macOS
sudo apt-get install pandoc # Linux
# 3. Python dependencies
pip install pypandoc beautifulsoup4ebook-convert --version
pandoc --version
python3 -c "import pypandoc; print('pypandoc ok')"npx skills add deusyu/translate-book -a claude-code -gclawhub install translate-bookgit clone https://github.com/deusyu/translate-book.git ~/.claude/skills/translate-booktranslate /path/to/book.pdf to Chinesetranslate ~/Downloads/mybook.epub to Japanese/translate-book translate /path/to/book.docx to French| Code | Language |
|---|---|
| Chinese |
| English |
| Japanese |
| Korean |
| French |
| German |
| Spanish |
python3 scripts/convert.py /path/to/book.pdf --olang zh{book_name}_temp/chunk0001.mdchunk0002.mdmanifest.json# For EPUB input
python3 scripts/convert.py /path/to/book.epub --olang ja
# For DOCX input
python3 scripts/convert.py /path/to/book.docx --olang fr# Each subagent receives exactly this task:
Read chunk0042.md → translate to target language → write output_chunk0042.mdoutput_chunk*.mdpython3 scripts/merge_and_build.py \
--temp-dir book_name_temp \
--title "《Book Title in Target Language》"manifest.json| File | Description |
|---|---|
| Merged translated Markdown |
| Web version with floating TOC |
| Word document |
| E-book format |
| Print-ready PDF |
translate-book/
├── SKILL.md # Claude Code skill definition (orchestrator)
├── scripts/
│ ├── convert.py # PDF/DOCX/EPUB → Markdown chunks via Calibre HTMLZ
│ ├── manifest.py # SHA-256 chunk tracking and merge validation
│ ├── merge_and_build.py # Merge chunks → HTML → DOCX/EPUB/PDF
│ ├── calibre_html_publish.py # Calibre wrapper for format conversion
│ ├── template.html # Web HTML template with floating TOC
│ └── template_ebook.html # Ebook HTML template
└── README.md# scripts/manifest.py (conceptual usage)
# During convert.py — records source hashes
manifest = {
"chunk0001.md": "sha256:abc123...",
"chunk0002.md": "sha256:def456...",
# ...
}
# During merge_and_build.py — validates before merging
# 1. Check every chunk has a corresponding output_chunk
# 2. Re-hash source chunks and compare against manifest
# 3. Reject if any hash mismatches (stale/corrupt output)
# 4. Reject if any output file is emptyoutput.md# 1. Install the skill
npx skills add deusyu/translate-book -a claude-code -g
# 2. Open Claude Code in your working directory
cd ~/books
# 3. Say in Claude Code:
# "translate clean-code.pdf to Chinese"
# Claude Code will:
# - Run convert.py to split into chunks
# - Launch 8 parallel subagents per batch
# - Each subagent translates one chunk
# - Validate all outputs via manifest
# - Merge and build all formats
# 4. Outputs appear in:
ls clean-code_temp/
# chunk0001.md chunk0002.md ... (source)
# output_chunk0001.md ... (translated)
# manifest.json
# output.md
# book.html
# book.docx
# book.epub
# book.pdf# If translation is interrupted, just re-run the same command:
# "translate clean-code.pdf to Chinese"
# The skill detects existing output_chunk*.md files
# and skips already-translated chunks automatically.
# Only missing or failed chunks are retried.# Delete only the final artifacts (keeps translated chunks)
cd book_name_temp/
rm -f output.md book*.html book.docx book.epub book.pdf
# Re-run merge step
python3 ../scripts/merge_and_build.py \
--temp-dir . \
--title "《New Title》"| Problem | Solution |
|---|---|
| Install Calibre; ensure |
| Source chunks changed — re-run |
| Source file deleted — re-run |
| Incomplete translation | Re-run the skill — resumes from last valid chunk |
| Changed title/template but output unchanged | Delete |
| Script auto-deletes stale output and re-merges |
| PDF generation fails | Verify Calibre has PDF output support; try |
| Empty output chunks | Retry failed chunks; check API rate limits |
# Check which chunks are missing translation
ls book_temp/chunk*.md | wc -l # total source chunks
ls book_temp/output_chunk*.md | wc -l # translated chunks so far
# Find missing output chunks
for f in book_temp/chunk*.md; do
base=$(basename "$f" .md)
out="book_temp/output_${base}.md"
if [ ! -f "$out" ] || [ ! -s "$out" ]; then
echo "Missing: $out"
fi
done
# Check manifest
cat book_temp/manifest.json | python3 -m json.tool | head -30SKILL.mdSKILL.mdscripts/template.htmlscripts/template_ebook.html