◆ Fantasy Audiobook Studio
0story-seed1–5fantasy-novella2story-structure1, 4, 5fiction-workshop1, 4character-archetypes4prose-mechanics3, 4avoid-ai-writing6speech-flow7narration-prep8kokoro-narrate9listen-check10audiobook-assemble

Stage 10 · Package · ours

audiobook-assemble

The sound engineer and packager. It evens out the volume, then builds one audiobook file with chapters, a cover and the title.

  1. 0Seed
  2. 1Story bible
  3. 2Structure
  4. 3Draft
  5. 4Edit
  6. 5Reader test
  7. 6Speech flow
  8. 7Narration prep
  9. 8Narrate
  10. 9Listen check
  11. 10Assemble & publish

When it runs

After narration, as the last step before publishing.

What goes in

The chapter audio files, the cover and the book details

What comes out

One .m4b audiobook with chapters, plus an .mp3 per chapter

Who does the work

  • Script masters the sound and builds the files
  • Claude checks the result (chapters, volume) and publishes it

Step by step

  1. Add a short silence before and after each chapter.
  2. Bring every chapter to the same audiobook-standard volume.
  3. Join everything into one .m4b with chapter markers and the cover.
  4. Copy it for the phone and publish it to this site.

Example

Before

13 separate chapter recordings, each a slightly different volume

→
After

The One in the Chair.m4b: 92 minutes, 13 chapters, cover, even volume

This is the file that goes into BookPlayer on the phone.

In this project

Per chapter: 1 s lead-in, 2 s tail, two-pass loudnorm to −19 LUFS integrated / −3 dBTP (ACX-style), mono 44.1 kHz, MP3. Then everything is concatenated into one AAC .m4b with chapter markers taken from the real durations, the cover as attached picture, and title/author/narrator tags. The m4b is what goes to the phone (BookPlayer via Google Drive) and to this site.

From the books

The One in the Chair: 13 chapters, 92 minutes, −19.4 LUFS integrated. The file carries both chapter formats players read (a QuickTime chapter track and Nero chpl), so chapters show in BookPlayer and Apple Books.

For the curious: the instructions Claude reads (SKILL.md)

Claude uses this skill when: Master rendered chapter WAVs into a finished audiobook: loudness-normalised per-chapter MP3s plus one .m4b with chapter markers, cover art and metadata. Use when the user wants to build, export, package, master or finish the audiobook, make an m4b/mp3, or add chapters/cover/metadata. Input is books/<slug>/audio/chNN.wav from kokoro-narrate.

Audiobook Assemble

.venv/bin/python .claude/skills/audiobook-assemble/scripts/assemble.py books/<slug> [--bitrate 64k]

Needs books/<slug>/book.yaml. Create it if it's missing:

title: The Thief of Greyfell
author: <ask the user>
narrator: Kokoro TTS (bm_george)
year: 2026
cover: cover.jpg                     # optional; square JPG, ≥1400 px, relative to the book dir
chapters:                            # stem -> title as shown in the player
  ch01: "Chapter One: The Greyfell Road"

What the script does, per chapter: - adds 1 s of lead-in silence and 2 s of tail silence - normalises loudness in two passes to −19 LUFS integrated, −3 dBTP (ACX-style), mono 44.1 kHz - writes audio/chNN.mp3

Then it concatenates everything into audio/<Title>.m4b (AAC) with chapter markers taken from the actual durations. Chapters are ordered by filename, so keep the ch01, ch02… zero-padding.

Verify before reporting done

ffprobe -v error -show_chapters -of compact "books/<slug>/audio/<Title>.m4b"      # chapter count + titles
ffmpeg -nostats -i books/<slug>/audio/ch01.mp3 -af ebur128 -f null - 2>&1 | grep ' I:'   # ≈ -19 LUFS

Export for the phone

The author listens in BookPlayer (iOS), importing from Google Drive. After verifying, copy only the .m4b (not the chapter MP3s, which BookPlayer would import as a duplicate book) to the project's export folder:

mkdir -p export/Audiobooks && cp "books/<slug>/audio/<Title>.m4b" export/Audiobooks/

The author uploads export/Audiobooks/ to Google Drive themselves; there is no Drive sync on this machine.

Then publish to the website (m4b, chapter MP3s and a fresh EPUB): site/publish.sh "<slug>: new audio".

Report the total runtime, the number of chapters and the output paths. This is AI narration: if the user plans to publish on Audible/ACX or another storefront, remind them to check that store's current rules on AI-narrated audiobooks.

Other files in the skill

View the skill on GitHub →