Epub ai translate
Reusable open-source Agent Skills for Pi and compatible agent systems
npx -y skills add bgevorkian/agent-skills --skill epub-ai-translateAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 13 days oldThe repository was created 13 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 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 user-provided EPUB or PDF books into Russian with a full AI model, chapter/chunk context, a shared glossary, resumable checkpoints, preserved images, book-quality PDF output, and a final vision layout QA. Use when the user asks to translate an EPUB, PDF, e-book, or book into Russian or create a Russian PDF.
SKILL.md
8.9 KB, as published. Nobody here has run it
EPUB/PDF AI Translate
Переводит предоставленные пользователем EPUB или PDF на русский через полноценную AI-модель. Поддерживает общий глоссарий, контекстные XHTML/semantic chunks, checkpoints/resume, иллюстрации, книжную перевёрстку и финальный vision layout-QA.
Единый запуск
Из каталога skill:
cd /d %USERPROFILE%\.pi\agent\skills\epub-ai-translate
uv run --python 3.13 --with beautifulsoup4 --with lxml --with pypdf --with pymupdf python scripts\translate_book.py "C:\path\book.epub-or-pdf" --model openai-codex/gpt-5.4 --workers 3 --glossary "C:\path\glossary.txt"
Unix:
cd ~/.pi/agent/skills/epub-ai-translate
uv run --python 3.13 --with beautifulsoup4 --with lxml --with pypdf --with pymupdf python scripts/translate_book.py "/path/book.epub-or-pdf" --model openai-codex/gpt-5.4 --workers 3 --glossary "/path/glossary.txt"
Dispatcher выбирает pipeline по расширению:
- EPUB input → отдельные русские EPUB + PDF, исходные XHTML/CSS/изображения сохраняются.
- PDF input с text layer → semantic extraction, удаление повторных headers/footers/page numbers, перевод контекстными chunks, reflow в новый русский PDF.
- Scanned/image-only PDF → остановка без повреждений; сначала нужен OCR/vision extraction.
Format-specific help:
python scripts\translate_epub.py --help
python scripts\translate_pdf.py --help
Python всегда запускать через uv run --python 3.13, не напрямую.
Основные параметры
--output-pdf PATH, для EPUB также--output-epub PATH.--workers N— безопасный default3.--model PROVIDER/MODEL— defaultopenai-codex/gpt-5.4; не переходить на mini, если качество важнее скорости.--glossary PATH— общий UTF-8 словарь имён и терминов.--style TEXT— возраст, жанр, тон и стилистические правила.--work-dir PATH— каталог checkpoints.--restart— удалить checkpoints и начать заново.--force— разрешить перезапись output.- EPUB only:
--epub-only.
Обязательный workflow
- Проверить input (
.epub/.pdf) и целевой формат. По умолчанию — русский PDF; для EPUB также сохранить русский EPUB. - Для PDF проверить text layer. Если pipeline сообщает об отсутствии надёжного текста, не имитировать перевод: согласовать OCR/vision pass.
- Подготовить glossary с каноническими именами, местами, фракциями, техникой и официальной терминологией франшизы.
- Для художественной книги использовать полную модель и
--style, соответствующий возрасту, жанру и тону. - Запускать как длительную фоновую задачу: pipeline порождает Pi agents, поэтому
bg_runдолжен иметьisAgent: true. - Следить за
bg_status/bg_logs; повторный запуск с тем же work-dir продолжает по checkpoints. - Проверить translation pairs/checkpoint JSON и межглавную согласованность имён/терминов.
- Обязательно выполнить layout-QA:
Передатьuv run --python 3.13 --with pymupdf --with pillow python scripts\layout_qa.py "C:\path\translated.pdf"layout-report.jsonи все contact sheets отдельной полной vision-модели по layout-qa prompt. Долгий Pi-review запускать черезbg_run,isAgent: true. - Для точечных исправлений:
Скрипт центрирует только страницы, уже ставшие image-only. Не выносить все картинки на отдельные страницы глобальным CSS.uv run --python 3.13 --with pymupdf python scripts\polish_pdf.py input.pdf output.pdf [--drop-page N] - Повторять vision-QA до
pass: 0 severe, 0 moderate либо moderate явно приняты как намеренная книжная композиция. - Проверить PDF magic/размер/число страниц, долю кириллицы и визуально первые + аномальные страницы. Затем сообщить полные пути.
Правила качества
- Литературный AI-перевод, не посегментный машинный перевод.
- EPUB переводится целыми XHTML-разделами; PDF — semantic chunks с несколькими страницами и общей терминологией.
- Не суммировать, не сокращать, не цензурировать и не добавлять текст.
- Сохранять диалоги, регистр, эмоциональные оттенки, звукоподражания и авторский темп.
- Не переводить ISBN, URL и товарные знаки вне обычной прозы.
- Не менять source-файл; output всегда отдельный.
- Нормальный пробел в конце главы допустим; глава начинается с новой страницы.
- Текст внутри изображений/обложки не переводится без отдельного OCR/image-editing этапа.
EPUB technical rules
- XHTML парсить как XML; не считать
Doctype, declaration, comments или CDATA переводимымNavigableString. - Модель переводит только временные
<t id="...">; каждый id должен вернуться ровно один раз. mimetypeпри упаковке EPUB должен идти первым без сжатия.- Каждый spine-XHTML печатать отдельно и затем объединять PDF: глобальное объединение CSS вызывает конфликты.
- Ограничивать image-only cover областью A4, чтобы она не разрывалась.
PDF input rules
- Использовать PyMuPDF
Page.get_text("dict", sort=True)и координаты blocks/spans для reading order и семантики. - Удалять только статистически повторяющиеся marginal headers/footers и page numbers; не удалять редкий авторский текст.
- Heading определять по размеру/жирности и словам
Chapter/Part/Book; обычный body reflow в<p>. - Изображения сохранять по позиции чтения; мелкие повторные декорации можно дедуплицировать.
- PDF reflow не обещает пиксельное совпадение с исходником: русский текст имеет другую длину, поэтому приоритет — читаемая книжная композиция.
- Частичный model response никогда не принимать: retry до трёх раз, затем fail без перезаписи source.
Lessons learned
- Не навязывать
page-breakвсем иллюстрациям и не повышать глобальноwidows/orphans: это создаёт лишние страницы. - Vision-QA должен отличать намеренный chapter-end whitespace от ошибки.
- Windows CMD портит Unicode paths; для путей с кириллицей передавать их через Python wrapper, а не CMD arguments.