@gentbajko/slopify 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/README.md +6 -4
  2. package/dist/adapter-registry.js +28 -0
  3. package/dist/adapters/key-probes.js +57 -8
  4. package/dist/adapters/tts/gemini.js +206 -0
  5. package/dist/adapters/tts/pcm-mp3.js +62 -0
  6. package/dist/adapters/tts/system.js +147 -0
  7. package/dist/assets/models.yaml +38 -0
  8. package/dist/assets/style-preview/narration.mp3 +0 -0
  9. package/dist/assets/style-preview/tall-1.jpg +0 -0
  10. package/dist/assets/style-preview/tall-2.jpg +0 -0
  11. package/dist/assets/style-preview/tall-3.jpg +0 -0
  12. package/dist/assets/style-preview/wide-1.jpg +0 -0
  13. package/dist/assets/style-preview/wide-2.jpg +0 -0
  14. package/dist/assets/style-preview/wide-3.jpg +0 -0
  15. package/dist/catalog/registry.js +4 -1
  16. package/dist/catalog/validate.js +2 -2
  17. package/dist/edge/autostart/docker-record.js +2 -2
  18. package/dist/edge/autostart/docker.js +68 -0
  19. package/dist/edge/autostart/prompt.js +7 -1
  20. package/dist/edge/autostart/service.js +18 -9
  21. package/dist/edge/cli-args.js +71 -0
  22. package/dist/edge/cli.js +11 -16
  23. package/dist/edge/docker-install/run.js +7 -1
  24. package/dist/edge/events/hub.js +3 -1
  25. package/dist/edge/http/actions.js +6 -1
  26. package/dist/edge/http/app.js +2 -0
  27. package/dist/edge/http/byte-range.js +42 -0
  28. package/dist/edge/http/diagnostics.js +1 -0
  29. package/dist/edge/http/draft-files.js +2 -4
  30. package/dist/edge/http/files.js +10 -6
  31. package/dist/edge/http/onboarding.js +64 -4
  32. package/dist/edge/http/project-templates.js +19 -2
  33. package/dist/edge/http/projects.js +6 -1
  34. package/dist/edge/http/providers.js +39 -9
  35. package/dist/edge/http/reviews.js +18 -8
  36. package/dist/edge/http/revision-files.js +2 -4
  37. package/dist/edge/http/schedules.js +9 -5
  38. package/dist/edge/http/storage.js +16 -2
  39. package/dist/edge/http/studio.js +111 -31
  40. package/dist/edge/http/style-preview.js +3 -42
  41. package/dist/edge/http/tutorials.js +59 -0
  42. package/dist/edge/http/youtube-edits.js +11 -2
  43. package/dist/extension/slopify-studio-chrome.zip +0 -0
  44. package/dist/extension/slopify-studio-firefox.zip +0 -0
  45. package/dist/host-cli/gemini-login.js +83 -0
  46. package/dist/host-cli/status.js +4 -2
  47. package/dist/kernel/db/migrations/0041-cast-hosts.sql +3 -0
  48. package/dist/kernel/ports/model.js +5 -3
  49. package/dist/kernel/ports/system-speech.js +203 -0
  50. package/dist/kernel/runner/graph.js +17 -1
  51. package/dist/kernel/runner/index.js +4 -4
  52. package/dist/kernel/runner/providers.js +1 -1
  53. package/dist/main.js +5 -0
  54. package/dist/model-catalog.js +2 -0
  55. package/dist/patch-notes/3.0.1.md +105 -0
  56. package/dist/patch-notes/index.json +6 -0
  57. package/dist/slices/admission/rules.js +3 -3
  58. package/dist/slices/admission/start.js +1 -1
  59. package/dist/slices/channels/cast-match.js +1 -1
  60. package/dist/slices/channels/repo.js +3 -0
  61. package/dist/slices/channels/schema.js +23 -0
  62. package/dist/slices/channels/service.js +6 -6
  63. package/dist/slices/control/index.js +3 -1
  64. package/dist/slices/control/providers.js +4 -1
  65. package/dist/slices/episodes/related.js +2 -2
  66. package/dist/slices/estimate/requests.js +9 -1
  67. package/dist/slices/eta/history.js +56 -0
  68. package/dist/slices/eta/model.js +63 -0
  69. package/dist/slices/eta/view.js +25 -0
  70. package/dist/slices/fixes/rules.js +1 -1
  71. package/dist/slices/fonts/coverage.js +1 -1
  72. package/dist/slices/loudness/model.js +1 -1
  73. package/dist/slices/model-upkeep/usage.js +4 -2
  74. package/dist/slices/narration/pauses-model.js +1 -1
  75. package/dist/slices/narration/pronunciation.js +2 -2
  76. package/dist/slices/notifications/notifier.js +28 -2
  77. package/dist/slices/notifications/rules.js +26 -2
  78. package/dist/slices/onboarding/first-run.js +40 -14
  79. package/dist/slices/onboarding/full-video.js +81 -0
  80. package/dist/slices/onboarding/model.js +21 -0
  81. package/dist/slices/onboarding/quick-short.js +25 -10
  82. package/dist/slices/play-drafts/convert.js +3 -3
  83. package/dist/slices/play-drafts/readiness.js +1 -1
  84. package/dist/slices/project-templates/from-project.js +10 -3
  85. package/dist/slices/project-templates/next-chapter.js +94 -0
  86. package/dist/slices/project-templates/one-off.js +1 -1
  87. package/dist/slices/project-templates/schema.js +7 -1
  88. package/dist/slices/rebuild/recipe-exports.js +5 -0
  89. package/dist/slices/rebuild/recipe-voices.js +1 -1
  90. package/dist/slices/rebuild/review-redo.js +15 -0
  91. package/dist/slices/rebuild/runtime-export-bed.js +1 -1
  92. package/dist/slices/rebuild/runtime-review.js +35 -5
  93. package/dist/slices/rebuild/runtime-store.js +23 -1
  94. package/dist/slices/rebuild/runtime-voices.js +2 -2
  95. package/dist/slices/rebuild/service-readiness.js +3 -3
  96. package/dist/slices/reviews/repo.js +16 -4
  97. package/dist/slices/run-cost/panel.js +30 -8
  98. package/dist/slices/run-cost/pricing.js +4 -1
  99. package/dist/slices/schedules/agenda.js +66 -2
  100. package/dist/slices/schedules/repo.js +1 -1
  101. package/dist/slices/schedules/scheduler.js +1 -1
  102. package/dist/slices/schedules/schema.js +43 -2
  103. package/dist/slices/schedules/similar.js +41 -3
  104. package/dist/slices/schedules/topic-list.js +2 -2
  105. package/dist/slices/schedules/topics.js +118 -17
  106. package/dist/slices/settings/first-run.js +5 -1
  107. package/dist/slices/settings/health.js +64 -7
  108. package/dist/slices/settings/key-guides.js +17 -7
  109. package/dist/slices/settings/key-test.js +12 -4
  110. package/dist/slices/settings/keys.js +10 -5
  111. package/dist/slices/settings/model-reach.js +52 -0
  112. package/dist/slices/settings/model.js +49 -0
  113. package/dist/slices/settings/models.js +5 -1
  114. package/dist/slices/settings/readiness.js +14 -2
  115. package/dist/slices/settings/tutorial-schema.js +5 -0
  116. package/dist/slices/shorts/render.js +18 -17
  117. package/dist/slices/storage/documents.js +11 -3
  118. package/dist/slices/storage/downloads.js +33 -1
  119. package/dist/slices/storage/portable.js +4 -2
  120. package/dist/slices/studio/model.js +2 -0
  121. package/dist/slices/studio/pack.js +6 -4
  122. package/dist/slices/studio/queue.js +69 -0
  123. package/dist/slices/studio/settings.js +42 -5
  124. package/dist/slices/style-preview/narration.js +33 -0
  125. package/dist/slices/style-preview/render.js +43 -56
  126. package/dist/slices/style-preview/schema.js +17 -3
  127. package/dist/slices/style-preview/service.js +3 -4
  128. package/dist/slices/style-preview/settings.js +75 -25
  129. package/dist/slices/tutorials/anchors.js +57 -0
  130. package/dist/slices/tutorials/library.js +185 -0
  131. package/dist/slices/voices/audio-files.js +7 -2
  132. package/dist/slices/voices/cast.js +26 -8
  133. package/dist/slices/voices/grouping.js +10 -0
  134. package/dist/slices/voices/model.js +49 -10
  135. package/dist/slices/voices/script.js +1 -1
  136. package/dist/slices/youtube/edits-repo.js +19 -4
  137. package/dist/slices/youtube/placeholders.js +2 -2
  138. package/dist/tutorials/AI-CLIs.md +146 -0
  139. package/dist/tutorials/Backups.md +121 -0
  140. package/dist/tutorials/Calendar.md +103 -0
  141. package/dist/tutorials/Cast-Library.md +112 -0
  142. package/dist/tutorials/Channels.md +148 -0
  143. package/dist/tutorials/Costs-and-Run-Cost.md +136 -0
  144. package/dist/tutorials/Docker.md +171 -0
  145. package/dist/tutorials/Document-Themes.md +207 -0
  146. package/dist/tutorials/Editing-a-Project.md +204 -0
  147. package/dist/tutorials/FAQ.md +134 -0
  148. package/dist/tutorials/First-Launch-and-Welcome.md +153 -0
  149. package/dist/tutorials/Home-and-Projects.md +174 -0
  150. package/dist/tutorials/Home.md +119 -0
  151. package/dist/tutorials/Install.md +154 -0
  152. package/dist/tutorials/Intros-and-Outros.md +86 -0
  153. package/dist/tutorials/Keyboard-Shortcuts-and-Command-Palette.md +215 -0
  154. package/dist/tutorials/Library-Overview.md +75 -0
  155. package/dist/tutorials/Models.md +133 -0
  156. package/dist/tutorials/Multiple-Voices.md +161 -0
  157. package/dist/tutorials/Narration-Aliases-and-Glossary.md +129 -0
  158. package/dist/tutorials/Notifications.md +86 -0
  159. package/dist/tutorials/Other-Languages.md +110 -0
  160. package/dist/tutorials/PDF-Documents.md +100 -0
  161. package/dist/tutorials/Play-Images.md +135 -0
  162. package/dist/tutorials/Play-Narration.md +167 -0
  163. package/dist/tutorials/Play-Outputs.md +109 -0
  164. package/dist/tutorials/Play-Overview.md +216 -0
  165. package/dist/tutorials/Play-Title-and-Article.md +135 -0
  166. package/dist/tutorials/Play-Video-and-Style.md +143 -0
  167. package/dist/tutorials/Project-Page.md +228 -0
  168. package/dist/tutorials/Prompts.md +136 -0
  169. package/dist/tutorials/Providers-and-Keys.md +290 -0
  170. package/dist/tutorials/Publishing-to-YouTube.md +135 -0
  171. package/dist/tutorials/Recovery-and-Retries.md +141 -0
  172. package/dist/tutorials/Reviews-and-Checkpoints.md +143 -0
  173. package/dist/tutorials/Schedules.md +154 -0
  174. package/dist/tutorials/Settings-Reference.md +258 -0
  175. package/dist/tutorials/Shorts.md +116 -0
  176. package/dist/tutorials/Start-at-Login.md +126 -0
  177. package/dist/tutorials/Studio-Extension.md +146 -0
  178. package/dist/tutorials/Templates.md +146 -0
  179. package/dist/tutorials/Trash.md +87 -0
  180. package/dist/tutorials/Troubleshooting.md +149 -0
  181. package/dist/tutorials/Uninstalling-and-Moving.md +113 -0
  182. package/dist/tutorials/Updating-and-Patch-Notes.md +120 -0
  183. package/dist/tutorials/Video-Editing.md +135 -0
  184. package/dist/tutorials/Where-Your-Files-Live.md +149 -0
  185. package/dist/tutorials/YouTube-Description.md +132 -0
  186. package/dist/tutorials/Your-First-Short.md +125 -0
  187. package/dist/tutorials/_Footer.md +1 -0
  188. package/dist/tutorials/_Sidebar.md +69 -0
  189. package/dist/web/assets/index-DBLSfqA-.css +1 -0
  190. package/dist/web/assets/index-DFdIhmm0.js +307 -0
  191. package/dist/web/assets/{pdf-BG8n_uc5.js → pdf-B9OY1ioX.js} +1 -1
  192. package/dist/web/index.html +2 -2
  193. package/package.json +2 -2
  194. package/dist/web/assets/index-CUA2sUxU.css +0 -1
  195. package/dist/web/assets/index-CX590kE-.js +0 -303
@@ -0,0 +1,215 @@
1
+ # Keyboard Shortcuts and Command Palette
2
+
3
+ The command palette lets you reach every screen, every project and the frequent actions by typing, without hunting for buttons. Keyboard shortcuts cover the most common moves. This page lists both.
4
+
5
+ **Where to find it:** press `Ctrl+K` (`Cmd+K` on a Mac) anywhere, or choose **Search or run a command** at the top of the sidebar. Press `?` for the list of keyboard shortcuts.
6
+
7
+ ## Use the command palette
8
+
9
+ 1. Press `Ctrl+K`.
10
+ 2. Type a few letters of what you want, such as `set` for **Open settings** or `back` for **Back up now**. Letters only need to appear in order, so `nwv` finds **New video**. Commands also match other words, for example `keys` finds **Open settings**. Several words match in any order across the command's name, the project it acts on and its other words: `cleopatra regenerate image 3` finds **Regenerate image 3 in Cleopatra**.
11
+ 3. Use `Up` and `Down` to move through the list, `Home` and `End` to jump to the first or last, and `Enter` to run the highlighted command. You can also click a command.
12
+ 4. Press `Esc` (or `Ctrl+K` again) to close the palette without running anything.
13
+
14
+ The palette lists what you can do from where you are. Commands about the screen in front of you (the project you have open, for example) are listed first, with the project or item name beside them. Some commands are only found once you type: every project by name, and New schedule and Add to calendar from other screens (see [From anywhere](#from-anywhere)). If nothing matches, it says so; try fewer letters or another word.
15
+
16
+ A command that has a shortcut shows its keys beside it.
17
+
18
+ ## Keyboard shortcuts
19
+
20
+ Press `?` anywhere (outside a text field) to see **Keyboard shortcuts**: every key that works on the screen you are on. `Ctrl` works as `Cmd` on a Mac. Keys without `Ctrl` wait while you type in a field, so typing a `c` into a title never opens Play. Two keys like `G` then `H` are pressed one after the other.
21
+
22
+ | Keys | Where | What it does |
23
+ |---|---|---|
24
+ | `Ctrl+K` / `Cmd+K` | Anywhere | Opens or closes the command palette. |
25
+ | `?` | Anywhere | Shows the keyboard shortcuts. |
26
+ | `C` | Anywhere | **New video** (opens Play). |
27
+ | `G` then `H` | Anywhere | Go to Home. |
28
+ | `G` then `P` | Anywhere | Go to Projects. |
29
+ | `G` then `C` | Anywhere | Go to the Calendar. |
30
+ | `G` then `S` | Anywhere | Go to Schedules. |
31
+ | `G` then `L` | Anywhere | Go to the Library. |
32
+ | `G` then `K` | Anywhere | Go to Channels. |
33
+ | `G` then `,` | Anywhere | Go to Settings. |
34
+ | `/` | Projects, Library → Prompts, Library → Intros & Outros | Puts the cursor in the list's search box. |
35
+ | `Shift+N` | A project page | Runs the project's next action (Approve, Try again, Prepare upload…). |
36
+ | `Shift+D` | A project page | Copies the YouTube description. |
37
+ | `Ctrl+S` / `Cmd+S` | The Library editors (prompts, intros and outros, document themes) | Saves, even while you are typing in a field. |
38
+ | `Up` / `Down`, `Home` / `End`, `Enter`, `Esc` | Command palette | Move, jump, run, close. |
39
+ | `Ctrl+Enter` / `Cmd+Enter` | Play | Opens **Review the whole setup** without starting a run. |
40
+ | `Space` or `K`, `J` / `L`, `Left` / `Right`, `M`, `F`, `C`, `0`–`9` | Inside a video or audio player | Play and pause, jump 10 seconds, jump 5 seconds, mute, full screen, captions, jump to a tenth of the way. See [Project Page](Project-Page#the-players). |
41
+ | `Enter` / `Shift+Enter` | Search box in a reading view (research, article, narration text, patch notes) | Next match / previous match. |
42
+ | `Left` / `Right` | Image viewer (an enlarged image or thumbnail on a project) | Previous / next image. |
43
+ | `Esc` | Dialogs, side drawers, the image viewer | Closes them. |
44
+ | `Esc` | Adding another title on Play | Cancels adding it. |
45
+ | `Esc` | Guided tour | Closes an open picker first; press again to leave the tour. |
46
+ | `Left` / `Right`, `Home` / `End` | Tabs (for example on a project page) | Move between the tabs. |
47
+ | `Left` / `Right` | Segmented choices (for example **Appearance** in Settings) | Move between the options. |
48
+
49
+ Everything else is in the palette.
50
+
51
+ ## Palette commands
52
+
53
+ Commands are grouped under headings in the palette. Group names below are the headings you see.
54
+
55
+ ### Go to (everywhere)
56
+
57
+ | Command | What it does |
58
+ |---|---|
59
+ | **Open home** | Goes to Home. |
60
+ | **Open projects** | Goes to Projects. |
61
+ | **Open channels** | Goes to Channels. |
62
+ | **Open schedules** | Goes to Schedules. |
63
+ | **Open calendar** | Goes to the Calendar. |
64
+ | **Open library** | Goes to the Library (Prompts). |
65
+ | **Open settings** | Goes to Settings. |
66
+ | **Open usage and costs** | Goes to Settings → Usage. |
67
+ | **Show patch notes** | Goes to Settings → Patch notes. |
68
+
69
+ ### Create and Channel (everywhere)
70
+
71
+ | Command | What it does |
72
+ |---|---|
73
+ | **New video** (`C`) | Opens Play. |
74
+ | **Show all channels** | Shows every channel's projects, schedules and costs. |
75
+ | **Switch to <channel>** | Shows one channel only. There is one command per channel. |
76
+
77
+ ### From anywhere
78
+
79
+ These are found once you type, from any screen:
80
+
81
+ | Command | What it does |
82
+ |---|---|
83
+ | **Open <project>** | Opens any project by name, for example `hypatia` finds **Open Hypatia of Alexandria**. |
84
+ | **Regenerate image N in <project>** | Type the project, the words and the number, for example `cleopatra regenerate image 3`. It opens that project on its Images and asks before redrawing, as the Regenerate button does. |
85
+ | **New schedule** | Opens Schedules with a new schedule started. |
86
+ | **Add to calendar** | Opens the Calendar with the Add to calendar form. |
87
+ | **Show keyboard shortcuts** (`?`) | Lists every shortcut that works here. |
88
+
89
+ ### Open a tutorial page
90
+
91
+ These tutorial pages are also inside Slopify, under **Help → Tutorials**. Type `tutorial` and a few words of a page's name, then pick **Open tutorial: <page>**, for example **Open tutorial: Install** or **Open tutorial: Shorts**. It opens that page at `/help/tutorials/<Page>`, where a search box finds any page. **Open tutorials** (under Go to) opens the tutorials' home page, and on the tutorials page `/` puts the cursor in that search box.
92
+
93
+ ### Play
94
+
95
+ On the Play screen.
96
+
97
+ | Command | What it does |
98
+ |---|---|
99
+ | **Start run** / **Queue N videos** | Starts the run, or queues every video on the page. If something is missing, it takes you to the field that needs it. |
100
+ | **Add a topic for another video** | Adds another title to make a batch. |
101
+ | **Save as template** | Saves the current setup as a template. |
102
+ | **Review the whole setup** (`Ctrl+Enter`) | Opens the full review. |
103
+ | **Pick a template** | Moves to the template picker. |
104
+ | **Change title and keywords**, **Change article**, **Change narration**, **Change images**, **Change video and style**, **Change outputs**, **Change reviews**, **Change channel** | Opens that part of the setup and scrolls to it. |
105
+
106
+ See [Play-Overview](Play-Overview).
107
+
108
+ ### This project
109
+
110
+ On a project's page. The project's title shows beside each command.
111
+
112
+ | Command | What it does |
113
+ |---|---|
114
+ | The next action (for example **Continue the run**, **Try images again**, **Prepare upload**) (`Shift+N`) | Runs what the project page suggests next. Shows **Show the project's next action** when there is none. |
115
+ | **Pause the run** / **Continue the run** | Pauses or resumes the run. |
116
+ | **Cancel the run** | Asks to cancel the run. |
117
+ | **Prepare upload** | Opens the upload pack once the video has been made. |
118
+ | **Edit project settings** | Opens Edit project. |
119
+ | **Choose what to remake** | Opens the review of everything a change affects. |
120
+ | The first outdated group / **Remake outdated outputs** | Remakes the first group of outdated outputs. Says so when nothing is outdated. |
121
+ | **Remake everything outdated** | Remakes all outdated outputs. |
122
+ | **Save as template** | Saves this project's setup as a template. |
123
+ | **Make my own copy** | On a sample project, makes an editable copy. |
124
+ | **Open the project folder** | Opens the project's folder on this computer. |
125
+ | **Regenerate image N** / **Regenerate on-screen card N** | Redraws that image, including images behind **Show all**. Type the number, for example `regenerate image 12`. It asks first, as the Regenerate button does. |
126
+ | **Regenerate the thumbnail** / **Regenerate thumbnail N** | Redraws a thumbnail. |
127
+ | **Copy description** (`Shift+D`) | Copies the YouTube description, placeholders filled. |
128
+ | **Copy tags** | Copies the YouTube tags. |
129
+
130
+ See [Project-Page](Project-Page) and [Video-Editing](Video-Editing).
131
+
132
+ ### Needs you and Ready to upload
133
+
134
+ On Home.
135
+
136
+ | Command | What it does |
137
+ |---|---|
138
+ | **Approve the article and record**, **Approve and draw the images**, **Approve and render** | Approves a run held at a review. One per held project; **Open the held run** when there is nothing to approve here. |
139
+ | **Mark uploaded** | Takes a finished video off the Ready to upload list. One per video. |
140
+
141
+ See [Home-and-Projects](Home-and-Projects) and [Reviews-and-Checkpoints](Reviews-and-Checkpoints).
142
+
143
+ ### Projects
144
+
145
+ On the Projects list.
146
+
147
+ | Command | What it does |
148
+ |---|---|
149
+ | **Show projects that need you** | Filters to projects waiting for you. |
150
+ | **Show videos ready to upload** | Filters to finished videos. |
151
+ | **Show failed projects** | Filters to failed projects. |
152
+ | **Search projects** (`/`) | Puts the cursor in the search box. |
153
+
154
+ ### Library
155
+
156
+ On any Library tab.
157
+
158
+ | Command | What it does |
159
+ |---|---|
160
+ | **New prompt** | Starts a new prompt (of the kind the tab shows). |
161
+ | **New intro or outro** | Starts a new intro or outro. |
162
+ | **New document theme** | Starts a new document theme. |
163
+ | **Open prompts**, **Open intros and outros**, **Open templates**, **Open document themes** | Switches tab. |
164
+ | **Save a setup as a template** | On the Templates tab: saves a Play setup as a template. |
165
+
166
+ See [Library-Overview](Library-Overview).
167
+
168
+ ### Channels
169
+
170
+ | Command | Where | What it does |
171
+ |---|---|---|
172
+ | **New channel** | Channels | Starts a new channel. |
173
+ | **Add to cast** | A channel's page | Adds a character, creature, place or object to its cast. |
174
+
175
+ See [Channels](Channels) and [Cast-Library](Cast-Library).
176
+
177
+ ### Schedules and Calendar
178
+
179
+ | Command | Where | What it does |
180
+ |---|---|---|
181
+ | **New schedule** | Schedules (from anywhere once you type it) | Starts a new schedule. |
182
+ | **Pause schedule** / **Resume schedule** | Schedules, with one open | Pauses or resumes it. |
183
+ | **Add to calendar** | Calendar (from anywhere once you type it) | Adds topics to the calendar. |
184
+ | **Show the calendar as weeks** / **Show the calendar as a list** | Calendar | Switches the view. |
185
+ | **Queue all suggested topics** | Calendar | Accepts every topic a schedule suggested. One per schedule with suggestions. |
186
+
187
+ See [Schedules](Schedules) and [Calendar](Calendar).
188
+
189
+ ### Settings
190
+
191
+ In Settings.
192
+
193
+ | Command | What it does |
194
+ |---|---|
195
+ | **Check all providers** | Opens Providers and runs Check all. |
196
+ | **Back up now** | Opens Backups and starts a backup. |
197
+ | **Download diagnostics** | Saves `slopify-diagnostics.json`. |
198
+ | **Export everything** | In Backup & storage: downloads the full export. |
199
+ | **Check for new models** | In Models: checks the catalogue now. |
200
+
201
+ See [Settings-Reference](Settings-Reference).
202
+
203
+ ## Tips
204
+
205
+ - The fastest way around: `Ctrl+K`, a few letters, `Enter`. For example `Ctrl+K`, `usage`, `Enter` opens your usage. For the main screens, `G` and a letter is faster still.
206
+ - On a project, `Ctrl+K` lists that project's commands first, so the next action is a few letters away (try `next` or `continue`).
207
+ - On Play, `Ctrl+Enter` is a safe way to check everything: it opens the review and never starts a run.
208
+
209
+ ## Related pages
210
+
211
+ - [Play-Overview](Play-Overview)
212
+ - [Project-Page](Project-Page)
213
+ - [Home-and-Projects](Home-and-Projects)
214
+ - [Settings-Reference](Settings-Reference)
215
+ - [FAQ](FAQ)
@@ -0,0 +1,75 @@
1
+ # Library Overview
2
+
3
+ The Library holds the reusable pieces your videos are made from: prompts, intros and outros, templates, PDF document themes and narration aliases. Write a piece once and pick it on Play for every video that needs it.
4
+
5
+ **Where to find it:** **Library** in the sidebar. It opens on **Prompts**; the tabs across the top switch sections.
6
+
7
+ ## The five tabs
8
+
9
+ | Tab | What it holds | Page |
10
+ |---|---|---|
11
+ | **Prompts** | The instructions for articles, images, thumbnails, narration cues, YouTube descriptions, shorts, reviews and multi-voice scripts, each with `{{keywords}}` where the subject goes | [Prompts](Prompts) |
12
+ | **Intros & Outros** | Short narrated openings and closings, written as text or generated by the text model | [Intros and outros](Intros-and-Outros) |
13
+ | **Templates** | Saved Play setups, and **Add pack** for the starter packs | [Templates](Templates) |
14
+ | **Documents** | Document themes: the look of the PDF made from the article | [Document themes](Document-Themes) |
15
+ | **Aliases** | Words the narrator says differently from how they are written, such as Dr. as Doctor | [Aliases and glossary](Narration-Aliases-and-Glossary) |
16
+
17
+ ## What every Library list has
18
+
19
+ Prompts, Intros & Outros and Templates share the same row actions, in the same order:
20
+
21
+ | Action | What it does |
22
+ |---|---|
23
+ | **Edit** | Opens the item in its editor. (A template has no editor: Edit picks it and shows its keywords beside the list.) |
24
+ | **Duplicate** | Opens the editor with a copy, for you to rename and save. (A template is copied as `<name> copy` at once.) |
25
+ | **Use in Play** | Picks the item in your open Play draft and opens Play on the field that shows it. An article prompt switches the article to Generate, an image prompt is ticked with one image, a thumbnail prompt switches the thumbnail to From prompt, and a Description or Shorts prompt turns that step on. The rest of the draft stays as it was. The button is off while Play is starting a run. |
26
+ | **History** | Opens the item's versions, a side-by-side compare, and what uses it. See [Prompts](Prompts#history-and-versions). |
27
+ | **Delete** | Asks first, then moves the item to **Settings → Trash** for 30 days. See [Trash](Trash). |
28
+
29
+ Your document themes have Edit, Duplicate and Delete, but no Use in Play or History. Built-in themes can only be copied.
30
+
31
+ A press anywhere on a row picks it; the row's own buttons still do their own thing. Beside each list, the selected item shows its text, its **Keywords**, what it is **Used by**, and its latest change.
32
+
33
+ ### Rename in the row
34
+
35
+ In Prompts, Intros & Outros and Templates, the pencil beside a name (**Rename <name>**) turns the name into a field. Type the new name and press **Save name** or Enter; `Esc` or **Cancel** keeps the old one. Only the name changes, and the notice ("Renamed “A” to “B”.") has **Undo**. A prompt's or entry's rename is one History version; a template's is a new template version.
36
+
37
+ ### Save with Ctrl+S
38
+
39
+ In the prompt, intro and outro and document theme editors, `Ctrl+S` (`Cmd+S`) saves, even while you are typing in a field.
40
+
41
+ ## Search and filter
42
+
43
+ - **Prompts** has a **Prompt kind** picker (Article, Image, Thumbnail, Narration Preparation, YouTube Description, Shorts, Review, Script (speakers)) and **Search prompts**.
44
+ - **Intros & Outros** has **Search intros and outros**.
45
+ - **Templates** has **Show templates of** to filter by channel.
46
+ - Press `/` on Prompts or Intros & Outros to jump to the search box.
47
+
48
+ ## Command palette shortcuts
49
+
50
+ Press `Ctrl+K` anywhere and type to find **New prompt**, **New intro or outro**, **New document theme**, **Open prompts**, **Open intros and outros**, **Open templates** or **Open document themes**. See [Keyboard and Ctrl+K](Keyboard-Shortcuts-and-Command-Palette).
51
+
52
+ ## Starter packs
53
+
54
+ **Library → Templates → Add pack** adds a ready-made set for one kind of channel: prompts, a suggested voice and a Play template. There are four packs: Sleep lore, True crime, History and Science explainers. Adding one twice changes nothing, and a pack never replaces a prompt or template of yours with the same name. See [Templates](Templates#starter-packs).
55
+
56
+ ## Fonts
57
+
58
+ The Library has no separate font manager. Fonts live where they are used:
59
+
60
+ - **Caption (subtitle) fonts:** upload your own in the subtitle font picker on Play's video style settings. Uploaded fonts then appear in a channel's brand kit too. See [Video and style](Play-Video-and-Style) and [Channels](Channels).
61
+ - **PDF fonts:** each document theme picks its fonts from the bundled Cinzel and the fonts built into every PDF reader (Times, Helvetica, Courier). See [Document themes](Document-Themes).
62
+
63
+ Uploaded fonts travel in backups, but templates leave them out.
64
+
65
+ ## How changes reach your videos
66
+
67
+ A project copies the prompts, intros, outros, aliases and theme settings it uses when it starts. Editing the Library later changes only runs started afterwards. Templates also keep their own copies, so save a template again to pick up a changed prompt. In a project, **Edit project** shows the project's own copy of each prompt: pick the Library prompt again (or press **Use the Library version**) to bring in your latest edit, and press **Update from Library** under narration aliases to copy the current alias list. See [Editing a project](Editing-a-Project).
68
+
69
+ ## Related pages
70
+
71
+ - [Prompts](Prompts)
72
+ - [Intros and outros](Intros-and-Outros)
73
+ - [Templates](Templates)
74
+ - [Document themes](Document-Themes)
75
+ - [Aliases and glossary](Narration-Aliases-and-Glossary)
@@ -0,0 +1,133 @@
1
+ # Models
2
+
3
+ Slopify keeps a model catalogue: the list of models, prices and retirements that the model pickers and cost estimates use. It checks for new models and price changes by itself, and tells you when something you use has been retired so you can switch it in one click.
4
+
5
+ **Where to find it:** Settings → Models.
6
+
7
+ ## What the catalogue covers
8
+
9
+ The catalogue lists the models of the providers that take an API key:
10
+
11
+ | Kind | Providers |
12
+ |---|---|
13
+ | Text | OpenRouter |
14
+ | Speech | ElevenLabs, OpenAI, Cartesia, Inworld |
15
+ | Images | OpenAI, Google, fal.ai, Replicate |
16
+ | Animated clips (image to video) | fal.ai, Replicate |
17
+
18
+ For each model it holds a name, a price (per token, per character, per image or per second) and whether the model is retired. A model with no price is counted as unknown, never as free.
19
+
20
+ The command-line tools (Claude Code, Codex, Gemini) are not in the catalogue. Their pickers show the models the tool installed on your computer offers, and **Check all** in Settings → Providers checks them. See [AI CLIs](AI-CLIs).
21
+
22
+ The catalogue also sets how many calls each keyed provider runs at once (3 for most, 5 for Inworld).
23
+
24
+ ## How it stays current
25
+
26
+ When Slopify starts, and then once a day, it checks two sources:
27
+
28
+ - the published catalogue file in the Slopify repository, and
29
+ - OpenRouter's public model list (live model IDs and per-token prices; no key needed).
30
+
31
+ It folds what it finds into your local catalogue file:
32
+
33
+ - New models appear in the pickers.
34
+ - Prices follow the published list, and OpenRouter models follow OpenRouter's live prices.
35
+ - A model the published list drops or marks retired, or that OpenRouter no longer serves, stays in the file marked retired and is hidden from the pickers.
36
+ - Models you added to the file yourself, and models you switched off, are left alone.
37
+ - A speech model keeps its local character limit, so existing projects are not split differently.
38
+
39
+ Nothing you have made changes. A finished run's costs keep the prices they were recorded at.
40
+
41
+ To turn the automatic check off, start Slopify with the environment variable `SLOPIFY_NO_MODEL_REFRESH=1`.
42
+
43
+ ## Check for new models now
44
+
45
+ 1. Open **Settings → Models**.
46
+ 2. Under **Model catalogue**, choose **Check now** (or press `Ctrl+K` and run **Check for new models**).
47
+ 3. A message says what changed, such as "Model list checked: 2 new, 1 repriced", or "No changes".
48
+
49
+ The section shows:
50
+
51
+ | Row | What it shows |
52
+ |---|---|
53
+ | **Catalogue file** | The path of your local catalogue file (`models.yaml` in Slopify's data folder). |
54
+ | **Verified** | The date the catalogue's prices were last verified. |
55
+ | **Last checked** | When the last automatic or manual check ran, and what it changed. |
56
+
57
+ Below them, **New:** and **Retired:** list the models the last check added or retired.
58
+
59
+ If the check cannot finish, a red line says why. For example: "Slopify could not download the latest model list, so it is still using the one it has." Check your internet connection and choose **Check now** again.
60
+
61
+ ## Replace the local file with the published one
62
+
63
+ Use this when the local file is broken, or you want the published list exactly.
64
+
65
+ 1. Open **Settings → Models**.
66
+ 2. Choose **Replace with published file**.
67
+
68
+ This overwrites the local catalogue with the published one and drops any edits you made. The previous file is saved beside it first as `models.yaml.previous`, so you can copy your edits back.
69
+
70
+ ## Edit the catalogue yourself
71
+
72
+ The catalogue is a plain YAML file at the path shown under **Catalogue file**. You can add a model or switch one off in it; Slopify reloads it when it changes, and the daily check keeps your additions.
73
+
74
+ If the file is missing or has a mistake, Slopify keeps using the last working list and shows: "Your models.yaml file is missing or has a mistake, so Slopify is still using the last working model list." Fix the file, or use **Replace with published file**. The automatic check never overwrites a file that has a mistake in it.
75
+
76
+ ## Switch away from a retired model
77
+
78
+ **Retired models in use** lists every template, schedule, Play draft and project (with steps still to run) whose model is retired or no longer listed. Nothing changes by itself: a run that reaches a retired model stops and says so.
79
+
80
+ Each row shows:
81
+
82
+ - the kind (**Template**, **Schedule**, **Draft** or **Project**) and its name,
83
+ - which choice it is (**Text model**, **Voice model**, **Image model** or **Animation model**), the model, and whether it is "retired" or "no longer listed",
84
+ - a button **Switch to <model>** with the suggested replacement: the active model from the same provider whose ID shares the longest start with the old one.
85
+
86
+ To switch:
87
+
88
+ 1. Open **Settings → Models**.
89
+ 2. Under **Retired models in use**, choose **Switch to <model>** on a row to change only that one choice.
90
+ 3. Or choose **Switch all** to switch every row that has a suggestion. A message says how many were switched and why any could not be.
91
+
92
+ What a switch does:
93
+
94
+ - A template gets a new saved version, and the schedules that ran its latest version move along with it.
95
+ - A project gets a new saved version, as **Edit project** would make.
96
+ - A draft is updated in place.
97
+
98
+ Rows that cannot be switched here say why and what to do:
99
+
100
+ | Row says | What to do |
101
+ |---|---|
102
+ | **No replacement** ("This provider has no other model to switch to.") | Choose another provider for this step and save. |
103
+ | "This schedule runs an older version of the template …" | In the schedule, choose **Edit**, pick the template again so it runs the latest version, then save. |
104
+ | "This project is running." | Wait for it to finish or pause it, then switch. |
105
+
106
+ When nothing is affected, the section says **Nothing uses a retired model.**
107
+
108
+ You don't have to come here to see it: a template or schedule that picks a retired model is flagged on its own row in **Library → Templates** and **Calendar → Schedules**, with the same **Switch to <model>** button. See [Templates](Templates#retired-models) and [Schedules](Schedules#manage-a-schedule).
109
+
110
+ **Check all** in Settings → Providers also reports retired models under **Chosen models**, and **Model reachable** asks each keyed provider whether it still answers for the models you chose. See [Providers-and-Keys](Providers-and-Keys#check-all-providers).
111
+
112
+ ## When a run reaches a model that is gone
113
+
114
+ If a run starts a step whose model is no longer in the list, it stops with a message such as "The chosen … model is no longer in Slopify's model list." Open the project, choose **Edit project**, change the model under Providers, then use **Continue the run**. See [Recovery-and-Retries](Recovery-and-Retries).
115
+
116
+ ## Pick models on Play
117
+
118
+ On Play, each provider row has a model picker fed by the catalogue (or by the CLI for command-line tools):
119
+
120
+ - The refresh button (**Refresh models**) asks the provider for its current list.
121
+ - **Custom ID** lets you type a model ID the list does not show; **Use list** goes back.
122
+ - **Thinking** (text) or **Effort** (images) appears only when the model offers levels. **Model default** leaves it to the provider.
123
+
124
+ See [Play-Overview](Play-Overview) and the Play pages for each step.
125
+
126
+ ## Related pages
127
+
128
+ - [Providers-and-Keys](Providers-and-Keys)
129
+ - [AI-CLIs](AI-CLIs)
130
+ - [Costs-and-Run-Cost](Costs-and-Run-Cost)
131
+ - [Templates](Templates)
132
+ - [Schedules](Schedules)
133
+ - [Settings-Reference](Settings-Reference)
@@ -0,0 +1,161 @@
1
+ # Multiple Voices
2
+
3
+ A run can be narrated by several speakers instead of one voice reading the article. You pick a format (Audiobook, Podcast, Radio drama or Interview), give each speaker a voice, and Slopify has the text model write or split the script into speaker turns. You get a video whose captions know who is talking and, if you want them, an MP3 and an M4B audiobook file with chapters.
4
+
5
+ **Where to find it:** Play → **Narration** row → **Speakers** (the disclosure under the voice picker). On a finished project: Edit project → **Providers** → Speakers.
6
+
7
+ ## Formats
8
+
9
+ The **Format** list under Speakers decides how many voices the run uses and how the video looks.
10
+
11
+ | Format | Speakers it starts with | Rules | Video |
12
+ |---|---|---|---|
13
+ | **Narration (one voice)** | none: the Narration row's voice reads everything | the default | Image flow |
14
+ | **Audiobook** | Narrator | needs one speaker with the Narrator role | Image flow; captions tagged with the speaker |
15
+ | **Podcast** | Alex and Sam, both hosts | needs at least two speakers | Image flow with a speaker panel |
16
+ | **Radio drama** | Narrator and Mara (a character) | needs one speaker with the Narrator role | Image flow; captions tagged with the speaker |
17
+ | **Interview** | Host and Guest | needs at least two speakers | Image flow with a speaker panel |
18
+
19
+ You can rename, recast or remove the starter speakers. A run can have up to 10 speakers.
20
+
21
+ When the channel has hosts (cast members marked **One of the channel's hosts** that have a voice), a new **Podcast** or **Interview** starts with them as its speakers instead of Alex and Sam, or Host and Guest. See [Cast library](Cast-Library#make-a-member-one-of-the-channels-hosts).
22
+
23
+ The **speaker panel** (Podcast and Interview) is a row of tiles, one per speaker, with the one talking lit in their colour and their name as a lower third. It is drawn together with burned-in captions, so set **Captions** to **Burn in** under Play → **Video and style** to see it. A speaker added from a channel's cast whose member has a reference picture shows that picture in their tile (the member's first picture, cropped square, taken when the run starts); everyone else shows their initials. Adding a picture to the cast later does not change projects already made.
24
+
25
+ ## Set up a multi-voice run
26
+
27
+ 1. On Play, open the **Narration** row and pick the **TTS** provider, model and **Voice** as usual. This voice reads the intro and outro; the speakers read the article.
28
+ 2. Open **Speakers** and choose a **Format**.
29
+ 3. Choose where the **Script** comes from (see [The script](#the-script)).
30
+ 4. For each speaker, set a **Speaker name**, **Role**, **Voice provider**, **Voice model** and **Voice**. Add more with **Add speaker**, or pick someone from **Add from the cast**.
31
+ 5. Optionally set **Pace** and **Pronunciations** per speaker, and press **Audition** to hear a speaker before the run.
32
+ 6. Set **Gap between turns** and the switches below it.
33
+ 7. For a podcast or interview, set Captions to **Burn in** so the speaker panel shows.
34
+ 8. Review the estimate in the right rail and start the run.
35
+
36
+ If something is missing, Play names it before you can start, for example "A podcast needs at least two speakers" or "An audiobook needs a narrator. Set one speaker's role to Narrator under Speakers".
37
+
38
+ ## The script
39
+
40
+ | Script option | What it does | Cost |
41
+ |---|---|---|
42
+ | **Write a script (Script prompt)** | The text model writes speaker turns from a **Script** prompt in your Library, one `Name: words` paragraph per turn. The article prompt picker on the Article row becomes a **Script prompt** picker. | One text-model call, in place of the article call |
43
+ | **Split the article into speakers** | Keeps the article as written or pasted, then the text model hands its narration and dialogue to the speakers. Audiobook only. | One extra text-model call |
44
+
45
+ Other formats must use **Write a script**. When the article is split, the split must keep the article's words; if the model changes them, the call is asked again.
46
+
47
+ ### Script format
48
+
49
+ Write Script prompts in **Library → Prompts** with the kind **Script**. The text model answers in this shape:
50
+
51
+ ```
52
+ # Section title
53
+
54
+ Alex: What one speaker says, as one paragraph.
55
+
56
+ Sam: The next turn.
57
+ ```
58
+
59
+ - A `#` heading starts a section. Sections become the chapters of the MP3 and M4B files.
60
+ - A turn starts with a speaker's name and a colon. A line directly under a turn continues it.
61
+ - Text in `[square brackets]`, such as `[laughs]`, is a stage direction and is never read aloud.
62
+ - A script that names someone who is not one of your speakers, or has a paragraph that is not a turn, stops the Article stage with the line to fix.
63
+
64
+ On the project page the Article section shows the script as the speakers read it: each turn under its speaker's name in their colour, with the sections as headings. If the script can't be narrated, it says why and points you to Edit project → Article.
65
+
66
+ ## Speaker options
67
+
68
+ | Option | What it does | Default / range |
69
+ |---|---|---|
70
+ | **Speaker name** | The name the script uses for this speaker's turns (`Name: words`), shown on captions and in the speaker panel. Letters, numbers, spaces, dots, apostrophes and hyphens; each speaker needs a different name. | Up to 40 characters |
71
+ | **Role** | Narrator, Host, Guest or Character. The text model is told each speaker's role when it writes or splits the script. | Set by the format |
72
+ | **Voice provider** | The text-to-speech service for this speaker, charged per character of their lines. Speakers may use different providers. Changing it clears the model and voice. | None |
73
+ | **Voice model** | The provider's speech model. Pronunciations need an Inworld TTS-2 model. | None |
74
+ | **Voice** | One of the voices you added under **Settings → Voices** for that provider, filtered to the project's language. Tick **Show all voices** to see the rest. | None |
75
+ | **Pace** | How fast this speaker talks relative to the voice's own speed. It is applied after the speech is made, so changing it costs nothing. | Normal; 0.8×, 0.9×, Normal, 1.1×, 1.2× |
76
+ | **Pronunciations** | One `Term: /IPA/` per line (for example `Arda: /ˈɑɹdə/`), for this speaker only. Used on Inworld TTS-2 voices, ahead of the article's Pronunciation Glossary. | Empty |
77
+ | **Audition** | Speaks this speaker's first line of the script (or a sample line) in their voice. | One real text-to-speech request; the button shows the price, such as "Audition · about $0.0004" |
78
+
79
+ A pronunciation line the voice can't use (no slashes, ARPAbet, or sounds the project's language does not have) is skipped and that word is read as ordinary text; the other lines still apply. The Speakers panel says which lines are skipped and why as you type.
80
+
81
+ ## Run-wide options
82
+
83
+ | Option | What it does | Default / range |
84
+ |---|---|---|
85
+ | **Gap between turns** | The pause between one speaker's turn and the next. Longer feels calmer; shorter feels like a lively talk. | 0.35 s; choose 0, 0.2, 0.35, 0.5, 0.8 or 1.2 s |
86
+ | **Speaker names on captions** | Puts the speaker's name before their captions, like `Ada:` and their words. In the VTT file it is written as `<v Name>`. | On for Podcast and Interview, off otherwise |
87
+ | **One request for consecutive turns where the voice provider can (ElevenLabs v3, Gemini)** | Sends back-to-back turns as one multi-speaker request where the provider has one, so the voices react to each other: ElevenLabs v3 with up to 10 voices, Google Gemini with 2 (a third voice starts a new request). Fewer requests, same characters charged. Other providers read each turn on its own. | On |
88
+ | **Also make MP3 and M4B files with chapter markers** | Saves the whole narration as `narration.mp3` (ID3 chapters) and `audiobook.m4b` (AAC with chapter markers), one chapter per script section. Made on your computer at no provider cost. | On |
89
+
90
+ The MP3 and M4B appear with the Video section's downloads on the project page, and play in Slopify's own audio player with the chapter marks on its track. Slopify does not publish them anywhere.
91
+
92
+ ## Audiobooks in chapters
93
+
94
+ An audiobook can be one chapter of a book, so a long book is made one chapter per project and a player keeps the chapters together.
95
+
96
+ 1. On Play, pick the **Audiobook** format under Speakers.
97
+ 2. Turn on **A chapter of a book**.
98
+ 3. Type the **Book title** (the same for every chapter) and the **Chapter** number (from 1).
99
+ 4. Start the run.
100
+
101
+ The MP3 and M4B carry the book as their album and the chapter as their track. Projects shows the project as **Book · Chapter N**, for example "The Wind in the Willows · Chapter 3".
102
+
103
+ ### Make the next chapter
104
+
105
+ On a finished audiobook's project page, **Make the next chapter** (beside **Edit settings**) opens a new Play draft for the next chapter: the same speakers and voices, channel and cast, prompts and settings, with the chapter number one higher. Write or paste the new chapter's text there, then start it. An audiobook that was not a book yet becomes one, named after itself, starting at chapter 2.
106
+
107
+ ## Speakers from a channel's cast
108
+
109
+ A channel's cast member can have a voice, so a host or recurring character sounds the same in every episode.
110
+
111
+ 1. Open **Channels**, pick the channel, open its **Cast** tab and edit a member.
112
+ 2. Under **Cast voice**, pick a **Voice provider**, **Voice model** and **Voice**. The list shows voices that speak the channel's language. Leave the provider empty for no voice.
113
+ 3. On Play, under Speakers, pick the member from **Add from the cast**. Only members with a voice are listed.
114
+
115
+ The speaker takes the member's name and voice. Every run started later, whether from Play, a batch, a schedule or a template, takes that member's voice, pace and pronunciations as they are when the run starts. Projects already made keep the voice they were made with. See [Cast-Library](Cast-Library) for editing the cast.
116
+
117
+ ## Delivery tags
118
+
119
+ With a **Narration Preparation** prompt picked (Narration row → **Audio Advanced**), each turn of a speaker on Inworld's TTS-2 model is prepared on its own before it is spoken. The text model sees the turn and who says it (for example `Rat (character)`) and adds cues:
120
+
121
+ - A spoken direction at the start of a sentence, such as `[say shyly and a little uncertainly]`, held until the next one or `[reset]`.
122
+ - Non-verbal sounds where they happen: `[laugh]`, `[breathe]`, `[sigh]`, `[cough]`, `[clear throat]` and `[yawn]`.
123
+
124
+ Each turn is its own request, so a direction never leaks into the next speaker, and every speaker on TTS-2 gets cues of their own. Turns of speakers on other voices, or on TTS-2 Flash (which ignores directions), are spoken as written. At least one speaker must be on TTS-2, or Play asks you to choose that model for a speaker or clear Narration Preparation under Narration → **Audio Advanced**. The Narration row's own model (which reads the intro and outro) must be Inworld TTS-2 too. The tags are only in what the voice is sent: captions, word timing, the MP3/M4B chapters and the script download never show them. See [Play-Narration](Play-Narration) for Narration Preparation itself.
125
+
126
+ ## How the audio is made
127
+
128
+ - Every turn is its own request in its speaker's voice, then the turns are joined with the gap between turns.
129
+ - Narration aliases (Library → Aliases) apply to every turn.
130
+ - Changing one speaker's voice remakes only that speaker's turns.
131
+ - With **Level the volume** on (the default for new runs), each turn is brought to one common loudness before joining, so a quiet host and a loud guest sit at the same level. The MP3 and M4B are mastered to the audio files volume (−18 LUFS by default).
132
+ - **Pause between sentences** lengthens the quiet between sentences inside a turn; the gap between turns stays the Gap between turns.
133
+
134
+ ## Captions with several speakers
135
+
136
+ - Captions never mix two speakers in one line, and each speaker's captions carry their colour.
137
+ - Captions you edit by hand in Edit project → **Captions** keep their speaker. A caption you add takes the speaker of the narration under it.
138
+ - [Shorts](Shorts) cut from a multi-voice video start and end on a speaker's turn.
139
+
140
+ ## Change speakers on a finished project
141
+
142
+ 1. Open the project and press **Edit project**.
143
+ 2. Open **Providers** and change the Speakers panel.
144
+ 3. Save. The rebuild review lists what will be remade: only the turns of speakers whose voice changed are spoken again, paid per character.
145
+
146
+ ## Tips
147
+
148
+ - Audition each speaker before a long run; a wrong voice is cheaper to catch at one line.
149
+ - If a podcast shows no speaker panel, check that Captions is set to Burn in.
150
+ - Give speakers clearly different voices and names; the script and captions match speakers by name.
151
+
152
+ ## Related pages
153
+
154
+ - [Play-Narration](Play-Narration)
155
+ - [Cast-Library](Cast-Library)
156
+ - [Channels](Channels)
157
+ - [Prompts](Prompts)
158
+ - [Narration-Aliases-and-Glossary](Narration-Aliases-and-Glossary)
159
+ - [Other-Languages](Other-Languages)
160
+ - [Editing-a-Project](Editing-a-Project)
161
+ - [Costs-and-Run-Cost](Costs-and-Run-Cost)