How to Create an EPUB on a Mac Without a Multi-App Workflow

The smallest useful first book has a clear reading order, metadata, navigation, a declared cover, and a package that can be inspected. On one Mac, you can prepare three chapters, set the book data, export the EPUB, and inspect its internals without treating every intermediate response as a finished publication.

This walkthrough shows how to create EPUB on Mac and is organized as a build diary. The controlled project moves from an empty folder to a three-chapter EPUB and records the acceptance result at each stop. KDP submission and cross-device visual review remain later steps.

Define “finished” before opening the workspace

The test used five release questions. Are all three chapters in reading order? Are all three represented in navigation? Does the package contain the intended Japanese metadata? Is the chosen file declared as the cover? Does package inspection report no missing resource? An exported filename alone answers none of those questions.

A first-volume checklist should be small enough to repeat. Complex styling, retailer settings, and every future chapter type can wait. The immediate goal is a known package with a known input set and an exact checksum.

Put only three chapters and one cover in the sample folder

The dedicated workspace was /private/tmp/rune-g2c3-studio-256-rks8a_uk. It contained chapter-01.md, chapter-02.md, chapter-03.md, and cover.png. Each chapter had a heading and short synthetic content.

Keeping the first sample sparse makes recovery obvious. If the package loses an item, there are only four source assets to examine. A production manuscript may have hundreds, but scaling an unexplained failure only creates more places to search.

Create the chapter files one at a time

Each chapter used a separate command in the form rune file write --path .../chapter-01.md --content-file .../.chapter-01.md.input --json. All three writes exited with code 0. The one-command-per-file record connects each input to one output instead of hiding file creation in a bulk step.

Read the chapter files before packaging. A duplicated chapter number, empty file, or text from another book should stop the workflow here. Exporting again cannot correct an authority problem in the source.

This is also the point to decide the chapter order in human terms. “Chapter 1, 2, 3” is an editorial statement first and a file list second. The later command should reflect that approved statement.

Set series metadata explicitly

The recorded command was rune epub series set --workspace /private/tmp/rune-g2c3-studio-256-rks8a_uk --title "STUDIO-256 Verified Title" --author "Synthetic Author" --publisher Publisher-256 --file-name studio-256 --writing-mode horizontal --language ja --json.

These are synthetic values, but they show the fields that need an authority in a real project: title, author, publisher, output base name, writing mode, and language. Explicit values prevent a previous volume's settings from being accepted merely because they are already present.

Attach volume data and a dedicated cover

Volume 0 was configured with EPUB version 3.1 and publication-date input 2026-10-03. The cover command bound cover.png to that volume. A cover assignment is not the same operation as inserting an image at the beginning of a chapter.

The setup response is an input checkpoint. The cover becomes accepted only after the generated manifest marks an image with cover-image. Likewise, the date remains a declared volume value that must be retained in the project record; it is not proof of a retailer schedule.

If the cover path is wrong, fix that path before repeating export. Do not rename a random body image to cover.png simply to make the command succeed. The source role is part of the evidence.

Select the reading order and inspect the plan

The selection command received chapter 01, 02, and 03 in that order. rune epub plan returned fileCount=3, chapterCount=3, and includeInTOC=true for every chapter, with no reported issue.

The plan is not the EPUB. It is the last inexpensive place to find the wrong order, an omitted file, or an unintended navigation exclusion. If any of those values fails, return to selection instead of generating a book that you already know is wrong.

A useful project note copies the three planned paths in order. That note becomes the baseline for the package inspection later, so an identical count from a different set of chapters cannot pass.

Export a deterministic artifact

The run executed rune epub export --workspace /private/tmp/rune-g2c3-studio-256-rks8a_uk --number 0 --file .../chapter-01.md --file .../chapter-02.md --file .../chapter-03.md --fixed-now 2026-09-03T12:00:00+09:00 --deterministic --json.

The result was studio-256-260903.120000.epub, SHA-256 1d4031e32e7746de7bc8d792fcd950f15383a6999bac1da49aa81f07e0a5231a. The checksum is the identity of the artifact inspected in the next step. If another export produces another checksum, treat it as a new build.

Keeping the export separate from inspection avoids a common shortcut. A command may successfully write a ZIP file even when the package contains an editorial omission. The build response proves creation; inspection examines content.

rune inspect epub reported valid=true for a 13-entry package. Its reading order contained cover, title, navigation, three chapter XHTML files, and colophon. Navigation contained three links, NCX contained three matching points, and no missing resource was reported.

The manifest declared one cover-image. Metadata readback matched the synthetic title, Japanese language, and publisher. The page progression was left-to-right for this horizontal book. An internal CSS capability flag should not be misread as a claim that the selected book is vertical.

The five questions can now be answered against one artifact. Three chapters: yes. Three matching navigation points: yes. Japanese metadata: yes. Declared cover: yes. Missing resources: none reported. That is a useful local completion record.

valid=true does not mean KDP accepted the file, all fonts are available, or every reader renders it identically. Those claims require retailer and device evidence. The controlled test establishes package structure only.

Decide whether the one-Mac workflow fits the project

This approach suits an author who wants chapter preparation, metadata, cover assignment, navigation, export, and inspection in a traceable local workflow. Each command has a return point, and the resulting diary can be copied for volume two.

A team with concurrent editors, fixed-layout requirements, elaborate media, or retailer-specific quality assurance may need additional review systems and specialist tools. A single application should not be used as a reason to erase ownership boundaries.

Review the current Rune Studio feature scope. Build the three-chapter sample once, keep the source list, plan, EPUB checksum, and inspection values, and use that record as the minimum recipe for the next book.