← All craftbooks

Narrate a Chapter

Media: audio and videoevalv1.0.1released 2026-07-22workflow: build-loop

Take one chapter from manuscript to narrated audio, deliberately: a narration script with pronunciations and pauses marked before anything renders, the audio driven through the project's narration capabilities with a run log, and a listen-check against the text — no skipped paragraphs, no mangled names. Locks the chapter and the style sheet FIRST (voice, pace, every proper noun's pronunciation), then preps the script, then renders, then checks coverage. Use for narrating a chapter, audiobook recording runs, text-to-speech passes, and 'read chapter two aloud'.

Steps

Entry step: scope. Each step names the specialist role it wants; the full working prompt is expandable.

  1. Scope the chapterproducerentry

    chapter locked, style sheet read, pronunciation list built

    Show working prompt
    Define the narration run before prepping a word. Step 1: identify the chapter being narrated and read it end to end from the manuscript under manuscript/. Step 2: read the narration style sheet at narration/style.md — the voice, the pace, the pause conventions — and treat it as law for this run. Step 3: build the pronunciation list — every proper noun and unusual name in the chapter, each with its pronunciation from the style sheet; for any name the style sheet does not cover, propose a pronunciation and flag it for the owner rather than letting the render guess. Step 4: write an acceptance-criteria checklist ('narration script covers the full chapter, nothing skipped', 'every listed name carries pronunciation markup', 'pauses marked per the style sheet', 'rendered through the project's narration script via run_script with a status-ok log', 'listen-check confirms coverage and names'). Call write_task_note with the chapter, the pronunciation-list size + checklist, and write notes/scope.md.
  2. Prep the narration scriptcopywriter

    the chapter as a marked-up narration script

    Show working prompt
    Turn the chapter into the script the narration engine reads. Step 1: carry the chapter's full text into a narration script at narration/scripts/, named for the chapter — every paragraph present, in order, nothing summarized away; a narration script is the text plus markup, never a digest. Step 2: mark it up per the style sheet — pronunciation markup on every name from the locked list at its first occurrence, pause marks at scene breaks and where the prose needs air, and any pace notes the style sheet calls for. Step 3: re-read against the manuscript once, checking coverage paragraph by paragraph. Call write_task_note with the script path, its word count, and the count of pronunciation marks placed.
  3. Render the audiodeveloper

    the chapter rendered to audio with its run log

    Show working prompt
    Render the narration. Step 1: the narration engine is a project script — call list_scripts to find it, then run it with run_script({ name: "<script name>" }); never run it with run_nodejs_script and never reimplement it. It reads the narration script from narration/scripts/, writes the chapter's audio into audio/ named for the chapter, and writes a run log beside it as JSON with a status field and the word count it processed. Step 2: if run_script reports an error or the log flags names it could not resolve, read the error text, fix the script's markup, and run it again — never write the audio or its log yourself; the log is evidence the engine ran. Step 3: once it succeeds, read the log and confirm status ok and a word count in line with the script's. Call write_task_note with the audio path, the log's word count, and anything the log flagged.
  4. Listen-check and reportreviewer

    coverage and name check against the manuscript, run report

    Show working prompt
    Check the render against the text, then write the run report. Step 1: verify coverage — the log's word count against the script's, and the script's paragraphs against the manuscript's; a skipped paragraph is the failure this ritual exists to catch. Step 2: verify the names — every pronunciation from the locked list was marked in the script and none were flagged unresolved by the run log. Step 3: write report.md — the chapter, the audio path and duration or word count from the log, the coverage result stated plainly, the pronunciation check result name by name, and anything flagged for the owner (proposed pronunciations awaiting approval, spots worth a human listen). Call write_task_note with the report path and the coverage verdict.
  5. Evaluatereviewer

    Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.

    Show working prompt
    Open report.md, the run log in audio/, the narration script in narration/scripts/, and the manuscript chapter and verify every criterion from notes/scope.md: the script covers the full chapter with nothing skipped, every locked name carries pronunciation markup, the log reports status ok with a word count consistent with the script, and the report states the coverage and name-check results honestly. Write PASS/FAIL per criterion; on any failure, name the gap and loop back to report — or to prep if the script itself is the problem.
    
    Then route — this is the whole point of the loop:
    
    - **Every criterion PASSES →** call `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`.
    - **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: "evaluate", next: "report" })` to loop back. The builder fixes exactly those gaps.
    
    Never route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.
  6. Finishdeveloper

    All acceptance criteria met. Stamp a short summary and report DONE.

    Show working prompt
    Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.

Triggers

Phrases that suggest this craftbook to a crew.

Source

View this craftbook on GitHub · MIT license