@gentbajko/slopify 4.0.0 → 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.
- package/dist/adapters/account-limits.js +1 -1
- package/dist/adapters/alignment/audio.js +1 -1
- package/dist/adapters/alignment/cache.js +1 -1
- package/dist/adapters/alignment/multilingual.js +2 -1
- package/dist/adapters/alignment/runner.js +1 -1
- package/dist/adapters/alignment/worker.js +1 -1
- package/dist/adapters/explain.js +10 -9
- package/dist/adapters/host-cli/index.js +2 -1
- package/dist/adapters/host-cli/transport.js +2 -1
- package/dist/adapters/image/bytes.js +2 -1
- package/dist/adapters/image/codex.js +6 -5
- package/dist/adapters/image/fal.js +4 -3
- package/dist/adapters/image/google.js +3 -2
- package/dist/adapters/image/models.js +2 -2
- package/dist/adapters/image/openai.js +2 -1
- package/dist/adapters/image/replicate.js +3 -2
- package/dist/adapters/image/video.js +2 -1
- package/dist/adapters/key-probes.js +1 -1
- package/dist/adapters/llm/antigravity-models.js +1 -1
- package/dist/adapters/llm/antigravity.js +7 -6
- package/dist/adapters/llm/assistant-cli.js +1 -1
- package/dist/adapters/llm/claude-code-models.js +1 -1
- package/dist/adapters/llm/claude-code.js +3 -2
- package/dist/adapters/llm/codex-models.js +1 -1
- package/dist/adapters/llm/document-workspace.js +3 -2
- package/dist/adapters/llm/image-workspace.js +3 -2
- package/dist/adapters/llm/openrouter.js +2 -1
- package/dist/adapters/llm/run-cli.js +3 -2
- package/dist/adapters/tts/gemini.js +2 -1
- package/dist/adapters/tts/inworld-async.js +2 -1
- package/dist/adapters/tts/inworld.js +3 -2
- package/dist/adapters/tts/system.js +2 -1
- package/dist/catalog/registry.js +20 -13
- package/dist/catalog/schema.js +2 -1
- package/dist/catalog/validate.js +5 -2
- package/dist/edge/http/actions.js +7 -7
- package/dist/edge/http/app.js +3 -3
- package/dist/edge/http/assistant.js +3 -1
- package/dist/edge/http/backups.js +1 -1
- package/dist/edge/http/channel-memory.js +2 -2
- package/dist/edge/http/channels.js +1 -1
- package/dist/edge/http/checkpoints.js +7 -5
- package/dist/edge/http/design-templates.js +3 -3
- package/dist/edge/http/designs.js +1 -1
- package/dist/edge/http/document-themes.js +3 -3
- package/dist/edge/http/draft-problem.js +1 -1
- package/dist/edge/http/extension-auth.js +1 -1
- package/dist/edge/http/home.js +9 -1
- package/dist/edge/http/model-checks.js +4 -4
- package/dist/edge/http/onboarding.js +29 -12
- package/dist/edge/http/outputs.js +3 -2
- package/dist/edge/http/patch-notes.js +2 -2
- package/dist/edge/http/planning.js +1 -1
- package/dist/edge/http/project-create.js +1 -1
- package/dist/edge/http/project-templates.js +2 -2
- package/dist/edge/http/projects.js +22 -4
- package/dist/edge/http/prompts.js +2 -2
- package/dist/edge/http/providers.js +9 -10
- package/dist/edge/http/refusal.js +1 -1
- package/dist/edge/http/remote-access.js +4 -4
- package/dist/edge/http/remote-guard.js +2 -2
- package/dist/edge/http/reviews.js +1 -1
- package/dist/edge/http/revision-files.js +1 -1
- package/dist/edge/http/revisions.js +4 -4
- package/dist/edge/http/schedules.js +13 -11
- package/dist/edge/http/settings.js +6 -2
- package/dist/edge/http/social.js +5 -4
- package/dist/edge/http/staging.js +1 -1
- package/dist/edge/http/storage.js +12 -4
- package/dist/edge/http/studio.js +71 -19
- package/dist/edge/http/style-preview.js +2 -2
- package/dist/edge/http/template-studio.js +12 -9
- package/dist/edge/http/trash.js +1 -1
- package/dist/edge/http/youtube-edits.js +1 -1
- package/dist/edge/mcp/excluded-routes.js +4 -3
- package/dist/edge/mcp/instructions.js +3 -3
- package/dist/edge/mcp/library-tools.js +8 -5
- package/dist/edge/mcp/remake-tools.js +7 -4
- package/dist/edge/mcp/server.js +1 -1
- package/dist/edge/mcp/tools-channels.js +9 -9
- package/dist/edge/mcp/tools-designs.js +9 -9
- package/dist/edge/mcp/tools-library.js +7 -7
- package/dist/edge/mcp/tools-planning.js +18 -18
- package/dist/edge/mcp/tools-projects.js +10 -10
- package/dist/edge/mcp/tools-publishing.js +9 -9
- package/dist/edge/mcp/tools-runs.js +9 -9
- package/dist/edge/mcp/tools-schedules.js +6 -6
- package/dist/edge/mcp/tools-setup.js +20 -14
- package/dist/edge/mcp/tools-social.js +5 -4
- package/dist/edge/mcp/tools-storage.js +3 -3
- package/dist/edge/mcp/tools-template-studio.js +18 -18
- package/dist/edge/remote-access/model.js +1 -1
- package/dist/extension/slopify-studio-chrome.zip +0 -0
- package/dist/extension/slopify-studio-firefox.zip +0 -0
- package/dist/kernel/db/migrations/0078-uploaded-from-links.sql +7 -0
- package/dist/kernel/pipeline.js +12 -0
- package/dist/kernel/ports/settings-places.js +31 -0
- package/dist/kernel/ports/system-speech.js +31 -3
- package/dist/kernel/runner/attempt.js +11 -3
- package/dist/kernel/runner/providers.js +3 -2
- package/dist/kernel/runner/standalone.js +2 -2
- package/dist/main.js +5 -3
- package/dist/model-catalog.js +20 -0
- package/dist/patch-notes/4.0.0.md +13 -13
- package/dist/patch-notes/4.1.0.md +42 -0
- package/dist/patch-notes/index.json +6 -0
- package/dist/slices/admission/listing-facts.js +95 -0
- package/dist/slices/admission/repo.js +9 -6
- package/dist/slices/admission/rules.js +7 -7
- package/dist/slices/admission/state-words.js +34 -5
- package/dist/slices/assistant/cost.js +1 -1
- package/dist/slices/assistant/model.js +10 -3
- package/dist/slices/assistant/turn.js +5 -3
- package/dist/slices/autopilot/warnings.js +1 -1
- package/dist/slices/backups/service.js +5 -5
- package/dist/slices/channels/cast-images.js +1 -1
- package/dist/slices/channels/schema.js +1 -1
- package/dist/slices/channels/videos.js +1 -1
- package/dist/slices/control/providers.js +2 -2
- package/dist/slices/designs/budget.js +1 -1
- package/dist/slices/designs/calls.js +2 -2
- package/dist/slices/designs/check-context.js +4 -4
- package/dist/slices/designs/fields.js +4 -4
- package/dist/slices/designs/gate.js +7 -5
- package/dist/slices/designs/render-input.js +1 -1
- package/dist/slices/designs/requests.js +1 -1
- package/dist/slices/designs/runner.js +1 -1
- package/dist/slices/designs/sample.js +2 -1
- package/dist/slices/designs/service.js +1 -1
- package/dist/slices/designs/template-checks.js +2 -2
- package/dist/slices/designs/template-make.js +3 -3
- package/dist/slices/designs/templates.js +3 -3
- package/dist/slices/document/fonts.js +1 -1
- package/dist/slices/document/model.js +7 -4
- package/dist/slices/document/render.js +2 -1
- package/dist/slices/document/theme-schema.js +1 -1
- package/dist/slices/document/theme.js +49 -3
- package/dist/slices/episodes/summarize.js +2 -2
- package/dist/slices/estimate/index.js +28 -22
- package/dist/slices/estimate/requests.js +4 -4
- package/dist/slices/fixes/rules.js +3 -1
- package/dist/slices/fonts/catalog.js +2 -1
- package/dist/slices/fonts/coverage.js +2 -1
- package/dist/slices/images/appearance.js +2 -1
- package/dist/slices/images/scenes.js +2 -1
- package/dist/slices/keywords/digest.js +2 -1
- package/dist/slices/keywords/rules.js +2 -2
- package/dist/slices/keywords/specs.js +5 -5
- package/dist/slices/keywords/values.js +1 -1
- package/dist/slices/library/transfer.js +3 -3
- package/dist/slices/loudness/loudnorm.js +2 -1
- package/dist/slices/loudness/model.js +3 -2
- package/dist/slices/loudness/sentence-level.js +2 -1
- package/dist/slices/model-checks/rules.js +13 -0
- package/dist/slices/model-upkeep/model.js +1 -1
- package/dist/slices/model-upkeep/switch.js +3 -3
- package/dist/slices/model-upkeep/usage.js +13 -2
- package/dist/slices/narration/breaths.js +2 -1
- package/dist/slices/narration/clean-pieces.js +2 -1
- package/dist/slices/narration/pauses-model.js +3 -2
- package/dist/slices/narration/pronunciation.js +3 -2
- package/dist/slices/notifications/subject.js +2 -2
- package/dist/slices/onboarding/copy.js +19 -2
- package/dist/slices/onboarding/first-run.js +13 -38
- package/dist/slices/onboarding/install.js +2 -1
- package/dist/slices/onboarding/model.js +26 -21
- package/dist/slices/onboarding/preferred-model.js +14 -0
- package/dist/slices/onboarding/quick-short.js +103 -64
- package/dist/slices/onboarding/sample.js +4 -1
- package/dist/slices/onboarding/state.js +7 -0
- package/dist/slices/onboarding/template.js +6 -5
- package/dist/slices/outputs/add.js +3 -2
- package/dist/slices/outputs/service.js +2 -2
- package/dist/slices/patch-notes/library.js +1 -1
- package/dist/slices/play-drafts/readiness.js +3 -3
- package/dist/slices/play-drafts/review-inputs.js +1 -1
- package/dist/slices/play-drafts/service.js +17 -7
- package/dist/slices/project-templates/next-chapter.js +2 -1
- package/dist/slices/project-templates/provider-defaults.js +22 -0
- package/dist/slices/project-templates/setup-sections.js +26 -0
- package/dist/slices/project-templates/setup.js +6 -1
- package/dist/slices/rebuild/preview-details.js +5 -5
- package/dist/slices/rebuild/recipe-preparation.js +1 -1
- package/dist/slices/rebuild/recipe-save.js +2 -2
- package/dist/slices/rebuild/recipe-validation.js +5 -4
- package/dist/slices/rebuild/recipe-voices.js +3 -2
- package/dist/slices/rebuild/recipe-work.js +4 -4
- package/dist/slices/rebuild/recovery.js +6 -6
- package/dist/slices/rebuild/remake-outdated.js +5 -5
- package/dist/slices/rebuild/review-redo.js +1 -1
- package/dist/slices/rebuild/runtime-animate.js +2 -2
- package/dist/slices/rebuild/runtime-article.js +4 -3
- package/dist/slices/rebuild/runtime-document.js +5 -4
- package/dist/slices/rebuild/runtime-export-bed.js +2 -1
- package/dist/slices/rebuild/runtime-export-edit.js +2 -1
- package/dist/slices/rebuild/runtime-export-inputs.js +5 -4
- package/dist/slices/rebuild/runtime-export-short.js +1 -1
- package/dist/slices/rebuild/runtime-export.js +4 -3
- package/dist/slices/rebuild/runtime-image.js +4 -3
- package/dist/slices/rebuild/runtime-local.js +3 -2
- package/dist/slices/rebuild/runtime-narration-text.js +3 -2
- package/dist/slices/rebuild/runtime-provider.js +7 -6
- package/dist/slices/rebuild/runtime-review.js +6 -5
- package/dist/slices/rebuild/runtime-shorts.js +6 -5
- package/dist/slices/rebuild/runtime-store.js +17 -2
- package/dist/slices/rebuild/runtime-subtitles.js +13 -12
- package/dist/slices/rebuild/runtime-voices.js +2 -1
- package/dist/slices/rebuild/runtime-youtube.js +3 -2
- package/dist/slices/rebuild/service-readiness.js +11 -3
- package/dist/slices/research/synthesis.js +3 -2
- package/dist/slices/reviews/external-model.js +1 -1
- package/dist/slices/reviews/holds.js +5 -4
- package/dist/slices/reviews/model.js +8 -5
- package/dist/slices/reviews/rules.js +3 -3
- package/dist/slices/reviews/verdict.js +2 -1
- package/dist/slices/revisions/image-plan.js +1 -1
- package/dist/slices/revisions/mutation-assets.js +2 -1
- package/dist/slices/revisions/mutations.js +3 -2
- package/dist/slices/schedules/agenda.js +7 -5
- package/dist/slices/schedules/design-check.js +4 -4
- package/dist/slices/schedules/design-run.js +3 -3
- package/dist/slices/schedules/repo.js +6 -5
- package/dist/slices/schedules/schema.js +3 -0
- package/dist/slices/schedules/topics.js +5 -5
- package/dist/slices/settings/first-run.js +6 -32
- package/dist/slices/settings/health.js +30 -15
- package/dist/slices/settings/key-test.js +1 -1
- package/dist/slices/settings/model.js +4 -2
- package/dist/slices/settings/playback.js +2 -2
- package/dist/slices/shorts/keep.js +2 -1
- package/dist/slices/shorts/pick.js +4 -3
- package/dist/slices/shorts/prompts.js +2 -1
- package/dist/slices/shorts/render.js +3 -2
- package/dist/slices/social/media.js +5 -4
- package/dist/slices/social/pack.js +1 -1
- package/dist/slices/social/post-prompt.js +2 -1
- package/dist/slices/social/reshape.js +2 -2
- package/dist/slices/social/serve.js +1 -1
- package/dist/slices/social/service.js +3 -2
- package/dist/slices/social/state.js +1 -1
- package/dist/slices/storage/backup-import.js +2 -2
- package/dist/slices/storage/portable.js +1 -1
- package/dist/slices/storage/trim.js +23 -13
- package/dist/slices/studio/calendar.js +3 -1
- package/dist/slices/studio/disclosure.js +4 -4
- package/dist/slices/studio/model.js +1 -1
- package/dist/slices/studio/pack.js +9 -8
- package/dist/slices/studio/plan.js +1 -1
- package/dist/slices/studio/settings.js +6 -6
- package/dist/slices/studio/videos.js +23 -4
- package/dist/slices/style-preview/render.js +3 -3
- package/dist/slices/style-preview/schema.js +1 -1
- package/dist/slices/subtitles/captions.js +1 -1
- package/dist/slices/template-studio/anatomy-view.js +46 -3
- package/dist/slices/template-studio/bakeoff.js +3 -3
- package/dist/slices/template-studio/budget.js +6 -3
- package/dist/slices/template-studio/cards.js +78 -0
- package/dist/slices/template-studio/checks.js +99 -50
- package/dist/slices/template-studio/for-all.js +5 -5
- package/dist/slices/template-studio/free-video.js +1 -1
- package/dist/slices/template-studio/free.js +5 -5
- package/dist/slices/template-studio/model.js +19 -15
- package/dist/slices/template-studio/pack-import.js +14 -14
- package/dist/slices/template-studio/pack.js +9 -7
- package/dist/slices/template-studio/paid.js +12 -5
- package/dist/slices/template-studio/quote.js +18 -11
- package/dist/slices/template-studio/ready.js +7 -7
- package/dist/slices/template-studio/runner.js +1 -1
- package/dist/slices/template-studio/save.js +12 -12
- package/dist/slices/template-studio/say-it-as.js +3 -3
- package/dist/slices/template-studio/schedule-gate.js +1 -1
- package/dist/slices/template-studio/schedule-price.js +3 -1
- package/dist/slices/template-studio/schedule-sample.js +5 -1
- package/dist/slices/template-studio/schema.js +25 -0
- package/dist/slices/template-studio/service.js +3 -1
- package/dist/slices/template-studio/status.js +26 -9
- package/dist/slices/template-studio/topic.js +3 -3
- package/dist/slices/thumbnail/by-llm.js +1 -1
- package/dist/slices/uploads/repo.js +37 -1
- package/dist/slices/uploads/rules.js +3 -2
- package/dist/slices/video/edit-list.js +2 -2
- package/dist/slices/video/edit-settings.js +1 -1
- package/dist/slices/video/encoding.js +14 -5
- package/dist/slices/video/ffmpeg.js +2 -2
- package/dist/slices/video/plan.js +2 -1
- package/dist/slices/video/slideshow.js +1 -1
- package/dist/slices/voices/attribution.js +3 -2
- package/dist/slices/voices/model.js +9 -8
- package/dist/slices/voices/script.js +2 -1
- package/dist/slices/youtube/answer.js +2 -1
- package/dist/slices/youtube/edits-repo.js +1 -1
- package/dist/tutorials/AI-CLIs.md +25 -25
- package/dist/tutorials/Agents-MCP.md +32 -32
- package/dist/tutorials/Assistant.md +5 -5
- package/dist/tutorials/Backups.md +7 -7
- package/dist/tutorials/Calendar.md +17 -25
- package/dist/tutorials/Cast-Library.md +19 -19
- package/dist/tutorials/Channels.md +40 -35
- package/dist/tutorials/Costs-and-Run-Cost.md +38 -40
- package/dist/tutorials/Create-Article.md +114 -0
- package/dist/tutorials/Create-Extras.md +112 -0
- package/dist/tutorials/Create-Images.md +165 -0
- package/dist/tutorials/Create-Narration.md +178 -0
- package/dist/tutorials/Create-Overview.md +244 -0
- package/dist/tutorials/Create-Video-and-Style.md +144 -0
- package/dist/tutorials/Docker.md +3 -3
- package/dist/tutorials/Document-Themes.md +32 -32
- package/dist/tutorials/Editing-a-Project.md +94 -94
- package/dist/tutorials/FAQ.md +18 -18
- package/dist/tutorials/First-Launch-and-Welcome.md +50 -64
- package/dist/tutorials/Home-and-Projects.md +101 -76
- package/dist/tutorials/Home.md +33 -33
- package/dist/tutorials/Install.md +13 -13
- package/dist/tutorials/Intros-and-Outros.md +33 -34
- package/dist/tutorials/Keyboard-Shortcuts-and-Command-Palette.md +62 -58
- package/dist/tutorials/Keywords-Slopify-Fills.md +21 -21
- package/dist/tutorials/Models.md +27 -27
- package/dist/tutorials/Multiple-Voices.md +41 -40
- package/dist/tutorials/Narration-Aliases-and-Glossary.md +14 -14
- package/dist/tutorials/Notifications.md +21 -17
- package/dist/tutorials/Other-Languages.md +15 -15
- package/dist/tutorials/PDF-Documents.md +38 -29
- package/dist/tutorials/Posting-to-Social-Sites.md +12 -12
- package/dist/tutorials/Project-Page.md +118 -120
- package/dist/tutorials/Prompts-and-Templates.md +84 -0
- package/dist/tutorials/Prompts.md +45 -45
- package/dist/tutorials/Providers-and-Keys.md +105 -98
- package/dist/tutorials/Publishing-to-YouTube.md +31 -31
- package/dist/tutorials/Recovery-and-Retries.md +31 -31
- package/dist/tutorials/Remote-Access.md +2 -2
- package/dist/tutorials/Reviews-and-Checkpoints.md +90 -93
- package/dist/tutorials/Schedules.md +27 -28
- package/dist/tutorials/Settings-Reference.md +182 -204
- package/dist/tutorials/Shorts.md +34 -33
- package/dist/tutorials/Start-at-Login.md +3 -3
- package/dist/tutorials/Studio-Extension.md +22 -24
- package/dist/tutorials/Template-Studio.md +45 -42
- package/dist/tutorials/Templates.md +50 -79
- package/dist/tutorials/Trash.md +4 -4
- package/dist/tutorials/Troubleshooting.md +44 -44
- package/dist/tutorials/Uninstalling-and-Moving.md +5 -5
- package/dist/tutorials/Updating-and-Patch-Notes.md +18 -18
- package/dist/tutorials/Video-Editing.md +34 -34
- package/dist/tutorials/Where-Your-Files-Live.md +10 -10
- package/dist/tutorials/YouTube-Description.md +26 -26
- package/dist/tutorials/Your-First-Short.md +35 -35
- package/dist/tutorials/_Sidebar.md +15 -15
- package/dist/web/assets/index-BNftKQrA.css +1 -0
- package/dist/web/assets/index-Cpa58woP.js +459 -0
- package/dist/web/assets/pdf-BKh8f7R6.js +56 -0
- package/dist/web/assets/pdf.worker.min-BmVo14Nb.mjs +28 -0
- package/dist/web/assets/pdf.worker.min-D7i8o3wR.js +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +2 -2
- package/dist/tutorials/Library-Overview.md +0 -76
- package/dist/tutorials/Play-Images.md +0 -165
- package/dist/tutorials/Play-Narration.md +0 -167
- package/dist/tutorials/Play-Outputs.md +0 -109
- package/dist/tutorials/Play-Overview.md +0 -227
- package/dist/tutorials/Play-Title-and-Article.md +0 -136
- package/dist/tutorials/Play-Video-and-Style.md +0 -143
- package/dist/web/assets/index-CkAI_2E7.css +0 -1
- package/dist/web/assets/index-DcD0cdfo.js +0 -334
- package/dist/web/assets/pdf-TODRwF31.js +0 -54
- package/dist/web/assets/pdf.worker.min-Dswkl-cV.mjs +0 -29
- package/dist/web/assets/pdf.worker.min-zC6nfbxG.js +0 -1
|
@@ -1,48 +1,48 @@
|
|
|
1
1
|
# Keywords Slopify fills
|
|
2
2
|
|
|
3
|
-
Most `{{keywords}}` in a prompt are yours: each becomes a
|
|
3
|
+
Most `{{keywords}}` in a prompt are yours: each becomes a question on Create that you answer once per video. The keywords on this page are different. Slopify fills them itself, so they never become questions, and each one is written with the `Slopify_` prefix, like `{{Slopify_Title}}` or `{{Slopify_Thumbnail_Text}}`.
|
|
4
4
|
|
|
5
5
|
The whole `Slopify_` prefix is Slopify's. `{{Title}}`, `{{Channel}}` and `{{Date}}` stay ordinary keywords of your own, so no prompt you already have changes meaning.
|
|
6
6
|
|
|
7
|
-
In the prompt editor,
|
|
7
|
+
In the prompt editor, **Insert a keyword Slopify fills** above the text lists the keywords the prompt's kind can use, each written as it goes in (`{{Slopify_Title}}`) over what it fills in and, for the ones made by an AI call, that call; pick one to put it where the cursor is. Hover a keyword in the text to see what it fills in, an example, when it exists, which prompts can use it and what it costs.
|
|
8
8
|
|
|
9
9
|
## How they work
|
|
10
10
|
|
|
11
11
|
- **Using a keyword turns on what fills it.** There is no switch to find: `{{Slopify_Summary}}` in a prompt adds the keyword digest to the run, `{{Slopify_Setting}}` adds the scenes call.
|
|
12
12
|
- **A line with nothing to fill is left out.** A `Series: {{Slopify_Series}}` line disappears when the channel has no series brief, and so does a `Next: {{Slopify_Next_Video}}` line when nothing is planned after this video.
|
|
13
13
|
- **Your own value wins.** A prompt saved before the prefix was reserved may already have a field named, say, `{{Slopify_Title}}`. When the project has a value for it, that value is used.
|
|
14
|
-
- **Each keyword works only where it can be filled.** `{{Slopify_Chapters}}` and `{{Slopify_Summary}}` can't be used in the Article prompt: the article isn't written yet when that prompt runs. The editor marks a misuse in place and
|
|
14
|
+
- **Each keyword works only where it can be filled.** `{{Slopify_Chapters}}` and `{{Slopify_Summary}}` can't be used in the Article prompt: the article isn't written yet when that prompt runs. The editor marks a misuse in place and Create refuses the run, naming the prompt and where the keyword works.
|
|
15
15
|
- **No keyword goes in the project title.** Slopify fills several of them from the title.
|
|
16
16
|
- **An unknown `Slopify_` name is refused when you save a prompt.** Rename it, for example `{{Slopify_Wish}}` to `{{Wish}}`. A prompt that already had such a name saves as it was and keeps asking for its value.
|
|
17
17
|
|
|
18
18
|
## Facts Slopify already has
|
|
19
19
|
|
|
20
|
-
Free: no AI call. Copied when the run starts, so later changes to the channel or its other videos never change a project already made. In **Edit
|
|
20
|
+
Free: no AI call. Copied when the run starts, so later changes to the channel or its other videos never change a project already made. In **Edit settings** → **Title and keywords**, **Refresh keyword facts** copies them again.
|
|
21
21
|
|
|
22
22
|
| Keyword | Fills in | Example | Works in |
|
|
23
23
|
| --- | --- | --- | --- |
|
|
24
|
-
| `{{Slopify_Title}}` | The video's title, with its keywords filled in | How Lighthouses Were Built on Bare Rock | Every prompt and
|
|
25
|
-
| `{{Slopify_Channel}}` | The project's channel name | Quiet Histories | Every prompt and
|
|
26
|
-
| `{{Slopify_Series}}` | The channel's series brief (
|
|
27
|
-
| `{{Slopify_Links}}` | The channel's links, one per line | Website: https://example.com | Every prompt and
|
|
28
|
-
| `{{Slopify_Previous_Video}}` | Title and link of the channel's previous video in the same series | The Canal Age – https://youtu.be/abc123 | Every prompt and
|
|
29
|
-
| `{{Slopify_Next_Video}}` | Title of the next planned video in the same series and posting plan line | Tea Clippers and the Race Home | Every prompt and
|
|
30
|
-
| `{{Slopify_Episode}}` | This video's number in its series on the channel | 7 | Every prompt and
|
|
31
|
-
| `{{Slopify_Cast}}` | The channel's cast members with their descriptions | Mira: a keeper's daughter who kept the logbook | Every prompt and
|
|
32
|
-
| `{{Slopify_Covered_Before}}` | The titles the channel already made, so the article avoids repeating them | The Canal Age | Every prompt and
|
|
33
|
-
| `{{Slopify_Brand}}` | The brand kit's caption and title
|
|
34
|
-
| `{{Slopify_Release_Date}}` | The release date from the posting plan, read when the step runs | Thursday 22 October 2026 | Every prompt and
|
|
24
|
+
| `{{Slopify_Title}}` | The video's title, with its keywords filled in | How Lighthouses Were Built on Bare Rock | Every prompt, intro and outro |
|
|
25
|
+
| `{{Slopify_Channel}}` | The project's channel name | Quiet Histories | Every prompt, intro and outro |
|
|
26
|
+
| `{{Slopify_Series}}` | The channel's series brief (the channel's page, Name and look) | Calm histories of how things were made | Every prompt, intro and outro |
|
|
27
|
+
| `{{Slopify_Links}}` | The channel's links, one per line | Website: https://example.com | Every prompt, intro and outro |
|
|
28
|
+
| `{{Slopify_Previous_Video}}` | Title and link of the channel's previous video in the same series | The Canal Age – https://youtu.be/abc123 | Every prompt, intro and outro |
|
|
29
|
+
| `{{Slopify_Next_Video}}` | Title of the next planned video in the same series and posting plan line | Tea Clippers and the Race Home | Every prompt, intro and outro |
|
|
30
|
+
| `{{Slopify_Episode}}` | This video's number in its series on the channel | 7 | Every prompt, intro and outro |
|
|
31
|
+
| `{{Slopify_Cast}}` | The channel's cast members with their descriptions | Mira: a keeper's daughter who kept the logbook | Every prompt, intro and outro |
|
|
32
|
+
| `{{Slopify_Covered_Before}}` | The titles the channel already made, so the article avoids repeating them | The Canal Age | Every prompt, intro and outro |
|
|
33
|
+
| `{{Slopify_Brand}}` | The brand kit's caption and title colors and font names | Colors: #F5C542. Fonts: Barlow. | Image and Thumbnail prompts |
|
|
34
|
+
| `{{Slopify_Release_Date}}` | The release date from the posting plan, read when the step runs | Thursday 22 October 2026 | Every prompt, intro and outro |
|
|
35
35
|
| `{{Slopify_Chapters}}` | The article's chapter titles, one per line | The first lamps | Every prompt except Article and Script |
|
|
36
36
|
| `{{Slopify_Duration}}` | The finished video's length | 42 min 10 s | Description, Shorts, Review and Post prompts |
|
|
37
37
|
|
|
38
38
|
- In a **Description** prompt, `{{Slopify_Links}}`, `{{Slopify_Previous_Video}}` and `{{Slopify_Next_Video}}` stay links the description fills when it is shown or copied (`{{Previous video}}`, `{{Next video}}`, `{{Patreon}}`…), so changing a link changes every description at once. See [YouTube description](YouTube-Description).
|
|
39
|
-
- Moving the release date later never
|
|
39
|
+
- Moving the release date later never makes anything again, and neither does a new length.
|
|
40
40
|
- A brand-kit font installed on the computer (not uploaded to Slopify) is left out of `{{Slopify_Brand}}`.
|
|
41
|
-
-
|
|
41
|
+
- An intro or outro set to **Say these exact words** is narrated as written, so it can't say `{{Slopify_Release_Date}}`: set it to **Let the AI write it from these instructions**, which sends it to the AI as a request.
|
|
42
42
|
|
|
43
43
|
## Written from the article
|
|
44
44
|
|
|
45
|
-
One shared AI call per run, the **keyword digest**, writes every one of these the run uses, once the article exists. It uses the
|
|
45
|
+
One shared AI call per run, the **keyword digest**, writes every one of these the run uses, once the article exists. It uses the AI that writes the article (**Written by**) and shows in the cost estimate as **Keyword digest**.
|
|
46
46
|
|
|
47
47
|
| Keyword | Fills in | Example | Works in |
|
|
48
48
|
| --- | --- | --- | --- |
|
|
@@ -57,13 +57,13 @@ With **Article** set to Off these can't be used: there is no article to write th
|
|
|
57
57
|
|
|
58
58
|
## Per picture
|
|
59
59
|
|
|
60
|
-
Written for each picture by one AI call that reads the article, like the scenes of [Scenes from the article](
|
|
60
|
+
Written for each picture by one AI call that reads the article, like the scenes of [Scenes from the article](Create-Images#scenes-from-the-article).
|
|
61
61
|
|
|
62
62
|
| Keyword | Fills in | Example | Works in |
|
|
63
63
|
| --- | --- | --- | --- |
|
|
64
64
|
| `{{Slopify_Scene}}` | What this picture shows: a moment of the article | A keeper climbs the spiral stair at dusk | Image and Thumbnail prompts |
|
|
65
65
|
| `{{Slopify_Setting}}` | The era and place of that moment, so the picture stays period-correct | A rocky Scottish coast, early 19th century | Image and Thumbnail prompts |
|
|
66
|
-
| `{{Slopify_Mood}}` | The feeling of that moment, for light and
|
|
66
|
+
| `{{Slopify_Mood}}` | The feeling of that moment, for light and color | tense | Image and Thumbnail prompts |
|
|
67
67
|
| `{{Slopify_Appearance}}` | How the video's subject and the characters in the picture look, looked up on the web | Mira: a wool coat and oilskin hat, a brass lamp | Image and Thumbnail prompts |
|
|
68
68
|
|
|
69
69
|
- `{{Slopify_Scene}}`, `{{Slopify_Setting}}` and `{{Slopify_Mood}}` turn scenes on for the picture whose prompt uses them, even with Images → **Scenes from the article** off. That costs one AI call per run, shared by every picture.
|
|
@@ -82,6 +82,6 @@ The editor offers **Update to new names** on a prompt that still uses them. Rena
|
|
|
82
82
|
## Related pages
|
|
83
83
|
|
|
84
84
|
- [Prompts](Prompts)
|
|
85
|
-
- [Images](
|
|
85
|
+
- [Create: Images](Create-Images)
|
|
86
86
|
- [YouTube description](YouTube-Description)
|
|
87
87
|
- [Editing a project](Editing-a-Project)
|
package/dist/tutorials/Models.md
CHANGED
|
@@ -6,9 +6,9 @@ Slopify keeps a model catalogue: the list of models, prices and retirements that
|
|
|
6
6
|
|
|
7
7
|
## What the catalogue covers
|
|
8
8
|
|
|
9
|
-
The catalogue lists the models of the
|
|
9
|
+
The catalogue lists the models of the services that take an API key:
|
|
10
10
|
|
|
11
|
-
| Kind |
|
|
11
|
+
| Kind | Services |
|
|
12
12
|
|---|---|
|
|
13
13
|
| Text | OpenRouter |
|
|
14
14
|
| Speech | ElevenLabs, OpenAI, Cartesia, Inworld |
|
|
@@ -17,9 +17,9 @@ The catalogue lists the models of the providers that take an API key:
|
|
|
17
17
|
|
|
18
18
|
For each model it holds a name, a price (per token, per character, per image or per second) and whether the model is retired. A model with no price is counted as unknown, never as free.
|
|
19
19
|
|
|
20
|
-
The command-line tools (Claude Code, Codex, Gemini) are not in the catalogue. Their pickers show the models the tool installed on your computer offers, and **Check
|
|
20
|
+
The command-line tools (Claude Code, Codex, Gemini) are not in the catalogue. Their pickers show the models the tool installed on your computer offers, and **Check every service** in Settings → Keys & services checks them. See [AI CLIs](AI-CLIs).
|
|
21
21
|
|
|
22
|
-
The catalogue also sets how many calls each keyed
|
|
22
|
+
The catalogue also sets how many calls each keyed service runs at once (3 for most, 5 for Inworld).
|
|
23
23
|
|
|
24
24
|
## How it stays current
|
|
25
25
|
|
|
@@ -50,7 +50,7 @@ The section shows:
|
|
|
50
50
|
|
|
51
51
|
| Row | What it shows |
|
|
52
52
|
|---|---|
|
|
53
|
-
| **
|
|
53
|
+
| **Catalog file** | The path of your local catalogue file (`models.yaml` in Slopify's data folder). |
|
|
54
54
|
| **Verified** | The date the catalogue's prices were last verified. |
|
|
55
55
|
| **Last checked** | When the last automatic or manual check ran, and what it changed. |
|
|
56
56
|
|
|
@@ -69,19 +69,19 @@ This overwrites the local catalogue with the published one and drops any edits y
|
|
|
69
69
|
|
|
70
70
|
## Edit the catalogue yourself
|
|
71
71
|
|
|
72
|
-
The catalogue is a plain YAML file at the path shown under **
|
|
72
|
+
The catalogue is a plain YAML file at the path shown under **Catalog file**. You can add a model or switch one off in it; Slopify reloads it when it changes, and the daily check keeps your additions.
|
|
73
73
|
|
|
74
74
|
If the file is missing or has a mistake, Slopify keeps using the last working list and shows: "Your models.yaml file is missing or has a mistake, so Slopify is still using the last working model list." Fix the file, or use **Replace with published file**. The automatic check never overwrites a file that has a mistake in it.
|
|
75
75
|
|
|
76
76
|
## Switch away from a retired model
|
|
77
77
|
|
|
78
|
-
**Retired models in use** lists every template, schedule,
|
|
78
|
+
**Retired models in use** lists every template, schedule, Create draft and project (with steps still to run) whose model is retired or no longer listed. Nothing changes by itself: a run that reaches a retired model stops and says so.
|
|
79
79
|
|
|
80
80
|
Each row shows:
|
|
81
81
|
|
|
82
82
|
- the kind (**Template**, **Schedule**, **Draft** or **Project**) and its name,
|
|
83
|
-
- which choice it is (**
|
|
84
|
-
- a button **Switch to <model>** with the suggested replacement: the active model from the same
|
|
83
|
+
- which choice it is (**Writing model**, **Voice model**, **Image model** or **Animation model**), the model, and whether it is "retired" or "no longer listed",
|
|
84
|
+
- a button **Switch to <model>** with the suggested replacement: the active model from the same service whose ID shares the longest start with the old one.
|
|
85
85
|
|
|
86
86
|
To switch:
|
|
87
87
|
|
|
@@ -91,27 +91,27 @@ To switch:
|
|
|
91
91
|
|
|
92
92
|
What a switch does:
|
|
93
93
|
|
|
94
|
-
- A template gets a new saved version, and the schedules that ran its latest version move along with it. When its newest version waits
|
|
95
|
-
- A project gets a new saved version, as **Edit
|
|
94
|
+
- A template gets a new saved version, and the schedules that ran its latest version move along with it. When its newest version waits for your approval in [Edit template](Template-Studio#approve-for-schedules) and the schedules run an older one, that older version is switched too (as a new version that keeps its approval), so no schedule keeps running the retired model; your newer version stays the newest, switched as well.
|
|
95
|
+
- A project gets a new saved version, as **Edit settings** would make.
|
|
96
96
|
- A draft is updated in place.
|
|
97
97
|
|
|
98
98
|
Rows that cannot be switched here say why and what to do:
|
|
99
99
|
|
|
100
100
|
| Row says | What to do |
|
|
101
101
|
|---|---|
|
|
102
|
-
| **No replacement** ("This provider has no other model to switch to.") | Choose another
|
|
102
|
+
| **No replacement** ("This provider has no other model to switch to.") | Choose another service for this step and save. |
|
|
103
103
|
| "This schedule runs an older version of the template …" | In the schedule, choose **Edit**, pick the template again so it runs the latest version, then save. |
|
|
104
104
|
| "This project is running." | Wait for it to finish or pause it, then switch. |
|
|
105
105
|
|
|
106
106
|
When nothing is affected, the section says **Nothing uses a retired model.**
|
|
107
107
|
|
|
108
|
-
You don't have to come here to see it: a template or schedule that picks a retired model is flagged on its own row in **
|
|
108
|
+
You don't have to come here to see it: a template or schedule that picks a retired model is flagged on its own row in **Templates** and **Calendar → Schedules**, with the same **Switch to <model>** button. See [Templates](Templates#retired-models) and [Schedules](Schedules#manage-a-schedule).
|
|
109
109
|
|
|
110
|
-
**Check
|
|
110
|
+
**Check every service** in Settings → Keys & services also reports retired models under **Chosen models**, and **Model reachable** asks each keyed service whether it still answers for the models you chose. See [Keys and Services](Providers-and-Keys#check-every-service).
|
|
111
111
|
|
|
112
112
|
## When a run reaches a model that is gone
|
|
113
113
|
|
|
114
|
-
If a run starts a step whose model is no longer in the list, it stops with a message such as "The chosen … model is no longer in Slopify's model list." Open the project, choose **Edit
|
|
114
|
+
If a run starts a step whose model is no longer in the list, it stops with a message such as "The chosen … model is no longer in Slopify's model list." Open the project, choose **Edit settings**, change the model (under **Written by**, **Read by** or **Images by**), save, then use **Continue the run**. See [Recovery-and-Retries](Recovery-and-Retries).
|
|
115
115
|
|
|
116
116
|
## Models that work for you
|
|
117
117
|
|
|
@@ -122,42 +122,42 @@ The catalogue says which models exist. **Settings → Models → Models that wor
|
|
|
122
122
|
| **✓ works · checked 2 h ago** | A check call succeeded (**used** instead of **checked** when it was a real run). |
|
|
123
123
|
| **? listed for you · not checked** | Your key's or CLI's own model list names it; nothing has tried it yet. |
|
|
124
124
|
| **? not checked** | Only Slopify's model list names it. |
|
|
125
|
-
| **✕ not on your plan** | The
|
|
125
|
+
| **✕ not on your plan** | The service refused it for your account. The line under the picker quotes the service's words. |
|
|
126
126
|
| **⚠ retiring 30 Nov → replacement** | The model is due to retire; switch before that day. |
|
|
127
127
|
|
|
128
128
|
Where they come from:
|
|
129
129
|
|
|
130
130
|
- **Listed for you** comes from free reads: OpenAI, Google, ElevenLabs and OpenRouter list their models for your key, Replicate and fal.ai answer for each model's own page, and each CLI lists its own. Cartesia and Inworld have no such list, so their models stay **not checked** until a check.
|
|
131
|
-
- **Check models** (one button per
|
|
132
|
-
- **Real runs** teach it too: a model a run used is marked as working, and one the
|
|
131
|
+
- **Check models** (one button per service) sends each model the smallest request: a one-word reply at the lowest thinking setting, a voice saying "Hi", one small square image. When that costs money it first shows the price at list rates, such as "about $0.04", and nothing is sent until you confirm. A CLI's checks use its plan's allowance instead. Image-to-video models are listed, never checked.
|
|
132
|
+
- **Real runs** teach it too: a model a run used is marked as working, and one the service refuses as not on your plan or not found is marked at once, with the service's sentence.
|
|
133
133
|
|
|
134
|
-
Each row shows when that
|
|
134
|
+
Each row shows when that service was last checked and what its checks have cost so far. A check that works is counted at what it used; one that fails after the service took the request (it timed out, the connection dropped, the content was refused or the answer was unusable) is counted at its estimate, since the provider may have billed it. One the provider turned down up front (a rejected key, a rate limit, a model not on your plan) costs nothing. A new key starts every row over.
|
|
135
135
|
|
|
136
136
|
The standings only sort and filter the pickers. A run never asks for them: a model marked **not on your plan** still runs exactly as before if it is chosen.
|
|
137
137
|
|
|
138
138
|
## Automatic checks
|
|
139
139
|
|
|
140
|
-
With **Automatic checks** on **Free and near-free checks only** (the default), Slopify reads the key's model list and checks models by itself when you save a key, when a CLI becomes usable, and once a week. It checks only the models you use, ones that already worked and newly listed ones, at most 25 per
|
|
140
|
+
With **Automatic checks** on **Free and near-free checks only** (the default), Slopify reads the key's model list and checks models by itself when you save a key, when a CLI becomes usable, and once a week. It checks only the models you use, ones that already worked and newly listed ones, at most 25 per service, and only when a check is free, uses a CLI plan, or costs well under a tenth of a cent. Image checks never run by themselves. **Off** leaves checks to **Check models**; the free model-list reads still run when a picker opens.
|
|
141
141
|
|
|
142
142
|
## New for you
|
|
143
143
|
|
|
144
|
-
Models that start working for you after the first check appear under **New for you**, newest first, and Home shows a line such as "2 new models work for you" that opens this page. **Compare on a sample** asks which template to try it on and opens that template's studio with [Compare models](Template-Studio#compare-models) ready for it; nothing is spent until you press Compare there. Choose one in a picker to use it, or **Dismiss** it.
|
|
144
|
+
Models that start working for you after the first check appear under **New for you**, newest first, and Home shows a line such as "2 new AI models work for you" that opens this page (not before you have a project of your own: until then Home shows what a video still needs). **Compare on a sample** asks which template to try it on and opens that template's studio with [Compare models](Template-Studio#compare-models) ready for it; nothing is spent until you press Compare there. Choose one in a picker to use it, or **Dismiss** it.
|
|
145
145
|
|
|
146
|
-
## Pick models on
|
|
146
|
+
## Pick models on Create
|
|
147
147
|
|
|
148
|
-
On
|
|
148
|
+
On Create, each service group has a model picker fed by the catalogue (or by the CLI for command-line tools):
|
|
149
149
|
|
|
150
150
|
- By default it shows the models that work for you, plus the one already chosen, whatever its standing. Until something works for you it shows the listed models, then every known one, so the list is never empty. **Show all** brings back the rest.
|
|
151
151
|
- The line under the picker says what is known about the chosen model, with **Check** (or **Check models** before anything was checked), which shows the price first when there is one.
|
|
152
|
-
- The refresh button (**Refresh models**) asks the
|
|
152
|
+
- The refresh button (**Refresh models**) asks the service for its current list.
|
|
153
153
|
- **Custom ID** lets you type a model ID the list does not show; **Use list** goes back.
|
|
154
|
-
- **Thinking** (text) or **Effort** (images) appears only when the model offers levels. **Model default** leaves it to the
|
|
154
|
+
- **Thinking** (text) or **Effort** (images) appears only when the model offers levels. **Model default** leaves it to the service.
|
|
155
155
|
|
|
156
|
-
See [
|
|
156
|
+
See [Create Overview](Create-Overview) and the Create pages for each row.
|
|
157
157
|
|
|
158
158
|
## Related pages
|
|
159
159
|
|
|
160
|
-
- [
|
|
160
|
+
- [Keys and Services](Providers-and-Keys)
|
|
161
161
|
- [AI-CLIs](AI-CLIs)
|
|
162
162
|
- [Costs-and-Run-Cost](Costs-and-Run-Cost)
|
|
163
163
|
- [Templates](Templates)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Multiple Voices
|
|
2
2
|
|
|
3
|
-
A run can be narrated by several speakers instead of one voice reading the article. You pick a format (Audiobook, Podcast, Radio drama or Interview), give each speaker a voice, and Slopify has the
|
|
3
|
+
A run can be narrated by several speakers instead of one voice reading the article. You pick a format (Audiobook, Podcast, Radio drama or Interview), give each speaker a voice, and Slopify has the AI write or split the script into speaker turns. You get a video whose captions know who is talking and, if you want them, an MP3 and an M4B audiobook file with chapters.
|
|
4
4
|
|
|
5
|
-
**Where to find it:**
|
|
5
|
+
**Where to find it:** Create → **Narration** row → **Speakers** (the disclosure under the voice picker). On a finished project: **Edit settings** → **Narration** → **Speakers**.
|
|
6
6
|
|
|
7
7
|
## Formats
|
|
8
8
|
|
|
@@ -18,35 +18,36 @@ The **Format** list under Speakers decides how many voices the run uses and how
|
|
|
18
18
|
|
|
19
19
|
You can rename, recast or remove the starter speakers. A run can have up to 10 speakers.
|
|
20
20
|
|
|
21
|
-
When the channel has hosts (cast members marked **One of the channel's hosts** that have a voice), a new **Podcast** or **Interview** starts with them as its speakers instead of Alex and Sam, or Host and Guest. See [Cast
|
|
21
|
+
When the channel has hosts (cast members marked **One of the channel's hosts** that have a voice), a new **Podcast** or **Interview** starts with them as its speakers instead of Alex and Sam, or Host and Guest. See [Cast](Cast-Library#make-a-member-one-of-the-channels-hosts).
|
|
22
22
|
|
|
23
|
-
The **speaker panel** (Podcast and Interview) is a row of tiles, one per speaker, with the one talking lit in their
|
|
23
|
+
The **speaker panel** (Podcast and Interview) is a row of tiles, one per speaker, with the one talking lit in their color and their name as a lower third. It is drawn together with the captions shown in the video, so set **Captions** to **Show captions in the video** under Create → **Video and style** to see it. A speaker added from a channel's cast whose member has a reference picture shows that picture in their tile (the member's first picture, cropped square, taken when the run starts); everyone else shows their initials. Adding a picture to the cast later does not change projects already made.
|
|
24
24
|
|
|
25
25
|
## Set up a multi-voice run
|
|
26
26
|
|
|
27
|
-
1. On
|
|
27
|
+
1. On Create, open the **Narration** row and pick the voice **Service**, **Model** and **Voice** under **Read by** as usual. This voice reads the intro and outro; the speakers read the article.
|
|
28
28
|
2. Open **Speakers** and choose a **Format**.
|
|
29
29
|
3. Choose where the **Script** comes from (see [The script](#the-script)).
|
|
30
|
-
4. For each speaker, set a **Speaker name
|
|
30
|
+
4. For each speaker, set a **Speaker name** and **Role**, and under **<name> is read by** the **Service**, **Model** and **Voice**. Add more with **Add speaker**, or pick someone from **Add from the cast**.
|
|
31
31
|
5. Optionally set **Pace** and **Pronunciations** per speaker, and press **Audition** to hear a speaker before the run.
|
|
32
32
|
6. Set **Gap between turns** and the switches below it.
|
|
33
|
-
7. For a podcast or interview, set Captions to **
|
|
34
|
-
8.
|
|
33
|
+
7. For a podcast or interview, set **Captions** to **Show captions in the video** so the speaker panel shows.
|
|
34
|
+
8. Check the estimate in the rail and press **Make the podcast** (or **Make the audiobook**, **Make the video**).
|
|
35
35
|
|
|
36
|
-
If something is missing,
|
|
36
|
+
If something is missing, Create names it before you can start, for example "A podcast needs at least two speakers" or "An audiobook needs a narrator. Set one speaker's role to Narrator under Speakers".
|
|
37
37
|
|
|
38
38
|
## The script
|
|
39
39
|
|
|
40
40
|
| Script option | What it does | Cost |
|
|
41
41
|
|---|---|---|
|
|
42
|
-
| **Write a script (Script prompt)** | The
|
|
43
|
-
| **Split the article into speakers** | Keeps the article as written or pasted, then the
|
|
42
|
+
| **Write a script (Script prompt)** | The AI writes speaker turns from one of your **Script** prompts, one `Name: words` paragraph per turn. The article prompt picker on the Article row becomes a **Script prompt** picker. | One AI call, in place of the article call |
|
|
43
|
+
| **Split the article into speakers** | Keeps the article as written or pasted, then the AI hands its narration and dialogue to the speakers. Audiobook only. | One extra AI call |
|
|
44
|
+
| **Adapt the article into a conversation** | Keeps the article as written or pasted; the AI rewrites it as a conversation for the speakers, kept beside the article as the script. Podcast, Radio drama and Interview. | One extra AI call |
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
When the article is split, the split must keep the article's words; if the model changes them, the call is asked again.
|
|
46
47
|
|
|
47
48
|
### Script format
|
|
48
49
|
|
|
49
|
-
Write Script prompts in **
|
|
50
|
+
Write Script prompts in **Prompts** with the kind **Script**. The AI answers in this shape:
|
|
50
51
|
|
|
51
52
|
```
|
|
52
53
|
# Section title
|
|
@@ -61,20 +62,20 @@ Sam: The next turn.
|
|
|
61
62
|
- Text in `[square brackets]`, such as `[laughs]`, is a stage direction and is never read aloud.
|
|
62
63
|
- A script that names someone who is not one of your speakers, or has a paragraph that is not a turn, stops the Article stage with the line to fix.
|
|
63
64
|
|
|
64
|
-
On the project page the Article section shows the script as the speakers read it: each turn under its speaker's name in their
|
|
65
|
+
On the project page the Article section shows the script as the speakers read it: each turn under its speaker's name in their color, with the sections as headings. If the script can't be narrated, it says why and points you to **Edit settings** → **Article**.
|
|
65
66
|
|
|
66
67
|
## Speaker options
|
|
67
68
|
|
|
68
69
|
| Option | What it does | Default / range |
|
|
69
70
|
|---|---|---|
|
|
70
71
|
| **Speaker name** | The name the script uses for this speaker's turns (`Name: words`), shown on captions and in the speaker panel. Letters, numbers, spaces, dots, apostrophes and hyphens; each speaker needs a different name. | Up to 40 characters |
|
|
71
|
-
| **Role** | Narrator, Host, Guest or Character. The
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
| **Voice** | One of the voices you added under **Settings → Voices** for that
|
|
72
|
+
| **Role** | Narrator, Host, Guest or Character. The AI is told each speaker's role when it writes or splits the script. | Set by the format |
|
|
73
|
+
| **<name> is read by**: **Service** | The voice service for this speaker, charged per character of their lines. Speakers may use different services. Changing it clears the model and voice. | None |
|
|
74
|
+
| **<name> is read by**: **Model** | The service's voice model. Pronunciations need an Inworld TTS-2 model. | None |
|
|
75
|
+
| **<name> is read by**: **Voice** | One of the voices you added under **Settings → Voices** for that service, filtered to the project's language. Tick **Show all voices** to see the rest. | None |
|
|
75
76
|
| **Pace** | How fast this speaker talks relative to the voice's own speed. It is applied after the speech is made, so changing it costs nothing. | Normal; 0.8×, 0.9×, Normal, 1.1×, 1.2× |
|
|
76
77
|
| **Pronunciations** | One `Term: /IPA/` per line (for example `Arda: /ˈɑɹdə/`), for this speaker only. Used on Inworld TTS-2 voices, ahead of the article's Pronunciation Glossary. | Empty |
|
|
77
|
-
| **Audition** | Speaks this speaker's first line of the script (or a sample line) in their voice. | One real
|
|
78
|
+
| **Audition** | Speaks this speaker's first line of the script (or a sample line) in their voice. | One real voice request; the button shows the price, such as "Audition · about $0.0004" |
|
|
78
79
|
|
|
79
80
|
A pronunciation line the voice can't use (no slashes, ARPAbet, or sounds the project's language does not have) is skipped and that word is read as ordinary text; the other lines still apply. The Speakers panel says which lines are skipped and why as you type.
|
|
80
81
|
|
|
@@ -84,75 +85,75 @@ A pronunciation line the voice can't use (no slashes, ARPAbet, or sounds the pro
|
|
|
84
85
|
|---|---|---|
|
|
85
86
|
| **Gap between turns** | The pause between one speaker's turn and the next. Longer feels calmer; shorter feels like a lively talk. | 0.35 s; choose 0, 0.2, 0.35, 0.5, 0.8 or 1.2 s |
|
|
86
87
|
| **Speaker names on captions** | Puts the speaker's name before their captions, like `Ada:` and their words. In the VTT file it is written as `<v Name>`. | On for Podcast and Interview, off otherwise |
|
|
87
|
-
| **
|
|
88
|
-
| **Also make MP3 and M4B files with chapter markers** | Saves the whole narration as `narration.mp3` (ID3 chapters) and `audiobook.m4b` (AAC with chapter markers), one chapter per script section. Made on your computer at no
|
|
88
|
+
| **Let the voices react to each other (ElevenLabs v3, Gemini)** | Sends back-to-back turns as one multi-speaker request where the voice service has one, so the voices react to each other: ElevenLabs v3 with up to 10 voices, Google Gemini with 2 (a third voice starts a new request). Fewer requests, same characters charged. Other services read each turn on its own. | On |
|
|
89
|
+
| **Also make MP3 and M4B files with chapter markers** | Saves the whole narration as `narration.mp3` (ID3 chapters) and `audiobook.m4b` (AAC with chapter markers), one chapter per script section. Made on your computer at no cost. | On |
|
|
89
90
|
|
|
90
|
-
The MP3 and M4B appear with the Video
|
|
91
|
+
The MP3 and M4B appear with the Video part's downloads on the project page, and play in Slopify's own audio player with the chapter marks on its track. Slopify does not publish them anywhere.
|
|
91
92
|
|
|
92
93
|
## Audiobooks in chapters
|
|
93
94
|
|
|
94
95
|
An audiobook can be one chapter of a book, so a long book is made one chapter per project and a player keeps the chapters together.
|
|
95
96
|
|
|
96
|
-
1. On
|
|
97
|
+
1. On Create, pick the **Audiobook** format under Speakers.
|
|
97
98
|
2. Turn on **A chapter of a book**.
|
|
98
99
|
3. Type the **Book title** (the same for every chapter) and the **Chapter** number (from 1).
|
|
99
|
-
4.
|
|
100
|
+
4. Press **Make the audiobook**.
|
|
100
101
|
|
|
101
102
|
The MP3 and M4B carry the book as their album and the chapter as their track. Projects shows the project as **Book · Chapter N**, for example "The Wind in the Willows · Chapter 3".
|
|
102
103
|
|
|
103
104
|
### Make the next chapter
|
|
104
105
|
|
|
105
|
-
On a finished audiobook's project page, **Make the next chapter** (beside **Edit settings**) opens a new
|
|
106
|
+
On a finished audiobook's project page, **Make the next chapter** (beside **Edit settings**) opens a new Create draft for the next chapter: the same speakers and voices, channel and cast, prompts and settings, with the chapter number one higher. Write or paste the new chapter's text there, then make it. An audiobook that was not a book yet becomes one, named after itself, starting at chapter 2.
|
|
106
107
|
|
|
107
108
|
## Speakers from a channel's cast
|
|
108
109
|
|
|
109
110
|
A channel's cast member can have a voice, so a host or recurring character sounds the same in every episode.
|
|
110
111
|
|
|
111
112
|
1. Open **Channels**, pick the channel, open its **Cast** tab and edit a member.
|
|
112
|
-
2. Under **
|
|
113
|
-
3. On
|
|
113
|
+
2. Under **Voice**, pick the **Service**, **Model** and **Voice** under **Read by**. The list shows voices that speak the channel's language. Leave the service empty for no voice.
|
|
114
|
+
3. On Create, under Speakers, pick the member from **Add from the cast**. Only members with a voice are listed.
|
|
114
115
|
|
|
115
|
-
The speaker takes the member's name and voice. Every run started later, whether from
|
|
116
|
+
The speaker takes the member's name and voice. Every run started later, whether from Create, a batch, a schedule or a template, takes that member's voice, pace and pronunciations as they are when the run starts. Projects already made keep the voice they were made with. See [Cast](Cast-Library) for editing the cast.
|
|
116
117
|
|
|
117
118
|
## Delivery tags
|
|
118
119
|
|
|
119
|
-
With a **Narration
|
|
120
|
+
With a **Narration preparation** prompt picked (Narration row → **More narration settings**), each turn of a speaker on Inworld's TTS-2 model is prepared on its own before it is spoken. The AI sees the turn and who says it (for example `Rat (character)`) and adds cues:
|
|
120
121
|
|
|
121
122
|
- A spoken direction at the start of a sentence, such as `[say shyly and a little uncertainly]`, held until the next one or `[reset]`.
|
|
122
123
|
- Non-verbal sounds where they happen: `[laugh]`, `[breathe]`, `[sigh]`, `[cough]`, `[clear throat]` and `[yawn]`.
|
|
123
124
|
|
|
124
|
-
Each turn is its own request, so a direction never leaks into the next speaker, and every speaker on TTS-2 gets cues of their own. Turns of speakers on other voices, or on TTS-2 Flash (which ignores directions), are spoken as written. At least one speaker must be on TTS-2, or
|
|
125
|
+
Each turn is its own request, so a direction never leaks into the next speaker, and every speaker on TTS-2 gets cues of their own. Turns of speakers on other voices, or on TTS-2 Flash (which ignores directions), are spoken as written. At least one speaker must be on TTS-2, or Create asks you to choose that model for a speaker or clear narration preparation under Narration → **More narration settings**. The Narration row's own model (which reads the intro and outro) must be Inworld TTS-2 too. The tags are only in what the voice is sent: captions, word timing, the MP3/M4B chapters and the script download never show them. See [Create: Narration](Create-Narration) for narration preparation itself.
|
|
125
126
|
|
|
126
127
|
## How the audio is made
|
|
127
128
|
|
|
128
129
|
- Every turn is its own request in its speaker's voice, then the turns are joined with the gap between turns.
|
|
129
|
-
- Narration aliases (
|
|
130
|
-
- Changing one speaker's voice
|
|
130
|
+
- Narration aliases (Settings → Voices → Pronunciation) apply to every turn.
|
|
131
|
+
- Changing one speaker's voice makes only that speaker's turns again.
|
|
131
132
|
- With **Level the volume** on (the default for new runs), each turn is brought to one common loudness before joining, so a quiet host and a loud guest sit at the same level. The MP3 and M4B are mastered to the audio files volume (−18 LUFS by default).
|
|
132
133
|
- **Pause between sentences** lengthens the quiet between sentences inside a turn; the gap between turns stays the Gap between turns.
|
|
133
134
|
|
|
134
135
|
## Captions with several speakers
|
|
135
136
|
|
|
136
|
-
- Captions never mix two speakers in one line, and each speaker's captions carry their
|
|
137
|
-
- Captions you edit by hand in Edit
|
|
137
|
+
- Captions never mix two speakers in one line, and each speaker's captions carry their color.
|
|
138
|
+
- Captions you edit by hand in **Edit settings** → **Captions** keep their speaker. A caption you add takes the speaker of the narration under it.
|
|
138
139
|
- [Shorts](Shorts) cut from a multi-voice video start and end on a speaker's turn.
|
|
139
140
|
|
|
140
141
|
## Change speakers on a finished project
|
|
141
142
|
|
|
142
|
-
1. Open the project and press **Edit
|
|
143
|
-
2. Open **
|
|
144
|
-
3. Save.
|
|
143
|
+
1. Open the project and press **Edit settings**.
|
|
144
|
+
2. Open **Narration** and change **Speakers**.
|
|
145
|
+
3. Press **Save changes**, then make the outdated narration again. **Choose what to make again** lists what will be made: only the turns of speakers whose voice changed are spoken again, paid per character.
|
|
145
146
|
|
|
146
147
|
## Tips
|
|
147
148
|
|
|
148
149
|
- Audition each speaker before a long run; a wrong voice is cheaper to catch at one line.
|
|
149
|
-
- If a podcast shows no speaker panel, check that Captions is set to
|
|
150
|
+
- If a podcast shows no speaker panel, check that **Captions** is set to **Show captions in the video**.
|
|
150
151
|
- Give speakers clearly different voices and names; the script and captions match speakers by name.
|
|
151
152
|
|
|
152
153
|
## Related pages
|
|
153
154
|
|
|
154
|
-
- [
|
|
155
|
-
- [Cast
|
|
155
|
+
- [Create: Narration](Create-Narration)
|
|
156
|
+
- [Cast](Cast-Library)
|
|
156
157
|
- [Channels](Channels)
|
|
157
158
|
- [Prompts](Prompts)
|
|
158
159
|
- [Narration-Aliases-and-Glossary](Narration-Aliases-and-Glossary)
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Two tools control how the narrator says words without changing what is written. **Narration aliases** swap a written form for a spoken one, such as `Dr.` said as "Doctor", with any generated voice. The **Pronunciation Glossary** gives exact IPA pronunciations for names, such as `Arda: /ˈɑɹdə/`, with Inworld's TTS-2 voices. In both cases the article, the transcript and the captions keep the written words; only the audio changes.
|
|
4
4
|
|
|
5
|
-
**Where to find it:** aliases in **
|
|
5
|
+
**Where to find it:** aliases in **Settings → Voices → Pronunciation**. Both switches are on Create under **Narration → Change → More narration settings**, and in a project's **Edit settings** → **Narration**. A project's glossary is shown on its **Article** section, in the **Pronunciation** tab.
|
|
6
6
|
|
|
7
7
|
## Narration aliases
|
|
8
8
|
|
|
9
9
|
### Add aliases
|
|
10
10
|
|
|
11
|
-
1. Open **
|
|
11
|
+
1. Open **Settings → Voices → Pronunciation**.
|
|
12
12
|
2. Press **Add alias**. A new row appears in the list, titled **Alias N**, with its fields under it.
|
|
13
13
|
3. Fill in the row:
|
|
14
14
|
|
|
@@ -41,15 +41,15 @@ Each row's title line sums it up, for example "Says Dr. as Doctor · whole word"
|
|
|
41
41
|
- A multi-word alias is read with single spaces around it: "Grey et al. wrote" goes to the voice as "Grey and others wrote".
|
|
42
42
|
- An alias wins over a Pronunciation Glossary entry for the same words.
|
|
43
43
|
- Aliases work with every generated voice, and in multi-voice runs they apply to each speaker's turn.
|
|
44
|
-
- Aliases also change the sentences **Narration
|
|
44
|
+
- Aliases also change the sentences **Narration preparation** reads, so its cues match what is said.
|
|
45
45
|
|
|
46
46
|
### Use aliases in a video
|
|
47
47
|
|
|
48
|
-
1. On
|
|
49
|
-
2. Keep **Use
|
|
48
|
+
1. On Create, open the **Narration** row with **Change**, then **More narration settings**.
|
|
49
|
+
2. Keep **Use your pronunciation list** on (the default for new drafts).
|
|
50
50
|
3. Start the run.
|
|
51
51
|
|
|
52
|
-
A project copies
|
|
52
|
+
A project copies your Pronunciation list when it starts. Editing the list later never changes a started project until you open its **Edit settings** → **Narration** and press **Copy the list again** beside the aliases switch. Only the parts of the narration where a changed alias appears are made again.
|
|
53
53
|
|
|
54
54
|
Projects from before aliases existed have the switch off and nothing copied.
|
|
55
55
|
|
|
@@ -59,11 +59,11 @@ Captions show the written words, while the audio says the alias. A caption reads
|
|
|
59
59
|
|
|
60
60
|
## The Pronunciation Glossary
|
|
61
61
|
|
|
62
|
-
The Pronunciation Glossary is a section at the end of the article that lists names with their pronunciation in IPA. With a voice that supports it, the narrator reads each listed name the way the glossary says, with no extra
|
|
62
|
+
The Pronunciation Glossary is a section at the end of the article that lists names with their pronunciation in IPA. With a voice that supports it, the narrator reads each listed name the way the glossary says, with no extra AI call. The glossary itself is never narrated.
|
|
63
63
|
|
|
64
64
|
### Which voices support it
|
|
65
65
|
|
|
66
|
-
Inworld **TTS-2** and **TTS-2 Flash**. With other
|
|
66
|
+
Inworld **TTS-2** and **TTS-2 Flash**. With other services or models the tick is not shown; your choice is kept for when you pick one of those voices.
|
|
67
67
|
|
|
68
68
|
### Get a glossary into the article
|
|
69
69
|
|
|
@@ -86,8 +86,8 @@ A table with `Term | IPA` columns works too. If you paste your own article, add
|
|
|
86
86
|
|
|
87
87
|
### Turn it on
|
|
88
88
|
|
|
89
|
-
1. On
|
|
90
|
-
2. Keep **Use
|
|
89
|
+
1. On Create, open **Narration → Change → More narration settings**.
|
|
90
|
+
2. Keep **Use the article's pronunciation glossary** on (the default). It shows only while the voice is one that reads it.
|
|
91
91
|
3. Optional: keep **Also use pronunciations from my other projects** on (the default). It adds every term from your other projects' glossaries, copied when this project starts. This project's own glossary wins where they differ. Turn it off to use only this article's glossary.
|
|
92
92
|
|
|
93
93
|
### Entries that are skipped
|
|
@@ -102,7 +102,7 @@ An entry narration can't use is skipped and read as ordinary text. It never bloc
|
|
|
102
102
|
| supply one IPA word for each written word | "New York" needs two IPA words. |
|
|
103
103
|
| an earlier entry already gives this term a different pronunciation | The term is listed twice with different sounds. |
|
|
104
104
|
|
|
105
|
-
To fix skipped entries, edit the Pronunciation Glossary at the end of the article in **Edit
|
|
105
|
+
To fix skipped entries, edit the Pronunciation Glossary at the end of the article in **Edit settings** → **Article**, then save. See [Editing a project](Editing-a-Project).
|
|
106
106
|
|
|
107
107
|
## Aliases or glossary?
|
|
108
108
|
|
|
@@ -110,7 +110,7 @@ To fix skipped entries, edit the Pronunciation Glossary at the end of the articl
|
|
|
110
110
|
|---|---|
|
|
111
111
|
| An abbreviation read in full (Dr., St., vs.) | Alias |
|
|
112
112
|
| A word read as a different word or spelling | Alias |
|
|
113
|
-
| Any voice
|
|
113
|
+
| Any voice service | Alias |
|
|
114
114
|
| A made-up or foreign name said exactly right, on Inworld TTS-2 | Glossary |
|
|
115
115
|
| Pronunciations that come with each article automatically | Glossary |
|
|
116
116
|
|
|
@@ -122,8 +122,8 @@ To fix skipped entries, edit the Pronunciation Glossary at the end of the articl
|
|
|
122
122
|
|
|
123
123
|
## Related pages
|
|
124
124
|
|
|
125
|
-
- [Narration](
|
|
125
|
+
- [Create: Narration](Create-Narration)
|
|
126
126
|
- [Prompts](Prompts)
|
|
127
127
|
- [Editing a project](Editing-a-Project)
|
|
128
128
|
- [Multiple voices](Multiple-Voices)
|
|
129
|
-
- [
|
|
129
|
+
- [Keys and Services](Providers-and-Keys)
|