epub-creator
EPUB Creator (Production Grade)
Create validated, publication-ready EPUB 3 ebooks from markdown files and images.
Prerequisites
Python Version: Requires Python 3.8 or higher
# Install all required packages
uv pip install ebooklib markdown Pillow beautifulsoup4 lxml PyYAML
# Or with pip
pip install ebooklib markdown Pillow beautifulsoup4 lxml PyYAML
Optional (for EPUB validation):
# macOS
brew install epubcheck
# Linux (Debian/Ubuntu)
apt install epubcheck
# Via Python wrapper
uv pip install epubcheck
Production Workflow
Follow this 5-step workflow to create high-quality EPUBs:
1. PRE-PROCESS → 2. CONVERT → 3. ASSEMBLE → 4. VALIDATE → 5. DELIVER
Step 1: Pre-Processing (Input Validation & Fixes)
Gather inputs, fix markdown quirks (line endings, heading levels, unclosed emphasis, broken links), validate and optimize images, and validate cover dimensions (minimum 1400x2100px, ~1:1.5 aspect ratio).
See references/pre-processing.md for full implementation with gather_inputs(), fix_markdown_quirks(), validate_and_fix_images(), validate_cover(), and validate_sources().
Step 2: Content Conversion
Extract YAML frontmatter metadata, smart-extract chapter titles (frontmatter > first heading > filename), convert markdown to valid EPUB XHTML with robust extensions (tables, fenced code, smart quotes, sane lists), and build hierarchical ToC structure with configurable depth (H1/H2/H3).
See references/content-conversion.md for full implementation with extract_frontmatter(), extract_title(), markdown_to_xhtml(), extract_toc_structure(), and build_nested_toc().
Step 3: EPUB Assembly
Apply professional CSS stylesheet (typography, headings, paragraphs, code blocks, tables, images), build the complete EPUB with ebooklib including metadata, cover, chapters, images, TOC, and spine.
See references/epub-assembly.md for full implementation with EPUB_CSS and create_production_epub().
Step 4: Validation & QA
Run epubcheck (with fallback to basic ZIP structure validation), comprehensive post-validation (file size, mimetype, container.xml, XHTML content, styles, images), and a QA checklist summarizing pass/fail/warnings.
See references/validation-qa.md for full implementation with validate_epub(), post_validate_epub(), and qa_checklist().
Step 5: Complete Production Script
End-to-end orchestration: auto-detect cover, create EPUB, run QA, print report, save JSON report alongside the EPUB.
See references/production-script.md for full implementation with create_epub_production().
Usage Examples
Basic Usage
"Create an EPUB from the markdown files in ./chapters"
Claude will:
- Scan for markdown files
- Fix any formatting issues
- Generate TOC from headings
- Create styled EPUB
- Validate and report
With Cover Image
"Create an EPUB called 'My Novel' from ./book with cover.jpg as the cover"
Full Metadata
"Create an EPUB from ./manuscript:
- Title: The Great Adventure
- Author: Jane Smith
- Language: English
- Publisher: Indie Press"
QA Mode
"Create an EPUB from ./draft and show me all the issues found"
Troubleshooting
| Issue | Solution |
|---|---|
| "No markdown files found" | Ensure .md files exist in source directory |
| "Cover too small" | Use image at least 1400x2100 pixels |
| "Validation failed" | Check report for specific errors |
| "Broken images" | Verify image paths are relative to markdown files |
| "Encoding errors" | Files will be auto-converted to UTF-8 |
Tips for Best Results
- Organize chapters with numbered prefixes:
01-intro.md,02-chapter1.md - Use consistent heading levels: Start each chapter with
# Title - Place images in same directory as markdown or
images/subfolder - Add YAML frontmatter for chapter metadata:
--- title: Chapter One --- - Validate before publishing with
epubcheck
More from bluewaves-creations/bluewaves-skills
photographer-testino
Generate images in Mario Testino's glamorous vibrant style. Use when users ask for Testino style, high fashion glamour, bold saturated colors, warm luxurious photography, dynamic sensual energy.
35photographer-lindbergh
Generate images in Peter Lindbergh's iconic black and white style. Use when users ask for Lindbergh style, raw authentic beauty, emotional B&W portraits, supermodel aesthetic, or unretouched natural photography.
30photographer-lachapelle
Generate images in David LaChapelle's surreal pop art style. Use when users ask for LaChapelle style, pop surrealism, hyper-saturated colors, theatrical staging, baroque maximalism, kitsch aesthetic.
24photographer-vonunwerth
Generate images in Ellen von Unwerth's playful vintage style. Use when users ask for von Unwerth style, playful sensuality, vintage film noir, whimsical feminine photography, retro glamour, narrative storytelling.
19photographer-ritts
Generate images in Herb Ritts' sculptural black and white style. Use when users ask for Ritts style, classical Greek aesthetic, sculptural body photography, California golden hour, minimalist athletic portraits.
18chart-designer
>
13