@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,204 @@
1
+ # Editing a Project
2
+
3
+ You can change almost anything about a project after it has run: the article, a narration chunk, one image, the prompts, the providers, the captions or the volume. Slopify saves each change as a new revision and remakes only the outputs the change affects, after you have seen what that costs.
4
+
5
+ **Where to find it:** a project → **Edit settings** (top right), or **Settings** in the section rail. The form is called **Edit project**.
6
+
7
+ ## How editing works
8
+
9
+ 1. **Edit.** You change settings or content in the Edit project form. Nothing runs while you edit.
10
+ 2. **Save.** **Save changes** stores a new revision. Saving never starts work. Outputs the change affects turn **outdated** and keep their old version until they are remade.
11
+ 3. **Remake.** The next action button offers the first group of outdated outputs, for example **Remake the outdated narration** or **Remake 4 outdated images**. Press it, or open **Choose what to remake** to see the full list, the cost, and what is kept.
12
+
13
+ Remaking one group can make the next group outdated in turn (new narration outdates the video); the next action then names that group.
14
+
15
+ ## Edit project sections
16
+
17
+ The form has its own section list on the left. Some sections appear only when the project uses them.
18
+
19
+ | Section | What you change there |
20
+ | --- | --- |
21
+ | **Inputs** | **Project title**, **Channel** and brand kit, **Stages** (the source of each stage: Research, Article, Audio, Images, Thumbnail, Video, Document), **Document theme**, **Timing** (silence, seconds per image, zoom, motion), **Cuts and look**, **Ambient sound**, **Pauses and volume**, **Intro and outro**, **Research notes**. |
22
+ | **Article** | The **Article text** itself. Shows an "edited" badge once you have changed it. |
23
+ | **Providers** | Language, text, narration and image providers, models, voice, speakers, Pronunciation Glossary, narration aliases, **Describe tables and figures**, chunking and Narration Preparation. |
24
+ | **Prompts** | The **YouTube description** switch (turn it on for a project that has no description yet) and its **Description prompt**, every prompt the project uses, and the keywords. |
25
+ | **Reviews** | Automatic reviews. See [Reviews and Checkpoints](Reviews-and-Checkpoints). |
26
+ | **Shorts** | Shorts settings, the Shorts preview and picked clips. See [Shorts](Shorts). |
27
+ | **Subtitles** | Caption mode, font, size, position and the style preview. See [Video Editing](Video-Editing#subtitles). |
28
+ | **Images** | **Image prompts**, **More images for long videos**, the establishing image, thumbnail count, replacing provided files, and the image list. The badge shows how many images there are. |
29
+ | **Narration** | The narration chunks (only when narration is generated). |
30
+ | **Captions** | Caption text and timing. The badge shows how many captions you have loaded. |
31
+
32
+ At the bottom: **Save changes** saves a revision, **Discard changes** drops the draft. While a file is uploading the bar says "Waiting for uploads to finish…" and saving waits.
33
+
34
+ If someone (or another tab) saved the project while you were editing, the bar says "A newer revision is available. Your unsaved changes are kept below." Press **Reload current revision and discard my draft** to start from the newer one.
35
+
36
+ ## Change the article text
37
+
38
+ 1. Open **Edit project → Article**.
39
+ 2. Edit the **Article text** (Markdown; headings become chapters).
40
+ 3. Press **Save changes**.
41
+
42
+ Your edit is kept when other settings change, and saved as a new revision. The narration, images and video made from the old text turn outdated and are remade when you choose.
43
+
44
+ ### Regenerate the article
45
+
46
+ **Regenerate article after review** (under the article text, when the article is generated) marks the article to be written again by the text model, one or more paid text calls. Nothing runs yet: the rebuild review lists it with the narration, images and video it outdates, and you start it there. It replaces any edits you made to the article.
47
+
48
+ ## Edit narration
49
+
50
+ **Edit project → Narration** shows the narration split into the chunks it was spoken in. Only the chunks you touch are made again, paid per character, and the video is rendered again with them.
51
+
52
+ | Control | What it does |
53
+ | --- | --- |
54
+ | **Text for narration chunk N** | What the narrator says in this chunk. Editing it has the chunk spoken again by your voice provider when you remake outdated outputs. The other chunks keep their audio; captions and the video follow. It does not change the article. |
55
+ | **Replace narration chunk N** | Uses your own audio file for this chunk. |
56
+ | **Regenerate narration chunk N after review** | Speaks the chunk again with the same text and voice, for a new take when a word came out wrong. Paid per character. The current audio stays until then. **Keep narration chunk N** takes the mark off. |
57
+
58
+ When the project was narrated as one whole request (Chunking set to the whole article), the form says so: editing its text rebuilds the whole narration request.
59
+
60
+ ## Edit images
61
+
62
+ **Edit project → Images** lists every image of the video in the order it is shown. Changes apply after you save.
63
+
64
+ | Control | What it does |
65
+ | --- | --- |
66
+ | **Prompt for image N** | The words this image is drawn from, with keywords in double braces filled in from the project. Editing it outdates only this image and the video; it is drawn again, one image call, when you remake. |
67
+ | **Use saved wording as template for image N** | Copies the prompt as sent into the box so you can edit it. |
68
+ | **Replace image N** | Uses your own picture in its place. |
69
+ | **Move image N earlier** / **later** | Changes the order. |
70
+ | **Delete image N** | Removes it. Deleting the last image also turns Images and Video off. |
71
+ | **Regenerate image N after review** | Draws the image again from its prompt, one paid image call, with a new result. The current image stays until the new one is made. |
72
+ | **Add generated image** | Adds a new image with an empty prompt at the end. |
73
+ | **Add provided image** | Adds your own picture at the end. |
74
+ | **Add a video clip** | Adds a clip (MP4, MOV, M4V, WebM or MKV). It plays muted in an image's place, trimmed, slowed (to half speed at most) or looped to fit. |
75
+
76
+ A project holds at most 60 images, or 240 with **More images for long videos** on.
77
+
78
+ The **Regenerate** button on an image in the project's Images section does the same thing: it opens Edit project with the change applied to the draft, and saving marks the image outdated.
79
+
80
+ ### Image prompts and More images for long videos
81
+
82
+ - **Image prompts** is the same control as on Play: which Library image prompts the project uses and how many images each makes (its Number). The line under it says what saving will do. Raising a Number adds images right after that prompt's last one, lowering it drops its last ones, unticking a prompt drops its images, and a newly ticked prompt adds new images at the end. Images left as they were are kept and reused.
83
+ - **More images for long videos** sets extra images by length: **Every N minutes** or **N per hour**. Saving plans the extra images and keeps every existing one.
84
+
85
+ ### Establishing image and provided files
86
+
87
+ The establishing image can be changed or made again in the Images section. When a stage uses your own file (narration or thumbnail set to Provide), **Replace provided audio** and **Replace provided thumbnail** take a new file.
88
+
89
+ ## Edit captions
90
+
91
+ 1. Open **Edit project → Captions**.
92
+ 2. Press **Edit existing caption cues**. This works once the current narration has finished and its subtitle timing is ready.
93
+ 3. Change a caption's words, or its start and end in seconds from the start of the narration.
94
+ 4. Press **Apply caption edits to draft**.
95
+ 5. Press **Save changes**.
96
+
97
+ **Apply caption edits to draft** checks every caption (text present, times in order, inside the narration) and puts your edits into the draft. Captions must not overlap and must end after they start; each problem is named, for example "Caption 4: enter caption text." Nothing is saved until **Save changes**, and the video is rendered again only when you remake outdated outputs. Caption edits cost nothing; only the subtitle files and the video are made again. The narration is not changed. **Discard caption edits** drops them.
98
+
99
+ If the narration changed since you edited the captions, the form says the edits belong to an earlier narration: check them against the current one, apply and save.
100
+
101
+ ## Prompts
102
+
103
+ **Edit project → Prompts** shows every prompt the project used (the article, Narration Preparation, YouTube description, Shorts, Shorts image style, thumbnail, establishing image, intro, outro and each image prompt).
104
+
105
+ | Control | What it does |
106
+ | --- | --- |
107
+ | **Use saved template for ...** | Copies a prompt from your Library into this project, replacing the raw prompt. Pick it in **Choose a saved template**. |
108
+ | **Raw prompt for ...** | This project's own copy of the prompt, with keywords still in double braces such as `{{Topic}}`. Edit it to change what the model is asked, for this project only; the Library prompt is untouched. |
109
+ | **Saved rendered prompt** | The prompt as it was sent, with keywords filled in. |
110
+ | **Use the Library version for ...** | Shown when the Library prompt changed since the project copied it. Copies the new wording in. |
111
+ | **Keywords** | The keyword values, each with everything it feeds. |
112
+
113
+ The project keeps its own copy of each prompt, so later Library edits reach it only when you pick it again or press **Use the Library version**. Saving fills the keywords in again, and whatever was made from the old wording turns outdated. Nothing is remade until you choose.
114
+
115
+ **Write the description again after review** marks the YouTube description to be written again, one paid text call, when you save and continue or start the rebuild review. **Keep the current description** takes the mark off. See [YouTube Description](YouTube-Description).
116
+
117
+ ## Narration options in Providers
118
+
119
+ | Control | What it does |
120
+ | --- | --- |
121
+ | **Also use pronunciations from my other projects** → **Update from other projects** | Copies your other projects' Pronunciation Glossary terms into this project again, picking up any added since the last copy. After you save, only the chunks whose words those terms change are spoken again, paid per character. |
122
+ | **Use narration aliases** → **Update from Library** | Copies Library → Aliases into this project again. A Library edit reaches the project only when you press this. After you save, only the chunks the changed aliases touch are spoken again. |
123
+ | **Describe tables and figures in the narration** | The text model writes a short spoken passage for each table, figure, equation and code block. Turning it on costs one text call per block, and after you save the chunks that contain a block are spoken again (the whole narration when Chunking is the whole article). **Leave code out** skips code blocks. |
124
+
125
+ **Show tables and figures on screen** (in **Inputs → Cuts and look**, when Describe tables and figures is on) shows each described block in the video while its description is spoken, as the article's picture or a card drawn on your computer at no cost. Turning it on or off renders the video again, and any Shorts that include a card; the narration is kept.
126
+
127
+ See [Narration Aliases and Glossary](Narration-Aliases-and-Glossary).
128
+
129
+ ## Pauses and volume
130
+
131
+ **Edit project → Inputs → Pauses and volume** holds four settings. All run on your computer with no API calls.
132
+
133
+ | Option | What it does | Default / range |
134
+ | --- | --- | --- |
135
+ | **Pause between sentences (seconds)** | The least quiet after each sentence. Adds silence where the pause is shorter; never shortens one or cuts a word. About 0.25 s is brisk, 0.35 to 0.45 natural, 0.5 to 0.8 an audiobook's pace, 0.8 and up sleep content. 0 keeps the voice's own. | 0.4; 0 to 2 in steps of 0.05 |
136
+ | **Pause between paragraphs (seconds)** | The least quiet at the end of a paragraph, when you want more than between sentences. At 0 paragraphs get the sentence pause. Try 0.8 to 1.2 for a slower read. A speaker's turn gap is set under Speakers instead. | 0; 0 to 2 |
137
+ | **Level the volume** | Brings every narration piece to one loudness before they are joined, then sets the video, shorts and audio files to a finished loudness. | On for new runs (Settings → General → **Level the volume for new runs**) |
138
+ | **Video volume** | How loud the video and shorts are, in dB from the recommended level (0 dB is -14 LUFS, what YouTube and Spotify play at). -6 dB is about 50%, +4 dB about 158%. Peaks stay under -1.5 dBTP. | 0 dB; -10 to +4 dB in 0.5 dB steps |
139
+ | **Audio files volume** | How loud the WAV, MP3 and M4B are, in dB from -18 LUFS (what audiobook shops such as ACX ask for). Peaks stay under -3 dBTP. | 0 dB; -10 to +4 dB |
140
+
141
+ You can type a volume in dB or as a percentage of the recommended level.
142
+
143
+ What changing them remakes:
144
+
145
+ - **Pauses**: the narration is joined again from the pieces it already has and timed again, which remakes what is timed from it: captions, the video and, when on, the YouTube description and the shorts' pick (those two are text calls). No speech is made again.
146
+ - **Level the volume on or off**: the levelled narration is joined again and the exports rendered again. No speech is made again, and word timing, description, shorts' pick and reviews are not redone.
147
+ - **A volume only**: the exports are mastered again, nothing else.
148
+
149
+ An uploaded narration is never levelled piece by piece; only the final master reaches it. Turn Level the volume off to keep the exports at your file's own level.
150
+
151
+ ## Choose what to remake
152
+
153
+ **Choose what to remake** opens the rebuild review for every outdated or failed output. Open it from the **Settings** view, **More project actions → Choose what to remake…**, or the command palette.
154
+
155
+ The review shows:
156
+
157
+ - Counts of work items: **to make**, **built on this computer**, **to confirm**, **kept as they are**, and **can't run**, plus the known cost range. CLI work reads "$0 on your plan", with what the same work would cost via API.
158
+ - **Changed inputs**: each changed input with **Before** and **After**.
159
+ - **Work items**: every item, why it is made or kept, and **View request text** for the exact request.
160
+ - **Cost by step**.
161
+
162
+ Press **Remake N outputs** to start, or **Keep things as they are** to close it with nothing spent. When the button is off, the line beside it says why, for example that an item can't run (its reasons are listed above) or that a box needs ticking:
163
+
164
+ | Tick box | When it appears |
165
+ | --- | --- |
166
+ | **Keep the provided content for ...** | An output uses a file or text you supplied, and something it depends on (such as the narration) has changed since. Tick to confirm it still fits. To use something else, close the review and replace the file in Edit project first. |
167
+ | **I understand that N cost estimates are unknown.** | Some steps use a model with no published price, so their cost is left out of the total. Tick to start anyway; the real cost is recorded under Cost once they run. |
168
+
169
+ The next action button and **Remake everything outdated** in the command palette start the remake at once when nothing needs ticking; otherwise they open this review.
170
+
171
+ ## History and saved revisions
172
+
173
+ Every save of Edit project is a revision: a snapshot of the settings and content. Continuing a run always uses the current one.
174
+
175
+ When the editor is closed, the **Settings** view shows **Saved revision** with each output's state: **Ready**, **Outdated; the retained version stays until it is remade**, **Provided content needs review**, or **Retained file missing**.
176
+
177
+ ### Look at or restore an earlier revision
178
+
179
+ 1. Open **History** in the section rail.
180
+ 2. Pick a revision from **Project history** (the current one is marked **Current**).
181
+ 3. At the top, one row of buttons: **Restore this revision** (the main action), **Download all images** (a zip of that revision's images) and one **Open folder** for the revision.
182
+ 4. Below, each output is listed with its state, **Download** and **Preview retained output**. Earlier results are marked **Earlier result**. Retained narration parts play in Slopify's own audio player, and text parts can be opened too.
183
+ 5. Press **Restore this revision** to make it current again.
184
+
185
+ Restoring adds a new revision with the old settings and outputs, so nothing after it is lost. A restored revision takes its channel back.
186
+
187
+ ## Save as template
188
+
189
+ **More project actions → Save as template…** saves this project's settings as a template for Play and Schedules. Keywords the title names are saved empty; other keyword values are kept. See [Templates](Templates).
190
+
191
+ ## Tips
192
+
193
+ - Several edits can go into one save. Make them all, save once, then review the remake.
194
+ - A rejected save lists each problem next to its field; fix those and save again.
195
+ - To redo a whole stage from scratch rather than one piece, use the section's own More menu on the project page (see [Project Page](Project-Page#re-run-a-whole-stage)).
196
+
197
+ ## Related pages
198
+
199
+ - [Project Page](Project-Page)
200
+ - [Video Editing](Video-Editing)
201
+ - [Recovery and Retries](Recovery-and-Retries)
202
+ - [Prompts](Prompts)
203
+ - [Narration Aliases and Glossary](Narration-Aliases-and-Glossary)
204
+ - [Costs and Run Cost](Costs-and-Run-Cost)
@@ -0,0 +1,134 @@
1
+ # FAQ
2
+
3
+ Short answers to the questions people ask most, with links to the pages that go deeper.
4
+
5
+ **Where to find it:** this page. For error messages, see [Troubleshooting](Troubleshooting).
6
+
7
+ ## Cost and accounts
8
+
9
+ ### Is Slopify free?
10
+
11
+ Yes. Slopify is free and open source. You pay the AI providers you choose (for text, narration and images) directly, on your own accounts. Rendering, captions, loudness, the Look, ambient sound, chapter cards and the style preview run on your computer and cost nothing.
12
+
13
+ ### How much does one video cost?
14
+
15
+ It depends on the providers, models, length and number of images. Play shows an estimate before you start, with **Cost by stage** under it. After a run, the project's **Cost** section shows what each stage and model actually cost, retries and remakes included. See [Costs and Run Cost](Costs-and-Run-Cost).
16
+
17
+ ### Can I use my Claude, ChatGPT (Codex) or Gemini subscription instead of API keys?
18
+
19
+ Yes, through the command-line tools you are already signed in to: Claude Code, Codex or Gemini CLI. Calls through them cost $0 on your plan; Slopify shows what the same work would cost through the API, for comparison only. When a plan's limit is used up, the run waits for the reset and carries on by itself. See [AI CLIs](AI-CLIs).
20
+
21
+ ### Can I make a video without any API key?
22
+
23
+ Yes. Sign in to Claude Code, Codex or Gemini CLI for the text (Codex also draws the images), and the narration can use your computer's own voice, the **System voice**, for free. That is what the first 60-second short uses when no voice key is saved. It sounds robotic, so add a voice key when you want a better one. See [Your First Short](Your-First-Short) and [Providers and Keys](Providers-and-Keys#the-system-voice).
24
+
25
+ ### How do I know a key works before I save it?
26
+
27
+ Paste it in Settings → **Providers** and press **Test**. Slopify checks the pasted key with the provider without storing it; press **Save** to keep it. See [Providers and Keys](Providers-and-Keys#test-a-key).
28
+
29
+ ### Do I need an account or a login for Slopify?
30
+
31
+ No. There is no Slopify account and no login. That is also why Slopify listens only on `127.0.0.1` by default: anyone who can reach its port controls the app and its keys. Keep it that way.
32
+
33
+ ## Privacy and your data
34
+
35
+ ### Where are my API keys stored?
36
+
37
+ On your computer, in Slopify's hidden data folder (`~/.slopify` by default; in Docker, the `slopify-data` volume). Each key is sent only to its own provider, and keys are never put in a backup or an export. Diagnostics files never contain them either. See [Providers and Keys](Providers-and-Keys).
38
+
39
+ ### Where are my projects?
40
+
41
+ In your files folder, `Documents/Slopify` for new installs, Docker included (Settings → **Backup & storage** → **Your files** shows it). An install from before 3.0 keeps its files where they were until you move them. See [Where Your Files Live](Where-Your-Files-Live).
42
+
43
+ ### Does Slopify send anything about me?
44
+
45
+ Slopify sends anonymous counts to show the live totals on slopify.stream: tokens per stage with provider and model, audio seconds, images, thumbnails, videos, PDFs, YouTube descriptions, shorts, projects created, that the machine installed Slopify, and when each happened. Each event carries a random ID and a random machine ID. It never sends your API keys, prompts, keyword values, titles, article or research text, files or file names, or your operating system, locale or hardware. A notice explains this the first time you open Slopify.
46
+
47
+ What you write is sent only to the AI providers you pick, because they make the article, narration and images.
48
+
49
+ ### Does it work offline?
50
+
51
+ Partly. The AI steps (article, research, narration, images, thumbnails, descriptions) call providers over the internet, or CLIs that do. Rendering the video, levelling the volume, captions, the style preview and the System voice run on your computer. Captions need a speech model of about 95 MB that is downloaded once, on first use. Patch notes ship with the app and open offline.
52
+
53
+ ## Making and editing videos
54
+
55
+ ### Can I change a video after it is made?
56
+
57
+ Yes. Open the project, press **Edit settings**, change what you want and press **Save changes**. Only the outputs the change affects turn outdated, and you remake them when you choose, after seeing the cost. See [Editing a Project](Editing-a-Project).
58
+
59
+ ### Can I fix one image or one sentence without redoing everything?
60
+
61
+ Yes. In **Edit project → Images** you can edit one image's prompt, replace it with your own file or regenerate it; in **Edit project → Narration** you can edit or respeak one chunk. Only that piece and the video are made again.
62
+
63
+ ### Where do I see what a run cost?
64
+
65
+ At the top of a finished project's page, one line sums it up ("This run cost …"), with **See cost by stage**. See [Costs and Run Cost](Costs-and-Run-Cost).
66
+
67
+ ### Can I go back to an earlier version?
68
+
69
+ Yes. **History** on the project page lists every saved revision with its files. **Restore this revision** makes an old one current again, without losing anything saved after it.
70
+
71
+ ### Can I use my own images, audio or video clips?
72
+
73
+ Yes. Stages can use a file you provide instead of generating one, and in Edit project you can replace any image, add your own picture or add a video clip that plays in an image's place. See [Editing a Project](Editing-a-Project#edit-images).
74
+
75
+ ### What happens if I close the browser while a video is being made?
76
+
77
+ The run keeps going; it runs in Slopify on your computer, not in the browser tab. Open the project again to see where it is. You can also get a notification when it finishes; see [Notifications](Notifications).
78
+
79
+ ### What happens if my computer restarts in the middle of a run?
80
+
81
+ Everything already made is kept. A step that was running shows as failed with "interrupted"; press **Try ... again**. Steps that were waiting for a rate limit or a CLI plan limit carry on by themselves. See [Recovery and Retries](Recovery-and-Retries).
82
+
83
+ ### Why is my project "Done with problems"?
84
+
85
+ The main output was made, but another step failed, for example the thumbnail. The failed step shows its error and a button to fix it. See [Recovery and Retries](Recovery-and-Retries#done-with-problems).
86
+
87
+ ### I deleted a project by mistake. Can I get it back?
88
+
89
+ Yes, within 30 days. Open Settings → **Trash** and press **Restore**. See [Trash](Trash).
90
+
91
+ ### Are captions free?
92
+
93
+ Yes. Captions are timed from your narration on your computer, with no paid API. See [Video Editing](Video-Editing#subtitles).
94
+
95
+ ### Can Slopify make videos in other languages?
96
+
97
+ Yes, with some differences in captions and cuts for languages without word timing. See [Other Languages](Other-Languages).
98
+
99
+ ## Publishing
100
+
101
+ ### Does Slopify upload to YouTube for me?
102
+
103
+ No. Slopify never uploads or publishes anything. **Prepare upload** lays out the file, title, description, thumbnail, playlist, audience, AI use and tags in the order YouTube Studio asks for them, each with a copy button. The optional Studio browser extension fills in the Studio form for you; you check it and press Publish yourself. **Mark uploaded** records that you did. See [Publishing to YouTube](Publishing-to-YouTube) and [Studio Extension](Studio-Extension).
104
+
105
+ ### Does it make Shorts too?
106
+
107
+ Yes. It can pick moments from the long video (60 to 120 seconds by default, anywhere from 15 to 180) and make vertical shorts with new images, word-by-word captions and their own title and hashtags. See [Shorts](Shorts).
108
+
109
+ ## Running Slopify
110
+
111
+ ### What do I need to run it?
112
+
113
+ Node 26 or newer, then `npx @gentbajko/slopify@latest`. It opens at `http://127.0.0.1:6969`. On Linux you can run it in Docker instead. You do not need to install ffmpeg; Slopify ships its own. See [Install](Install) and [Docker](Docker).
114
+
115
+ ### Can I use it from my phone or another computer?
116
+
117
+ Slopify is meant to be used on the computer it runs on. You can change the address with `--host`, but there is no login, so whoever reaches the port controls the app and its keys. Notifications can reach your phone. See [Notifications](Notifications).
118
+
119
+ ### How do I update?
120
+
121
+ Press the circular-arrows button at the foot of the sidebar, or run `npx @gentbajko/slopify@latest update` while Slopify is running. It waits for running work, keeps a copy to go back to, and puts the previous version back if the new one does not start. See [Updating and Patch Notes](Updating-and-Patch-Notes).
122
+
123
+ ### Something is broken. What should I send?
124
+
125
+ Open Settings and press **Download diagnostics**. The file lists your Slopify, system and Node versions and which providers are set up, never your keys, prompts or project content. Attach it to your bug report. See [Troubleshooting](Troubleshooting).
126
+
127
+ ## Related pages
128
+
129
+ - [Troubleshooting](Troubleshooting)
130
+ - [Recovery and Retries](Recovery-and-Retries)
131
+ - [Providers and Keys](Providers-and-Keys)
132
+ - [Costs and Run Cost](Costs-and-Run-Cost)
133
+ - [Where Your Files Live](Where-Your-Files-Live)
134
+ - [Publishing to YouTube](Publishing-to-YouTube)
@@ -0,0 +1,153 @@
1
+ # First Launch and Welcome
2
+
3
+ The first time you open Slopify it walks you through three steps: what your computer already has, a style, and your first 60-second short. The short is being made by the time you finish, and three finished sample projects are there to explore while you wait, without spending anything.
4
+
5
+ **Where to find it:** it opens by itself on a fresh install. Its address is `http://127.0.0.1:6969/welcome`.
6
+
7
+ ## What happens the first time
8
+
9
+ 1. **Anonymous usage stats.** A notice lists exactly what is counted and what never is. Press **Got it** to continue. It shows once per machine. See [Install](Install#anonymous-usage-stats).
10
+ 2. **Welcome to Slopify.** Home sends you to the first-run screen once. It has three steps, shown as tabs: **1 · What you have**, **2 · Pick a style** and **3 · Make your first short**. **Next** and **Back** at the bottom move between them, and you can click a tab directly.
11
+ 3. **Start at login.** The last step offers **Start when I log in** once, unless you already answered in the terminal.
12
+
13
+ The first-run screen stops appearing for good when you press **Skip** (it reads **Done** once your short is on its way), or when your first real project exists (anything except the samples), even if you delete that project later.
14
+
15
+ ## Step 1: What you have
16
+
17
+ ### Found on this computer
18
+
19
+ Slopify looks for Claude Code, Codex and Gemini CLI and shows one row for each:
20
+
21
+ | Row says | Meaning |
22
+ | --- | --- |
23
+ | **Ready · 1.2.3 · writes** | Installed, a supported version and signed in, as far as Slopify can tell. It can write the text. |
24
+ | **Ready · … · writes and draws** | Codex: it writes the text and draws the images. |
25
+ | **Installed, not usable yet** or a reason | Found, but something is missing, such as a sign-in. The reason is shown. |
26
+ | **Not found** | Not installed, or not on the `PATH` Slopify sees. |
27
+
28
+ When at least one is ready, the step says which parts need no API key, for example "You can make a video now: no API keys are needed for the text, the images or the narration." When none is ready, it says "Nothing on this computer can write the script yet." with **Open Settings → Providers**: install and sign in to a CLI, or add an OpenRouter key.
29
+
30
+ ### Narration voice
31
+
32
+ The second part says who will read the script aloud:
33
+
34
+ | It says | Meaning |
35
+ | --- | --- |
36
+ | "Narration uses your *provider* voice key." | A voice key (OpenAI, ElevenLabs, Cartesia or Inworld) is saved, so that provider narrates. |
37
+ | "Narration uses your computer's built-in voice (*engine*); add an ElevenLabs or OpenAI key later for a better one." | No voice key, so the computer's own speech narrates, for free. See [the system voice](Providers-and-Keys#the-system-voice). |
38
+ | "No voice can narrate the short yet." | Neither a key nor a speech program was found. Press **Add a voice key**, or install a speech program (on Linux, `espeak-ng`) and press **Check again**. |
39
+
40
+ **Add a voice key** opens Settings → **Providers**. See [AI CLIs](AI-CLIs) and [Providers and Keys](Providers-and-Keys).
41
+
42
+ ## Step 2: Pick a style
43
+
44
+ Each row is a style for the short. **General** is a neutral explainer style; the others are the starter packs (Sleep lore, True crime, History, Science explainers). Press **Use this style** on a row; it then reads **Picked**.
45
+
46
+ Making the short with a pack adds that pack's script and scene prompts to your Library and its suggested voice to Settings → **Voices**. **Add to library** on a pack's row also adds its Play template, for later long videos; it then reads **In your library**. See [Starter packs](#starter-packs).
47
+
48
+ ## Step 3: Make a 60-second short
49
+
50
+ A topic in, a captioned vertical short out, usually in about five minutes with the command-line tools. It has its own page: [Your First Short](Your-First-Short).
51
+
52
+ The step repeats the style and the voice line from step 1. If no voice can narrate yet, it shows the same **Add a voice key** and **Check again** buttons.
53
+
54
+ | Field | What it does | Limits |
55
+ | --- | --- | --- |
56
+ | **Topic** | What the short is about, in a few words or a question. A specific topic gives a sharper short than a broad one. | Up to 200 characters |
57
+
58
+ Press **Make a 60-second short**. The status line says **Starting your short…**, then the step says "Your short is being made." with **Watch it being made**, which opens the project's page and its live view. While it runs, the samples and the start-at-login offer are right below.
59
+
60
+ ## Explore the samples
61
+
62
+ Three finished projects come with Slopify, marked **Sample** in Projects. Step 3 of the first-run screen lists them under **While you wait: the samples**. They are read-only, so nothing you do on them reaches a paid provider.
63
+
64
+ | Sample | What it shows | Button |
65
+ | --- | --- | --- |
66
+ | **The Library of Alexandria** | A 3-minute narrated 16:9 video with burned-in captions, chapter cards and a warm Look, plus its two shorts, the article, the PDF, a YouTube description with chapters, four images and a thumbnail. | **Explore the sample** |
67
+ | **The Wind in the Willows** | An audiobook of an abridged excerpt: a narrator and two character voices, captions tagged with who speaks, and an MP3 and M4B with chapters. | **See an audiobook** |
68
+ | **The Antikythera Mechanism** | A two-host podcast with the speaker panel, name tags and portraits, and its MP3 and M4B. | **Hear a podcast** |
69
+
70
+ If a sample was deleted, its row shows **Restore samples in Settings** instead.
71
+
72
+ ### Make your own copy of a sample
73
+
74
+ A sample's project page says "This is the sample project, finished and free to explore." with the button **Make my own copy**.
75
+
76
+ 1. Open a sample.
77
+ 2. Press **Make my own copy** (also in the command palette, `Ctrl+K` → **Make my own copy**).
78
+ 3. Slopify copies every file and setting of that sample into a new, normal project. Nothing needs to be made again: the copy is finished too.
79
+ 4. Edit the copy like any project. Changes to it use your providers and cost what they cost. See [Editing a Project](Editing-a-Project).
80
+
81
+ ### Restore the samples
82
+
83
+ 1. Open Settings → **Backup & storage** and scroll to **Sample projects**.
84
+ 2. Each sample shows whether it is **in your projects** or **not in your projects**, with **Open**.
85
+ 3. Press **Restore samples**. It puts all three back as they shipped: it adds back any that were deleted and replaces the others with the originals. Your own copies are not touched.
86
+
87
+ ## Starter packs
88
+
89
+ A starter pack sets you up for one kind of channel. Each one adds, in one go:
90
+
91
+ - prompts to your Library: an article prompt, a 60-second script, an image (scene) prompt, a thumbnail prompt, a description prompt and a shorts prompt, each asking only for `{{topic}}`;
92
+ - a suggested OpenAI voice, saved under Settings → **Voices**;
93
+ - a Play template that uses them, named `<pack> starter`, with its captions, motion and Look.
94
+
95
+ Then you pick the template on Play, type a topic and start. See [Templates](Templates) and [Play Overview](Play-Overview).
96
+
97
+ | Pack | What it is for | Suggested voice |
98
+ | --- | --- | --- |
99
+ | **Sleep lore** | Slow, gentle myths and legends told to fall asleep to. | OpenAI `sage` |
100
+ | **True crime** | Measured, factual retellings of real cases and their investigations. | OpenAI `onyx` |
101
+ | **History** | Narrative history of people, places and events, told like a documentary. | OpenAI `fable` |
102
+ | **Science explainers** | Clear, friendly explanations of how the world works, one idea at a time. | OpenAI `nova` |
103
+
104
+ On the first-run screen, **Add to library** on a pack's row adds all of this; it then reads **In your library**. Making a short with a pack adds its prompts and voice only, not the template.
105
+
106
+ - Adding a pack twice changes nothing.
107
+ - It never replaces a prompt or template of yours with the same name: the pack's copy comes in as `<name> (2)`.
108
+ - An item the pack added before and you edited is kept as you left it. One you deleted comes back.
109
+
110
+ You can add packs later too, from Library → **Templates** → **Add pack**.
111
+
112
+ ## Start when I log in
113
+
114
+ Step 3 of the first-run screen asks once: **Start when I log in** or **No thanks**. Either answer, here, in Settings → **General** or in the terminal, ends the question. See [Start at Login](Start-at-Login).
115
+
116
+ ## Set up a long video instead
117
+
118
+ At the bottom of every step, **Set up a long video instead** takes you to Play, where you choose prompts, keywords and outputs yourself. See [Play Overview](Play-Overview).
119
+
120
+ ## The interactive tutorial
121
+
122
+ The question-mark button at the foot of the sidebar (**Start interactive tutorial**) walks you through a first project in 25 steps ("3 of 25 · First project"):
123
+
124
+ 1. **Settings:** connect a text, a voice and an image provider, and add a narration voice.
125
+ 2. **Library:** write and save an article prompt with keywords, then an image prompt.
126
+ 3. **Play:** name the project, choose the article, keywords, narration, images, video and subtitles, then review and start the run.
127
+ 4. **The project:** follow and control the run, download the results, see what the run cost and prepare the YouTube upload.
128
+ 5. **The rest of the app:** check Home each day, set up a channel, and plan uploads on the calendar.
129
+
130
+ Each step highlights the real control you will use and opens its screen for you. Your place is saved, so it survives a page reload. On the review-and-start step, **Skip generating** leaves the run unstarted and goes on to Home, Channels and the Calendar instead of ending the tutorial. Other steps have **Skip this step** (or **Skip without saving**).
131
+
132
+ When Projects has no projects at all, it also shows **Make your first video** with **Start tutorial**.
133
+
134
+ ## The provider welcome in Settings
135
+
136
+ Settings → **Providers** shows a short welcome on a fresh install that names the command-line tools it found and says a video can be made without an API key. Press **Got it** to hide it.
137
+
138
+ ## Tips
139
+
140
+ - Try a sample before you add any keys: every screen works on it, and nothing costs anything.
141
+ - You can come back to the first-run screen at `/welcome` until you skip it or make a real project.
142
+ - After an update to a new major version, a **What's new** tour opens instead. See [Updating and Patch Notes](Updating-and-Patch-Notes).
143
+
144
+ ## Related pages
145
+
146
+ - [Your First Short](Your-First-Short)
147
+ - [Home and Projects](Home-and-Projects)
148
+ - [Providers and Keys](Providers-and-Keys)
149
+ - [AI CLIs](AI-CLIs)
150
+ - [Templates](Templates)
151
+ - [Prompts](Prompts)
152
+ - [Multiple Voices](Multiple-Voices)
153
+ - [Start at Login](Start-at-Login)