@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,33 +1,33 @@
|
|
|
1
1
|
# Publishing to YouTube
|
|
2
2
|
|
|
3
|
-
Slopify never uploads or publishes for you: there is no YouTube sign-in and no upload API. Instead, **
|
|
3
|
+
Slopify never uploads or publishes for you: there is no YouTube sign-in and no upload API. Instead, **Copy for YouTube Studio** lists everything YouTube Studio asks for, in the order it asks, with a Copy button for each value, for the long video and for every short. You upload in Studio in your own browser and press Publish yourself. The optional [Studio-Extension](Studio-Extension) can fill Studio's upload dialog from the same list.
|
|
4
4
|
|
|
5
|
-
**Where to find it:** a finished project → **
|
|
5
|
+
**Where to find it:** a finished project → **Copy for YouTube Studio**, in the heading of its **Video** part and of its **YouTube** part, or `Ctrl+K` → **Copy for YouTube Studio** on the project. Settings → **YouTube Studio and posting** holds the playlists, and each channel's **Name and look** tab holds the links it uses.
|
|
6
6
|
|
|
7
7
|
## Before your first upload
|
|
8
8
|
|
|
9
|
-
1. Open **Settings → YouTube Studio**, press **Add playlist** and type each playlist exactly as it is called in Studio (up to 150 characters). Tick **On by default** for the ones every video goes into, then press **Save playlists**. The list is the default for every channel; pick a channel above it to give that channel its own list.
|
|
10
|
-
2. Open **Channels** → your channel → **
|
|
11
|
-
3. In **Settings → Voices**, turn on **
|
|
12
|
-
4. In **
|
|
13
|
-
5. Turn on **YouTube description** on
|
|
9
|
+
1. Open **Settings → YouTube Studio and posting**, press **Add playlist** and type each playlist exactly as it is called in Studio (up to 150 characters). Tick **On by default** for the ones every video goes into, then press **Save playlists**. The list is the default for every channel; pick a channel above it to give that channel its own list.
|
|
10
|
+
2. Open **Channels** → your channel → **Name and look** and, under **Channel links**, add any links your descriptions use, such as `Patreon` or `Discord`. See [Channels](Channels#channel-links).
|
|
11
|
+
3. In **Settings → Voices**, turn on **Sounds like a real person** for any voice cloned from, or made to sound like, a real person.
|
|
12
|
+
4. In **Prompts**, turn on **Draws photorealistic pictures** for any Image prompt whose style looks like real photos or film.
|
|
13
|
+
5. Turn on **YouTube description** on Create (Extras row) for new videos, so they come with a description, chapters and tags.
|
|
14
14
|
|
|
15
15
|
Steps 3 and 4 decide the AI use answer; see [AI use disclosure](#ai-use-disclosure).
|
|
16
16
|
|
|
17
17
|
## Upload a video
|
|
18
18
|
|
|
19
|
-
1. Open the finished project and press **
|
|
19
|
+
1. Open the finished project and press **Copy for YouTube Studio**. The button is available once the video has been made.
|
|
20
20
|
2. If the project has shorts, pick what to upload under **What to upload**: **Video**, **Short 1**, **Short 2** and so on. Each is uploaded to YouTube on its own, with its own title, description and tags.
|
|
21
21
|
3. Open YouTube Studio in your browser and start an upload.
|
|
22
22
|
4. Work down the list **In the order Studio asks**, using **Copy**, **Download** or **Open folder** on each row:
|
|
23
23
|
|
|
24
|
-
| Step | What
|
|
24
|
+
| Step | What Copy for YouTube Studio gives you |
|
|
25
25
|
|---|---|
|
|
26
26
|
| **Video file** | The file name, with **Download** and **Open folder** as small buttons. |
|
|
27
27
|
| **Title** | The project's title (up to 100 characters), or the short's title. **Copy**. |
|
|
28
28
|
| **Description** | The description with chapters and hashtags, links filled in. For a short: its description, the "Watch the full video:" line and its hashtags. **Copy**. |
|
|
29
29
|
| **Thumbnail** | The thumbnail file, with **Open folder**. With three thumbnails: "The first under Thumbnail; all 3 in A/B Testing (beside the title)." Shorts have no thumbnail step, since Studio shows a frame of a short. |
|
|
30
|
-
| **Playlist** | The project's channel's playlists from Settings → YouTube Studio (or the default list), or "None set". With more than one, each has a tick: tick the ones this project goes into (saved for this project; the others keep the defaults). **Copy**. |
|
|
30
|
+
| **Playlist** | The project's channel's playlists from Settings → YouTube Studio and posting (or the default list), or "None set". With more than one, each has a tick: tick the ones this project goes into (saved for this project; the others keep the defaults). **Copy**. |
|
|
31
31
|
| **Audience** | "No, it's not made for kids". |
|
|
32
32
|
| **AI use (under Show more)** | **Yes** or **No**, with the reason. |
|
|
33
33
|
| **Tags (under Show more)** | The tags, comma-separated. For a short, its hashtags without the `#`. **Copy**. |
|
|
@@ -38,18 +38,18 @@ Steps 3 and 4 decide the AI use answer; see [AI use disclosure](#ai-use-disclosu
|
|
|
38
38
|
|
|
39
39
|
Below the list, the thumbnails are shown side by side as **A**, **B** and **C**, each with **Download**.
|
|
40
40
|
|
|
41
|
-
With the extension installed and paired, press **Fill in YouTube Studio** instead of copying by hand. Each press queues the item under **Waiting for Studio**, so you can queue the video and its shorts and upload them one after another. While no extension is paired,
|
|
41
|
+
With the extension installed and paired, press **Fill in YouTube Studio** instead of copying by hand. Each press queues the item under **Waiting for Studio**, so you can queue the video and its shorts and upload them one after another. While no extension is paired, Copy for YouTube Studio shows how to install and pair it, with **Open YouTube Studio**. See [Studio-Extension](Studio-Extension). Copy for YouTube Studio ends with "Slopify never publishes."
|
|
42
42
|
|
|
43
43
|
## When something isn't ready
|
|
44
44
|
|
|
45
|
-
If a part isn't made yet,
|
|
45
|
+
If a part isn't made yet, Copy for YouTube Studio says so at the top under "Some of it isn't made yet." and tells you what to do, for example:
|
|
46
46
|
|
|
47
|
-
- The video isn't made yet: let the Video stage finish (or use Continue the run), then open
|
|
48
|
-
- No YouTube description is written: turn on **YouTube description** in Edit
|
|
49
|
-
- The thumbnail isn't made yet, or only 1 of 3 thumbnails is made:
|
|
47
|
+
- The video isn't made yet: let the Video stage finish (or use Continue the run), then open Copy for YouTube Studio again.
|
|
48
|
+
- No YouTube description is written: turn on **YouTube description** in **Edit settings** → **Extras** to have one written with chapters and tags.
|
|
49
|
+
- The thumbnail isn't made yet, or only 1 of 3 thumbnails is made: make the missing ones in the project's Images part (**Make the thumbnail again**).
|
|
50
50
|
- This project makes no thumbnail, so YouTube will pick a frame.
|
|
51
|
-
- No playlist is set: set one in Settings → YouTube Studio.
|
|
52
|
-
- A short isn't
|
|
51
|
+
- No playlist is set: set one in Settings → YouTube Studio and posting.
|
|
52
|
+
- A short isn't made yet.
|
|
53
53
|
|
|
54
54
|
## AI use disclosure
|
|
55
55
|
|
|
@@ -59,15 +59,15 @@ Studio asks every upload one question, behind **Show more**: whether AI was used
|
|
|
59
59
|
2. Alters footage of a real event or place.
|
|
60
60
|
3. Generates a realistic-looking scene that didn't actually occur.
|
|
61
61
|
|
|
62
|
-
Selecting Yes adds YouTube's AI label to your video. YouTube does not ask for the label for clearly unrealistic content, minor edits such as
|
|
62
|
+
Selecting Yes adds YouTube's AI label to your video. YouTube does not ask for the label for clearly unrealistic content, minor edits such as color or filters, or AI used for the script, title, thumbnail or captions.
|
|
63
63
|
|
|
64
64
|
Slopify answers **Yes only when one of those three cases applies**, and **No** otherwise. An AI narrator and stylised AI pictures on their own are none of the three. Each case is something you mark, and every mark is off until you set it:
|
|
65
65
|
|
|
66
66
|
| Case | What you mark | Where |
|
|
67
67
|
|---|---|---|
|
|
68
|
-
| 1. A voice that imitates a real person | **
|
|
69
|
-
| 2. Real footage that is altered | In
|
|
70
|
-
| 3. Photorealistic AI pictures | **Draws photorealistic pictures** on an Image prompt whose style looks like real photos or film. A video whose images are drawn from such a prompt, or a short whose **Image
|
|
68
|
+
| 1. A voice that imitates a real person | **Sounds like a real person** on a voice cloned from, or made to sound like, a real person. A video or short narrated by that voice (the narration voice or any speaker) gets Yes. | Settings → **Voices**, the Real person column |
|
|
69
|
+
| 2. Real footage that is altered | In Copy for YouTube Studio's AI use step, the switch **The uploaded clip is real footage (filmed, not made by AI)** (or "The N uploaded clips are…"). It appears when the project's images include uploaded video clips. With it on, the video gets Yes when the Look's **Atmosphere** overlay (embers, dust or fog) is laid over them. A color grade, vignette or grain alone counts as a minor edit and stays No. | Copy for YouTube Studio, per project |
|
|
70
|
+
| 3. Photorealistic AI pictures | **Draws photorealistic pictures** on an Image prompt whose style looks like real photos or film. A video whose images are drawn from such a prompt, or a short whose **Image prompt** is one, gets Yes. The Built-in shorts style is not photorealistic. | Library → **Prompts**, in the Image prompt's editor (save the prompt first) |
|
|
71
71
|
|
|
72
72
|
The AI use step shows the answer and why, naming the case in YouTube's words, for example that the narration uses a named voice marked in Settings → Voices as imitating a real person. When none applies, it says No and lists what was checked.
|
|
73
73
|
|
|
@@ -75,7 +75,7 @@ Shorts are judged on their own: they show new pictures, never your uploaded clip
|
|
|
75
75
|
|
|
76
76
|
### Override per channel
|
|
77
77
|
|
|
78
|
-
1. Open **Channels**, pick the channel and open its **
|
|
78
|
+
1. Open **Channels**, pick the channel and open its **Name and look** tab.
|
|
79
79
|
2. At the top, set **YouTube AI disclosure**:
|
|
80
80
|
|
|
81
81
|
| Setting | Answer |
|
|
@@ -88,24 +88,24 @@ It saves as you pick. A channel's Always Yes or Always No wins over every mark.
|
|
|
88
88
|
|
|
89
89
|
## Chapters and the description
|
|
90
90
|
|
|
91
|
-
The description in
|
|
91
|
+
The description in Copy for YouTube Studio is the same one the project page shows: your edits kept, `{{Name}}` links filled in from the project's channel's links (its **Name and look** tab) and the project's own **Previous video**. The **YouTube description (.txt)** and **YouTube tags (.txt)** downloads on the project page are this same text.
|
|
92
92
|
|
|
93
93
|
Its chapters are fitted to YouTube's rules first (the first at 0:00, at least three, each at least 10 seconds). When anything was changed, the Description step says what, in a line starting "Chapters adjusted for YouTube:". To change the text itself, edit it on the project page; see [YouTube-Description](YouTube-Description).
|
|
94
94
|
|
|
95
95
|
## Edit the description and tags before uploading
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
Copy for YouTube Studio shows what the project has; it has no editor of its own.
|
|
98
98
|
|
|
99
|
-
1. Close
|
|
100
|
-
2. In the project's **YouTube**
|
|
101
|
-
3. For a link, paste it under **Previous
|
|
102
|
-
4. Open
|
|
99
|
+
1. Close Copy for YouTube Studio.
|
|
100
|
+
2. In the project's **YouTube** part, press **Edit** beside Summary, Chapters, Hashtags or Tags, change it and save.
|
|
101
|
+
3. For a link, paste it under **Previous episode** in the project's YouTube part and press **Save**, or add it under **Channel links** on the channel's Name and look tab.
|
|
102
|
+
4. Open Copy for YouTube Studio again; it shows your edits.
|
|
103
103
|
|
|
104
|
-
A short's title, description and hashtags come from the shorts pick; to change which moments are used, see [Shorts](Shorts). Its full video line comes from **Full video link** in Edit
|
|
104
|
+
A short's title, description and hashtags come from the shorts pick; to change which moments are used, see [Shorts](Shorts). Its full video line comes from **Full video link** in **Edit settings** → **Extras** → **Shorts**.
|
|
105
105
|
|
|
106
106
|
## Three thumbnails
|
|
107
107
|
|
|
108
|
-
With **
|
|
108
|
+
With **How many thumbnails** set to 3 on Create or in **Edit settings** → **Extras**, Slopify draws the thumbnail prompt twice more with a different composition each time, for YouTube's A/B Testing (it replaced Test & compare). Copy for YouTube Studio lists all three. In Studio, set the first under **Thumbnail**, then add all three with the **A/B Testing** button beside the title. Each extra thumbnail costs one image. See [Create: Extras](Create-Extras).
|
|
109
109
|
|
|
110
110
|
## Mark a video uploaded
|
|
111
111
|
|
|
@@ -119,7 +119,7 @@ Slopify does not check YouTube, so it can't know when you've published. After yo
|
|
|
119
119
|
|
|
120
120
|
## Tips
|
|
121
121
|
|
|
122
|
-
- Set the playlists once in Settings (per channel if your channels upload to different playlists), and tick the few a single video joins in its
|
|
122
|
+
- Set the playlists once in Settings (per channel if your channels upload to different playlists), and tick the few a single video joins in its Copy for YouTube Studio.
|
|
123
123
|
- Upload the long video first, then paste its link as the shorts' **Full video link** so each short's description points to it.
|
|
124
124
|
- If the AI use answer surprises you, read its reason: it names the voice, footage or prompt that made it Yes.
|
|
125
125
|
- A connected [agent](Agents-MCP) can take a video as far as **Ready to upload** and mark it uploaded, but never uploads it or sends it to the extension: that stays yours.
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
# Recovery and Retries
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Calls to the services fail now and then: a rate limit, a timeout, a dropped connection, a refused prompt. Slopify retries what time can fix by itself, waits for used-up CLI plans instead of failing, and for everything else puts one button on the project page that fixes the cause or walks you through it. Work already made is never thrown away.
|
|
4
4
|
|
|
5
|
-
**Where to find it:** a project → the next action
|
|
5
|
+
**Where to find it:** a project → the next action in the title row, and the failed step's own part.
|
|
6
6
|
|
|
7
7
|
## What happens when a call fails
|
|
8
8
|
|
|
9
|
-
Slopify handles a failed
|
|
9
|
+
Slopify handles a failed call to a service in three tiers:
|
|
10
10
|
|
|
11
11
|
| Tier | What happens | You see |
|
|
12
12
|
| --- | --- | --- |
|
|
13
|
-
| 1. Quick retries | The call is tried up to four times in about 40 seconds: the first try plus retries after 2, 8 and 30 seconds. A
|
|
14
|
-
| 2. Waiting it out | If the quick retries run out on a failure time can fix, the step is not failed. It waits and runs again by itself, up to four more times, after about 2, 4, 8 and 16 minutes (about half an hour in all). Each wait is spread by a quarter either way, and is never shorter than the
|
|
13
|
+
| 1. Quick retries | The call is tried up to four times in about 40 seconds: the first try plus retries after 2, 8 and 30 seconds. A service's own Retry-After (up to a minute) replaces the fixed wait. | Nothing; the step keeps running. |
|
|
14
|
+
| 2. Waiting it out | If the quick retries run out on a failure time can fix, the step is not failed. It waits and runs again by itself, up to four more times, after about 2, 4, 8 and 16 minutes (about half an hour in all). Each wait is spread by a quarter either way, and is never shorter than the service's Retry-After. | **Waiting to try again**: "Images will try again by itself at 14:05." No button; the run carries on when it does. |
|
|
15
15
|
| 3. Failed | When the waits are used up, or the failure is one time cannot fix, the step fails and says why. | **Failed**, the error, and a fix-it or **Try ... again** button. |
|
|
16
16
|
|
|
17
17
|
### What is waited out
|
|
18
18
|
|
|
19
|
-
- Rate limits (HTTP 429 and each
|
|
19
|
+
- Rate limits (HTTP 429 and each service's own rate-limit errors).
|
|
20
20
|
- Timeouts.
|
|
21
|
-
- Dropped calls: a connection that never reached the
|
|
21
|
+
- Dropped calls: a connection that never reached the service or broke mid-answer, a server error at the service (5xx), or a CLI the system killed mid-run.
|
|
22
22
|
|
|
23
23
|
### What is never retried
|
|
24
24
|
|
|
25
25
|
- A refusal by a content filter.
|
|
26
|
-
- A key the
|
|
27
|
-
- A request the
|
|
26
|
+
- A key the service rejected, or no key saved.
|
|
27
|
+
- A request the service does not support.
|
|
28
28
|
- A lost CLI submission (Slopify cannot tell whether the CLI already did the work).
|
|
29
29
|
|
|
30
|
-
These are the
|
|
30
|
+
These are the service's final answer, and retrying would only spend your money again.
|
|
31
31
|
|
|
32
|
-
A
|
|
32
|
+
A service asking for a wait longer than an hour (a daily quota) is reported as a failure rather than waited out.
|
|
33
33
|
|
|
34
34
|
### Time limits per call
|
|
35
35
|
|
|
@@ -39,7 +39,7 @@ A provider asking for a wait longer than an hour (a daily quota) is reported as
|
|
|
39
39
|
| Image | 300 seconds |
|
|
40
40
|
| Image animated into a clip | 900 seconds |
|
|
41
41
|
|
|
42
|
-
A call that passes its limit is stopped (a streamed call when it sends nothing for that long), and the message says so, for example "The AI model did not answer within 120 seconds. It may be overloaded: wait a few minutes, then use Try again, or choose another model in
|
|
42
|
+
A call that passes its limit is stopped (a streamed call when it sends nothing for that long), and the message says so, for example "The AI model did not answer within 120 seconds. It may be overloaded: wait a few minutes, then use Try again, or choose another model in Edit settings → Article → Written by."
|
|
43
43
|
|
|
44
44
|
### Waits survive a restart
|
|
45
45
|
|
|
@@ -49,11 +49,11 @@ The wait is saved in the database, so quitting or restarting Slopify keeps it: t
|
|
|
49
49
|
|
|
50
50
|
When Claude Code, Codex or Antigravity says your plan allowance is used up, the call does not fail: it waits. Slopify stores the reset time for that CLI, and every call to it, from any project, waits until two minutes after the reset. Without a stated reset time it checks again every 30 minutes.
|
|
51
51
|
|
|
52
|
-
The
|
|
52
|
+
The project's state reads **Waiting for limits**, and the note under the title says, for example "Waiting for Codex limits (resets at 14:00)." with "Nothing to do: the run carries on by itself when they reset, and work that does not need Codex keeps going." There is nothing to press. A reset on another day shows the weekday (`Tue 14:00`); with no reset time, it says "(checking again at 14:30)"; with two plans, "Waiting for Codex and Claude limits".
|
|
53
53
|
|
|
54
|
-
The same words appear everywhere the project shows up: on Home under Running
|
|
54
|
+
The same words appear everywhere the project shows up: on Home under Running, on its row in Projects and on the Calendar, so you can tell a waiting run from a stuck one without opening it.
|
|
55
55
|
|
|
56
|
-
- Other
|
|
56
|
+
- Other services are not held up, and a waiting call holds no place in the service's queue.
|
|
57
57
|
- The wait survives a restart: a stage that was waiting when Slopify stopped waits on the stored reset again at the next start.
|
|
58
58
|
- A project paused or canceled meanwhile is left alone.
|
|
59
59
|
|
|
@@ -61,15 +61,15 @@ See [AI CLIs](AI-CLIs) and [Costs and Run Cost](Costs-and-Run-Cost) for the plan
|
|
|
61
61
|
|
|
62
62
|
## Fix-it buttons
|
|
63
63
|
|
|
64
|
-
A failed step's fix becomes the project's next action, shown in the
|
|
64
|
+
A failed step's fix becomes the project's next action, shown in the title row and beside the step in its part. The mapping lives in one place in the code, so the page always offers the same fix for the same failure.
|
|
65
65
|
|
|
66
|
-
| Failure | What the
|
|
66
|
+
| Failure | What the page says | Button | What to do |
|
|
67
67
|
| --- | --- | --- | --- |
|
|
68
68
|
| A CLI is signed out or its sign-in expired | "Codex is signed out, so images stopped." | **Copy sign-in command**, then **Check again** | See [Sign a CLI in again](#sign-a-cli-in-again) below. |
|
|
69
69
|
| A content filter refused an image or thumbnail prompt | "A content filter refused a prompt, so images stopped." | **Soften and retry** | See below. |
|
|
70
|
-
| A content filter refused any other prompt | "A content filter refused a prompt, so the article stopped." | **Edit the prompt** | Opens Edit
|
|
71
|
-
| The model was retired | "The model for images is no longer offered." | **Switch model** | Opens Edit
|
|
72
|
-
| A key was rejected, or none is saved | "The
|
|
70
|
+
| A content filter refused any other prompt | "A content filter refused a prompt, so the article stopped." | **Edit the prompt** | Opens Edit settings so you can reword it, then try again. |
|
|
71
|
+
| The model was retired | "The model for images is no longer offered." | **Switch model** | Opens Edit settings; pick another model (under **Written by**, **Read by** or **Images by**), save, and try again. |
|
|
72
|
+
| A key was rejected, or none is saved | "The service did not accept its key, so narration stopped." | **Open Settings → Keys & services → *service*** | Paste a current key, save, then come back and try again. |
|
|
73
73
|
| The disk is full | "The disk is full, so the video stopped." | **Free space** | Opens Settings → Backup & storage, which shows what uses the space and offers **Keep outputs only** per finished project. Then try again. |
|
|
74
74
|
| Anything else | "Images stopped with an error." | **Try images again** | Trying again keeps everything already made. |
|
|
75
75
|
|
|
@@ -96,20 +96,20 @@ For a refused image or thumbnail prompt, **Soften and retry** asks first ("Softe
|
|
|
96
96
|
2. The new wording streams onto the step as it is written.
|
|
97
97
|
3. The image is drawn from it and keeps it as its prompt.
|
|
98
98
|
|
|
99
|
-
The AI call and the new image are charged like any other. Press **Keep the prompt** to back out and edit it yourself in **Edit
|
|
99
|
+
The AI call and the new image are charged like any other. Press **Keep the prompt** to back out and edit it yourself in **Edit settings** → **Images**.
|
|
100
100
|
|
|
101
101
|
## Try again
|
|
102
102
|
|
|
103
|
-
**Try ... again** (for example **Try the article again**, **Try images again**) runs the failed step again. It does not ask first, because it destroys nothing: the pieces and
|
|
103
|
+
**Try ... again** (for example **Try the article again**, **Try images again**) runs the failed step again. It does not ask first, because it destroys nothing: the pieces and files already made stay where they are and are reused.
|
|
104
104
|
|
|
105
105
|
## Done with problems
|
|
106
106
|
|
|
107
|
-
A failed step stops only the steps that need
|
|
107
|
+
A failed step stops only the steps that need what it makes. The video never reads the thumbnail, so a failed thumbnail leaves the video being made. When the run's main result was made (the video; the narration when there is no video; the article when there is neither) but another step failed, the project ends **Done with problems** instead of **Failed**. Each failed step shows its error and its fix.
|
|
108
108
|
|
|
109
109
|
## After a crash or restart
|
|
110
110
|
|
|
111
111
|
- A stage that was **running** when Slopify stopped is marked failed with the reason "interrupted". Nothing re-runs by itself: press **Try ... again**. If the project was paused at the time, the stage simply goes back to waiting.
|
|
112
|
-
- A project that has unfinished work nothing will start on its own reads **Stopped**
|
|
112
|
+
- A project that has unfinished work nothing will start on its own reads **Stopped** in its title row, in Projects and on Home, where it is listed under **Needs you** with **Continue the run** (and **Keep as is** to leave the rest unmade). The project page says "The run stopped before it finished." with the same button. Continuing makes only what is missing; everything made so far is kept. An [agent](Agents-MCP) running the attend routine may continue it for you.
|
|
113
113
|
- Steps waiting to retry, or waiting for CLI limits, carry on by themselves after the restart.
|
|
114
114
|
- A queued batch project waits its turn as before.
|
|
115
115
|
|
|
@@ -120,17 +120,17 @@ A failed step stops only the steps that need its output. The video never reads t
|
|
|
120
120
|
- **Continue the run** on the canceled project makes everything that is missing.
|
|
121
121
|
- If you took one step up again after the cancel (with **Try ... again**), **Continue the run** carries on only that work. The steps you canceled stay canceled until you take them up too.
|
|
122
122
|
|
|
123
|
-
A canceled run's
|
|
123
|
+
A canceled run's AI checks waiting for an agent stop, and never pass on their own. See [Pauses and Checks](Reviews-and-Checkpoints#your-own-ai-agent-as-the-checker).
|
|
124
124
|
|
|
125
|
-
##
|
|
125
|
+
## Pauses and paused runs
|
|
126
126
|
|
|
127
|
-
A
|
|
127
|
+
A pause holds the run after a step so you can check what it made. While held, the project shows **Waiting for your review** and an **Approve and make the …** button; nothing after it runs until you approve. Pauses are stored with the project, so a restart does not lose them; when you save a new version, a pause whose work changed asks for your review again (its card in **Edit settings** → **Pauses and checks** says "What it was made from has changed. Look at the current version before approving."). See [Pauses and Checks](Reviews-and-Checkpoints).
|
|
128
128
|
|
|
129
129
|
A paused project keeps everything. **Continue the run** picks up where it stopped. See [Project Page](Project-Page#pause-continue-and-cancel-a-run). A connected [agent](Agents-MCP) may continue any paused run once nothing else on it needs fixing; cancel instead of pausing if you want a run to stay put.
|
|
130
130
|
|
|
131
131
|
## A failed step beside a wait
|
|
132
132
|
|
|
133
|
-
When a step fails while another step of the run is waiting (for an agent's
|
|
133
|
+
When a step fails while another step of the run is waiting (for an agent's check, your approval at a pause, or the day of a video made ahead), the run is not over: the project still reads by what it waits for (**Waiting for the agent** or **Waiting for your review**), and the failed step shows on the page with its fix. Home lists it as a failed item too, and a "Step failed" notification goes out right away (see [Notifications](Notifications#step-failed)). The project reads **Failed** only once nothing else can go on.
|
|
134
134
|
|
|
135
135
|
## Updating while work runs
|
|
136
136
|
|
|
@@ -142,14 +142,14 @@ When an update or install cannot finish, Slopify puts the previous version back.
|
|
|
142
142
|
|
|
143
143
|
- If a step keeps failing with the same error after **Try again**, open **Error details** and follow what it says. Most messages name the exact screen to fix it in.
|
|
144
144
|
- Rate limits usually clear by themselves; you rarely need to do anything.
|
|
145
|
-
- A
|
|
145
|
+
- A file from an earlier version is still under **Edit settings** → **Versions** if making it again goes wrong. See [Editing a Project](Editing-a-Project#versions).
|
|
146
146
|
|
|
147
147
|
## Related pages
|
|
148
148
|
|
|
149
149
|
- [Troubleshooting](Troubleshooting)
|
|
150
150
|
- [Project Page](Project-Page)
|
|
151
151
|
- [Editing a Project](Editing-a-Project)
|
|
152
|
-
- [
|
|
152
|
+
- [Keys and Services](Providers-and-Keys)
|
|
153
153
|
- [AI CLIs](AI-CLIs)
|
|
154
|
-
- [
|
|
154
|
+
- [Pauses and Checks](Reviews-and-Checkpoints)
|
|
155
155
|
- [Agents (MCP)](Agents-MCP)
|
|
@@ -29,9 +29,9 @@ A page opened through the remote address shows the switch but can't change it: r
|
|
|
29
29
|
|
|
30
30
|
## What stays private
|
|
31
31
|
|
|
32
|
-
- **Tailnet only, never the public internet.** Slopify uses Tailscale *Serve*, never *Funnel*. Slopify has no login and holds your
|
|
32
|
+
- **Tailnet only, never the public internet.** Slopify uses Tailscale *Serve*, never *Funnel*. Slopify has no login and holds your service keys, so a public address is never an option: Slopify never runs `tailscale funnel`, and it refuses every request that Tailscale marks as coming through Funnel, even if someone turns Funnel on by hand.
|
|
33
33
|
- **Agents stay on this computer.** `/mcp` (agents) and `/mcp/assistant` (the in-app assistant) answer only requests made on the computer Slopify runs on. Remote access is for the Slopify page alone. Agents can read the setting (`get_remote_access`) but can't turn it on or off, and neither can the assistant.
|
|
34
|
-
- **The page does almost everything it does at home.** A device on your tailnet is you, so the remote page can do what the page on the computer does, paid work included: starting runs,
|
|
34
|
+
- **The page does almost everything it does at home.** A device on your tailnet is you, so the remote page can do what the page on the computer does, paid work included: starting runs, template samples, Compare models and Make samples for all spend from the same daily sample budgets and plans as at home. What sets up the computer itself stays there: saving or removing service keys, a CLI's path, importing a backup, installing updates, Start with this computer, moving the Files or backup folder, clean-ups that delete files and the assistant's **Allow**. Each is refused over the tailnet with where to do it instead.
|
|
35
35
|
- **Only your account.** While remote access is on, a request through Tailscale from any account other than the one that turned it on is refused.
|
|
36
36
|
- **Only the page at the address you opened.** A change is accepted only from the Slopify page at the very address the browser opened for that request, so a web page at any other address can't make one through your browser. **Open folder** on a remote device opens the folder on the computer Slopify runs on.
|
|
37
37
|
|