Epub translate
Skill eugenepyvovarov/mcpbundler-agent-skills-marketplace/epub-translate
agent skills marketplace for mcp bundler(can be used with other ai tools with support of agent skills markeplaces). some skills are mine, also borrowed skills(credited to authors)
npx -y skills add eugenepyvovarov/mcpbundler-agent-skills-marketplace --skill epub-translateAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Translate EPUB (.epub) ebooks to another language by unpacking the EPUB container, extracting XHTML block-level fragments into JSONL translation units, translating them via the OpenAI Responses API (e.g. gpt-5.1 / gpt-5-mini) while preserving markup, updating language metadata, and repackaging a valid EPUB (mimetype-first and uncompressed). Use when Codex needs to translate and rebuild EPUB files.
SKILL.md
4.4 KB, as published. Nobody here has run it
EPUB Translate
Workflow
- One-time setup (writes
.skills-data/epub-translate/.env):scripts/epub-translate setup - Extract translation units:
scripts/epub-translate extract --epub /path/book.epub - Translate via OpenAI API:
scripts/epub-translate translate --job-dir <job-dir> --target-lang <bcp47> [--fraction 0.1] - Apply + repack:
scripts/epub-translate apply --job-dir <job-dir> --translations <job-dir>/translations.jsonl --target-lang <bcp47> --out-epub /path/book.<bcp47>.epub - Optional: validate output:
scripts/epub-translate validate --epub /path/book.<bcp47>.epub
Commands
scripts/epub-translate setup:- Prompts for
OPENAI_API_KEY(saved to.skills-data/epub-translate/.env). - Prompts for default
OPENAI_MODEL(e.g.gpt-5.1,gpt-5-mini).
- Prompts for
scripts/epub-translate extract ...:- Unzips the EPUB into a per-run job dir under
.skills-data/epub-translate/tmp/. - Parses
META-INF/container.xml→ package document (.opf) → manifest/spine. - Extracts XHTML
<head><title>and leaf block-level XHTML fragments (inner HTML) in reading order intounits.jsonl. - Optional: include OPF
dc:titlevia--include-opf-title.
- Unzips the EPUB into a per-run job dir under
scripts/epub-translate translate ...:- Reads
<job-dir>/units.jsonland writes<job-dir>/translations.jsonl. - Uses the OpenAI Responses API (
https://api.openai.com/v1/responses). - Resume-safe by default: if
translations.jsonlalready contains some ids, they are skipped.
- Reads
scripts/epub-translate apply ...:- Applies translated fragments back into the unpacked XHTML files.
- Updates
dc:languagein the OPF andxml:langin the XHTML. - Repackages as a valid EPUB (writes
mimetypefirst, stored/uncompressed).
scripts/epub-translate validate ...: checks basic EPUB container invariants.
JSONL formats
units.jsonl (input to translation) has one JSON object per line, e.g.:
{"id":1,"kind":"xhtml-fragment","doc_path":"EPUB/chapter1.xhtml","xpath":"/html[1]/body[1]/p[3]","tag":"p","source_inner_html":"Hello <em>world</em>!","source_markup_hash":"..."}
translations.jsonl (output from translation) must contain:
{"id":1,"translated_inner_html":"Hola <em>mundo</em>!"}
Translation rules (markup-safe)
- Translate only human-readable text, not markup.
- Do not change any tags, nesting, attribute names, attribute values, URLs, IDs, or filenames.
- Keep entities/character references as-is (e.g.
&, ). - If a fragment contains non-translatable text (code, formulas, URLs), leave it unchanged.
Local data and env
- Store all mutable state under <project_root>/.skills-data/<skill-name>/.
- Keep config and registries in .skills-data/<skill-name>/ (for example: config.json, <feature>.json).
- Use .skills-data/<skill-name>/.env for SKILL_ROOT, SKILL_DATA_DIR, and any per-skill env keys.
- Install local tools into .skills-data/<skill-name>/bin and prepend it to PATH when needed.
- Install dependencies under .skills-data/<skill-name>/venv:
- Python: .skills-data/<skill-name>/venv/python
- Node: .skills-data/<skill-name>/venv/node_modules
- Go: .skills-data/<skill-name>/venv/go (modcache, gocache)
- PHP: .skills-data/<skill-name>/venv/php (cache, vendor)
- Write logs/cache/tmp under .skills-data/<skill-name>/logs, .skills-data/<skill-name>/cache, .skills-data/<skill-name>/tmp.
- Keep automation in <skill-root>/scripts and read SKILL_DATA_DIR (default to <project_root>/.skills-data/<skill-name>/).
- Do not write outside <skill-root> and <project_root>/.skills-data/<skill-name>/ unless the user requests it.
OpenAI config keys
Stored in .skills-data/epub-translate/.env (created by scripts/epub-translate setup):
OPENAI_API_KEYOPENAI_MODEL(default:gpt-5-mini; change viasetup --model ..., editing.env, ortranslate --model ...)OPENAI_BASE_URL(default:https://api.openai.com/v1)OPENAI_REASONING_EFFORT(default:low; change viasetup --reasoning-effort ...or editing.env)