← MoknahCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Moknah
Snapshot Sep 30, 2026 · 22:52 UTC · version 1.0.1
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "moknah-audiobook-production",
"description": "End-to-end workflow for turning a document (PDF, EPUB, Word, TXT) into a finished audiobook with Moknah - production modes, intake, cost gates, sampling, rendering and delivery. Use when the user wants a book or long document narrated. Not needed for one-off text-to-speech of a short passage.",
"included_files": [],
"skill_md_contents": "---\nname: moknah-audiobook-production\ndescription: End-to-end workflow for turning a document (PDF, EPUB, Word, TXT) into a finished audiobook with Moknah - production modes, intake, cost gates, sampling, rendering and delivery. Use when the user wants a book or long document narrated. Not needed for one-off text-to-speech of a short passage.\n---\n\n# Moknah audiobook production\n\nTake a document and deliver a finished audiobook. The governing rule: **no credit\nis ever spent without an estimate shown and an explicit approval given.**\n\n## Mental model\n\n```\nProject -> Chapters -> Lines\n```\n\nOne line = one spoken unit = one TTS request. A line is \"converted\" once it has\nrendered audio. `total_chars` on a line means **billed** characters (0 until it\nrenders) - it is not the length of the text.\n\nProjects persist. If a session is interrupted, call `get_project` and continue -\nnever restart a book from scratch.\n\n## Step 1 - Always ask for a production mode first\n\n- **Full Control** - confirm every decision and every stage.\n- **Guided** *(recommended default)* - ask only the 7 key decisions below, decide\n everything else from these skills.\n- **Express** - decide everything from the book itself. Only two touchpoints\n remain: spend confirmation and sample approval.\n\nThe 7 Guided decisions:\n\n1. Cleaning - you do it, the user does it, or skip (warn that skipping hurts quality)\n2. AI-Enhanced normalization (tashkeel, costs 2x) or Basic\n3. Translate to another language?\n4. Segmentation style (sentences / newline / custom)\n5. Read chapter titles aloud? Include the title in the chapter text?\n6. One voice for the whole book, or a voice per character?\n7. Emotions on or off (warn that tone may vary between lines)\n\n## Stage 0 - Intake\n\nAccepts pdf, epub, doc, docx, txt, xlsx. PDFs must be under 50 MB - split or\nsupply a lighter copy if larger.\n\nDetermine:\n- **PDF type** - has a text layer (use directly) or scanned (OCR; set\n `ocr_source = true` and review far more strictly)\n- **Language** - fusha / dialect / non-Arabic / mixed\n- **Structure** - TOC, front matter, appendices\n\n**Gate 0:** page count, the proposed body range (skip cover, TOC and appendices\nwith `start_page` / `end_page`), any flags, and `estimate_book_cost`.\n\n## Stage 1 - Extraction\n\nPrefer extract -> clean -> `create_project(text=...)` over handing the raw file\nover, because it lets you clean before anything is billed. For PDFs use\n`create_project` with `start_page` / `end_page`.\n\n## Stage 2 - Cleaning (free)\n\nFollow the **`moknah-text-preparation`** skill. Produce a cleaning report.\n\n**Gate 2:** the report - change counts, before/after samples, proper-names\ndictionary, chapter list.\n\n## Stage 3 - Language review\n\nReview before any spend. Post-generation fixes cost double, because you pay to\nrender the mistake and again to render the correction. Be stricter when\n`ocr_source` is set.\n\n**Gate 3:** itemized in Full Control, a summary in Guided, silent in Express.\n\n## Stage 4 - Create the project\n\n- Name = the exact book title\n- `chapter_style = Heading 1`, `include_chapter_title` per gate\n- `line_split_mode` per gate\n- **Normalization by language:**\n - fusha -> AI-Enhanced (2x credits, best result). If the user refuses the cost,\n use Basic and manually add tashkeel only to genuinely ambiguous words\n - dialect -> Basic, always\n - non-Arabic -> Basic\n - mixed -> split by language, or follow the dominant one\n- Translation (100+ languages) - the user reviews the translation *before* any\n audio is generated\n\nAfter creation, verify the chapters match your map. If headings were missed, fix\nthe source document and re-import rather than patching chapter by chapter.\n\n## Stage 5 - Voices and settings\n\nFollow **`moknah-voice-settings`** for parameters, and\n**`moknah-dialogue-and-pacing`** for casting, line merging and pause placement.\n\n**Gate 5a - casting approval, in every mode.** Express proposes and confirms once.\nUse `play_voice_sample` so the user *hears* a voice before choosing it.\n\n## Stage 6 - Sample, then generate\n\nRender **one sample line per content type** - narration, dialogue, verse or\npoetry, a line with converted numbers, a line with a foreign name. Pick\nnon-adjacent lines. With AI-Enhanced normalization, sample from the start, middle\nand end to check tashkeel consistency.\n\n**Gate 6 - the big spend gate, never skipped in any mode.** The user listens and\napproves. On rejection, iterate in this order: settings -> voice -> text. Cap it\nat 3 loops, then recommend human help rather than burning credits.\n\nThen generate, chapter by chapter (better fault isolation) or whole book. If one\nline comes out wrong, re-render only that line with `generate_lines` - never the\nwhole chapter. Log every re-render.\n\n## Stage 7 - Review and delivery\n\n- Spot-check the start, middle and end of each chapter (`get_chapter_audio`)\n- Deliver per-chapter files (default) or one merged file via\n `merge_chapters_audio`\n- Matching subtitles via `merge_chapters_subtitle` (`srt` or `vtt`)\n- Both merges are **free**; omit `chapter_ids` to cover the whole book in order\n- Naming: `{NN} - {chapter}.mp3`, zero-padded\n- Final report: durations, credits spent, lines re-rendered\n\n## Gate matrix\n\n| Gate | Full Control | Guided | Express |\n|---|---|---|---|\n| 0 intake / page range | ask | ask | auto |\n| 2 cleaning report | ask | ask if AI cleaned | on demand |\n| 3 corrections | itemized | summary | auto |\n| 4 project options | ask all | 7 questions | auto |\n| 5a voice casting | ask | ask | propose + confirm once |\n| 6 sample approval | ask | ask | **ask - never skip** |\n| 7 merge / format | ask | ask | auto |\n| **any credit spend** | ask | ask | **ask - never skip** |\n\n## Money\n\n**Free:** creating, editing text, reordering, voice settings, QA status, merging\naudio, merging subtitles, and every `estimate_*` call.\n\n**Billed:** generation (TTS), PDF OCR, AI-normalization, translation,\ntranscription, AI-QA.\n\nAlways call the matching `estimate_*` tool and show the number before a billable\naction. If the balance is short, say so plainly, and offer to reduce scope -\nrendering a single chapter now is a legitimate third option.\n\n## Jobs\n\nLong work returns a `job_ref` shaped `<kind>:<id>` (`project:1234`,\n`chapter:58210`, `task:...`). Poll `get_job` roughly every 5 seconds until\n`is_terminal`, then call `get_job_result` for the artifact URL.\n\n## Hard limits\n\n- 200 lines per chapter\n- 3,000 characters per request with emotions on; 10,000 with emotions off\n- 20 breaks and 30 s of total pause per line\n- Destructive tools require `confirm=true`\n- You can only ever touch the signed-in user's own content\n"
}SHA-256: 7d4ef7622abbf3f6a661077e747ff106ed48d16ce69b178ebae1de0a8acc8433