← Back to list
✍️

epub-to-markdown Checked

A skill from the GitHub repository jykim/claude-obsidian-skills.
✍️ Writing skills By jykim Version v1.0.0 Added 2026-10-21 Updated 2026-10-21 Source ↗
8.0Overall rating
0Views
0Downloads
49Stars

Installation

🤖 Install via AI

Copy the prompt below and send it to your AI assistant (e.g. Claude Code) — it will follow the instructions and install automatically.

Install the "epub-to-markdown" skill by following the instructions at https://skill123.me/install/epub-to-markdown.
⌨️ Command line install

Run in your terminal — downloads and installs to ~/.claude/skills/.

curl -fsSL https://skill123.me/install/epub-to-markdown.sh | bash
📦 Download ZIP

Download the zip and extract it into your skills directory (e.g. ~/.claude/skills/), then restart your session.

⬇ Download v1.0.0 · 6 KB
📊 Static rating
8.0/10
Trigger
8.0
Structure
0.0
Workflow
8.0
Content
0.0
Engineering
0.0
Security
7.0

Six-dimension rubric with reviewer rationale.

View scorecard ↓
🛡 Dynamic test
—

Not live-tested yet — this skill is rated on static analysis only.

About this skill

A skill from the GitHub repository jykim/claude-obsidian-skills.

EPUB to Markdown Skill

Convert EPUB files to well-formatted single markdown files with images extracted.

Documentation

A skill from the GitHub repository jykim/claude-obsidian-skills.

EPUB to Markdown Skill

Convert EPUB files to well-formatted single markdown files with images extracted.

Usage


python3 epub_to_markdown.py "<epub_path>" -o "<output_path>"

Features

  • **Metadata extraction**: title, author, language, publisher, publication date
  • **TOC parsing**: Extracts table of contents with hierarchy
  • **HTML to Markdown**: Converts chapter HTML using html2text
  • **Heading preservation**: Maintains H1-H6 hierarchy
  • **Image extraction**: Extracts images to _files_/ folder with book prefix
  • **Single file output**: All chapters in one markdown file

Output Structure


output_dir/
├── book.epub           # Original file
├── book.md             # Extracted markdown
└── _files_/            # Images folder
    ├── BookTitle_cover.jpg
    ├── BookTitle_figure1.png
    └── ...

Image Prefix

Images are extracted with a book prefix derived from the title:

  • Title: "Die Empty: Unleash Your Best Work Every Day"
  • Prefix: DieEmptyUnleash (first 3 words, special chars removed)
  • Image: _files_/DieEmptyUnleash_cover.jpg

This prevents filename collisions when extracting multiple books to the same folder.

Output Format


---
title: {from metadata}
author: {from metadata}
language: {from metadata}
source_file: original.epub
source_type: epub
extracted: YYYY-MM-DD HH:MM:SS
status: extracted
---

# {Book Title}

## Table of Contents
- Chapter 1
- Chapter 2
...

---

## Chapter 1

{content with ![alt](_files_/BookTitle_image.png) links}

---

## Chapter 2

{content}

Dependencies


pip install ebooklib beautifulsoup4 html2text

Or use requirements.txt:


pip install -r requirements.txt

Options

| Flag | Description |

|------|-------------|

| -o, --output | Output markdown file path (default: same as epub with .md) |

| -q, --quiet | Suppress progress messages |

Limitations

  • **DRM-protected EPUBs**: Cannot be extracted (will fail with error)
  • **Complex formatting**: May simplify to plain text
  • **Large EPUBs**: May take time for books with many chapters/images

Score breakdown

Trigger
8.0
Structure
0.0
Workflow
8.0
Content
0.0
Engineering
0.0
Security
7.0