@gentbajko/slopify 3.25.9 → 4.1.0

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 (718) hide show
  1. package/dist/adapters/account-limits.js +30 -0
  2. package/dist/adapters/alignment/audio.js +1 -1
  3. package/dist/adapters/alignment/cache.js +4 -6
  4. package/dist/adapters/alignment/ctc.js +1 -2
  5. package/dist/adapters/alignment/lock.js +4 -3
  6. package/dist/adapters/alignment/multilingual.js +2 -4
  7. package/dist/adapters/alignment/prefetch.js +2 -1
  8. package/dist/adapters/alignment/runner.js +1 -1
  9. package/dist/adapters/alignment/worker.js +3 -2
  10. package/dist/adapters/explain.js +10 -12
  11. package/dist/adapters/ffmpeg.js +19 -1
  12. package/dist/adapters/host-cli/index.js +21 -4
  13. package/dist/adapters/host-cli/transport.js +2 -1
  14. package/dist/adapters/http-failure.js +53 -0
  15. package/dist/adapters/image/bytes.js +2 -1
  16. package/dist/adapters/image/codex.js +42 -9
  17. package/dist/adapters/image/fal.js +21 -53
  18. package/dist/adapters/image/google.js +33 -56
  19. package/dist/adapters/image/models.js +2 -2
  20. package/dist/adapters/image/openai.js +22 -48
  21. package/dist/adapters/image/reference.js +36 -0
  22. package/dist/adapters/image/replicate.js +21 -49
  23. package/dist/adapters/image/video.js +2 -1
  24. package/dist/adapters/interest/search-interest.js +113 -0
  25. package/dist/adapters/key-probes.js +54 -3
  26. package/dist/adapters/llm/antigravity-models.js +1 -1
  27. package/dist/adapters/llm/antigravity.js +11 -6
  28. package/dist/adapters/llm/assistant-cli.js +388 -0
  29. package/dist/adapters/llm/child-session.js +83 -0
  30. package/dist/adapters/llm/claude-code-models.js +52 -99
  31. package/dist/adapters/llm/claude-code.js +16 -4
  32. package/dist/adapters/llm/codex-limits.js +27 -68
  33. package/dist/adapters/llm/codex-models.js +1 -1
  34. package/dist/adapters/llm/codex-server-models.js +61 -109
  35. package/dist/adapters/llm/codex.js +12 -1
  36. package/dist/adapters/llm/document-workspace.js +3 -2
  37. package/dist/adapters/llm/image-workspace.js +3 -2
  38. package/dist/adapters/llm/openrouter.js +12 -48
  39. package/dist/adapters/llm/run-cli.js +9 -24
  40. package/dist/adapters/llm/sse-lines.js +5 -1
  41. package/dist/adapters/model-access.js +37 -0
  42. package/dist/adapters/tts/cartesia.js +15 -46
  43. package/dist/adapters/tts/elevenlabs.js +20 -52
  44. package/dist/adapters/tts/gemini.js +21 -41
  45. package/dist/adapters/tts/inworld-async.js +6 -2
  46. package/dist/adapters/tts/inworld.js +6 -2
  47. package/dist/adapters/tts/openai.js +20 -50
  48. package/dist/adapters/tts/system.js +2 -1
  49. package/dist/assets/models-lifecycle.yaml +6 -0
  50. package/dist/assistant-wiring.js +60 -0
  51. package/dist/autopilot-timers.js +59 -0
  52. package/dist/catalog/lifecycle.js +52 -0
  53. package/dist/catalog/propose.js +204 -0
  54. package/dist/catalog/registry.js +23 -14
  55. package/dist/catalog/schema.js +4 -1
  56. package/dist/catalog/store.js +39 -0
  57. package/dist/catalog/validate.js +5 -2
  58. package/dist/edge/autostart/native.js +3 -5
  59. package/dist/edge/autostart/prompt.js +2 -1
  60. package/dist/edge/autostart/service.js +3 -4
  61. package/dist/edge/cli-args.js +3 -4
  62. package/dist/edge/cli.js +2 -1
  63. package/dist/edge/docker-install/apply.js +11 -11
  64. package/dist/edge/docker-install/run.js +2 -1
  65. package/dist/edge/docker-install/state.js +4 -3
  66. package/dist/edge/docker-install/tree.js +2 -4
  67. package/dist/edge/docker-install/volume.js +3 -2
  68. package/dist/edge/docker.js +5 -4
  69. package/dist/edge/events/hub.js +5 -5
  70. package/dist/edge/http/actions.js +11 -32
  71. package/dist/edge/http/actor.js +5 -3
  72. package/dist/edge/http/app.js +86 -11
  73. package/dist/edge/http/assistant.js +129 -0
  74. package/dist/edge/http/audio-preview.js +4 -11
  75. package/dist/edge/http/auditions.js +1 -1
  76. package/dist/edge/http/autostart.js +5 -5
  77. package/dist/edge/http/backups.js +2 -4
  78. package/dist/edge/http/channel-memory.js +9 -22
  79. package/dist/edge/http/channels.js +14 -27
  80. package/dist/edge/http/checkpoints.js +39 -21
  81. package/dist/edge/http/design-templates.js +167 -0
  82. package/dist/edge/http/designs.js +178 -0
  83. package/dist/edge/http/diagnostics.js +5 -1
  84. package/dist/edge/http/document-themes.js +5 -14
  85. package/dist/edge/http/draft-files.js +1 -3
  86. package/dist/edge/http/draft-problem.js +5 -10
  87. package/dist/edge/http/drafts.js +3 -3
  88. package/dist/edge/http/entries.js +6 -9
  89. package/dist/edge/http/extension-auth.js +27 -0
  90. package/dist/edge/http/external-reviews.js +12 -11
  91. package/dist/edge/http/files.js +5 -11
  92. package/dist/edge/http/folder-location.js +1 -4
  93. package/dist/edge/http/fonts.js +0 -7
  94. package/dist/edge/http/home.js +47 -14
  95. package/dist/edge/http/host-cli.js +18 -8
  96. package/dist/edge/http/ids.js +8 -0
  97. package/dist/edge/http/keywords.js +35 -0
  98. package/dist/edge/http/model-checks.js +132 -0
  99. package/dist/edge/http/narration-peaks.js +5 -13
  100. package/dist/edge/http/onboarding.js +30 -26
  101. package/dist/edge/http/open-folder.js +5 -10
  102. package/dist/edge/http/outputs.js +7 -14
  103. package/dist/edge/http/patch-notes.js +6 -12
  104. package/dist/edge/http/planning.js +3 -7
  105. package/dist/edge/http/problem.js +2 -4
  106. package/dist/edge/http/project-create.js +2 -1
  107. package/dist/edge/http/project-templates.js +31 -19
  108. package/dist/edge/http/projects.js +24 -16
  109. package/dist/edge/http/prompts.js +9 -16
  110. package/dist/edge/http/pronunciations.js +1 -2
  111. package/dist/edge/http/providers.js +48 -34
  112. package/dist/edge/http/refusal.js +29 -0
  113. package/dist/edge/http/remote-access.js +40 -0
  114. package/dist/edge/http/remote-guard.js +71 -0
  115. package/dist/edge/http/request-guard.js +91 -0
  116. package/dist/edge/http/reviews.js +12 -25
  117. package/dist/edge/http/revision-files.js +6 -11
  118. package/dist/edge/http/revisions.js +14 -19
  119. package/dist/edge/http/run-cost.js +1 -2
  120. package/dist/edge/http/same-page.js +80 -0
  121. package/dist/edge/http/schedules.js +69 -40
  122. package/dist/edge/http/settings.js +27 -14
  123. package/dist/edge/http/social.js +283 -0
  124. package/dist/edge/http/staging.js +3 -5
  125. package/dist/edge/http/storage-files.js +5 -7
  126. package/dist/edge/http/storage.js +33 -25
  127. package/dist/edge/http/studio.js +94 -69
  128. package/dist/edge/http/style-preview.js +3 -6
  129. package/dist/edge/http/subtitles.js +3 -17
  130. package/dist/edge/http/template-studio.js +436 -0
  131. package/dist/edge/http/trash.js +11 -12
  132. package/dist/edge/http/tutorial.js +1 -2
  133. package/dist/edge/http/tutorials.js +5 -11
  134. package/dist/edge/http/update.js +7 -13
  135. package/dist/edge/http/waveform.js +3 -6
  136. package/dist/edge/http/youtube-edits.js +3 -4
  137. package/dist/edge/mcp/assistant.js +279 -0
  138. package/dist/edge/mcp/attribution.js +8 -2
  139. package/dist/edge/mcp/call-route.js +11 -2
  140. package/dist/edge/mcp/excluded-routes.js +29 -3
  141. package/dist/edge/mcp/http.js +11 -2
  142. package/dist/edge/mcp/instructions.js +6 -4
  143. package/dist/edge/mcp/library-tools.js +9 -5
  144. package/dist/edge/mcp/remake-tools.js +7 -4
  145. package/dist/edge/mcp/route-tool.js +35 -15
  146. package/dist/edge/mcp/server.js +13 -8
  147. package/dist/edge/mcp/tools-channels.js +11 -9
  148. package/dist/edge/mcp/tools-designs.js +165 -0
  149. package/dist/edge/mcp/tools-library.js +19 -7
  150. package/dist/edge/mcp/tools-planning.js +40 -21
  151. package/dist/edge/mcp/tools-projects.js +38 -11
  152. package/dist/edge/mcp/tools-publishing.js +9 -9
  153. package/dist/edge/mcp/tools-runs.js +23 -10
  154. package/dist/edge/mcp/tools-schedules.js +32 -8
  155. package/dist/edge/mcp/tools-setup.js +75 -11
  156. package/dist/edge/mcp/tools-social.js +47 -0
  157. package/dist/edge/mcp/tools-storage.js +11 -3
  158. package/dist/edge/mcp/tools-template-studio.js +166 -0
  159. package/dist/edge/mcp/tools.js +6 -0
  160. package/dist/edge/remote-access/cli.js +71 -0
  161. package/dist/edge/remote-access/model.js +32 -0
  162. package/dist/edge/remote-access/rules.js +207 -0
  163. package/dist/edge/remote-access/service.js +203 -0
  164. package/dist/edge/remote-access/store.js +44 -0
  165. package/dist/edge/remote-access/views.js +43 -0
  166. package/dist/extension/slopify-studio-chrome.zip +0 -0
  167. package/dist/extension/slopify-studio-firefox.zip +0 -0
  168. package/dist/host-cli/install.js +2 -2
  169. package/dist/host-cli/open-folder.js +2 -2
  170. package/dist/host-cli/paths.js +2 -4
  171. package/dist/host-cli/server.js +4 -4
  172. package/dist/host-cli/service.js +3 -3
  173. package/dist/host-cli/status.js +7 -7
  174. package/dist/kernel/db/migrations/0063-model-checks.sql +20 -0
  175. package/dist/kernel/db/migrations/0064-template-studio.sql +46 -0
  176. package/dist/kernel/db/migrations/0065-promise-and-assistant-reviews.sql +58 -0
  177. package/dist/kernel/db/migrations/0066-assistant.sql +44 -0
  178. package/dist/kernel/db/migrations/0067-autopilot.sql +6 -0
  179. package/dist/kernel/db/migrations/0068-topic-scores.sql +17 -0
  180. package/dist/kernel/db/migrations/0070-designs.sql +53 -0
  181. package/dist/kernel/db/migrations/0071-design-usage.sql +33 -0
  182. package/dist/kernel/db/migrations/0072-design-templates.sql +33 -0
  183. package/dist/kernel/db/migrations/0073-schedule-design-kind.sql +5 -0
  184. package/dist/kernel/db/migrations/0074-template-bakeoffs.sql +44 -0
  185. package/dist/kernel/db/migrations/0075-social-posts.sql +25 -0
  186. package/dist/kernel/db/migrations/0076-channel-social.sql +5 -0
  187. package/dist/kernel/db/migrations/0077-post-prompts.sql +17 -0
  188. package/dist/kernel/db/migrations/0078-uploaded-from-links.sql +7 -0
  189. package/dist/kernel/db/tx.js +2 -4
  190. package/dist/kernel/errors.js +27 -1
  191. package/dist/kernel/json-answer.js +15 -0
  192. package/dist/kernel/lock.js +4 -9
  193. package/dist/kernel/paths.js +8 -0
  194. package/dist/kernel/pipeline.js +12 -0
  195. package/dist/kernel/ports/assistant-cli.js +4 -0
  196. package/dist/kernel/ports/host-cli.js +3 -0
  197. package/dist/kernel/ports/interest.js +4 -0
  198. package/dist/kernel/ports/languages.js +0 -3
  199. package/dist/kernel/ports/model.js +2 -0
  200. package/dist/kernel/ports/settings-places.js +31 -0
  201. package/dist/kernel/ports/system-speech.js +31 -3
  202. package/dist/kernel/runner/attempt.js +14 -4
  203. package/dist/kernel/runner/audition.js +3 -1
  204. package/dist/kernel/runner/checkpoint-authority.js +2 -1
  205. package/dist/kernel/runner/index.js +8 -10
  206. package/dist/kernel/runner/model-access.js +40 -0
  207. package/dist/kernel/runner/model-check.js +153 -0
  208. package/dist/kernel/runner/providers.js +18 -12
  209. package/dist/kernel/runner/standalone.js +11 -7
  210. package/dist/main.js +338 -21
  211. package/dist/model-catalog.js +20 -0
  212. package/dist/model-checks.js +166 -0
  213. package/dist/patch-notes/4.0.0.md +51 -0
  214. package/dist/patch-notes/4.1.0.md +42 -0
  215. package/dist/patch-notes/index.json +12 -0
  216. package/dist/slices/admission/heads.js +2 -1
  217. package/dist/slices/admission/listing-facts.js +95 -0
  218. package/dist/slices/admission/repo.js +11 -7
  219. package/dist/slices/admission/rules.js +50 -15
  220. package/dist/slices/admission/schema.js +8 -0
  221. package/dist/slices/admission/stage-writes.js +0 -3
  222. package/dist/slices/admission/start.js +48 -31
  223. package/dist/slices/admission/state-words.js +34 -5
  224. package/dist/slices/admission/substitute.js +7 -4
  225. package/dist/slices/agents/attention-posts.js +31 -0
  226. package/dist/slices/agents/attention-templates.js +33 -0
  227. package/dist/slices/agents/attention.js +10 -1
  228. package/dist/slices/agents/connection.js +2 -6
  229. package/dist/slices/agents/model.js +6 -3
  230. package/dist/slices/agents/repo.js +15 -7
  231. package/dist/slices/article/continuation.js +0 -63
  232. package/dist/slices/article/plain.js +3 -2
  233. package/dist/slices/article/segments.js +2 -62
  234. package/dist/slices/assistant/access.js +1 -0
  235. package/dist/slices/assistant/asks.js +80 -0
  236. package/dist/slices/assistant/cost.js +54 -0
  237. package/dist/slices/assistant/gate.js +222 -0
  238. package/dist/slices/assistant/model.js +86 -0
  239. package/dist/slices/assistant/names.js +23 -0
  240. package/dist/slices/assistant/prompt.js +74 -0
  241. package/dist/slices/assistant/repo.js +74 -0
  242. package/dist/slices/assistant/tokens.js +18 -0
  243. package/dist/slices/assistant/turn.js +344 -0
  244. package/dist/slices/autopilot/buffer.js +76 -0
  245. package/dist/slices/autopilot/model.js +14 -0
  246. package/dist/slices/autopilot/notify.js +27 -0
  247. package/dist/slices/autopilot/repo.js +34 -0
  248. package/dist/slices/autopilot/signals.js +194 -0
  249. package/dist/slices/autopilot/warnings.js +85 -0
  250. package/dist/slices/autopilot/weekly.js +100 -0
  251. package/dist/slices/backups/files.js +2 -6
  252. package/dist/slices/backups/repo.js +3 -15
  253. package/dist/slices/backups/service.js +8 -7
  254. package/dist/slices/channels/cast-images.js +3 -2
  255. package/dist/slices/channels/model.js +0 -1
  256. package/dist/slices/channels/rebrand.js +0 -3
  257. package/dist/slices/channels/repo.js +4 -0
  258. package/dist/slices/channels/schema.js +7 -1
  259. package/dist/slices/channels/service.js +10 -0
  260. package/dist/slices/channels/videos.js +3 -15
  261. package/dist/slices/checkpoints/index.js +0 -1
  262. package/dist/slices/control/providers.js +2 -28
  263. package/dist/slices/designs/artwork.js +66 -0
  264. package/dist/slices/designs/budget.js +23 -0
  265. package/dist/slices/designs/calls.js +124 -0
  266. package/dist/slices/designs/check-context.js +38 -0
  267. package/dist/slices/designs/check-text.js +43 -0
  268. package/dist/slices/designs/fields.js +88 -0
  269. package/dist/slices/designs/frames.js +34 -0
  270. package/dist/slices/designs/gate.js +130 -0
  271. package/dist/slices/designs/layout.js +293 -0
  272. package/dist/slices/designs/model.js +35 -0
  273. package/dist/slices/designs/pdf-job.js +23 -0
  274. package/dist/slices/designs/pdf-pages.js +30 -0
  275. package/dist/slices/designs/pdf-runner.js +68 -0
  276. package/dist/slices/designs/pdf-worker.js +24 -0
  277. package/dist/slices/designs/picture-size.js +79 -0
  278. package/dist/slices/designs/pictures.js +55 -0
  279. package/dist/slices/designs/quote.js +24 -0
  280. package/dist/slices/designs/render-args.js +36 -0
  281. package/dist/slices/designs/render-input.js +59 -0
  282. package/dist/slices/designs/render.js +215 -0
  283. package/dist/slices/designs/repo.js +101 -0
  284. package/dist/slices/designs/requests.js +80 -0
  285. package/dist/slices/designs/runner.js +239 -0
  286. package/dist/slices/designs/sample-repo.js +91 -0
  287. package/dist/slices/designs/sample.js +223 -0
  288. package/dist/slices/designs/schema.js +87 -0
  289. package/dist/slices/designs/sections.js +44 -0
  290. package/dist/slices/designs/service.js +233 -0
  291. package/dist/slices/designs/steps-repo.js +102 -0
  292. package/dist/slices/designs/studio-kind.js +39 -0
  293. package/dist/slices/designs/template-checks.js +44 -0
  294. package/dist/slices/designs/template-make.js +118 -0
  295. package/dist/slices/designs/templates.js +218 -0
  296. package/dist/slices/document/fonts.js +2 -1
  297. package/dist/slices/document/model.js +7 -4
  298. package/dist/slices/document/render.js +2 -1
  299. package/dist/slices/document/theme-schema.js +1 -1
  300. package/dist/slices/document/theme.js +49 -3
  301. package/dist/slices/episodes/summarize.js +6 -2
  302. package/dist/slices/estimate/index.js +72 -28
  303. package/dist/slices/estimate/requests.js +4 -4
  304. package/dist/slices/fixes/rules.js +3 -1
  305. package/dist/slices/fonts/catalog.js +5 -3
  306. package/dist/slices/fonts/coverage.js +2 -1
  307. package/dist/slices/fonts/discovery.js +3 -2
  308. package/dist/slices/fonts/files.js +2 -6
  309. package/dist/slices/fonts/index.js +0 -1
  310. package/dist/slices/fonts/sfnt.js +45 -10
  311. package/dist/slices/images/appearance.js +8 -16
  312. package/dist/slices/images/scenes.js +102 -28
  313. package/dist/slices/keywords/digest.js +85 -0
  314. package/dist/slices/keywords/facts.js +92 -0
  315. package/dist/slices/keywords/fill.js +80 -0
  316. package/dist/slices/keywords/model.js +75 -0
  317. package/dist/slices/keywords/rules.js +187 -0
  318. package/dist/slices/keywords/schema.js +28 -0
  319. package/dist/slices/keywords/specs.js +260 -0
  320. package/dist/slices/keywords/values.js +74 -0
  321. package/dist/slices/library/lint.js +29 -12
  322. package/dist/slices/library/model.js +2 -0
  323. package/dist/slices/library/photorealistic.js +4 -12
  324. package/dist/slices/library/rename.js +9 -7
  325. package/dist/slices/library/save.js +14 -10
  326. package/dist/slices/library/slots.js +37 -11
  327. package/dist/slices/library/transfer.js +5 -4
  328. package/dist/slices/library/used-by.js +25 -10
  329. package/dist/slices/loudness/loudnorm.js +53 -12
  330. package/dist/slices/loudness/model.js +3 -2
  331. package/dist/slices/loudness/sentence-level.js +2 -1
  332. package/dist/slices/model-checks/cost.js +61 -0
  333. package/dist/slices/model-checks/listing.js +124 -0
  334. package/dist/slices/model-checks/model.js +20 -0
  335. package/dist/slices/model-checks/record.js +32 -0
  336. package/dist/slices/model-checks/repo.js +120 -0
  337. package/dist/slices/model-checks/rules.js +125 -0
  338. package/dist/slices/model-checks/run.js +143 -0
  339. package/dist/slices/model-checks/service.js +198 -0
  340. package/dist/slices/model-upkeep/model.js +1 -1
  341. package/dist/slices/model-upkeep/switch.js +72 -27
  342. package/dist/slices/model-upkeep/usage.js +39 -13
  343. package/dist/slices/narration/breaths.js +3 -1
  344. package/dist/slices/narration/clean-pieces.js +3 -1
  345. package/dist/slices/narration/concat.js +2 -1
  346. package/dist/slices/narration/pauses-model.js +3 -2
  347. package/dist/slices/narration/peaks.js +3 -4
  348. package/dist/slices/narration/pronunciation-chunks.js +4 -3
  349. package/dist/slices/narration/pronunciation.js +6 -4
  350. package/dist/slices/narration/steering.js +4 -3
  351. package/dist/slices/notifications/notifier.js +4 -3
  352. package/dist/slices/notifications/rules.js +5 -2
  353. package/dist/slices/notifications/settings.js +4 -12
  354. package/dist/slices/notifications/subject.js +4 -3
  355. package/dist/slices/onboarding/copy.js +21 -3
  356. package/dist/slices/onboarding/first-run.js +16 -40
  357. package/dist/slices/onboarding/full-video.js +3 -2
  358. package/dist/slices/onboarding/install.js +6 -4
  359. package/dist/slices/onboarding/model.js +26 -37
  360. package/dist/slices/onboarding/packs.js +22 -22
  361. package/dist/slices/onboarding/preferred-model.js +14 -0
  362. package/dist/slices/onboarding/quick-short.js +105 -65
  363. package/dist/slices/onboarding/sample.js +4 -2
  364. package/dist/slices/onboarding/state.js +9 -11
  365. package/dist/slices/onboarding/template.js +8 -6
  366. package/dist/slices/outputs/add.js +3 -2
  367. package/dist/slices/outputs/service.js +2 -2
  368. package/dist/slices/patch-notes/library.js +4 -3
  369. package/dist/slices/play-drafts/convert.js +4 -0
  370. package/dist/slices/play-drafts/readiness.js +3 -3
  371. package/dist/slices/play-drafts/review-inputs.js +9 -3
  372. package/dist/slices/play-drafts/review.js +5 -4
  373. package/dist/slices/play-drafts/schema.js +4 -0
  374. package/dist/slices/play-drafts/service.js +17 -7
  375. package/dist/slices/project-templates/from-project.js +9 -2
  376. package/dist/slices/project-templates/next-chapter.js +2 -1
  377. package/dist/slices/project-templates/provider-defaults.js +22 -0
  378. package/dist/slices/project-templates/repo.js +6 -1
  379. package/dist/slices/project-templates/setup-sections.js +26 -0
  380. package/dist/slices/project-templates/setup.js +14 -1
  381. package/dist/slices/project-templates/stand-ins.js +22 -0
  382. package/dist/slices/rebuild/activity.js +2 -0
  383. package/dist/slices/rebuild/admission-repo.js +3 -2
  384. package/dist/slices/rebuild/narration-history.js +4 -5
  385. package/dist/slices/rebuild/narration-retry.js +2 -1
  386. package/dist/slices/rebuild/preview-details.js +32 -14
  387. package/dist/slices/rebuild/preview-plan.js +3 -8
  388. package/dist/slices/rebuild/recipe-build.js +8 -3
  389. package/dist/slices/rebuild/recipe-describe.js +3 -3
  390. package/dist/slices/rebuild/recipe-digest.js +58 -0
  391. package/dist/slices/rebuild/recipe-input-schema.js +10 -0
  392. package/dist/slices/rebuild/recipe-keywords.js +71 -0
  393. package/dist/slices/rebuild/recipe-legacy.js +5 -1
  394. package/dist/slices/rebuild/recipe-model.js +4 -0
  395. package/dist/slices/rebuild/recipe-narration-text.js +2 -1
  396. package/dist/slices/rebuild/recipe-preparation.js +4 -4
  397. package/dist/slices/rebuild/recipe-reference.js +8 -4
  398. package/dist/slices/rebuild/recipe-reviews.js +27 -7
  399. package/dist/slices/rebuild/recipe-save.js +8 -5
  400. package/dist/slices/rebuild/recipe-scenes.js +40 -11
  401. package/dist/slices/rebuild/recipe-shorts.js +8 -8
  402. package/dist/slices/rebuild/recipe-social.js +46 -0
  403. package/dist/slices/rebuild/recipe-text.js +64 -20
  404. package/dist/slices/rebuild/recipe-validation.js +102 -31
  405. package/dist/slices/rebuild/recipe-visual.js +55 -16
  406. package/dist/slices/rebuild/recipe-voices.js +3 -2
  407. package/dist/slices/rebuild/recipe-work.js +19 -7
  408. package/dist/slices/rebuild/recipe-youtube.js +4 -3
  409. package/dist/slices/rebuild/recovery-selection.js +3 -1
  410. package/dist/slices/rebuild/recovery.js +9 -8
  411. package/dist/slices/rebuild/remake-outdated.js +5 -5
  412. package/dist/slices/rebuild/repo.js +4 -3
  413. package/dist/slices/rebuild/review-promise.js +25 -0
  414. package/dist/slices/rebuild/review-redo.js +3 -2
  415. package/dist/slices/rebuild/runtime-admission.js +4 -3
  416. package/dist/slices/rebuild/runtime-agent-review.js +11 -5
  417. package/dist/slices/rebuild/runtime-animate.js +10 -9
  418. package/dist/slices/rebuild/runtime-article.js +7 -5
  419. package/dist/slices/rebuild/runtime-checkpoints.js +5 -4
  420. package/dist/slices/rebuild/runtime-document.js +11 -13
  421. package/dist/slices/rebuild/runtime-export-bed.js +8 -12
  422. package/dist/slices/rebuild/runtime-export-edit.js +8 -16
  423. package/dist/slices/rebuild/runtime-export-inputs.js +12 -11
  424. package/dist/slices/rebuild/runtime-export-short.js +9 -5
  425. package/dist/slices/rebuild/runtime-export.js +38 -15
  426. package/dist/slices/rebuild/runtime-figure-card.js +2 -1
  427. package/dist/slices/rebuild/runtime-image.js +8 -12
  428. package/dist/slices/rebuild/runtime-instructions.js +2 -0
  429. package/dist/slices/rebuild/runtime-keywords.js +59 -0
  430. package/dist/slices/rebuild/runtime-lines.js +2 -11
  431. package/dist/slices/rebuild/runtime-local.js +17 -22
  432. package/dist/slices/rebuild/runtime-narration-publication.js +2 -5
  433. package/dist/slices/rebuild/runtime-narration-reuse.js +9 -13
  434. package/dist/slices/rebuild/runtime-narration-text.js +13 -17
  435. package/dist/slices/rebuild/runtime-pictures.js +2 -4
  436. package/dist/slices/rebuild/runtime-piece-label.js +10 -6
  437. package/dist/slices/rebuild/runtime-plan.js +31 -5
  438. package/dist/slices/rebuild/runtime-provider.js +67 -25
  439. package/dist/slices/rebuild/runtime-publication.js +10 -9
  440. package/dist/slices/rebuild/runtime-review.js +39 -33
  441. package/dist/slices/rebuild/runtime-run.js +4 -1
  442. package/dist/slices/rebuild/runtime-shorts.js +31 -50
  443. package/dist/slices/rebuild/runtime-store.js +20 -10
  444. package/dist/slices/rebuild/runtime-subtitles.js +28 -25
  445. package/dist/slices/rebuild/runtime-voices.js +10 -16
  446. package/dist/slices/rebuild/runtime-youtube.js +14 -31
  447. package/dist/slices/rebuild/service-readiness.js +11 -3
  448. package/dist/slices/rebuild/transition-repo.js +6 -5
  449. package/dist/slices/rebuild/work-records.js +6 -0
  450. package/dist/slices/reruns/cascade.js +1 -2
  451. package/dist/slices/reruns/index.js +6 -9
  452. package/dist/slices/research/synthesis.js +3 -2
  453. package/dist/slices/reviews/external-model.js +4 -1
  454. package/dist/slices/reviews/external-repo.js +2 -1
  455. package/dist/slices/reviews/external-rows.js +2 -3
  456. package/dist/slices/reviews/holds.js +5 -4
  457. package/dist/slices/reviews/model.js +32 -11
  458. package/dist/slices/reviews/repo.js +2 -1
  459. package/dist/slices/reviews/rules.js +4 -3
  460. package/dist/slices/reviews/verdict.js +2 -1
  461. package/dist/slices/reviews/view.js +5 -2
  462. package/dist/slices/revisions/downloads.js +4 -5
  463. package/dist/slices/revisions/image-plan.js +1 -1
  464. package/dist/slices/revisions/mutation-assets.js +9 -5
  465. package/dist/slices/revisions/mutation-cues.js +2 -5
  466. package/dist/slices/revisions/mutations.js +3 -3
  467. package/dist/slices/revisions/repo.js +3 -1
  468. package/dist/slices/revisions/schema.js +1 -0
  469. package/dist/slices/revisions/view.js +20 -0
  470. package/dist/slices/run-cost/limits.js +5 -2
  471. package/dist/slices/run-cost/meter.js +12 -5
  472. package/dist/slices/run-cost/panel.js +8 -74
  473. package/dist/slices/run-cost/plan-readings.js +127 -0
  474. package/dist/slices/run-cost/plan-use.js +169 -0
  475. package/dist/slices/run-cost/pricing.js +3 -3
  476. package/dist/slices/run-cost/week.js +32 -4
  477. package/dist/slices/schedules/agenda.js +18 -7
  478. package/dist/slices/schedules/by-date.js +42 -0
  479. package/dist/slices/schedules/calendar.js +5 -0
  480. package/dist/slices/schedules/design-agenda.js +36 -0
  481. package/dist/slices/schedules/design-check.js +41 -0
  482. package/dist/slices/schedules/design-run.js +126 -0
  483. package/dist/slices/schedules/next-run.js +62 -0
  484. package/dist/slices/schedules/prepare.js +18 -2
  485. package/dist/slices/schedules/repo.js +30 -21
  486. package/dist/slices/schedules/rescore.js +35 -0
  487. package/dist/slices/schedules/scheduler.js +13 -3
  488. package/dist/slices/schedules/schema.js +57 -3
  489. package/dist/slices/schedules/score.js +107 -0
  490. package/dist/slices/schedules/service.js +57 -24
  491. package/dist/slices/schedules/topic-list.js +15 -0
  492. package/dist/slices/schedules/topic-scores.js +104 -0
  493. package/dist/slices/schedules/topics.js +53 -41
  494. package/dist/slices/settings/cli-paths.js +4 -6
  495. package/dist/slices/settings/first-run.js +8 -43
  496. package/dist/slices/settings/health.js +30 -15
  497. package/dist/slices/settings/key-test.js +1 -1
  498. package/dist/slices/settings/model-reach.js +3 -17
  499. package/dist/slices/settings/model.js +14 -2
  500. package/dist/slices/settings/playback.js +34 -23
  501. package/dist/slices/settings/probe-read.js +16 -0
  502. package/dist/slices/settings/repo.js +33 -0
  503. package/dist/slices/settings/tutorial.js +2 -2
  504. package/dist/slices/settings/voices.js +4 -12
  505. package/dist/slices/shorts/keep.js +2 -1
  506. package/dist/slices/shorts/pick.js +6 -18
  507. package/dist/slices/shorts/prompts.js +4 -14
  508. package/dist/slices/shorts/render.js +6 -2
  509. package/dist/slices/social/channel.js +44 -0
  510. package/dist/slices/social/defaults.js +17 -0
  511. package/dist/slices/social/due.js +36 -0
  512. package/dist/slices/social/extension.js +18 -0
  513. package/dist/slices/social/fit.js +115 -0
  514. package/dist/slices/social/limits.js +186 -0
  515. package/dist/slices/social/links.js +21 -0
  516. package/dist/slices/social/media.js +132 -0
  517. package/dist/slices/social/model.js +75 -0
  518. package/dist/slices/social/notice.js +19 -0
  519. package/dist/slices/social/pack.js +176 -0
  520. package/dist/slices/social/post-prompt.js +56 -0
  521. package/dist/slices/social/queue.js +31 -0
  522. package/dist/slices/social/repo.js +133 -0
  523. package/dist/slices/social/reshape.js +97 -0
  524. package/dist/slices/social/rules.js +5 -0
  525. package/dist/slices/social/schema.js +70 -0
  526. package/dist/slices/social/serve.js +51 -0
  527. package/dist/slices/social/service.js +129 -0
  528. package/dist/slices/social/settings.js +21 -0
  529. package/dist/slices/social/sources.js +114 -0
  530. package/dist/slices/social/state.js +110 -0
  531. package/dist/slices/social/text.js +149 -0
  532. package/dist/slices/storage/arrange.js +3 -1
  533. package/dist/slices/storage/assets.js +8 -10
  534. package/dist/slices/storage/backup-designs.js +74 -0
  535. package/dist/slices/storage/backup-export.js +8 -3
  536. package/dist/slices/storage/backup-format.js +10 -0
  537. package/dist/slices/storage/backup-import.js +22 -4
  538. package/dist/slices/storage/delete-project.js +6 -5
  539. package/dist/slices/storage/files-location.js +6 -8
  540. package/dist/slices/storage/layout.js +13 -2
  541. package/dist/slices/storage/model.js +3 -0
  542. package/dist/slices/storage/portable.js +17 -12
  543. package/dist/slices/storage/schema.js +2 -0
  544. package/dist/slices/storage/staging-refs.js +2 -1
  545. package/dist/slices/storage/staging.js +6 -9
  546. package/dist/slices/storage/trim.js +26 -9
  547. package/dist/slices/studio/calendar.js +7 -2
  548. package/dist/slices/studio/disclosure.js +4 -4
  549. package/dist/slices/studio/model.js +1 -1
  550. package/dist/slices/studio/pack.js +9 -8
  551. package/dist/slices/studio/pick.js +2 -11
  552. package/dist/slices/studio/plan.js +7 -16
  553. package/dist/slices/studio/queue.js +3 -14
  554. package/dist/slices/studio/releases.js +26 -0
  555. package/dist/slices/studio/settings.js +20 -57
  556. package/dist/slices/studio/videos.js +35 -4
  557. package/dist/slices/style-preview/render.js +37 -16
  558. package/dist/slices/style-preview/schema.js +14 -1
  559. package/dist/slices/style-preview/service.js +2 -1
  560. package/dist/slices/style-preview/settings.js +33 -5
  561. package/dist/slices/subtitles/captions.js +1 -1
  562. package/dist/slices/telemetry/collector-client.js +2 -4
  563. package/dist/slices/telemetry/flush.js +2 -4
  564. package/dist/slices/telemetry/model.js +0 -7
  565. package/dist/slices/telemetry/record.js +10 -3
  566. package/dist/slices/template-studio/anatomy-view.js +161 -0
  567. package/dist/slices/template-studio/anatomy.js +73 -0
  568. package/dist/slices/template-studio/bakeoff-make.js +225 -0
  569. package/dist/slices/template-studio/bakeoff-repo.js +83 -0
  570. package/dist/slices/template-studio/bakeoff.js +333 -0
  571. package/dist/slices/template-studio/budget.js +106 -0
  572. package/dist/slices/template-studio/cards.js +78 -0
  573. package/dist/slices/template-studio/checks.js +322 -0
  574. package/dist/slices/template-studio/document-sample.js +56 -0
  575. package/dist/slices/template-studio/edit.js +15 -0
  576. package/dist/slices/template-studio/for-all.js +161 -0
  577. package/dist/slices/template-studio/free-video.js +31 -0
  578. package/dist/slices/template-studio/free.js +176 -0
  579. package/dist/slices/template-studio/gate.js +40 -0
  580. package/dist/slices/template-studio/hidden.js +20 -0
  581. package/dist/slices/template-studio/jobs.js +79 -0
  582. package/dist/slices/template-studio/loudness.js +111 -0
  583. package/dist/slices/template-studio/make.js +40 -0
  584. package/dist/slices/template-studio/model.js +58 -0
  585. package/dist/slices/template-studio/pack-import.js +253 -0
  586. package/dist/slices/template-studio/pack-samples.js +60 -0
  587. package/dist/slices/template-studio/pack.js +207 -0
  588. package/dist/slices/template-studio/paid-view.js +66 -0
  589. package/dist/slices/template-studio/paid.js +355 -0
  590. package/dist/slices/template-studio/quote.js +155 -0
  591. package/dist/slices/template-studio/ready.js +104 -0
  592. package/dist/slices/template-studio/repo.js +134 -0
  593. package/dist/slices/template-studio/reviews-path.js +58 -0
  594. package/dist/slices/template-studio/runner.js +84 -0
  595. package/dist/slices/template-studio/save.js +236 -0
  596. package/dist/slices/template-studio/say-it-as.js +248 -0
  597. package/dist/slices/template-studio/schedule-gate.js +34 -0
  598. package/dist/slices/template-studio/schedule-price.js +32 -0
  599. package/dist/slices/template-studio/schedule-sample.js +91 -0
  600. package/dist/slices/template-studio/schema.js +243 -0
  601. package/dist/slices/template-studio/scope.js +124 -0
  602. package/dist/slices/template-studio/sections.js +176 -0
  603. package/dist/slices/template-studio/service.js +175 -0
  604. package/dist/slices/template-studio/status.js +191 -0
  605. package/dist/slices/template-studio/topic.js +223 -0
  606. package/dist/slices/thumbnail/by-llm.js +1 -1
  607. package/dist/slices/trash/designs.js +76 -0
  608. package/dist/slices/trash/model.js +13 -4
  609. package/dist/slices/trash/service.js +52 -2
  610. package/dist/slices/tutorials/library.js +3 -2
  611. package/dist/slices/uploads/repo.js +37 -1
  612. package/dist/slices/uploads/rules.js +3 -2
  613. package/dist/slices/video/ass-text.js +17 -0
  614. package/dist/slices/video/audio-export.js +2 -64
  615. package/dist/slices/video/edit-list.js +2 -2
  616. package/dist/slices/video/edit-settings.js +1 -1
  617. package/dist/slices/video/encoding.js +169 -0
  618. package/dist/slices/video/ffmpeg.js +23 -21
  619. package/dist/slices/video/figure-card.js +1 -15
  620. package/dist/slices/video/plan.js +2 -1
  621. package/dist/slices/video/slideshow.js +43 -18
  622. package/dist/slices/voices/attribution.js +3 -2
  623. package/dist/slices/voices/model.js +9 -8
  624. package/dist/slices/voices/palette.js +0 -3
  625. package/dist/slices/voices/script.js +2 -1
  626. package/dist/slices/youtube/answer.js +4 -16
  627. package/dist/slices/youtube/edits-repo.js +3 -12
  628. package/dist/tutorials/AI-CLIs.md +25 -25
  629. package/dist/tutorials/Agents-MCP.md +34 -33
  630. package/dist/tutorials/Assistant.md +42 -0
  631. package/dist/tutorials/Backups.md +7 -7
  632. package/dist/tutorials/Calendar.md +17 -25
  633. package/dist/tutorials/Cast-Library.md +19 -19
  634. package/dist/tutorials/Channels.md +42 -35
  635. package/dist/tutorials/Costs-and-Run-Cost.md +38 -40
  636. package/dist/tutorials/Create-Article.md +114 -0
  637. package/dist/tutorials/Create-Extras.md +112 -0
  638. package/dist/tutorials/Create-Images.md +165 -0
  639. package/dist/tutorials/Create-Narration.md +178 -0
  640. package/dist/tutorials/Create-Overview.md +244 -0
  641. package/dist/tutorials/Create-Video-and-Style.md +144 -0
  642. package/dist/tutorials/Docker.md +3 -3
  643. package/dist/tutorials/Document-Themes.md +32 -32
  644. package/dist/tutorials/Editing-a-Project.md +94 -94
  645. package/dist/tutorials/FAQ.md +18 -18
  646. package/dist/tutorials/First-Launch-and-Welcome.md +50 -64
  647. package/dist/tutorials/Home-and-Projects.md +115 -71
  648. package/dist/tutorials/Home.md +33 -33
  649. package/dist/tutorials/Install.md +14 -13
  650. package/dist/tutorials/Intros-and-Outros.md +33 -34
  651. package/dist/tutorials/Keyboard-Shortcuts-and-Command-Palette.md +62 -58
  652. package/dist/tutorials/Keywords-Slopify-Fills.md +87 -0
  653. package/dist/tutorials/Models.md +53 -21
  654. package/dist/tutorials/Multiple-Voices.md +41 -40
  655. package/dist/tutorials/Narration-Aliases-and-Glossary.md +14 -14
  656. package/dist/tutorials/Notifications.md +27 -17
  657. package/dist/tutorials/Other-Languages.md +15 -15
  658. package/dist/tutorials/PDF-Documents.md +38 -29
  659. package/dist/tutorials/Posting-to-Social-Sites.md +121 -0
  660. package/dist/tutorials/Project-Page.md +118 -120
  661. package/dist/tutorials/Prompts-and-Templates.md +84 -0
  662. package/dist/tutorials/Prompts.md +48 -44
  663. package/dist/tutorials/Providers-and-Keys.md +105 -98
  664. package/dist/tutorials/Publishing-to-YouTube.md +31 -31
  665. package/dist/tutorials/Recovery-and-Retries.md +31 -31
  666. package/dist/tutorials/Remote-Access.md +63 -0
  667. package/dist/tutorials/Reviews-and-Checkpoints.md +98 -90
  668. package/dist/tutorials/Schedules.md +46 -27
  669. package/dist/tutorials/Settings-Reference.md +194 -174
  670. package/dist/tutorials/Shorts.md +34 -33
  671. package/dist/tutorials/Start-at-Login.md +3 -3
  672. package/dist/tutorials/Studio-Extension.md +22 -24
  673. package/dist/tutorials/Template-Studio.md +128 -0
  674. package/dist/tutorials/Templates.md +51 -77
  675. package/dist/tutorials/Trash.md +4 -4
  676. package/dist/tutorials/Troubleshooting.md +44 -44
  677. package/dist/tutorials/Uninstalling-and-Moving.md +5 -5
  678. package/dist/tutorials/Updating-and-Patch-Notes.md +18 -18
  679. package/dist/tutorials/Video-Editing.md +34 -34
  680. package/dist/tutorials/Where-Your-Files-Live.md +10 -10
  681. package/dist/tutorials/YouTube-Description.md +26 -26
  682. package/dist/tutorials/Your-First-Short.md +35 -35
  683. package/dist/tutorials/_Sidebar.md +19 -14
  684. package/dist/updater/work-in-progress.js +42 -12
  685. package/dist/web/assets/index-BNftKQrA.css +1 -0
  686. package/dist/web/assets/index-Cpa58woP.js +459 -0
  687. package/dist/web/assets/pdf-BKh8f7R6.js +56 -0
  688. package/dist/web/assets/pdf.worker.min-BmVo14Nb.mjs +28 -0
  689. package/dist/web/assets/pdf.worker.min-D7i8o3wR.js +1 -0
  690. package/dist/web/index.html +2 -2
  691. package/package.json +6 -2
  692. package/dist/slices/article/provided-entries.js +0 -66
  693. package/dist/slices/article/run.js +0 -145
  694. package/dist/slices/images/run.js +0 -234
  695. package/dist/slices/narration/legacy-plan.js +0 -58
  696. package/dist/slices/narration/run.js +0 -270
  697. package/dist/slices/rebuild/runtime-actions.js +0 -90
  698. package/dist/slices/research/run.js +0 -224
  699. package/dist/slices/subtitles/prepare.js +0 -194
  700. package/dist/slices/subtitles/transcript.js +0 -34
  701. package/dist/slices/thumbnail/run.js +0 -219
  702. package/dist/slices/video/audio-inputs.js +0 -33
  703. package/dist/slices/video/reuse-audio.js +0 -62
  704. package/dist/slices/video/run.js +0 -78
  705. package/dist/slices/video/write-export.js +0 -158
  706. package/dist/slices/video/write-subtitles.js +0 -59
  707. package/dist/tutorials/Library-Overview.md +0 -76
  708. package/dist/tutorials/Play-Images.md +0 -161
  709. package/dist/tutorials/Play-Narration.md +0 -167
  710. package/dist/tutorials/Play-Outputs.md +0 -109
  711. package/dist/tutorials/Play-Overview.md +0 -227
  712. package/dist/tutorials/Play-Title-and-Article.md +0 -136
  713. package/dist/tutorials/Play-Video-and-Style.md +0 -143
  714. package/dist/web/assets/index-BadsoORk.css +0 -1
  715. package/dist/web/assets/index-D8LqNsCl.js +0 -326
  716. package/dist/web/assets/pdf-T7MCwjIv.js +0 -54
  717. package/dist/web/assets/pdf.worker.min-Dswkl-cV.mjs +0 -29
  718. package/dist/web/assets/pdf.worker.min-zC6nfbxG.js +0 -1
@@ -1,15 +1,15 @@
1
- # Cast Library
1
+ # Cast
2
2
 
3
3
  A channel's cast is its recurring characters, creatures, places and objects. Each member has a name, a description and up to four reference pictures. Whenever a video's title or an image's brief names a member, its pictures go with that image request, so the member looks the same in every image and every episode. A cast member can also have a voice for multi-voice videos.
4
4
 
5
- **Where to find it:** **Channels** → a channel → **Cast** tab. **Add to cast** opens the editor beside the list.
5
+ **Where to find it:** **Channels** → a channel → **Cast** tab. **Add to cast** opens the editor beside the list. An empty cast opens on the form for its first member, across the page.
6
6
 
7
7
  ## Add a cast member
8
8
 
9
9
  1. Open **Channels**, pick the channel, and open the **Cast** tab.
10
10
  2. Press **Add to cast**.
11
- 3. Fill in the fields (see the table below). At least give it a **Name**: "Name it first, then give it reference pictures."
12
- 4. Press **Add to cast**. The member is saved and the picture section opens.
11
+ 3. Fill in the fields (see the table below). At least give it a **Name**: "Name it first, then give it a picture or two." **Add alias** appears once you type another name.
12
+ 4. Press **Add to cast**. The member is saved and the picture section opens. Pressed with no name, it says "Give it a name first."
13
13
  5. Add one to four reference pictures: upload them or generate them (below).
14
14
 
15
15
  To change a member later, press **Edit** on it, change what you need and press **Save**. To remove one, press its delete button and confirm with **Delete from cast**.
@@ -48,35 +48,35 @@ Which images get which members:
48
48
  1. Open the member in the editor.
49
49
  2. Under **Reference pictures**, press **Upload a picture** and choose a PNG or JPEG up to 10 MB.
50
50
 
51
- ### Generate a picture
51
+ ### Make a picture
52
52
 
53
- 1. Under **Make a picture**, pick an **Image provider** and **Image model**.
53
+ 1. Under **Make a picture**, pick the **Service** and **Model** under **Drawn by**.
54
54
  2. Check **Picture to make**. It starts from the name, the description and a request for a plain background. Edit it as you like (up to 4,000 characters).
55
- 3. Press **Generate a picture**. Wait until "Making the picture…" finishes.
55
+ 3. Press **Make the picture · 1 image call**. Wait until "Making the picture…" finishes.
56
56
 
57
- Each press is one image call on that provider, billed at its price for one image. A plain background with the whole figure in view makes the best reference.
57
+ Each press is one image call to that service, billed at its price for one image. A plain background with the whole figure in view makes the best reference.
58
58
 
59
59
  To remove a picture, press its delete button. A member with no picture is not sent with any image.
60
60
 
61
- ## Which image providers use the pictures
61
+ ## Which image services use the pictures
62
62
 
63
- | Provider | What happens |
63
+ | Service | What happens |
64
64
  |---|---|
65
65
  | Codex, OpenAI, Google, and fal.ai edit models (FLUX.2 and Nano Banana 2 edit) | The member's pictures are sent as input pictures. |
66
66
  | Models that take no input pictures (Replicate, other fal.ai models) | The member is described in words instead, from its description. |
67
67
 
68
- See [Images](Play-Images) and [Providers and keys](Providers-and-Keys).
68
+ See [Create: Images](Create-Images) and [Keys and Services](Providers-and-Keys).
69
69
 
70
70
  ## Give a cast member a voice
71
71
 
72
72
  In multi-voice formats (audiobook, podcast, radio drama, interview) a cast member can speak with the same voice in every episode.
73
73
 
74
- 1. In the member's editor, under **Cast voice**, pick a **Voice provider**, **Voice model** and **Voice**. The list shows voices that speak the channel's language. If it says "No voices. Add one in Settings.", add a voice in **Settings → Voices** first.
74
+ 1. In the member's editor, under **Voice**, pick the **Service**, **Model** and **Voice** under **Read by**. The list shows voices that speak the channel's language. If it says "No voices for *service* yet", press **Add a voice for *service* ↗** under it and add one in **Settings → Voices** first.
75
75
  2. Pick a **Pace**: 0.8, 0.9, 1 (normal), 1.1 or 1.2.
76
76
  3. Press **Save**.
77
- 4. On Play, pick the member under **Speakers**. They read with this voice, model and pace.
77
+ 4. On Create, pick the member under **Speakers**. They read with this voice, model and pace.
78
78
 
79
- Leave the provider empty for no voice. A run keeps the voice it started with. See [Multiple voices](Multiple-Voices).
79
+ Leave the service empty for no voice. A run keeps the voice it started with. See [Multiple voices](Multiple-Voices).
80
80
 
81
81
  ### Make a member one of the channel's hosts
82
82
 
@@ -86,13 +86,13 @@ A channel's regular presenters can join every new podcast or interview on their
86
86
  2. Turn on **One of the channel's hosts**. Without a voice it warns: "A host joins new podcasts and interviews only with a voice. Pick one under Voice above."
87
87
  3. Press **Save**. The cast list shows **Host** beside the member.
88
88
 
89
- When you pick **Podcast** or **Interview** on Play for a draft of this channel with no speakers yet, the speakers start with the channel's hosts that have a voice. You can still add or remove speakers on the draft. Projects already made are not changed.
89
+ When you pick **Podcast** or **Interview** on Create for a draft of this channel with no speakers yet, the speakers start with the channel's hosts that have a voice. You can still add or remove speakers on the draft. Projects already made are not changed.
90
90
 
91
91
  A picture that fails to generate because a CLI is signed out shows the same **Copy sign-in command** and **Check again** buttons as a project. See [Recovery and Retries](Recovery-and-Retries#sign-a-cli-in-again).
92
92
 
93
93
  ## What happens to finished videos
94
94
 
95
- A run keeps the cast as it was when it started. Editing the cast later never makes a finished video outdated. Only images that actually mention a member change their fingerprint, so only they would be remade if you remake the project's images.
95
+ A run keeps the cast as it was when it started. Editing the cast later never makes a finished video outdated. Only images that actually mention a member change their fingerprint, so only they would be made again if you make the project's images again.
96
96
 
97
97
  ## Backups
98
98
 
@@ -101,12 +101,12 @@ Cast members and their pictures travel in a backup made with **Export everything
101
101
  ## Tips
102
102
 
103
103
  - Upload or generate a picture with the whole figure on a plain background. Busy backgrounds leak into every image.
104
- - Keep the description short and visual: colours, shape, clothing, one distinctive feature.
104
+ - Keep the description short and visual: colors, shape, clothing, one distinctive feature.
105
105
  - Add the plural and possessive-free forms as aliases ("pharaohs", "the Queen"). Matching is whole-word only.
106
106
 
107
107
  ## Related pages
108
108
 
109
109
  - [Channels](Channels)
110
- - [Images](Play-Images)
110
+ - [Create: Images](Create-Images)
111
111
  - [Multiple voices](Multiple-Voices)
112
- - [Providers and keys](Providers-and-Keys)
112
+ - [Keys and Services](Providers-and-Keys)
@@ -2,7 +2,7 @@
2
2
 
3
3
  A channel is one series: its brand kit, series brief, cast, templates and schedules. Every template belongs to one channel, and every run from it uses that channel's look, cast and language. Use channels when you make more than one kind of video, so each series keeps its own look and its own topic ideas.
4
4
 
5
- **Where to find it:** **Channels** in the sidebar. On Play, the **Channel** picker sits under the title. The channel picker in the sidebar filters what Home, Projects and the Calendar show.
5
+ **Where to find it:** **Channels** in the rail, once you have two or more channels; with one, Ctrl+K → **Open Channels**. On Create, the **Channel** picker sits under the title. With two or more channels, **Showing:** in the page header of Home, Projects and the Calendar filters what they show.
6
6
 
7
7
  ## The default channel
8
8
 
@@ -17,27 +17,27 @@ The list shows each channel with **Open**, **Rename** and **Delete** (not on the
17
17
  1. Open **Channels** and press **New channel**.
18
18
  2. Type a **Channel name** (up to 200 characters). It stays inside Slopify and doesn't have to match your YouTube channel.
19
19
  3. Press **Create channel**.
20
- 4. Open the new channel and fill in its **Brand** tab (below).
20
+ 4. Open the new channel and fill in its **Name and look** tab (below).
21
21
 
22
22
  To rename a channel, press **Rename** on it, change the name and press **Rename channel**. To delete one, press **Delete channel**: its cast goes with it, and its videos move to the default channel and keep what they were made with. A channel that still has templates can't be deleted; move them to another channel first (see [Templates](Templates#move-a-template-to-another-channel)).
23
23
 
24
24
  ## Which channel a video is in
25
25
 
26
- - On Play, pick the **Channel** under the title. A draft opened from a template starts in that template's channel; a new draft starts in the default one.
27
- - A template saved from Play lands in the draft's channel, or the one you pick in **Save a setup**.
26
+ - On Create, pick the channel with **For** beside **Start from** (shown with two or more channels). A draft opened from a template starts in that template's channel; a new draft starts in the default one.
27
+ - A template saved from Create lands in the draft's channel.
28
28
  - A schedule belongs to the channel of the template it runs, so moving the template moves its schedules.
29
29
 
30
30
  ## Show one channel's work
31
31
 
32
- The channel picker in the sidebar (**Current channel**) makes Home, Projects and the Calendar show only that channel's work. **All channels** shows everything. It only filters what you see; projects and schedules of other channels keep running. This browser remembers your choice.
32
+ **Showing:** in the page header of Home, Projects and the Calendar makes them show only that channel's work. **All channels** shows everything. It only filters what you see; projects and schedules of other channels keep running. This browser remembers your choice.
33
33
 
34
34
  ## The channel's tabs
35
35
 
36
- A channel page has six tabs: **Brand**, **Cast**, **Templates**, **Schedules**, **Episodes** and **Existing videos**.
36
+ A channel page has seven tabs: **Name and look**, **Cast**, **Projects**, **Templates**, **Schedules**, **Memory** and **Titles to avoid**.
37
37
 
38
- ### Brand
38
+ ### Name and look
39
39
 
40
- **YouTube AI disclosure.** Studio's **AI use** answer for this channel's videos and Shorts, given by Prepare upload and the Studio extension. It saves as soon as you pick.
40
+ **YouTube AI disclosure.** Studio's **AI use** answer for this channel's videos and Shorts, given by Copy for YouTube Studio and the Studio extension. It saves as soon as you pick.
41
41
 
42
42
  | Option | What it does |
43
43
  |---|---|
@@ -45,69 +45,76 @@ A channel page has six tabs: **Brand**, **Cast**, **Templates**, **Schedules**,
45
45
  | **Always Yes** | Always answers Yes. |
46
46
  | **Always No** | Always answers No. |
47
47
 
48
- Mark voices in **Settings → Voices** and Image prompts in **Library → Prompts**. See [Publishing to YouTube](Publishing-to-YouTube).
48
+ Mark voices in **Settings → Voices** and Image prompts in **Prompts**. See [Publishing to YouTube](Publishing-to-YouTube).
49
+
50
+ **Posting.** The channel's accounts on other sites, used only for [posting](Posting-to-Social-Sites). **X subscription** (Free, Premium or Premium+) only changes which warnings a post gets: Free warns about text over 280 characters and videos over 2 min 20 s. **Account names** (such as `@yourname` on X, `in/your-name` on LinkedIn, `yourname.bsky.social` on Bluesky, `u/yourname` on Reddit) let the extension find a published post's link on your profile. They are never a sign-in. Saved with **Save channel**.
49
51
 
50
52
  **Series brief.** What the channel covers, its style and what makes a topic worth a video. Topic generation reads it for every schedule of this channel that has no brief of its own. It doesn't change how videos are written. Up to 10,000 characters. See [Schedules](Schedules#topics-that-find-themselves).
51
53
 
52
- **Language of new projects.** The language this channel's new projects are written and narrated in when Play or the template picks none. It applies even with the brand kit off, since it is not styling. Pick voices that speak it. Not set means English. Projects already made keep their language. See [Other languages](Other-Languages).
54
+ **Language of new projects.** The language this channel's new projects are written and narrated in when Create or the template picks none. It applies even with the brand kit off, since it is not styling. Pick voices that speak it. Not set means English. Projects already made keep their language. See [Other languages](Other-Languages).
53
55
 
54
56
  **Brand kit.** The look every template of this channel gets unless it sets its own. Every field is optional, each fills only what a template leaves at its default, and a blank field adds nothing.
55
57
 
56
58
  | Field | What it does |
57
59
  |---|---|
58
- | **Caption font** | The subtitle font for videos whose template leaves the font at Default. Fonts you upload in the subtitle font picker on Play appear here. |
59
- | **Caption colour** | Subtitle text colour as `#` and six hex digits, such as `#FFFFFF`. |
60
- | **Caption outline** | The colour of the line around each subtitle letter, such as `#000000`. A dark outline keeps light captions readable on bright pictures. |
60
+ | **Caption font** | The caption font for videos whose template leaves the font at its default. Fonts you upload in the **Caption font** picker on Create appear here. |
61
+ | **Caption color** | The captions' text color as `#` and six hex digits, such as `#FFFFFF`. |
62
+ | **Caption outline** | The color of the line around each caption letter, such as `#000000`. A dark outline keeps light captions readable on bright pictures. |
61
63
  | **Title font** | The font of chapter cards and the end screen, for videos whose template sets no title style. |
62
- | **Title colour** | The text colour of chapter cards and the end screen, such as `#FFD700`. |
63
- | **End screen text** | A line shown centred over the last 5 seconds of every video, such as "Subscribe for more". Up to 200 characters. Blank shows none. |
64
- | **Intro** / **Outro** | An entry from **Library → Intros & outros**, narrated before or after the body of every video whose template has none. Each is narrated with the video's voice, so each costs one voice request per video (plus a text call for an LLM entry), and it shows in the estimate. See [Intros and outros](Intros-and-Outros). |
65
- | **Document theme** | The look of the PDF for videos whose template picks no theme. A saved theme that was deleted is skipped. |
64
+ | **Title color** | The text color of chapter cards and the end screen, such as `#FFD700`. |
65
+ | **End screen text** | A line shown centered over the last 5 seconds of every video, such as "Subscribe for more". Up to 200 characters. Blank shows none. |
66
+ | **Intro** / **Outro** | An entry from **Prompts → Intros** and **Outros**, narrated before or after the body of every video whose template has none. Each is narrated with the video's voice, so each costs one voice request per video (plus an AI call for one the AI writes), and it shows in the estimate. See [Intros and outros](Intros-and-Outros). |
67
+ | **PDF look** | The look of the PDF for videos whose template picks none. A saved theme that was deleted is skipped. |
66
68
  | **Ambient sound** | Rain, Fireplace or Wind under the long video's narration, with its level (−40 to −6 dB, default −18), fade-in (0 to 30 s, default 3) and tail (0 to 30 s, default 6). Used when the template leaves its own ambient sound on "The channel's". A channel can't hold your own audio file. |
67
69
 
68
70
  **Channel links.** This channel's named links, such as `Patreon` or `Discord`, that a YouTube description fills when it names them in braces (`{{Patreon}}`). See [Channel links](#channel-links).
69
71
 
70
- Press **Save channel** when you are done.
72
+ Press **Save channel** when you are done. It waits for a change: until you change something, the bar says "Nothing to save yet: change a setting first."
71
73
 
72
- To keep one video exactly as its template was saved, untick **Use the channel's brand kit** on Play or in Edit project. The cast and language still apply. Nothing in the kit reaches a project that already started; a project keeps what it was started with.
74
+ To keep one video exactly as its template was saved, untick **Use the channel's brand kit** on Create or in a project's **Edit settings** → **Channel**. The cast and language still apply. Nothing in the kit reaches a project that already started; a project keeps what it was started with.
73
75
 
74
76
  ### Cast
75
77
 
76
- Recurring characters, creatures, places and objects, each with reference pictures that go with every image that names them. A cast member with a voice can also be one of the channel's hosts: a new podcast or interview on Play then starts with them as its speakers. See [Cast library](Cast-Library).
78
+ Recurring characters, creatures, places and objects, each with reference pictures that go with every image that names them. A cast member with a voice can also be one of the channel's hosts: a new podcast or interview on Create then starts with them as its speakers. See [Cast](Cast-Library).
79
+
80
+ ### Projects
81
+
82
+ Everything made in this channel, newest first, as the Projects list shows it: its state in the same words (**Ready to upload**, **Uploaded**, **Done with problems**), its length, what it made and when it finished (or what it is made of and when it started), with **Watch** and **Download video** once it is done.
77
83
 
78
84
  ### Templates
79
85
 
80
- The channel's templates. Each has a channel picker: choosing another channel moves the template, and every schedule that runs it, to that channel. Their next runs use the new channel's brand kit, cast and series brief. Projects already made keep what they were made with.
86
+ The channel's templates, each with **Make a video** (Create opens with it picked), **New schedule** and **Edit template**. While the channel has templates, the page header leaves out its own **Make a video**, which opens an empty Create. Each has a channel picker: choosing another channel moves the template, and every schedule that runs it, to that channel. Their next runs use the new channel's brand kit, cast and series brief. Projects already made keep what they were made with.
81
87
 
82
88
  ### Schedules
83
89
 
84
90
  The schedules that run this channel's templates, with their status and next run. Edit them on **Calendar → Schedules**; see [Schedules](Schedules).
85
91
 
86
- ### Episodes (episode memory)
92
+ ### Memory
87
93
 
88
- With **Episode memory** on, every finished video of the channel leaves a short summary, and new episodes about the same things read it so they agree with what came before.
94
+ With **Remember what each video covered** on, every finished video of the channel leaves a short summary, and new episodes about the same things read it so they agree with what came before.
89
95
 
90
96
  How it works:
91
97
 
92
- 1. When a video of this channel finishes, one short call to its text model writes a summary of up to 150 words: what the episode covered, the facts it stated, who appeared and what happened to them. The call shows on the project's **Run cost**. Finishing the same article again asks nothing, and a failed call never touches the project.
98
+ 1. When a video of this channel finishes, one short call to its AI writes a summary of up to 150 words: what the episode covered, the facts it stated, who appeared and what happened to them. The call shows in the project's cost line (**See the breakdown**). Finishing the same article again asks nothing, and a failed call never touches the project.
93
99
  2. When a new episode's article (or multi-voice script) is written by Slopify, the summaries of up to 5 related earlier episodes are added to its writing prompt under "Earlier episodes".
94
- 3. An episode is related when it features a cast member the new title or keywords mention (strongest), or shares words of its title. Words most of the channel's titles share, such as a template's fixed prefix, and one- or two-letter words don't count. An episode with the very same title is a remake, not an earlier episode, and is left out.
100
+ 3. An episode is related when it features a cast member the new title or keywords mention (strongest), or shares words of its title. Words most of the channel's titles share, such as a template's fixed prefix, and one- or two-letter words don't count. An episode with the very same title is a new take on that video, not an earlier episode, and is left out.
95
101
  4. The summaries are copied into the project when it starts, so later edits never make a finished video outdated.
96
102
 
97
103
  On the tab:
98
104
 
105
+ - **Search episode summaries** finds one by its title, a cast member or its words.
99
106
  - **Open** a summary to read or edit it. Your edited text is kept, even if the video finishes again.
100
107
  - **Delete** removes a summary from later prompts. The video itself is not changed.
101
108
 
102
109
  Default: on for new channels. Channels that existed before 3.0 start with it off.
103
110
 
104
- ### Existing videos
111
+ ### Titles to avoid
105
112
 
106
113
  Titles this channel published before or outside Slopify. Topic generation and its duplicate checks skip them, as they skip the videos made here.
107
114
 
108
115
  **Paste titles:**
109
116
 
110
- 1. Type or paste titles into **Paste titles**, one per line.
117
+ 1. Press **Paste titles…**, then type or paste titles into **Titles, one per line**.
111
118
  2. Press **Add titles**. A title already listed (in any case) is skipped.
112
119
 
113
120
  **Import a YouTube Studio CSV:**
@@ -118,31 +125,31 @@ Titles this channel published before or outside Slopify. Topic generation and it
118
125
  4. If the export holds several series, type into **Keep only titles containing…** (for example a series name, any case). Only titles holding that text stay ticked. **Tick all** and **Untick all** reset the ticks, and you can tick each title by hand.
119
126
  5. Press **Add N ticked titles**. The import says how many were added and how many were skipped as already listed.
120
127
 
121
- The filter text is remembered for this channel's next import. **Remove** deletes one title, and **Remove all** clears the list.
128
+ The filter text is remembered for this channel's next import. **Search titles to avoid** finds one, **Remove** deletes one title, and **Remove all** clears the list.
122
129
 
123
130
  ## Channel links
124
131
 
125
- Each channel keeps its own named links, under **Channel links** on its **Brand** tab. Write a link's name in braces in a description prompt or a description, such as `{{Patreon}}`, and it is filled with this channel's link when the description is shown, copied or downloaded.
132
+ Each channel keeps its own named links, under **Channel links** on its **Name and look** tab. Write a link's name in braces in a description prompt or a description, such as `{{Patreon}}`, and it is filled with this channel's link when the description is shown, copied or downloaded.
126
133
 
127
- 1. Open **Channels** → the channel → **Brand**.
134
+ 1. Open **Channels** → the channel → **Name and look**.
128
135
  2. Under **Channel links**, press **Add link**, type the **name** (for example `Patreon`) and the URL (`https://…`). **Remove** takes one off.
129
136
  3. Press **Save channel**.
130
137
 
131
- Names match whatever their case or spacing. `{{Previous video}}` works the same way, but a project can set its own on its **YouTube** section (**Previous video for this project**, then **Save links**), which wins over the channel's. A placeholder with no link stays as typed, and the YouTube section says "No link is saved for {{…}}, so it stays as typed." with where to add it.
138
+ Names match whatever their case or spacing. `{{Previous video}}` works the same way, but a project can set its own in its **YouTube** part (**Previous episode**, then **Save**), which wins over the channel's. A placeholder with no link stays as typed, and the YouTube section says "No link is saved for {{…}}, so it stays as typed." with where to add it.
132
139
 
133
- Links saved in **Settings → Channel links** before channels had their own still fill the default channel's descriptions until you save its Brand tab; that Settings section now only points here (**Open the default channel's links**). Channel links travel in backups with their channel. See [YouTube description](YouTube-Description) and [Publishing to YouTube](Publishing-to-YouTube).
140
+ Links saved in Settings before channels had their own still fill the default channel's descriptions until you save its Name and look tab; while they do, Settings → **YouTube Studio and posting** says so under **Links saved here before**, with **Open <channel>'s links**. Channel links travel in backups with their channel. See [YouTube description](YouTube-Description) and [Publishing to YouTube](Publishing-to-YouTube).
134
141
 
135
142
  ## Tips
136
143
 
137
144
  - Give each series its own channel, even if you upload them to one YouTube channel. The brand kit, cast and topic ideas stay separate.
138
- - Import your existing videos before turning on topic generation, so Slopify doesn't suggest what you already made.
145
+ - Add the titles you made before (**Titles to avoid**) before turning on topic generation, so Slopify doesn't suggest what you already made.
139
146
  - Edit an episode summary when it gets a fact wrong. Later episodes will follow your version.
140
147
 
141
148
  ## Related pages
142
149
 
143
- - [Cast library](Cast-Library)
150
+ - [Cast](Cast-Library)
144
151
  - [Templates](Templates)
145
152
  - [Schedules](Schedules)
146
- - [Play video and style](Play-Video-and-Style)
153
+ - [Create: Video and Style](Create-Video-and-Style)
147
154
  - [Publishing to YouTube](Publishing-to-YouTube)
148
155
  - [Other languages](Other-Languages)
@@ -1,17 +1,17 @@
1
1
  # Costs and Run Cost
2
2
 
3
- Slopify shows what a run is likely to cost before you start it, what it actually cost once it ran, and, for runs on a command-line plan, what the same work would have cost with API keys and how much of your plan it used. All figures are in US dollars, from the providers' published prices.
3
+ Slopify shows what a run is likely to cost before you start it, what it actually cost once it ran, and, for runs on a command-line plan, what the same work would have cost with API keys and how much of your plan it used. All figures are in US dollars, from the services' published prices.
4
4
 
5
- **Where to find it:** Play → **Estimated cost** in the right rail; a project → **Run cost** tab; Home → **This week**; Settings → **Usage**.
5
+ **Where to find it:** Create → **Estimated cost** in the rail; a project → the cost line under its status list, and **See the breakdown**; Home → **This week**; Settings → **Usage**.
6
6
 
7
7
  ## Where costs come from
8
8
 
9
- - Every successful provider call is recorded against its project with what it used: tokens in and out (and how many were cached) for text, characters for narration, images per model, seconds of animated video, and how long the call took.
9
+ - Every successful call to a service is recorded against its project with what it used: tokens in and out (and how many were cached) for text, characters for narration, images per model, seconds of animated video, and how long the call took.
10
10
  - Each call is priced when it finishes, from the model catalogue (see [Models](Models)). The rates are stored with the call, so a later price change never rewrites a finished run.
11
- - A model the catalogue has no price for, or a call whose provider reported no usage, is counted as unknown, never as free. Per-minute voices are left unpriced rather than guessed.
12
- - Failed calls are not charged here. Taxes and credits included in your provider plan are not counted.
11
+ - A model the catalogue has no price for, or a call whose service reported no usage, is counted as unknown, never as free. Per-minute voices are left unpriced rather than guessed.
12
+ - Failed calls are not charged here. Taxes and credits included in your plan with a service are not counted.
13
13
 
14
- Your provider bills you directly; Slopify never handles payment. The figures are for planning and checking, not a bill.
14
+ Each service bills you directly; Slopify never handles payment. The figures are for planning and checking, not a bill.
15
15
 
16
16
  ## Command-line runs: $0 on your plan
17
17
 
@@ -21,75 +21,73 @@ There is no API figure for a model the catalogue does not list, for a CLI's defa
21
21
 
22
22
  See [AI-CLIs](AI-CLIs#plan-limits-and-waiting-them-out) for the plan limits themselves.
23
23
 
24
- ## Before you start: Estimated cost on Play
24
+ ## Before you start: Estimated cost on Create
25
25
 
26
- The right rail on Play shows **Estimated cost** once the setup is complete. Until then it says "The estimate appears once the setup is complete."
26
+ The rail on Create shows **Estimated cost** once the setup is complete. Until then it says "Estimated cost: shown once nothing is missing."
27
27
 
28
28
  | Part | What it shows |
29
29
  |---|---|
30
30
  | **Estimated total** | The likely range for this run (or all the runs on the page), for example "$0.42 – $0.61". |
31
31
  | **Known subtotal** | Shown instead of the total when some stage has no price; a line below says how many stage charges have unavailable pricing. |
32
- | **Cost by stage** | Fold-out list: each stage's range and what it assumes. A CLI stage reads "$0 on your plan · ~$X via API". |
32
+ | **Cost by stage** | Fold-out list (**Cost by stage · N stages**): each stage's range and what it assumes. A CLI stage reads "$0 on your plan · ~$X via API". |
33
33
  | CLI steps line | "CLI steps: $0 on your plan · ~$X via API" for everything on a plan. |
34
34
  | Catalogue date | "Catalogue verified <date>". With several videos, rows show combined costs. |
35
35
 
36
- **Expected article words per video** drives the estimate for generated articles (and how many images **More images for long videos** adds). About 150 words is one minute. Default: 1500. Once the article is written, its real length is used.
36
+ **Words per video** (in the rail's **Expected length**, with **Change**) drives the estimate for articles the AI writes (and how many images **More images for long videos** adds). About 150 words is one minute. Default: 1500. Once the article is written, its real length is used.
37
37
 
38
- The estimate is what the providers are likely to charge, from their published prices. Actual usage can differ, and the estimate does not cap spending.
38
+ The estimate is what the services are likely to charge, from their published prices. Actual usage can differ, and the estimate does not cap spending.
39
39
 
40
- ## While a run is going: Cost so far
40
+ ## The cost line
41
41
 
42
- On a running project, the side panel shows **Cost so far**:
42
+ Under the status list on the project page, one line sums up what the run cost: for example `Cost $0.42 · ~$3.10 via API · 12 min of working time · See the breakdown`.
43
43
 
44
- - **spent**: what has been paid to providers so far ("known, spent" when some calls have no price).
45
- - **same work via API**: the API equivalent of the CLI calls.
46
- - One meter per plan window a CLI reported, such as "Codex: 14% of your weekly limit". The meter turns amber once the plan is at 80% or more.
44
+ - While the run goes it reads **Cost so far**, and the title row's clock counts the working time instead.
45
+ - **known** after the amount means some calls have no price.
46
+ - **~$X via API** is what the calls that ran on a CLI plan would have cost through the API.
47
+ - Before anything is spent it reads **Nothing spent yet**.
47
48
 
48
- When a CLI's plan is used up, the run waits instead of failing: the status reads **Waiting for limits**, for example "Waiting for Codex limits (resets at 14:00)". The run carries on by itself when the plan resets.
49
+ When a CLI's plan is used up, the run waits instead of failing: the state reads **Waiting for limits**, for example "Waiting for Codex limits (resets at 14:00)". The run carries on by itself when the plan resets.
49
50
 
50
- ## After a run: the run cost line
51
-
52
- When a run has ended, one line at the top of its project page, under the title, sums it up: for example `This run cost $0.42 · ~$3.10 via API · 12 min of work`. A failed or canceled run says **Spent so far**, and calls without a known price add "plus unpriced calls". **See cost by stage** opens the full breakdown below. The line doesn't show while the run is going, or when it spent nothing.
53
-
54
- ## After a run: the Run cost tab
51
+ ## The breakdown: the Cost part
55
52
 
56
53
  1. Open the project from **Projects** or **Home**.
57
- 2. Choose **Cost** in the section rail (or **See cost by stage** on the run cost line).
54
+ 2. Press **See the breakdown** on the cost line.
58
55
 
59
- If nothing has been spent yet, it says "Nothing has been spent yet. The cost of each provider call appears here as the run makes it."
56
+ If nothing has been spent yet, it says "Nothing has been spent yet. The cost of each call to an AI service appears here as the run makes it."
60
57
 
61
58
  ### Summary
62
59
 
60
+ The summary shows only what the cost line beside it does not: the total cost and the working time are in the cost line, and again in the last line under the tables. It appears when one of these applies.
61
+
63
62
  | Figure | What it is |
64
63
  |---|---|
65
- | **paid to providers** | The total cost of this project's calls. Reads "known cost, paid to providers" when some calls have no price, with a line "Plus N calls the model catalogue has no price for." |
66
64
  | **same work via API** | The API equivalent of the calls that ran on a CLI plan. |
67
65
  | Plan meters | One per plan window a CLI reported, for example "3% of weekly Codex limit". Hover or read the line below for the level it is at now. |
68
- | **this run's working time** | How long some step of the run was working. Waiting on a review, a limit or a pause never counts, and steps that ran side by side count once. Each save that remakes something starts a new run. |
69
66
 
70
67
  Lines under the summary:
71
68
 
69
+ - "Plus N calls the model catalogue has no price for.", when some calls have no price.
72
70
  - "CLI calls: $0 on your plan · ~$1.20 via API", when any call ran on a plan.
73
71
  - "This run used ~3% of your weekly Codex limit (now at 41%, resets Mon 09:00)." Codex reports whole percents, so a short run can read "under 1%".
74
72
  - When a CLI reported nothing (Gemini, or a Docker host helper older than the app), it says the share is not known.
75
73
 
76
- ### By stage
74
+ ### By step
77
75
 
78
- **Cost by stage**: what each stage has cost so far, from every provider call it made, retries and remakes included.
76
+ **By step**: what each stage has cost so far, from every call it made to a service, retries and everything made again included.
79
77
 
80
78
  | Column | What it shows |
81
79
  |---|---|
82
- | **Stage** | Research, Article, Audio, Images, Thumbnail, Video, Document. |
83
- | **Cost** | What you paid. "$0 on plan" for CLI stages; "Unknown" when no call in it has a price; "$0.40 + unknown" when some do not. |
80
+ | **Step** | Research, Article, Narration, Images, Thumbnail, Video, PDF. |
81
+ | **Cost** | What you paid. "$0 on plan" for CLI stages; "Not known" when no call in it has a price; "$0.40 + not known" when some do not. |
84
82
  | **Via API** | The API equivalent for CLI calls, or "No API price". |
85
83
  | **Usage** | Tokens in and out (and cached), characters, images, seconds of video. |
86
- | **Time** | How long the stage ran. |
84
+ | **Working time** | How long the step's work ran, over every run. |
87
85
 
88
86
  ### By model
89
87
 
90
- **Cost by model**: the same spending split by provider and model, with **Cost**, **Via API**, **Usage** and **Calls**. A CLI model shows the API model it was priced as, in brackets after "as". The CLI's own default model shows as "default model".
88
+ **By model**: the same spending split by service and model, named as Create names them (for example **Inworld · Inworld TTS-2**), with **Cost**, **Via API**, **Usage** and **Calls**. A CLI model shows the API model it was priced as, in brackets after "as". The CLI's own default model shows as "its default model", and a sample's own services as **Sample artist**, **Sample writer** and so on.
91
89
 
92
- The last lines give the total usage and the working time over every run, and "Priced from the model catalogue of <date> when each call finished."
90
+ The last lines give the total, for example "In total: $0.42 · 12,400 characters · 9 images · 12 min working, over every run." (with **known** after the amount when some calls have no price), and "Priced from the model catalogue of <date> when each call finished."
93
91
 
94
92
  ## Across all projects: Home → This week
95
93
 
@@ -99,7 +97,7 @@ Home's **This week** section, since Monday:
99
97
  - **spent**, followed by "· ~$X via API" and "· N calls without a price" when they apply.
100
98
  - One bar per CLI plan: how much of its weekly limit is used, from the tool's last reading. The bar turns amber at 80%.
101
99
 
102
- It includes calls that belong to no project: a schedule's topic suggestions, a channel's episode summaries and a cast member's picture. These never appear on a project's Run cost tab. The channel picker at the top of Home narrows the numbers to one channel. See [Home-and-Projects](Home-and-Projects).
100
+ It includes calls that belong to no project: a schedule's topic suggestions, a channel's episode summaries and a cast member's picture. These never appear on a project's cost breakdown. With two or more channels, **Showing:** in Home's header narrows the numbers to one channel. See [Home-and-Projects](Home-and-Projects).
103
101
 
104
102
  ## Your usage totals: Settings → Usage
105
103
 
@@ -108,12 +106,12 @@ Settings → **Usage** shows this install's own counters, worked out on this com
108
106
  | Counter | What it counts |
109
107
  |---|---|
110
108
  | **Videos made** | Videos finished. |
111
- | **Hours of audio** | Narration made, in hours. |
109
+ | **Hours of narration** | Narration made, in hours. |
112
110
  | **Images made** | Images drawn. |
113
- | **Tokens used** | Text tokens, in and out. |
111
+ | **AI text read and written** | Text the AI read and wrote, in tokens (pieces of about three quarters of a word). |
114
112
  | **Projects** | Projects made. |
115
113
 
116
- Below them, **Tokens by stage** lists **Stage**, **Provider · model**, **Tokens in** and **Tokens out**. A fresh install says "Numbers appear after your first run." The last line shows the install's machine ID and Slopify version.
114
+ Beside them, **AI text by part of the video** lists **Part**, **Service · model**, **Read** and **Written**. A fresh install shows only **Nothing made yet** with **Make your first video**. The last line shows this computer's random number (the one each count carries) and the Slopify version.
117
115
 
118
116
  The same counters, anonymised, feed the public totals on slopify.stream. They never include your keys, prompts, keywords, titles, text or files.
119
117
 
@@ -121,7 +119,7 @@ To jump there, press `Ctrl+K` and run **Open usage and costs**. The old `/usage`
121
119
 
122
120
  ## Tips
123
121
 
124
- - Set **Expected article words per video** close to what your prompt really writes; it is the biggest lever on the estimate for a generated article.
122
+ - Set **Words per video** close to what your prompt really writes; it is the biggest lever on the estimate for a generated article.
125
123
  - Compare the **Via API** column with your plan's price to see whether a subscription or a key is cheaper for how you work.
126
124
  - If a total says "known cost", check which model has no price in [Models](Models) and add one to your catalogue file if you know it.
127
125
 
@@ -129,8 +127,8 @@ To jump there, press `Ctrl+K` and run **Open usage and costs**. The old `/usage`
129
127
 
130
128
  - [Models](Models)
131
129
  - [AI-CLIs](AI-CLIs)
132
- - [Providers-and-Keys](Providers-and-Keys)
133
- - [Play-Outputs](Play-Outputs)
130
+ - [Keys and Services](Providers-and-Keys)
131
+ - [Create: Extras](Create-Extras)
134
132
  - [Project-Page](Project-Page)
135
133
  - [Home-and-Projects](Home-and-Projects)
136
134
  - [Settings-Reference](Settings-Reference)
@@ -0,0 +1,114 @@
1
+ # Create: Article
2
+
3
+ The article is the script of your video: the narration reads it, the captions show it, the chapters come from its headings and the PDF lays it out. On Create you either have an AI write it from a prompt, or use your own text. This page covers the **Article** row: where the text comes from, the article prompt, **Written by**, research and the language.
4
+
5
+ **Where to find it:** Create → **Article** row → **Change**. Keywords and the title pattern are in the **Keywords** row; see [Create Overview](Create-Overview#keywords). The intro and outro are in the Narration row; see [Narration](Create-Narration#intro-and-outro).
6
+
7
+ ## Choose where the article comes from
8
+
9
+ The row starts with an **Article** switch:
10
+
11
+ | Choice | What happens | Cost |
12
+ | --- | --- | --- |
13
+ | **Write it for me** (default) | The AI writes the article from the article prompt, in one call. | One AI call |
14
+ | **Use my text as written** | Slopify narrates the text you paste, word for word. No AI writes one. | Nothing for the article |
15
+ | **Adapt my text** | The AI rewrites the text you paste with the article prompt, for example to shorten it or change its tone. The narration reads what the prompt makes of it. | One AI call |
16
+ | **No text** | No article at all, for a set of images or a thumbnail made from prompts. Narration, the PDF and anything else that reads the article stay off. | Nothing |
17
+
18
+ ### Write the article from a prompt
19
+
20
+ 1. Open the **Article** row and leave it on **Write it for me**.
21
+ 2. Pick an **Article prompt**. Each card shows the prompt's name, its first line and the length it asks for (for example **About 20 min · 2800-3200 words**). With many prompts, a filter box narrows the list.
22
+ 3. Optional: open **Text of the prompt** to read the picked prompt.
23
+ 4. Fill in any keywords the prompt asks for (at the top, or in the **Keywords** row).
24
+ 5. Check the service and model under **Written by** (below).
25
+
26
+ With no article prompts yet, the row says so with **New article prompt**. It opens a drawer beside Create where you write one, and the prompt you save is picked. See [Prompts](Prompts).
27
+
28
+ When the narration has several speakers and the script is written for them, the field becomes **Script prompt**: a script prompt asks for speaker turns instead of a plain article. See [Multiple Voices](Multiple-Voices).
29
+
30
+ ### Paste your own article
31
+
32
+ 1. Open the **Article** row and pick **Use my text as written**.
33
+ 2. Paste the text into **Article text**.
34
+ 3. Check the count under it (words and characters). About 150 words is one minute of narration.
35
+
36
+ Include everything that should be read, headings too. Headings become chapters. **Text that will be spoken** folds out the words the narrator will say: your text without its end matter (sources and the Pronunciation Glossary are never read), with your narration aliases applied when they are on. Research is off while you use your own text.
37
+
38
+ ### Adapt your own text
39
+
40
+ Pick **Adapt my text**, paste the source under **Your text**, and pick the **Article prompt** that rewrites it. Your text stays the source; the article prompt decides the length and tone.
41
+
42
+ ## Written by
43
+
44
+ One AI writes everything this run needs in words: the article, the research, the thumbnail prompt when the AI writes it, intros and outros written for each video, narration preparation, descriptions of tables and figures, the YouTube description and picking the shorts. Each is a separate call, counted in Usage.
45
+
46
+ The **Written by** group appears whenever the run needs an AI writer, in the row of the first thing that needs it, and its line says what it is used for (for example "for writing the article, writing the YouTube description and picking the shorts"). It is in **Article** when the article or research is written for you, in **Narration** when only the narration needs it (an audiobook whose speakers are worked out from a book you pasted, say), and in **Extras** when only the YouTube description, the shorts or the thumbnail prompt need it. There is one writer per run, wherever it shows.
47
+
48
+ | Option | What it does | Default |
49
+ | --- | --- | --- |
50
+ | **Service** | Who runs the writer: a tool you are signed in to, such as Claude Code or Codex, or a keyed service such as OpenRouter, billed per token. Each service in the list says when it has **No key** or is **Not found**; fix it under Settings → Keys & services. | The one Settings → Keys & services says Create picks |
51
+ | **Model** | The model the service runs for every writing step. Bigger models write better and cost more per token. | The service's default |
52
+ | **Thinking** | How long the model reasons before it answers, for models that offer it. Higher levels can write more carefully but take longer and use more tokens. | **Model default** |
53
+
54
+ Notes on the pickers:
55
+
56
+ - Changing the service clears the model, so pick a model again.
57
+ - **Type a model ID…** at the end of the model list lets you type one the list does not show.
58
+ - The line under the model says whether it was checked (for example **Works · checked 2 min ago**), with **Manage models ↗** to Settings → Models.
59
+ - **Thinking** only appears when the model offers levels.
60
+
61
+ If the run needs a writer and none is picked, the row says to pick a service and model. See [Keys and Services](Providers-and-Keys), [AI CLIs](AI-CLIs) and [Models](Models).
62
+
63
+ ## Research
64
+
65
+ Research gives the writer notes to write from, beyond what it already knows. It has its own **Research** switch in the Article row:
66
+
67
+ | Choice | What happens | Cost |
68
+ | --- | --- | --- |
69
+ | **Off** (default) | The article is written from the prompt alone. | Nothing extra |
70
+ | **Let the AI research** | The AI plans chapters and looks each one up on the web before it writes. | A few more AI calls: one to plan, one per chapter, one to combine |
71
+ | **Paste my notes** | Uses notes you paste in **Research notes**. Nothing is looked up. | Nothing extra |
72
+
73
+ ### Research on the web
74
+
75
+ 1. Set **Research** to **Let the AI research**.
76
+ 2. Make sure the model can search the web. A model that cannot fails the Research step straight away, rather than falling back to what it already knows.
77
+ 3. Make the video. You can watch the notes being written in the project's **Progress**.
78
+
79
+ ### Give your own research notes
80
+
81
+ 1. Set **Research** to **Paste my notes**.
82
+ 2. Paste the facts, sources and quotes the article should draw on into **Research notes**.
83
+
84
+ The notes are given to the writer with the article prompt, in place of web research.
85
+
86
+ ## Language
87
+
88
+ **Language** at the end of the row picks the language the article, narration, YouTube description and shorts titles are written in. **Channel's language** uses the channel's. The line under it says what is written and timed in that language. See [Other Languages](Other-Languages).
89
+
90
+ ## Expected length
91
+
92
+ **Expected length** in the rail tells Slopify how long you expect each article to be, which drives the cost estimate and how many images **More images for long videos** adds. Once the article is written, its real length is used. Set it to roughly what your article prompt asks for. See [Create Overview](Create-Overview#expected-length).
93
+
94
+ ## What the row says
95
+
96
+ Folded, the Article row says what will happen, for example `Written by Claude Code CLI (Sonnet 5.5) from the “History · Documentary” prompt, with web research.`, or `Your own text, used as written.` What is still missing follows, such as "No article prompt picked yet."
97
+
98
+ ## Tips
99
+
100
+ - Ask for a Pronunciation Glossary at the end of your article prompt if the topic has unusual names. See [Narration](Create-Narration#pronunciation-glossary).
101
+ - **See everything this run will do** → **The prompts as they will be sent** shows the article prompt exactly as it goes out, keywords filled in.
102
+ - An AI check can read the article after it is written. See [Pauses and Checks](Reviews-and-Checkpoints).
103
+ - To change the article after the run, edit it on the project page. See [Editing a Project](Editing-a-Project).
104
+
105
+ ## Related pages
106
+
107
+ - [Create Overview](Create-Overview)
108
+ - [Prompts](Prompts)
109
+ - [Intros and Outros](Intros-and-Outros)
110
+ - [Models](Models)
111
+ - [Keys and Services](Providers-and-Keys)
112
+ - [AI CLIs](AI-CLIs)
113
+ - [Multiple Voices](Multiple-Voices)
114
+ - [Other Languages](Other-Languages)