From yt-ribosome
Turn `.epub` e-books into a folder tree of HTML pages that **mirrors the book's
How this skill is triggered — by the user, by Claude, or both
Slash command
/yt-ribosome:epub-to-htmlThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn `.epub` e-books into a folder tree of HTML pages that **mirrors the book's
Turn .epub e-books into a folder tree of HTML pages that mirrors the book's
own table-of-contents hierarchy, so they can be read in the blog-library
web UI alongside generated blogs. An EPUB is a ZIP of XHTML + CSS + images; this
skill unpacks it, follows the navigation document, and lays the content out as
nested folders.
python3 "${CLAUDE_PLUGIN_ROOT}/skills/epub-to-html/scripts/epub_to_html.py" "<EPUB_OR_DIR>" [--out-dir DIR]
The converter:
META-INF/container.xml → OPF for metadata, manifest, and spine.nav.xhtml preferred, EPUB2 toc.ncx
fallback, and finally flat spine order if neither exists.00. <label>.html); a leaf →
a NN. <label>.html file. Numbering follows reading order.#anchor targets so each topic is its own
page rather than one giant chapter file..assets/ folder per book and
rewrites links, so each page keeps the book's own styling.Stdlib zipfile + bs4 only — no new pip packages, no EPUB library needed.
.epub or a directory of them (recursed).<input>-html/ (sibling); override
with --out-dir. It prints one OK/FAIL line per book and a final tally.blog-library skill at the output directory.<out>/
<Book Title>/
01. Cover.html ← leaf chapter (no children)
11. Unit 1 Biological Bases/ ← TOC node with children → folder
01. Chapter 4 .../ ← deeper nesting mirrors the nav
00. Chapter 4 ....html ← chapter intro (pre-topic content)
01. <topic>.html ← split out at its #anchor
.assets/ (css + images; hidden from the library sidebar, served to pages)
#anchors within a shared file. Chapters with flat bodies (the common case,
topics as <h_ id> headings) split cleanly at the heading boundaries.blog-library integration. Chapter folders show in the sidebar; the
.assets/ dotfolder is hidden from the tree but still served to the iframe,
so relative image/CSS links resolve.<!ENTITY …>) to block XXE
and billion-laughs attacks — no third-party parser required.-html/ dir to start clean).FAIL and skipped; other books continue.scripts/epub_to_html.py — the standalone converter (run it).npx claudepluginhub ssfskim/yt-ribosome --plugin yt-ribosomeCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.