smerchek/claude-epub-skill

A Claude Skill for converting markdown documents, chat summaries, or research reports into a downloadable epub file that can be sent to kindle

License:MITLanguage:Python463

Deep Analysis

Claude skill converting Markdown documents to professional EPUB3 ebook format

Core Features

Technical Implementation

Highlights
  • Supports YAML frontmatter metadata extraction
  • Generated ebooks compatible with Apple Books, Kindle, Google Play Books, Kobo mainstream readers
Use Cases
  • Convert technical docs or blog posts to offline-readable ebooks
  • Batch package Markdown notes into EPUB format for distribution
Limitations
  • Only supports Markdown input, not other formats like HTML or Word
Tech Stack
Python 3.8+ebooklibmarkdown2

Markdown to EPUB Claude Skill

A Claude agent skill that converts markdown documents and chat summaries into professional EPUB ebook files. Perfect for creating portable, device-agnostic ebooks from research documents, blog posts, articles, or conversation summaries.

Overview

This skill transforms markdown content into EPUB3 format ebooks that work across all major reading platforms:

  • Apple Books
  • Amazon Kindle (via Kindle reading apps)
  • Google Play Books
  • Kobo
  • Any standard EPUB reader

Features

✨ Markdown Processing

  • Automatic chapter detection from H1 headers
  • Automatic section parsing from H2-H6 headers
  • Full markdown formatting support (bold, italic, links, lists, code blocks, etc.)
  • Enhanced code blocks with premium monospace fonts and syntax highlighting support
  • Professional tables with styled headers and alternating row colors

πŸ“š EPUB Generation

  • EPUB3 standard compliance
  • Automatic table of contents with proper navigation
  • Responsive, device-agnostic styling
  • Proper document structure and metadata
  • Beautiful code formatting for technical documents

🎯 Smart Input Handling

  • Accept raw markdown text directly
  • Process markdown files by path
  • Extract metadata from YAML frontmatter
  • Handle edge cases gracefully

Project Structure

markdown-to-epub/
β”œβ”€β”€ SKILL.md                    # Skill definition with YAML frontmatter
β”œβ”€β”€ requirements.txt            # Python dependencies
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ markdown_processor.py  # Markdown parsing & structure extraction
β”‚   β”œβ”€β”€ epub_generator.py      # EPUB file creation & formatting
└── resources/
    └── default_styles.css     # (future) Custom EPUB styling
test_epub_skill.py             # Test suite with sample content

Installation

Prerequisites

  • Python 3.8+
  • pip (Python package manager)

Setup

  1. Install dependencies:

    pip install -r markdown-to-epub/requirements.txt
    
  2. Verify installation:

    python test_epub_skill.py
    

    You should see all tests pass:

    • βœ“ Markdown processing: PASSED
    • βœ“ EPUB generation: PASSED
    • βœ“ Edge cases: PASSED

Usage

Basic Python Usage

from markdown_to_epub.scripts.epub_generator import create_epub_from_markdown

markdown_content = """
# My Book

## Chapter 1
Content here...
"""

# Generate EPUB
create_epub_from_markdown(
    markdown_content,
    output_path="my_book.epub",
    title="My Book",
    author="John Doe"
)

With Claude Skills Framework

When registered as a Claude skill, simply ask Claude to convert markdown to EPUB:

"Convert this markdown to an EPUB ebook:
# Research Summary
## Introduction
...content..."

Or provide a file path:

"Convert the markdown file at research_notes.md to an EPUB file"

Markdown Support

Element Example Support Styling
Headers # H1 through ###### H6 Full Optimized sizes for e-readers
Bold **bold** or __bold__ Full Strong emphasis
Italic *italic* or _italic_ Full Subtle emphasis
Links [text](url) Full Clickable
Lists - item or 1. item Full Proper indentation
Code Blocks ```language Enhanced Monospace fonts, styled backgrounds, blue accent
Inline Code `code` Enhanced Gray background, subtle border
Tables Markdown tables Enhanced Blue headers, zebra striping, responsive
Blockquotes > quote Full Blue left border
Horizontal Rule --- or *** Full Subtle divider
Paragraphs Text with blank lines Full Justified text

YAML Frontmatter Support

Add metadata to your markdown using YAML frontmatter:

---
title: My Ebook
author: John Doe
language: en
date: 2025-01-15
---

# Chapter 1
...

Supported fields:

  • title - Book title
  • author - Author name
  • language - Language code (default: en)
  • date - Publication date

Architecture

MarkdownProcessor (markdown_processor.py)

  • Parses markdown into structured chapters and sections
  • Extracts metadata from YAML frontmatter
  • Builds table of contents
  • Converts markdown to HTML
  • Handles edge cases (empty content, special characters, etc.)

EPUBGenerator (epub_generator.py)

  • Creates valid EPUB3 files using ebooklib
  • Manages book metadata and document structure
  • Applies consistent styling via embedded CSS
  • Generates navigation documents (NCX, NAV)
  • Handles proper spine/TOC setup

Dependencies

  • ebooklib (0.18.0) - EPUB file creation and manipulation
  • markdown2 (2.4.12) - Markdown utilities (included for future enhancement)

Testing

Run the comprehensive test suite:

python test_epub_skill.py

Tests include:

  • Markdown parsing with various header structures
  • EPUB file generation and validation
  • Edge cases (empty content, plain text, special characters)
  • Long documents (10+ chapters)
  • Table of contents generation
  • Metadata extraction

Future Enhancements

🎨 Cover Page Generation

  • Auto-generate title pages with styling
  • Custom cover images with MCP integration

πŸ“± Kindle Support

  • .mobi and .azw3 format generation
  • Kindle-specific optimizations
  • Direct Kindle device upload capability

🎨 Advanced Styling

  • Custom CSS per user preferences
  • Custom fonts
  • Advanced typography controls

πŸ“š Multi-Document

  • Merge multiple markdown files
  • Cross-document references
  • Advanced chapter organization

Technical Details

  • EPUB Version: EPUB3 (2023 standard)
  • HTML Standard: XHTML 1.1
  • Character Encoding: UTF-8
  • CSS Support: Responsive, embedded styling
  • Navigation: NCX (compatibility) + NAV (EPUB3 standard)

Troubleshooting

EPUB won't open

  • Verify markdown uses proper syntax
  • Check for balanced brackets in links
  • Ensure chapters have H1 headers

Missing table of contents

  • Add H1 headers to mark chapter boundaries
  • Verify headers are followed by content

Formatting looks different

  • This is normal! EPUB readers apply their own fonts and styling
  • Structure is preserved across all readers

Large file size

  • Compress with external tools if needed
  • Remove large embedded content if applicable

License

This skill follows the same license as the Claude Cookbooks project.

Contributing

Contributions are welcome! Areas for improvement:

  • Additional markdown features (tables, footnotes)
  • Enhanced styling options
  • Performance optimizations
  • Additional format support

Related Resources


Created: 2025-01-16
Version: 1.0.0
Status: Production Ready