Я написал книгу в Markdown. Один файл, 180 страниц. Когда пришло время публиковать на Amazon KDP, мне нужны были два формата: EPUB3 для Kindle и готовый к печати PDF для мягкой обложки. Формат 6x9 дюймов. У KDP конкретные требования к полям, ширине корешка и вылетам. Ошибись в любом параметре, и Amazon отклонит файл.
Я попробовал существующие инструменты. Calibre сломал форматирование. Pandoc выдал валидный EPUB, но настолько уродливый, что потребовались бы часы ручных CSS-правок. Reedsy и Draft2Digital хотели, чтобы я вставил контент в их редакторы и начал заново. Atticus стоит $150 и все равно требует ручной подгонки.
Ни один из них не решил мою задачу: взять один .md файл и получить оба KDP-формата за один шаг, без ручного вмешательства.
Поэтому я собрал Claude skill, который это делает.
Что делает скилл
Вы кидаете .md или .txt файл в Claude (десктопное приложение, режим Cowork) и говорите “сделай Kindle-книгу”. Скилл читает рукопись, задает несколько вопросов (название, автор, формат обрезки, нужно ли оглавление) и выдает два файла: валидный EPUB3 и готовый к печати PDF.
EPUB проходит валидацию Amazon KindleGen. PDF соответствует спецификациям KDP paperback для выбранного формата (6x9, 5x8 или кастомный). Оба файла попадают в папку вывода, готовые к загрузке на KDP.
Одна команда. Никаких промежуточных инструментов. Никакого копирования между приложениями.
Как это работает
Скилл представляет собой набор инструкций, шаблонов и пайплайна сборки, упакованных в .skill файл (zip-архив, который Claude умеет загружать).
При запуске он:
- Парсит Markdown в структурированные секции (начало, главы, конец)
- Генерирует EPUB3 с нуля через Node.js. Не конвертация. Скилл пишет каждый OPF, NCX и XHTML файл по спецификации EPUB3. Строит оглавление из структуры заголовков, задает метаданные (название, автор, язык, издатель) и пакует все в валидный .epub контейнер.
- Генерирует PDF для печати через Puppeteer. Рендерит каждую главу как HTML-страницу с правильными полями для выбранного формата, добавляет номера страниц, обрабатывает висячие строки и выдает один PDF, соответствующий спецификациям KDP.
Математика полей важна. Книга 6x9 с 300 страницами требует корешковое поле 0.875 дюйма. Книга 5x8 со 150 страницами требует 0.75 дюйма. Скилл вычисляет это из количества страниц и формата обрезки. Ошибись, и KDP пометит файл при проверке.
Почему Claude skill
Я мог бы собрать это как CLI-инструмент или веб-приложение. Я выбрал формат Claude skill по одной причине: рукопись уже в Claude.
Мой процесс написания использует Claude. Я пишу черновик в Markdown, редактирую с Claude, перестраиваю структуру с Claude. Рукопись живет в диалоге. Скилл, работающий внутри той же среды, означает, что я не выхожу из контекста. Не экспортирую в другой инструмент. Не загружаю на другой сервис. Файл проходит путь от черновика до готового к публикации внутри одного приложения.
Скиллы не требуют настройки для пользователя. Устанавливаешь .skill файл, и Claude получает новую способность. Никакого npm install. Никакого Python-окружения. Никакого Docker. Если у вас есть Claude desktop, у вас есть все необходимое.
Что я узнал при создании
EPUB3 это zip-файл со строгой структурой. Файл mimetype должен быть первой записью, без сжатия. META-INF/container.xml должен указывать на OPF. OPF должен перечислить каждый ресурс. Пропусти одну ссылку на файл, и валидация провалится. Я потратил на порядок записей в zip больше времени, чем на любую другую часть сборки.
Поля для KDP paperback не задокументированы в одном месте. Я собирал спецификации с трех разных страниц справки KDP, поста на форуме и одного сообщения об ошибке при отклоненной загрузке. Теперь в скилле есть таблица: формат обрезки + количество страниц = точные поля.
Генерация PDF в Puppeteer хорошо работает с разрывами страниц, но плохо справляется с колонтитулами. Скилл использует CSS @page правила и position: fixed элементы для стабильных номеров страниц. Для бегущих заголовков пришлось делать обходной путь: вставлять их для каждой главы как абсолютно позиционированные div-ы, а не как нативные PDF-заголовки.
Open source
Скилл на GitHub. Лицензия MIT. Можете установить его в Claude desktop и опубликовать свою книгу уже сегодня.
Работает с английскими рукописями. Другие языки работают, если шрифты их поддерживают, но я тестировал только с английским и русским.
Если найдете краевой случай спецификации KDP, который скилл не обрабатывает, создайте issue. Таблица полей покрывает самые распространенные форматы, но не все возможные комбинации.
Что можно сделать прямо сейчас
Если у вас есть рукопись в Markdown или обычном тексте, установите скилл и запустите его. Готовые к загрузке файлы для KDP появятся меньше чем за пять минут. Скилл берет на себя возню с форматированием, а вы можете сосредоточиться на том, хороша ли ваша книга.
Самиздат не должен требовать изучения InDesign или борьбы с Calibre. Файл в Markdown и одна команда. Этого должно хватать. Теперь хватает.