@gentbajko/slopify 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/adapter-registry.js +28 -0
- package/dist/adapters/key-probes.js +57 -8
- package/dist/adapters/tts/gemini.js +206 -0
- package/dist/adapters/tts/pcm-mp3.js +62 -0
- package/dist/adapters/tts/system.js +147 -0
- package/dist/assets/models.yaml +38 -0
- package/dist/assets/style-preview/narration.mp3 +0 -0
- package/dist/assets/style-preview/tall-1.jpg +0 -0
- package/dist/assets/style-preview/tall-2.jpg +0 -0
- package/dist/assets/style-preview/tall-3.jpg +0 -0
- package/dist/assets/style-preview/wide-1.jpg +0 -0
- package/dist/assets/style-preview/wide-2.jpg +0 -0
- package/dist/assets/style-preview/wide-3.jpg +0 -0
- package/dist/catalog/registry.js +4 -1
- package/dist/catalog/validate.js +2 -2
- package/dist/edge/autostart/docker-record.js +2 -2
- package/dist/edge/autostart/docker.js +68 -0
- package/dist/edge/autostart/prompt.js +7 -1
- package/dist/edge/autostart/service.js +18 -9
- package/dist/edge/cli-args.js +71 -0
- package/dist/edge/cli.js +11 -16
- package/dist/edge/docker-install/run.js +7 -1
- package/dist/edge/events/hub.js +3 -1
- package/dist/edge/http/actions.js +6 -1
- package/dist/edge/http/app.js +2 -0
- package/dist/edge/http/byte-range.js +42 -0
- package/dist/edge/http/diagnostics.js +1 -0
- package/dist/edge/http/draft-files.js +2 -4
- package/dist/edge/http/files.js +10 -6
- package/dist/edge/http/onboarding.js +64 -4
- package/dist/edge/http/project-templates.js +19 -2
- package/dist/edge/http/projects.js +6 -1
- package/dist/edge/http/providers.js +39 -9
- package/dist/edge/http/reviews.js +18 -8
- package/dist/edge/http/revision-files.js +2 -4
- package/dist/edge/http/schedules.js +9 -5
- package/dist/edge/http/storage.js +16 -2
- package/dist/edge/http/studio.js +111 -31
- package/dist/edge/http/style-preview.js +3 -42
- package/dist/edge/http/tutorials.js +59 -0
- package/dist/edge/http/youtube-edits.js +11 -2
- package/dist/extension/slopify-studio-chrome.zip +0 -0
- package/dist/extension/slopify-studio-firefox.zip +0 -0
- package/dist/host-cli/gemini-login.js +83 -0
- package/dist/host-cli/status.js +4 -2
- package/dist/kernel/db/migrations/0041-cast-hosts.sql +3 -0
- package/dist/kernel/ports/model.js +5 -3
- package/dist/kernel/ports/system-speech.js +203 -0
- package/dist/kernel/runner/graph.js +17 -1
- package/dist/kernel/runner/index.js +4 -4
- package/dist/kernel/runner/providers.js +1 -1
- package/dist/main.js +5 -0
- package/dist/model-catalog.js +2 -0
- package/dist/patch-notes/3.0.1.md +105 -0
- package/dist/patch-notes/index.json +6 -0
- package/dist/slices/admission/rules.js +3 -3
- package/dist/slices/admission/start.js +1 -1
- package/dist/slices/channels/cast-match.js +1 -1
- package/dist/slices/channels/repo.js +3 -0
- package/dist/slices/channels/schema.js +23 -0
- package/dist/slices/channels/service.js +6 -6
- package/dist/slices/control/index.js +3 -1
- package/dist/slices/control/providers.js +4 -1
- package/dist/slices/episodes/related.js +2 -2
- package/dist/slices/estimate/requests.js +9 -1
- package/dist/slices/eta/history.js +56 -0
- package/dist/slices/eta/model.js +63 -0
- package/dist/slices/eta/view.js +25 -0
- package/dist/slices/fixes/rules.js +1 -1
- package/dist/slices/fonts/coverage.js +1 -1
- package/dist/slices/loudness/model.js +1 -1
- package/dist/slices/model-upkeep/usage.js +4 -2
- package/dist/slices/narration/pauses-model.js +1 -1
- package/dist/slices/narration/pronunciation.js +2 -2
- package/dist/slices/notifications/notifier.js +28 -2
- package/dist/slices/notifications/rules.js +26 -2
- package/dist/slices/onboarding/first-run.js +40 -14
- package/dist/slices/onboarding/full-video.js +81 -0
- package/dist/slices/onboarding/model.js +21 -0
- package/dist/slices/onboarding/quick-short.js +25 -10
- package/dist/slices/play-drafts/convert.js +3 -3
- package/dist/slices/play-drafts/readiness.js +1 -1
- package/dist/slices/project-templates/from-project.js +10 -3
- package/dist/slices/project-templates/next-chapter.js +94 -0
- package/dist/slices/project-templates/one-off.js +1 -1
- package/dist/slices/project-templates/schema.js +7 -1
- package/dist/slices/rebuild/recipe-exports.js +5 -0
- package/dist/slices/rebuild/recipe-voices.js +1 -1
- package/dist/slices/rebuild/review-redo.js +15 -0
- package/dist/slices/rebuild/runtime-export-bed.js +1 -1
- package/dist/slices/rebuild/runtime-review.js +35 -5
- package/dist/slices/rebuild/runtime-store.js +23 -1
- package/dist/slices/rebuild/runtime-voices.js +2 -2
- package/dist/slices/rebuild/service-readiness.js +3 -3
- package/dist/slices/reviews/repo.js +16 -4
- package/dist/slices/run-cost/panel.js +30 -8
- package/dist/slices/run-cost/pricing.js +4 -1
- package/dist/slices/schedules/agenda.js +66 -2
- package/dist/slices/schedules/repo.js +1 -1
- package/dist/slices/schedules/scheduler.js +1 -1
- package/dist/slices/schedules/schema.js +43 -2
- package/dist/slices/schedules/similar.js +41 -3
- package/dist/slices/schedules/topic-list.js +2 -2
- package/dist/slices/schedules/topics.js +118 -17
- package/dist/slices/settings/first-run.js +5 -1
- package/dist/slices/settings/health.js +64 -7
- package/dist/slices/settings/key-guides.js +17 -7
- package/dist/slices/settings/key-test.js +12 -4
- package/dist/slices/settings/keys.js +10 -5
- package/dist/slices/settings/model-reach.js +52 -0
- package/dist/slices/settings/model.js +49 -0
- package/dist/slices/settings/models.js +5 -1
- package/dist/slices/settings/readiness.js +14 -2
- package/dist/slices/settings/tutorial-schema.js +5 -0
- package/dist/slices/shorts/render.js +18 -17
- package/dist/slices/storage/documents.js +11 -3
- package/dist/slices/storage/downloads.js +33 -1
- package/dist/slices/storage/portable.js +4 -2
- package/dist/slices/studio/model.js +2 -0
- package/dist/slices/studio/pack.js +6 -4
- package/dist/slices/studio/queue.js +69 -0
- package/dist/slices/studio/settings.js +42 -5
- package/dist/slices/style-preview/narration.js +33 -0
- package/dist/slices/style-preview/render.js +43 -56
- package/dist/slices/style-preview/schema.js +17 -3
- package/dist/slices/style-preview/service.js +3 -4
- package/dist/slices/style-preview/settings.js +75 -25
- package/dist/slices/tutorials/anchors.js +57 -0
- package/dist/slices/tutorials/library.js +185 -0
- package/dist/slices/voices/audio-files.js +7 -2
- package/dist/slices/voices/cast.js +26 -8
- package/dist/slices/voices/grouping.js +10 -0
- package/dist/slices/voices/model.js +49 -10
- package/dist/slices/voices/script.js +1 -1
- package/dist/slices/youtube/edits-repo.js +19 -4
- package/dist/slices/youtube/placeholders.js +2 -2
- package/dist/tutorials/AI-CLIs.md +146 -0
- package/dist/tutorials/Backups.md +121 -0
- package/dist/tutorials/Calendar.md +103 -0
- package/dist/tutorials/Cast-Library.md +112 -0
- package/dist/tutorials/Channels.md +148 -0
- package/dist/tutorials/Costs-and-Run-Cost.md +136 -0
- package/dist/tutorials/Docker.md +171 -0
- package/dist/tutorials/Document-Themes.md +207 -0
- package/dist/tutorials/Editing-a-Project.md +204 -0
- package/dist/tutorials/FAQ.md +134 -0
- package/dist/tutorials/First-Launch-and-Welcome.md +153 -0
- package/dist/tutorials/Home-and-Projects.md +174 -0
- package/dist/tutorials/Home.md +119 -0
- package/dist/tutorials/Install.md +154 -0
- package/dist/tutorials/Intros-and-Outros.md +86 -0
- package/dist/tutorials/Keyboard-Shortcuts-and-Command-Palette.md +215 -0
- package/dist/tutorials/Library-Overview.md +75 -0
- package/dist/tutorials/Models.md +133 -0
- package/dist/tutorials/Multiple-Voices.md +161 -0
- package/dist/tutorials/Narration-Aliases-and-Glossary.md +129 -0
- package/dist/tutorials/Notifications.md +86 -0
- package/dist/tutorials/Other-Languages.md +110 -0
- package/dist/tutorials/PDF-Documents.md +100 -0
- package/dist/tutorials/Play-Images.md +135 -0
- package/dist/tutorials/Play-Narration.md +167 -0
- package/dist/tutorials/Play-Outputs.md +109 -0
- package/dist/tutorials/Play-Overview.md +216 -0
- package/dist/tutorials/Play-Title-and-Article.md +135 -0
- package/dist/tutorials/Play-Video-and-Style.md +143 -0
- package/dist/tutorials/Project-Page.md +228 -0
- package/dist/tutorials/Prompts.md +136 -0
- package/dist/tutorials/Providers-and-Keys.md +290 -0
- package/dist/tutorials/Publishing-to-YouTube.md +135 -0
- package/dist/tutorials/Recovery-and-Retries.md +141 -0
- package/dist/tutorials/Reviews-and-Checkpoints.md +143 -0
- package/dist/tutorials/Schedules.md +154 -0
- package/dist/tutorials/Settings-Reference.md +258 -0
- package/dist/tutorials/Shorts.md +116 -0
- package/dist/tutorials/Start-at-Login.md +126 -0
- package/dist/tutorials/Studio-Extension.md +146 -0
- package/dist/tutorials/Templates.md +146 -0
- package/dist/tutorials/Trash.md +87 -0
- package/dist/tutorials/Troubleshooting.md +149 -0
- package/dist/tutorials/Uninstalling-and-Moving.md +113 -0
- package/dist/tutorials/Updating-and-Patch-Notes.md +120 -0
- package/dist/tutorials/Video-Editing.md +135 -0
- package/dist/tutorials/Where-Your-Files-Live.md +149 -0
- package/dist/tutorials/YouTube-Description.md +132 -0
- package/dist/tutorials/Your-First-Short.md +125 -0
- package/dist/tutorials/_Footer.md +1 -0
- package/dist/tutorials/_Sidebar.md +69 -0
- package/dist/web/assets/index-DBLSfqA-.css +1 -0
- package/dist/web/assets/index-DFdIhmm0.js +307 -0
- package/dist/web/assets/{pdf-BG8n_uc5.js → pdf-B9OY1ioX.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +2 -2
- package/dist/web/assets/index-CUA2sUxU.css +0 -1
- package/dist/web/assets/index-CX590kE-.js +0 -303
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Shorts
|
|
2
|
+
|
|
3
|
+
Shorts turns the best moments of your long video into vertical clips for YouTube Shorts, TikTok and Reels, with no editing on your part. After the narration is timed, the text model picks self-contained moments; each becomes a 1080×1920 (9:16) clip with new images, big word-by-word captions and its own title, description and hashtags.
|
|
4
|
+
|
|
5
|
+
**Where to find it:** Play → **Outputs** row → **Shorts**. On a finished project: the **Shorts** section, and Edit project → **Shorts**.
|
|
6
|
+
|
|
7
|
+
## What you get
|
|
8
|
+
|
|
9
|
+
For each short:
|
|
10
|
+
|
|
11
|
+
- A vertical 1080×1920 MP4, cut from the long video's narration at sentence edges.
|
|
12
|
+
- New 9:16 images drawn for that clip (the long video's images are not reused).
|
|
13
|
+
- Big captions a little below the middle of the frame, two to four words at a time, with the word being spoken in a strong colour.
|
|
14
|
+
- The short's title at the top for the whole clip, if **Title on screen** is on.
|
|
15
|
+
- A title (up to 60 characters), a one-line description ending with a link to the full video, and 3 to 5 hashtags.
|
|
16
|
+
|
|
17
|
+
Shorts are made in the Video stage, beside the long video's render. They need narration.
|
|
18
|
+
|
|
19
|
+
## Turn on Shorts
|
|
20
|
+
|
|
21
|
+
1. On Play, open the **Outputs** row.
|
|
22
|
+
2. Tick **Shorts**. It is greyed out, with "Needs narration", when the Narration row is off.
|
|
23
|
+
3. Set **How many** and **Length**.
|
|
24
|
+
4. Optionally pick a **Shorts prompt** and an **Image style** from your Library.
|
|
25
|
+
5. Open **More shorts options** to set the title, speed, music and full video link. The disclosure's summary names what differs from the defaults, such as "Title on screen · 1.10× · Full video linked". The [Shorts preview](#shorts-preview) shows the result as you change them.
|
|
26
|
+
6. Check the estimate in the right rail and start the run.
|
|
27
|
+
|
|
28
|
+
## Options
|
|
29
|
+
|
|
30
|
+
| Option | What it does | Default / range |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| **Shorts** | Turns the step on. Turning it off keeps your numbers and prompts for next time. | Off |
|
|
33
|
+
| **How many** | How many shorts to cut from this video. Each needs its own new images, so more shorts cost more image calls and render time. | 3; 1 to 10 |
|
|
34
|
+
| **Length** | The shortest and longest a short may run, in seconds. The text model picks moments within these bounds. | 60 to 120; each between 15 and 180 |
|
|
35
|
+
| **Shorts prompt** | The Library prompt the text model follows to pick the moments and write each short's title, description and hashtags. | **Built-in**: picks moments that make sense alone, open on a hook and end on a complete thought |
|
|
36
|
+
| **Image style** | The Library Image prompt the shorts' new vertical images are drawn from. | **Built-in**: cinematic, high-contrast, uncluttered images with the subject large and centred, the lower half calm for captions, no text |
|
|
37
|
+
| **Title on screen** | Keeps the short's title at the top for the whole clip, large and bold in the caption font, below where the apps draw their own buttons. | On |
|
|
38
|
+
| **Speed** | Plays each short faster than the narration, with the pitch kept. | 1.00× (normal); 1.00× to 1.25× in steps of 0.05 |
|
|
39
|
+
| **Music volume** | How loud the background music plays under every short. It dips while the narrator speaks. Only used when you add a music file. | 15; 0 to 100 percent |
|
|
40
|
+
| **Full video link** | Each short's description ends with "Watch the full video:" and this link. Without it the line says `[PASTE THE FULL VIDEO LINK HERE]` for you to fill in. | Empty; up to 2,000 characters |
|
|
41
|
+
| Background music | An audio file mixed under every short, looped if shorter than a short. | None |
|
|
42
|
+
|
|
43
|
+
Write your own Shorts prompts and Image prompts in **Library → Prompts** ([Prompts](Prompts)). To match the long video's look, pick one of your own Image prompts as the Image style.
|
|
44
|
+
|
|
45
|
+
## Shorts preview
|
|
46
|
+
|
|
47
|
+
While **More shorts options** is open (on Play, or in Edit project → **Shorts**), **Shorts preview** ("A few seconds of the sample as a short, rendered with your settings") renders a few seconds of the bundled sample project as a 9:16 short, through the same renderer real shorts use: the big word-by-word captions in your caption font, the title on screen when **Title on screen** is on (the sample's title, "The Library of Alexandria"), and your **Speed**. The line under it reads, for example, "Title on screen · 1.10×". It renders on your computer at no cost; **Render again** forces a fresh one.
|
|
48
|
+
|
|
49
|
+
## What it costs
|
|
50
|
+
|
|
51
|
+
- **Picking:** one text-model call picks the moments, then one call per short writes its image prompts.
|
|
52
|
+
- **Images:** each short gets one image per **Seconds per image** of its length (at least one), and each image is one image-model call on your image provider. Before the clips are picked, the estimate charges the most the step could ask for: every short at the longest length you allowed.
|
|
53
|
+
- **Rendering:** done on your computer at no provider cost.
|
|
54
|
+
- **Reviews:** with Automatic reviews on, each short can be reviewed like other outputs. Picture reviews need Claude Code or Codex as the reviewer.
|
|
55
|
+
|
|
56
|
+
With the establishing image on, the shorts' images are drawn with it as a reference too, so characters and style stay the same. See [Play-Images](Play-Images).
|
|
57
|
+
|
|
58
|
+
## See, copy and download your shorts
|
|
59
|
+
|
|
60
|
+
When the run finishes, the project page's **Shorts** section shows a grid headed with the count, for example **3 shorts · 9:16**. Above the grid, one lime **Download** holds every short's MP4 in a menu (**Download the short** when there is one), with **Open folder** and **Pick different moments** beside it. Each short has:
|
|
61
|
+
|
|
62
|
+
- A vertical player (Slopify's own, showing the short's first picture until it plays), its title and length.
|
|
63
|
+
- Its description, the full video line and its hashtags.
|
|
64
|
+
- One row of icon buttons whose names show when you point at them: **Download** (the short's MP4; left out when there is only one short, since the section's Download already fetches it), **Copy title, description and hashtags**, which puts all three on the clipboard in one go, and **More**, which holds **Make short N again**.
|
|
65
|
+
|
|
66
|
+
While the stage runs, a short not rendered yet says how far it got, such as "Making images · 2 of 5" or "Rendering". A short that failed says so and points you to Error details in the Video section.
|
|
67
|
+
|
|
68
|
+
To upload them, open **Prepare upload**: each short is listed on its own, with its title, description and tags. See [Publishing-to-YouTube](Publishing-to-YouTube).
|
|
69
|
+
|
|
70
|
+
## Change the picked moments
|
|
71
|
+
|
|
72
|
+
1. Open the project and press **Edit settings**, then open **Shorts**. (**Make short N again** on the project page opens the same place with the change made.)
|
|
73
|
+
2. Under **Picked clips**, each clip is shown by its first and last sentence.
|
|
74
|
+
3. Move a clip with **Earlier start**, **Later start**, **Earlier end** and **Later end**, one sentence at a time.
|
|
75
|
+
4. Or press **Use my own range** and pick the **Start sentence** and **End sentence** from the lists. **Back to the AI's choice** restores the model's pick.
|
|
76
|
+
5. Save, then continue the run.
|
|
77
|
+
|
|
78
|
+
A clip must stay between the shortest and longest length you set and must not overlap another clip; the line under the clip says what to change. Moving a clip costs no text calls and keeps its images where the sentences stay the same.
|
|
79
|
+
|
|
80
|
+
## Pick new moments or remake one short
|
|
81
|
+
|
|
82
|
+
| Action | What happens when you save and continue the run | Cost |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| **Pick different moments** | The text model picks new moments. Ranges you set by hand are dropped. A new clip on the same sentences as an old one keeps its images; any other clip gets new images and is rendered again. **Keep the current moments** cancels it. | One text call, plus one image call per new image |
|
|
85
|
+
| **Make short N again** | This one short's image prompts are written again, its images drawn again and the short rendered again. Its moment, title and the other shorts stay as they are. | One image call per image |
|
|
86
|
+
| Change **How many**, **Length** or **Shorts prompt** | The moments are picked again, as with Pick different moments. | As above |
|
|
87
|
+
|
|
88
|
+
## Add background music
|
|
89
|
+
|
|
90
|
+
1. Open Edit project → **Shorts** (or use the music control under **More shorts options** on Play).
|
|
91
|
+
2. Choose an audio file under **Background music (optional)**. It is looped if shorter than a short.
|
|
92
|
+
3. Set **Music volume**. The music dips while the narrator speaks.
|
|
93
|
+
4. Save and continue the run. **Remove the music** takes it off again.
|
|
94
|
+
|
|
95
|
+
## Shorts with other features
|
|
96
|
+
|
|
97
|
+
- **Multiple voices:** shorts start and end on a speaker's turn. See [Multiple-Voices](Multiple-Voices).
|
|
98
|
+
- **Other languages:** titles and hashtags are written in the project's language. In languages without word timing, shorts show whole caption groups instead of word by word. See [Other-Languages](Other-Languages).
|
|
99
|
+
- **Tables and figures:** a short that includes a described table or figure shows it upright.
|
|
100
|
+
- **AI use answer:** a short's answer follows its Image style: Yes only if that Image prompt is marked **Draws photorealistic pictures** (the Built-in style is not), or a narrating voice is marked Real person. See [Publishing-to-YouTube](Publishing-to-YouTube#ai-use-disclosure).
|
|
101
|
+
|
|
102
|
+
## Tips
|
|
103
|
+
|
|
104
|
+
- Keep **Length** close to the default 60 to 120 seconds; very short clips often lose the setup that makes a moment work.
|
|
105
|
+
- After you upload the long video, paste its link in **Full video link** (Edit project → **Shorts**) and save. Copy and Prepare upload read the link when you use them, so the description line picks it up.
|
|
106
|
+
- A frame format of 9:16 on the Video and style row makes the long video itself vertical; Shorts are separate clips and are always 9:16.
|
|
107
|
+
|
|
108
|
+
## Related pages
|
|
109
|
+
|
|
110
|
+
- [Play-Outputs](Play-Outputs)
|
|
111
|
+
- [Prompts](Prompts)
|
|
112
|
+
- [Video-Editing](Video-Editing)
|
|
113
|
+
- [Editing-a-Project](Editing-a-Project)
|
|
114
|
+
- [Publishing-to-YouTube](Publishing-to-YouTube)
|
|
115
|
+
- [Reviews-and-Checkpoints](Reviews-and-Checkpoints)
|
|
116
|
+
- [Costs-and-Run-Cost](Costs-and-Run-Cost)
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Start at Login
|
|
2
|
+
|
|
3
|
+
One switch makes Slopify start quietly in the background when you log in to your computer, so it is ready whenever you open your bookmark. It needs no administrator password, and turning it off removes exactly what it added.
|
|
4
|
+
|
|
5
|
+
**Where to find it:** Settings → **General** → **Start Slopify when I log in**. It is also offered once on the first-run screen and in the terminal.
|
|
6
|
+
|
|
7
|
+
## Turn it on
|
|
8
|
+
|
|
9
|
+
1. Open Settings → **General**.
|
|
10
|
+
2. Turn on **Start Slopify when I log in**.
|
|
11
|
+
3. The line under the switch confirms it and names the login entry it added.
|
|
12
|
+
|
|
13
|
+
From the next login, Slopify starts without opening a browser tab. Open it from your bookmark (`http://127.0.0.1:6969`) as usual.
|
|
14
|
+
|
|
15
|
+
Default: off.
|
|
16
|
+
|
|
17
|
+
## Turn it off
|
|
18
|
+
|
|
19
|
+
1. Open Settings → **General**.
|
|
20
|
+
2. Turn off **Start Slopify when I log in**.
|
|
21
|
+
|
|
22
|
+
The login entry is removed. The Slopify you are using keeps running until you stop it.
|
|
23
|
+
|
|
24
|
+
## Where you are asked
|
|
25
|
+
|
|
26
|
+
You are asked once, in whichever place comes first:
|
|
27
|
+
|
|
28
|
+
| Place | Question | Answers |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| The terminal, the first time `npx @gentbajko/slopify` starts on an interactive terminal | `Start Slopify when you log in? (Y/n)` | Enter or `y` means yes; `n` means no. It is asked after Slopify is already running, so it never holds it up. |
|
|
31
|
+
| The first-run screen (step 3) | **Start Slopify when I log in** | **Start when I log in** or **No thanks** |
|
|
32
|
+
| After an update, when neither of those asked (an update started from the app has no terminal, and the first-run screen is only for new installs) | A one-time dialog, **Start Slopify when you log in?** | **Start when I log in** or **No thanks**. Closing it counts as No thanks. |
|
|
33
|
+
|
|
34
|
+
Answering in any of these places, or using the switch in Settings, ends the question for good.
|
|
35
|
+
|
|
36
|
+
### In scripts
|
|
37
|
+
|
|
38
|
+
Without an interactive terminal nothing is asked. Use a flag instead:
|
|
39
|
+
|
|
40
|
+
| Flag | What it does |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| `--autostart` | Turns the switch on. |
|
|
43
|
+
| `--no-autostart` | Turns the switch off. |
|
|
44
|
+
|
|
45
|
+
Unlike the question, the flags set the switch every time you give them.
|
|
46
|
+
|
|
47
|
+
## What it adds on each system
|
|
48
|
+
|
|
49
|
+
Two things: a small launcher in Slopify's data folder, and one login entry in your own account's start-up list that runs it.
|
|
50
|
+
|
|
51
|
+
| System | Login entry | Launcher |
|
|
52
|
+
| --- | --- | --- |
|
|
53
|
+
| Linux | `~/.config/autostart/slopify.desktop` (or `$XDG_CONFIG_HOME/autostart`) | `<data folder>/autostart/start-slopify.sh` |
|
|
54
|
+
| macOS | `~/Library/LaunchAgents/stream.slopify.app.plist` | `<data folder>/autostart/start-slopify.sh` |
|
|
55
|
+
| Windows | Registry `HKCU\Software\Microsoft\Windows\CurrentVersion\Run`, value `Slopify` | `<data folder>\autostart\start-slopify.cmd` |
|
|
56
|
+
|
|
57
|
+
### Linux
|
|
58
|
+
|
|
59
|
+
A standard desktop autostart entry, which GNOME, KDE, Xfce, Cinnamon and most other desktops run at login. No systemd unit is used.
|
|
60
|
+
|
|
61
|
+
### macOS
|
|
62
|
+
|
|
63
|
+
A per-user LaunchAgent that runs at load. It takes effect at your next login; turning the switch on doesn't start a second Slopify beside the one you are using. Turning it off deletes the file. There is no keep-alive: if you quit Slopify, it stays quit until the next login.
|
|
64
|
+
|
|
65
|
+
### Windows
|
|
66
|
+
|
|
67
|
+
A value in your user's Run list. At login it opens Slopify in a minimised window in the taskbar; closing that window stops Slopify. A data folder whose path contains `%` can't be used, because Windows would read it as a variable. Start Slopify with another folder (for example `--data-dir C:\Slopify`) and turn the switch on there.
|
|
68
|
+
|
|
69
|
+
### WSL
|
|
70
|
+
|
|
71
|
+
Not available. Windows doesn't start Linux programs when you log in. Start Slopify from a Windows terminal instead and turn the switch on there.
|
|
72
|
+
|
|
73
|
+
### An entry you made yourself
|
|
74
|
+
|
|
75
|
+
If an entry with the same name exists and Slopify didn't write it, Slopify leaves it alone. Turning the switch on says so and names the file (on Windows, see Task Manager → Startup apps).
|
|
76
|
+
|
|
77
|
+
## How the launcher starts Slopify
|
|
78
|
+
|
|
79
|
+
`npx` keeps packages in a cache it may clean or move, so the login entry never points into it. It runs the launcher in the data folder, which starts, in this order:
|
|
80
|
+
|
|
81
|
+
1. your installed Slopify (`npm install -g`), when you don't run it through `npx`;
|
|
82
|
+
2. `npx` beside the Node you were using, asking for the exact version you were running. A pinned version starts offline once it is cached, and never jumps to a new release by itself;
|
|
83
|
+
3. `npx` from your `PATH`, the same way.
|
|
84
|
+
|
|
85
|
+
It starts Slopify with `--no-open`, and with the data folder, port and (when it isn't `127.0.0.1`) host that were in use when you turned the switch on, since no terminal passes them at login.
|
|
86
|
+
|
|
87
|
+
- If the Node it recorded is gone (after an nvm or Homebrew upgrade), it uses the `node` on your `PATH`.
|
|
88
|
+
- In-app updates still apply: the started version hands over to the newest one installed in the data folder. See [Updating and Patch Notes](Updating-and-Patch-Notes).
|
|
89
|
+
- Every start with the switch on rewrites the launcher, so it follows the Node, the install and the version you actually use.
|
|
90
|
+
- A Slopify started with a different `--data-dir` leaves the entry pointing where it was.
|
|
91
|
+
|
|
92
|
+
Output from login starts is added to `<data folder>/logs/autostart.log`. Look there if Slopify didn't come up after a login.
|
|
93
|
+
|
|
94
|
+
## Docker
|
|
95
|
+
|
|
96
|
+
In Docker the switch isn't used. The container restarts with Docker (`restart: unless-stopped`), so Slopify starts at login exactly when Docker does. Slopify never changes Docker's own settings.
|
|
97
|
+
|
|
98
|
+
1. The `--docker` installer asks `Start Slopify when you log in? (Y/n)` once (or takes `--autostart` / `--no-autostart`).
|
|
99
|
+
2. It reads, without changing, whether Docker starts by itself. With Docker Desktop (always on macOS and Windows, and on Linux when its settings file is there), that is Docker Desktop's own setting **Start Docker Desktop when you sign in**, read from its settings file. Otherwise it asks `systemctl is-enabled docker.service` for the system Docker, or `systemctl --user is-enabled docker.service` for rootless Docker.
|
|
100
|
+
3. If Docker doesn't start by itself, it prints how to turn that on: with Docker Desktop, "Turn on Docker Desktop → Settings → General → Start Docker Desktop when you sign in to your computer."; with Docker Engine, `sudo systemctl enable docker`, or `systemctl --user enable docker` for rootless Docker.
|
|
101
|
+
|
|
102
|
+
Settings → **General** and the first-run screen then show (the first-run screen only informs; there is nothing to switch):
|
|
103
|
+
|
|
104
|
+
| Line | Meaning |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| **Starts with Docker: yes** | Docker starts at boot or login, so Slopify does too. |
|
|
107
|
+
| **Starts with Docker: no** | Docker doesn't start by itself. The screen says where to change that. |
|
|
108
|
+
| **Starts with Docker: unknown** | The installer couldn't check, or you run the compose file yourself. |
|
|
109
|
+
| **Checked by the installer on …** | When it last looked. |
|
|
110
|
+
|
|
111
|
+
After changing Docker's setting, run `npx @gentbajko/slopify@latest --docker` again so it checks again. A compose file you run by hand has no record, so the screen says it can't know and points to Docker Desktop → Settings → General → Start Docker Desktop when you sign in, or `sudo systemctl enable docker` for Docker Engine.
|
|
112
|
+
|
|
113
|
+
## Tips
|
|
114
|
+
|
|
115
|
+
- Bookmark `http://127.0.0.1:6969` so you can open Slopify after login without a terminal.
|
|
116
|
+
- If you uninstall Slopify, turn the switch off first so no login entry is left behind. See [Uninstalling and Moving](Uninstalling-and-Moving).
|
|
117
|
+
- If you usually start Slopify with `--port` or `--data-dir`, turn the switch on from a Slopify started with those options; the launcher remembers them.
|
|
118
|
+
|
|
119
|
+
## Related pages
|
|
120
|
+
|
|
121
|
+
- [Install](Install)
|
|
122
|
+
- [Docker](Docker)
|
|
123
|
+
- [First Launch and Welcome](First-Launch-and-Welcome)
|
|
124
|
+
- [Updating and Patch Notes](Updating-and-Patch-Notes)
|
|
125
|
+
- [Settings Reference](Settings-Reference)
|
|
126
|
+
- [Troubleshooting](Troubleshooting)
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Studio Extension
|
|
2
|
+
|
|
3
|
+
Slopify Studio is an optional browser extension that fills YouTube Studio's upload dialog from a project's Prepare upload list: title, description, thumbnails, playlist, audience, the AI use answer and tags. You drop the video file in yourself, check what it filled, and press Publish yourself. The extension never presses Next, Save, Schedule or Publish.
|
|
4
|
+
|
|
5
|
+
**Where to find it:** it ships with Slopify. Download it from Settings → **YouTube Studio** → **Install the Studio extension** (or from **Prepare upload** while no extension is paired). Pairing is in the same Settings section. You use it from a finished project → **Prepare upload** → **Fill in YouTube Studio**.
|
|
6
|
+
|
|
7
|
+
## What you need
|
|
8
|
+
|
|
9
|
+
- Slopify running on this computer (it opens at `http://127.0.0.1:6969` by default).
|
|
10
|
+
- Chrome, Chromium, Edge or Brave, or Firefox 128 or newer.
|
|
11
|
+
|
|
12
|
+
The extension is built into Slopify, so there is nothing else to get. It is not published in a browser store. It has no remote code: everything it runs is in the zip you download.
|
|
13
|
+
|
|
14
|
+
## Get the extension
|
|
15
|
+
|
|
16
|
+
1. Open Settings → **YouTube Studio**. Under **Install the Studio extension**, pick your browser: **Chrome, Edge, Brave** or **Firefox**.
|
|
17
|
+
2. Press **Download for Chrome** or **Download for Firefox**. It saves `slopify-studio-chrome.zip` or `slopify-studio-firefox.zip`.
|
|
18
|
+
3. Follow the three steps shown under the button, also written out below.
|
|
19
|
+
|
|
20
|
+
Prepare upload shows the same download and steps while no extension is paired.
|
|
21
|
+
|
|
22
|
+
## Install on Chrome, Chromium, Edge or Brave
|
|
23
|
+
|
|
24
|
+
1. Unzip `slopify-studio-chrome.zip` into a folder you keep: the browser loads the extension from there.
|
|
25
|
+
2. Open `chrome://extensions` (in Edge, `edge://extensions`; in Brave, `brave://extensions`) and turn on **Developer mode**.
|
|
26
|
+
3. Press **Load unpacked** and pick that folder.
|
|
27
|
+
4. Pin **Slopify Studio** to the toolbar if you like.
|
|
28
|
+
|
|
29
|
+
## Install on Firefox
|
|
30
|
+
|
|
31
|
+
1. Keep the zip as it is.
|
|
32
|
+
2. Open `about:debugging#/runtime/this-firefox` and press **Load Temporary Add-on**.
|
|
33
|
+
3. Pick `slopify-studio-firefox.zip`.
|
|
34
|
+
|
|
35
|
+
A temporary add-on is removed when Firefox restarts. Load it again after each restart.
|
|
36
|
+
|
|
37
|
+
## Update the extension
|
|
38
|
+
|
|
39
|
+
After updating Slopify, download the zip again from Settings → **YouTube Studio** and replace the old one: unzip over the same folder and press the reload arrow on `chrome://extensions`, or load the new Firefox zip.
|
|
40
|
+
|
|
41
|
+
## Pair it with Slopify
|
|
42
|
+
|
|
43
|
+
Pairing gives the extension a secret so that only it, and no web page, can read your upload packs.
|
|
44
|
+
|
|
45
|
+
1. In Slopify, open **Settings → YouTube Studio**.
|
|
46
|
+
2. Under **Extension pairing token**, press **Copy**.
|
|
47
|
+
3. Click the extension's toolbar button (or open its options). The **Slopify Studio · Pairing** page opens.
|
|
48
|
+
4. Check **Slopify address**. It must be the address in your Slopify tab, `http://127.0.0.1:6969` by default.
|
|
49
|
+
5. Paste the token into **Pairing token** and press **Pair**.
|
|
50
|
+
|
|
51
|
+
The options page says "Paired with Slopify at …". Back in Settings, the line under the token says "Paired with the extension at …" with the extension's address.
|
|
52
|
+
|
|
53
|
+
To unpair, press **New pairing token** in Settings. It makes a fresh token and unpairs the extension until you paste the new one and press Pair again.
|
|
54
|
+
|
|
55
|
+
## Settings → YouTube Studio
|
|
56
|
+
|
|
57
|
+
The section is headed **Upload pack and extension**.
|
|
58
|
+
|
|
59
|
+
| Option | What it does | Default / range |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| **Playlist** | The YouTube playlist upload packs name, so the extension ticks it in Studio's dialog. Pick **Every channel (default)** or one channel in the channel list, type the playlist exactly as it is called in Studio, and press **Save**. The default is used by every channel without its own; a channel's own playlist wins for its videos. Leave it empty for no playlist. | Empty; up to 150 characters |
|
|
62
|
+
| **Extension pairing token** | The secret the extension needs before it may read your upload packs. **Copy** copies it; **New pairing token** makes a new one and unpairs the extension. | Made for you |
|
|
63
|
+
| **Install the Studio extension** | The download and install steps (see [Get the extension](#get-the-extension)). | |
|
|
64
|
+
|
|
65
|
+
## Fill in an upload
|
|
66
|
+
|
|
67
|
+
1. Open a finished project and press **Prepare upload**.
|
|
68
|
+
2. Under **What to upload**, pick **Video** or a short.
|
|
69
|
+
3. Press **Fill in YouTube Studio**. Studio's upload page opens in a new tab, and the item joins **Waiting for Studio**.
|
|
70
|
+
4. Drop the video file into Studio's upload dialog. (Use **Download** or **Open folder** on the Video file row to find it.)
|
|
71
|
+
5. When the **Details** step appears, the extension first checks that the dialog has every field the item needs, then fills them and shows a message for each, bottom right.
|
|
72
|
+
6. Check everything. If you want to start over, press **Fill again from Slopify** (bottom right).
|
|
73
|
+
7. Go through Studio's remaining steps and publish yourself.
|
|
74
|
+
8. Back in Slopify, press **Mark uploaded**. See [Publishing-to-YouTube](Publishing-to-YouTube#mark-a-video-uploaded).
|
|
75
|
+
|
|
76
|
+
**Fill in YouTube Studio** is only offered once an extension is paired. Unpaired, Prepare upload says "The Slopify Studio extension isn't paired.", shows the install and pair steps, keeps the Copy steps as your upload pack, and offers **Open YouTube Studio**.
|
|
77
|
+
|
|
78
|
+
### Upload several one after another
|
|
79
|
+
|
|
80
|
+
Each press of **Fill in YouTube Studio** adds the item to **Waiting for Studio** instead of replacing the last one. Every new upload dialog you open in Studio is filled with the next waiting item, in order. So you can queue the video and all its shorts, then upload them one by one.
|
|
81
|
+
|
|
82
|
+
- Prepare upload lists what waits: the first row says "Next: filled in the next upload dialog you open in Studio.", the others "Filled after N more uploads." **Remove** takes one off.
|
|
83
|
+
- The list survives a restart of Slopify. An item waits up to 24 hours. A new pairing token clears the list, and it never travels in a backup.
|
|
84
|
+
|
|
85
|
+
## What it fills
|
|
86
|
+
|
|
87
|
+
| Field in Studio | What the extension does |
|
|
88
|
+
|---|---|
|
|
89
|
+
| **Title** | Types the title (up to 100 characters for the video, the short's own title for a short). |
|
|
90
|
+
| **Description** | Types the description line by line, so line breaks are kept. |
|
|
91
|
+
| **Thumbnail** | Sets the first thumbnail. With three thumbnails, it looks for Studio's **A/B Testing** button beside the title and puts all three in. If the button isn't there or its dialog can't be filled, it sets the first and asks you to add the others in A/B Testing by hand. Shorts get no thumbnail. |
|
|
92
|
+
| **Playlists** | Opens the dropdown, ticks the playlist named in Settings → YouTube Studio, and closes it. |
|
|
93
|
+
| **Audience** | Picks "No, it's not made for kids". |
|
|
94
|
+
| **Show more** | Presses it once, to reach the advanced settings. |
|
|
95
|
+
| **AI use** | Picks Yes or No, as Prepare upload worked it out. See [AI use disclosure](Publishing-to-YouTube#ai-use-disclosure). |
|
|
96
|
+
| **Tags** | Types each tag and turns it into a chip. Tags already there are skipped. |
|
|
97
|
+
|
|
98
|
+
It then says what it did. It does not choose visibility, schedule, or press any button that saves or publishes.
|
|
99
|
+
|
|
100
|
+
## When a field can't be filled
|
|
101
|
+
|
|
102
|
+
Studio changes its page from time to time.
|
|
103
|
+
|
|
104
|
+
- **A field is missing before anything is written.** The extension checks every field the item needs first. If Studio's dialog lacks one, it fills nothing at all, so you never get a half-filled upload: "Nothing was filled: Studio's upload dialog has changed, and Slopify couldn't find …". It copies the whole upload pack (or offers **Copy** for it) and names the missing fields. Paste each part by hand, or use the Copy buttons in Prepare upload. Downloading the extension again from Settings → YouTube Studio may fix it.
|
|
105
|
+
- **A field doesn't take the text.** It shows a message for that field, for example "Couldn't find the Tags field — the text is copied, paste it by hand", and fills the rest ("Filled what it could; 1 field needs you. Nothing was published.").
|
|
106
|
+
|
|
107
|
+
Every message with text to paste has a **Copy** button. If the browser refuses the clipboard, the text is shown selected so you can copy it yourself.
|
|
108
|
+
|
|
109
|
+
Before relying on the extension, try it on one real upload and read its messages.
|
|
110
|
+
|
|
111
|
+
## Privacy and security
|
|
112
|
+
|
|
113
|
+
- Only the extension's background worker talks to Slopify, and only at `127.0.0.1` or `localhost`.
|
|
114
|
+
- Slopify answers the extension's requests only with the pairing token, and only from the extension that paired. It never answers web pages.
|
|
115
|
+
- The extension reads only the upload pack you chose and its thumbnails.
|
|
116
|
+
- It runs on `studio.youtube.com` only, and needs no YouTube sign-in of its own: it works in the Studio tab you are already signed in to.
|
|
117
|
+
|
|
118
|
+
## Limits
|
|
119
|
+
|
|
120
|
+
- It never uploads the video file: you drop it into Studio.
|
|
121
|
+
- It never presses Next, Save, Schedule or Publish.
|
|
122
|
+
- It fills the Details step only. Monetisation, end screens, cards, visibility and scheduling are left to you.
|
|
123
|
+
- Some parts of Studio have not been checked against the live page and may not fill: the playlist list the dropdown opens, the A/B Testing dialog (the button may only appear once the upload is saved), whether the upload dialog behaves exactly like the Details editor, and whether Studio makes a tag chip on Enter or on comma. The extension tries both keys and reports what it can't confirm.
|
|
124
|
+
- It looks at Studio at most every quarter of a second and stops looking while it fills a dialog, so it doesn't slow Studio down.
|
|
125
|
+
- In Firefox, a temporary add-on disappears when Firefox restarts.
|
|
126
|
+
- If you change Slopify's port or address, pair again with the new **Slopify address**.
|
|
127
|
+
|
|
128
|
+
## Troubleshooting
|
|
129
|
+
|
|
130
|
+
| Problem | What to do |
|
|
131
|
+
|---|---|
|
|
132
|
+
| Studio opens but nothing is filled | Make sure you dropped the video file in and reached the Details step. Check the extension is paired (Settings → YouTube Studio says "Paired with the extension at …") and that the item is under **Waiting for Studio** in Prepare upload. Press **Fill again from Slopify** in Studio. If it says "Nothing was filled", see [When a field can't be filled](#when-a-field-cant-be-filled). |
|
|
133
|
+
| The wrong item was filled | Items fill in the order they wait. **Remove** the ones you don't want under **Waiting for Studio** in Prepare upload. |
|
|
134
|
+
| Pairing fails | Check the **Slopify address** matches your Slopify tab, and copy the token again from Settings → YouTube Studio. If you pressed New pairing token, the old one no longer works. |
|
|
135
|
+
| Studio says "The extension isn't paired with Slopify yet." | Open the extension's options, paste the pairing token from Settings → YouTube Studio and press **Pair**. |
|
|
136
|
+
| Settings says "No extension is paired" | Paste the token into the extension's options and press **Pair**. |
|
|
137
|
+
| A field says it couldn't be filled | Paste the copied text by hand. Studio may have changed that field. |
|
|
138
|
+
| The extension is gone in Firefox | Load it again from `about:debugging`; temporary add-ons are removed on restart. |
|
|
139
|
+
|
|
140
|
+
## Related pages
|
|
141
|
+
|
|
142
|
+
- [Publishing-to-YouTube](Publishing-to-YouTube)
|
|
143
|
+
- [YouTube-Description](YouTube-Description)
|
|
144
|
+
- [Shorts](Shorts)
|
|
145
|
+
- [Settings-Reference](Settings-Reference)
|
|
146
|
+
- [Troubleshooting](Troubleshooting)
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Templates
|
|
2
|
+
|
|
3
|
+
A template is a saved Play setup: prompts, voice, images, style, outputs, reviews and checkpoints, under a name. Pick it on Play, type a topic, and the video is set up the way you like it. Schedules run templates too, so a template is also the recipe every scheduled video follows.
|
|
4
|
+
|
|
5
|
+
**Where to find it:** **Library → Templates**. You also pick templates at the top of **Play**, save them from Play's right rail or a project's **More** menu, and move them between channels on a channel's **Templates** tab.
|
|
6
|
+
|
|
7
|
+
## What a template keeps
|
|
8
|
+
|
|
9
|
+
| Kept | Left out |
|
|
10
|
+
|---|---|
|
|
11
|
+
| Every Play setting and every checkpoint choice | The topic you typed: keywords the project title names, such as `{{Topic}}`, are saved empty |
|
|
12
|
+
| A copy of each prompt the setup uses (article, image, thumbnail, description, shorts and so on) | Extra videos you queued with **Add topic** |
|
|
13
|
+
| A copy of each picked intro and outro | Uploaded fonts |
|
|
14
|
+
| Values of the other keywords, such as a word count | Uploaded files keep their names but must be attached again when you use the template |
|
|
15
|
+
| The channel it belongs to | |
|
|
16
|
+
|
|
17
|
+
Because the template keeps copies of its prompts, editing a prompt in the Library later does not change a template you already saved. Save the template again to pick up the new prompt.
|
|
18
|
+
|
|
19
|
+
## Save a template from Play
|
|
20
|
+
|
|
21
|
+
1. Set up a video on [Play](Play-Overview) the way you want every video of this kind to look.
|
|
22
|
+
2. In the right rail, press **Save as template**.
|
|
23
|
+
3. Type a **Template name** (up to 120 characters). The placeholder suggests the title without its keywords.
|
|
24
|
+
4. Read the list under the name. It says what is left out, such as the topic you typed and any extra videos. If the title names no keyword, it says every keyword keeps its value.
|
|
25
|
+
5. Press **Save template**. The template appears on Play's **Template** picker and in **Library → Templates**.
|
|
26
|
+
|
|
27
|
+
## Save a template from a finished project
|
|
28
|
+
|
|
29
|
+
You can turn any project's current setup into a template, which is handy after you have tuned a project with **Edit project**.
|
|
30
|
+
|
|
31
|
+
1. Open the project.
|
|
32
|
+
2. Open the **More** menu (or press `Ctrl+K` and search for **Save as template**).
|
|
33
|
+
3. Type a **Template name** (up to 120 characters) and press **Save template**.
|
|
34
|
+
|
|
35
|
+
The template takes the setup of the revision you are looking at.
|
|
36
|
+
|
|
37
|
+
## Save a template from Library → Templates
|
|
38
|
+
|
|
39
|
+
1. Open **Library → Templates** and press **Save a setup**.
|
|
40
|
+
2. Under **Saved Play draft**, choose a draft. Only drafts saved in Play are listed; open Play and set one up first if the list is empty. The draft itself is not changed.
|
|
41
|
+
3. Type a **Template name** (up to 120 characters).
|
|
42
|
+
4. Pick the **Channel**. The default, **The draft's channel**, is the draft's own channel, or its template's channel when it has none.
|
|
43
|
+
5. Press **Save template**.
|
|
44
|
+
|
|
45
|
+
## Use a template
|
|
46
|
+
|
|
47
|
+
**From Play:**
|
|
48
|
+
|
|
49
|
+
1. Open **Play**.
|
|
50
|
+
2. Pick the template in the **Template** field at the top. Play opens a fresh draft made from it and carries over the topic you already typed.
|
|
51
|
+
3. Type the topic, check the rows, and press **Start run**.
|
|
52
|
+
|
|
53
|
+
**From Library → Templates:**
|
|
54
|
+
|
|
55
|
+
1. Find the template in the list.
|
|
56
|
+
2. Press **Use in Play**. Slopify makes a new Play draft from the template and opens it. Nothing starts until you press **Start run**.
|
|
57
|
+
|
|
58
|
+
Keywords the project title names start empty so you can type this video's topic. Uploaded files keep their names but must be attached again.
|
|
59
|
+
|
|
60
|
+
## The row actions
|
|
61
|
+
|
|
62
|
+
Every template row has the same actions as the other Library lists, always in this order:
|
|
63
|
+
|
|
64
|
+
| Action | What it does |
|
|
65
|
+
|---|---|
|
|
66
|
+
| **Edit** | Picks the template and shows its keywords beside the list (below). To change its settings, press **Use in Play**, change the draft, then **Save a setup**. |
|
|
67
|
+
| **Duplicate** | Makes `<name> copy` in the same channel ("Duplicated as …"). |
|
|
68
|
+
| **Use in Play** | Makes a fresh Play draft from the template and opens it. |
|
|
69
|
+
| **History** (clock icon) | Every saved version, compared with the current one, with **Restore** (see [History](#history)). |
|
|
70
|
+
| **Delete** (bin icon) | Asks first, then moves the template to the trash (see [Delete a template](#delete-a-template)). |
|
|
71
|
+
|
|
72
|
+
A press anywhere on a row picks it. The pencil beside a template's name renames it in the row (see [Rename a template](#rename-a-template)).
|
|
73
|
+
|
|
74
|
+
## See a template's keywords
|
|
75
|
+
|
|
76
|
+
Pick a template (or press **Edit**) and its keywords show beside the list: each keyword, whether it is a topic keyword (saved empty) or a setting-like keyword that keeps its value, and which prompts or fields it feeds. This is the same list Play and Edit project show. With nothing picked it says "Pick a template to see the keywords it fills."; a template with none says "No keywords: the prompts and the title name none."
|
|
77
|
+
|
|
78
|
+
## Rename a template
|
|
79
|
+
|
|
80
|
+
1. Press the pencil (**Rename <name>**) beside the template's name.
|
|
81
|
+
2. Type the new name (up to 120 characters) and press **Save name** or Enter. `Esc` or **Cancel** keeps the old name.
|
|
82
|
+
|
|
83
|
+
The notice says "Renamed “A” to “B”." with **Undo**. A rename saves a new version of the template; its settings stay as they are.
|
|
84
|
+
|
|
85
|
+
## History
|
|
86
|
+
|
|
87
|
+
Press the clock icon (**History of <name>**) on a template's row. The drawer has:
|
|
88
|
+
|
|
89
|
+
- **Versions**: every version, newest first, as **Version N** with its name and date. The newest is marked **Current**; the others have **Restore**.
|
|
90
|
+
- **Compare with the current version**: the version you picked, side by side with the current one. A rename between them is said above ("Renamed from … to …").
|
|
91
|
+
|
|
92
|
+
**Restore** saves the old version again as a new version ("Restored version 2 of … as version 5."), so nothing after it is lost. Schedules keep the version they were set up with; see [Versions](#versions).
|
|
93
|
+
|
|
94
|
+
## Filter by channel
|
|
95
|
+
|
|
96
|
+
Use **Show templates of** above the list to see only one channel's templates, or **All channels**. This only changes what you see. A template's channel is the one a draft made from it runs in; see [Channels](Channels).
|
|
97
|
+
|
|
98
|
+
## Move a template to another channel
|
|
99
|
+
|
|
100
|
+
1. Open **Channels**, then the channel that holds the template.
|
|
101
|
+
2. Open the **Templates** tab.
|
|
102
|
+
3. Choose the new channel for the template.
|
|
103
|
+
|
|
104
|
+
The template and every schedule that runs it move together. Their next runs use the new channel's brand kit, cast and series brief. Projects already made keep what they were made with. Moving a template does not make a new version of it.
|
|
105
|
+
|
|
106
|
+
## Versions
|
|
107
|
+
|
|
108
|
+
Each template shows **Version N · updated** with the date. Schedules remember the version they were set up with; to make a schedule use a newer version, pick the template again in the schedule's **Template** field. See [Schedules](Schedules).
|
|
109
|
+
|
|
110
|
+
## Delete a template
|
|
111
|
+
|
|
112
|
+
1. Press the bin icon (**Delete <name>**) on the template's row.
|
|
113
|
+
2. Confirm with **Delete template**.
|
|
114
|
+
|
|
115
|
+
The template goes to **Settings → Trash** for 30 days, where you can restore it. A template that a schedule still runs can't be deleted: delete or change that schedule first. See [Trash](Trash).
|
|
116
|
+
|
|
117
|
+
## Retired models
|
|
118
|
+
|
|
119
|
+
When a template picks a model that has been retired, its row says so, for example "Images … is retired.", with **Switch to <model>**. One press switches the template to the replacement, as in Settings → **Models**, and the schedules that run it follow. When there is no replacement, the row says to choose another model in Settings → **Models** or edit the template. See [Models](Models#switch-away-from-a-retired-model).
|
|
120
|
+
|
|
121
|
+
## Starter packs
|
|
122
|
+
|
|
123
|
+
**Library → Templates → Add pack** opens **Add a starter pack**. Press **Add pack** on a pack's row; it then reads **Added**. Each pack adds prompts, a suggested voice and a ready-made Play template for one kind of channel:
|
|
124
|
+
|
|
125
|
+
| Pack | What it is for |
|
|
126
|
+
|---|---|
|
|
127
|
+
| **Sleep lore** | Slow, gentle myths and legends told to fall asleep to |
|
|
128
|
+
| **True crime** | Measured, factual retellings of real cases and their investigations |
|
|
129
|
+
| **History** | Narrative history of people, places and events, told like a documentary |
|
|
130
|
+
| **Science explainers** | Clear, friendly explanations of how the world works, one idea at a time |
|
|
131
|
+
|
|
132
|
+
Adding a pack twice changes nothing, and a pack never replaces a prompt or template of yours with the same name. The first-run screen offers the same packs (**Add to library**); see [First launch and welcome](First-Launch-and-Welcome#starter-packs).
|
|
133
|
+
|
|
134
|
+
## Tips
|
|
135
|
+
|
|
136
|
+
- Make one template per kind of video (a long documentary, a 60-second short, a podcast) rather than one template you change each time.
|
|
137
|
+
- Put the topic keyword in the title, like `History: {{Topic}}`. Then the template saves it empty, Play asks for it, and a schedule can fill it from its topic list.
|
|
138
|
+
- Keep settings you vary per video, such as a word count, as their own keywords. A schedule can set them per topic in its table.
|
|
139
|
+
|
|
140
|
+
## Related pages
|
|
141
|
+
|
|
142
|
+
- [Play overview](Play-Overview)
|
|
143
|
+
- [Schedules](Schedules)
|
|
144
|
+
- [Channels](Channels)
|
|
145
|
+
- [Prompts](Prompts)
|
|
146
|
+
- [Trash](Trash)
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Trash
|
|
2
|
+
|
|
3
|
+
Deleting something in Slopify does not remove it at once. Deleted projects, prompts, intros and outros, templates and schedules go to the trash for 30 days, where you can put them back or remove them for good.
|
|
4
|
+
|
|
5
|
+
**Where to find it:** Settings → **Trash**.
|
|
6
|
+
|
|
7
|
+
## What goes to the trash
|
|
8
|
+
|
|
9
|
+
| Kind | Shown as | Deleted from |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| Project | Project | Projects (the delete button on a project's row, then **Delete project**) |
|
|
12
|
+
| Library prompt | Prompt · *type* (for example Prompt · article) | Library → Prompts |
|
|
13
|
+
| Intro or outro | Intro or Outro | Library → Intros & Outros |
|
|
14
|
+
| Template | Template | Templates |
|
|
15
|
+
| Schedule | Schedule | Schedules |
|
|
16
|
+
|
|
17
|
+
As soon as an item is in the trash it disappears from every list, picker, lookup, the calendar and the batch queue, and its name is free for a new item right away.
|
|
18
|
+
|
|
19
|
+
Each row in the trash shows the item's name, its kind, when it was deleted and how many days are left, for example "Project · deleted *date* · 30 days left". On its last day it says "removed for good today".
|
|
20
|
+
|
|
21
|
+
## Restore an item
|
|
22
|
+
|
|
23
|
+
1. Open Settings → **Trash**.
|
|
24
|
+
2. Find the item under **Deleted items**.
|
|
25
|
+
3. Press **Restore**.
|
|
26
|
+
|
|
27
|
+
It comes back as it was. A few kinds have their own rules:
|
|
28
|
+
|
|
29
|
+
| Item | What happens on restore |
|
|
30
|
+
| --- | --- |
|
|
31
|
+
| Prompt, intro/outro or template whose name was taken meanwhile | It comes back as "Name (restored)", then "Name (restored 2)" and so on. The message says which name it got. A renamed template gets a new version. |
|
|
32
|
+
| Project that was waiting its turn (a queued batch item, or held at a checkpoint) | It was held while in the trash and picks up where it was. |
|
|
33
|
+
| Schedule | It comes back **paused**, with no next run. Press **Resume** on Schedules to run it again. |
|
|
34
|
+
| Schedule whose template is also in the trash | Restore the template first (it is listed in the trash too), then the schedule. |
|
|
35
|
+
| Schedule whose template was removed for good | It cannot be restored: it has nothing to run. **Delete now** removes it from the trash. |
|
|
36
|
+
|
|
37
|
+
## Delete an item for good
|
|
38
|
+
|
|
39
|
+
1. Open Settings → **Trash**.
|
|
40
|
+
2. Press **Delete now** on the item.
|
|
41
|
+
3. Confirm with **Delete for good**, or press **Keep it**.
|
|
42
|
+
|
|
43
|
+
What the confirmation says:
|
|
44
|
+
|
|
45
|
+
- **Project**: "The project and every file it produced are removed from disk. This cannot be undone." The project's folder is removed first, then its records.
|
|
46
|
+
- **Schedule**: "The schedule leaves the trash and cannot be restored. Its run history stays on Schedules."
|
|
47
|
+
- **Anything else**: "It is removed for good. This cannot be undone." A prompt or intro/outro goes with its History.
|
|
48
|
+
|
|
49
|
+
There is no button to empty the whole trash at once; each item is deleted on its own, or left for the daily clean-up.
|
|
50
|
+
|
|
51
|
+
## Retention: the 30-day clean-up
|
|
52
|
+
|
|
53
|
+
Anything in the trash for more than 30 days is removed for good by a daily clean-up, the same way as **Delete now**. Slopify checks hourly whether a day has passed since the last clean-up, so a computer that was asleep catches up. If one item cannot be removed (for example a project folder another program has open), it stays in the trash for the next pass and the rest still go.
|
|
54
|
+
|
|
55
|
+
A project's disk space is freed only when it leaves the trash. Settings → **Storage** counts deleted projects still in the trash. See [Where Your Files Live](Where-Your-Files-Live).
|
|
56
|
+
|
|
57
|
+
## What cannot be deleted
|
|
58
|
+
|
|
59
|
+
| Situation | What to do |
|
|
60
|
+
| --- | --- |
|
|
61
|
+
| A project that is still running | Open the project and use **More project actions → Cancel the run…** first. On Projects the delete button says "Cancel the run first, then delete it." |
|
|
62
|
+
| A template that a schedule (not in the trash) uses | Delete that schedule first. |
|
|
63
|
+
|
|
64
|
+
## Messages you may see
|
|
65
|
+
|
|
66
|
+
| Message | Fix |
|
|
67
|
+
| --- | --- |
|
|
68
|
+
| "This project is still running. Use Cancel run on the project page first, then try again." | Cancel the run, then delete. |
|
|
69
|
+
| "Some of this project's files could not be removed. Close any program using files in the project folder, then press Delete now again." | Close the file manager, player or editor that has the folder open, then press **Delete now** again. |
|
|
70
|
+
| "This schedule's template is in the trash too. Restore the template first (it is listed here), then restore the schedule." | Restore the template, then the schedule. |
|
|
71
|
+
| "This schedule's template was removed for good, so the schedule has nothing to run. It cannot be restored; Delete now removes it from the trash." | Use **Delete now**. |
|
|
72
|
+
| "This item is no longer in the trash: it was restored or removed for good. Reload Settings → Trash to see what is left." | Reload the page. |
|
|
73
|
+
|
|
74
|
+
## Tips
|
|
75
|
+
|
|
76
|
+
- Delete what you do not need with **Delete now** when you want the disk space back at once.
|
|
77
|
+
- A deleted schedule's past runs stay listed on Schedules even after it is removed for good.
|
|
78
|
+
|
|
79
|
+
## Related pages
|
|
80
|
+
|
|
81
|
+
- [Home and Projects](Home-and-Projects)
|
|
82
|
+
- [Where Your Files Live](Where-Your-Files-Live)
|
|
83
|
+
- [Prompts](Prompts)
|
|
84
|
+
- [Intros and Outros](Intros-and-Outros)
|
|
85
|
+
- [Templates](Templates)
|
|
86
|
+
- [Schedules](Schedules)
|
|
87
|
+
- [Settings Reference](Settings-Reference)
|