@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,149 @@
|
|
|
1
|
+
# Where Your Files Live
|
|
2
|
+
|
|
3
|
+
Slopify keeps two kinds of files apart: your files (projects, backups, exports), in a normal folder you can open, and Slopify's own data (database, settings, keys, logs), in a hidden folder. This page says where each is, how to move your files, and how to free disk space.
|
|
4
|
+
|
|
5
|
+
**Where to find it:** Settings → **Backup & storage** → **Your files**, **Export and import**, **Disk space** and **Sample projects**.
|
|
6
|
+
|
|
7
|
+
## The two places
|
|
8
|
+
|
|
9
|
+
| What | Where (new install) | Contains |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| Your files | `<Documents>/Slopify/` | `Projects/`: one folder per project, with its video, images, narration, captions and documents. `Backups/`: scheduled backups, unless you choose another folder. `Exports/`: files Slopify saves for you; downloads go through the browser today, so it stays empty, and Slopify never cleans it. |
|
|
12
|
+
| Slopify's data | `~/.slopify` (or `--data-dir` / `SLOPIFY_DATA_DIR`) | The database (`slopify.db`) with your library, settings and provider keys, `logs/`, `staging/` (uploads in progress), `models/` (caption models), and depending on use `fonts/`, `cache/`, `autostart/`, `updates/` (in-app updates) and `bin/` (a downloaded ffmpeg). |
|
|
13
|
+
|
|
14
|
+
The data folder is readable by your user only, because it holds your provider keys. Never share it; share an export instead (keys are never in one).
|
|
15
|
+
|
|
16
|
+
The terminal prints both places when Slopify starts (`Slopify data directory:` and `Projects:`).
|
|
17
|
+
|
|
18
|
+
### Which Documents folder
|
|
19
|
+
|
|
20
|
+
| System | Documents is |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| Windows | Your Documents folder as Windows knows it, so a Documents folder moved by OneDrive or in its Properties is followed. Otherwise `%USERPROFILE%\Documents`. |
|
|
23
|
+
| macOS | `~/Documents` |
|
|
24
|
+
| Linux | `xdg-user-dir DOCUMENTS`, then `XDG_DOCUMENTS_DIR` in `~/.config/user-dirs.dirs`, then `~/Documents`. An answer that is your home folder itself counts as unset. |
|
|
25
|
+
|
|
26
|
+
The folder is created if it is missing.
|
|
27
|
+
|
|
28
|
+
## New and existing installs
|
|
29
|
+
|
|
30
|
+
Slopify decides once, the first time 3.0 starts, and remembers it:
|
|
31
|
+
|
|
32
|
+
| Install | Your files are in |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| A new install | `<Documents>/Slopify`. If its `Projects` folder already holds another install's projects, it uses `Slopify 2`, `Slopify 3` and so on instead. |
|
|
35
|
+
| A new install with its own data folder (`--data-dir` or `SLOPIFY_DATA_DIR`) | Inside that data folder (`projects/`, with backups in `projects/Backups`), so a second or test install never shares Documents with your main one. |
|
|
36
|
+
| An install from before 3.0 | Where they were: `<data folder>/projects`, with backups in `projects/Backups`. Use **Move to Documents/Slopify** to move them. |
|
|
37
|
+
| Docker | The folders the installer mounted. See [Docker](Docker#where-your-files-go). |
|
|
38
|
+
|
|
39
|
+
## See your files
|
|
40
|
+
|
|
41
|
+
1. Open Settings → **Backup & storage**.
|
|
42
|
+
2. **Your files** shows the folder, then **Projects**, **Automatic backups** and **Exports** with their full paths.
|
|
43
|
+
3. Press **Open folder** to open it in your file manager. If Slopify can't open it, a message says where it is.
|
|
44
|
+
|
|
45
|
+
Each project page also has **Open folder** next to its downloads.
|
|
46
|
+
|
|
47
|
+
## Move your files to Documents/Slopify
|
|
48
|
+
|
|
49
|
+
The button shows only when your files are not in Documents yet (an install from before 3.0).
|
|
50
|
+
|
|
51
|
+
1. Make sure no project is being made. The move refuses to start during a run or an update.
|
|
52
|
+
2. Open Settings → **Backup & storage**.
|
|
53
|
+
3. Press **Move to Documents/Slopify**.
|
|
54
|
+
4. Keep Slopify running. The screen shows **Copying** and then **Checking the copy of** your files, with a count of files and bytes.
|
|
55
|
+
5. When it is done, **Your files are now in …** names the old folder, which still has a copy.
|
|
56
|
+
6. Open a few projects. Once they open fine, delete the old folder to free the space.
|
|
57
|
+
|
|
58
|
+
## Move your files to another folder
|
|
59
|
+
|
|
60
|
+
Use this for another disk or a synced folder.
|
|
61
|
+
|
|
62
|
+
1. Open Settings → **Backup & storage**.
|
|
63
|
+
2. Press **Choose another folder**.
|
|
64
|
+
3. In **New folder**, type the full path, for example `/home/you/Videos/Slopify` or `D:\Slopify`. Slopify makes `Projects` and `Backups` inside it.
|
|
65
|
+
4. Press **Move here**.
|
|
66
|
+
5. Wait for the copy and the check, as above. Then delete the old folder when you are sure.
|
|
67
|
+
|
|
68
|
+
The new folder must:
|
|
69
|
+
|
|
70
|
+
- be a full path;
|
|
71
|
+
- not be a system or shared folder (`/`, `/usr`, your home folder itself, `C:\Windows` and similar);
|
|
72
|
+
- not be inside Slopify's data folder or overlap the current files folder;
|
|
73
|
+
- be writable, with room for everything that still has to be copied;
|
|
74
|
+
- have empty or new `Projects` and `Backups` folders.
|
|
75
|
+
|
|
76
|
+
If one of these fails, the move doesn't start and the message says why.
|
|
77
|
+
|
|
78
|
+
### How a move keeps your files safe
|
|
79
|
+
|
|
80
|
+
1. It copies every file.
|
|
81
|
+
2. It checks each copy's size and checksum (SHA-256) against the original.
|
|
82
|
+
3. It switches to the new folder in one step, after checking once more that no project started and no file changed during the copy. Otherwise it keeps using the old folder and says why.
|
|
83
|
+
4. The old folder is left as it was.
|
|
84
|
+
|
|
85
|
+
It takes as long as copying your projects. If Slopify stops halfway, the screen shows **Moving your files to … didn't finish** (or **… stopped** with the error) and **Continue moving**. Files already copied are only checked again, not copied again. Until the move finishes, Slopify keeps using the old folder.
|
|
86
|
+
|
|
87
|
+
## Move files in Docker
|
|
88
|
+
|
|
89
|
+
A container can't move its own mounted folder. **Your files** shows the command to run on the computer running Docker, with **Copy command**:
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
npx @gentbajko/slopify@latest update --docker --projects-dir documents
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Use `--projects-dir <folder>` for another folder. The installer waits for running work, copies your projects, checks the copy and remounts the new folder. See [Docker](Docker#move-your-projects-into-documents).
|
|
96
|
+
|
|
97
|
+
## Export and import
|
|
98
|
+
|
|
99
|
+
| Button | What it does |
|
|
100
|
+
| --- | --- |
|
|
101
|
+
| **Export everything** | Downloads one `.tar` file with every project and its files and history, your library, templates, schedules, Play drafts, fonts, settings and usage. Never provider keys. Keep Slopify running until your browser's download finishes. |
|
|
102
|
+
| **Import a backup** | Adds a `.tar` (or `.zip`) backup to this install and replaces nothing. Projects already here are skipped, taken names arrive as "(imported)" and schedules arrive paused. Running projects must finish or pause first. Afterwards a summary lists what was added and skipped. |
|
|
103
|
+
| **Clean orphan files** | See below. |
|
|
104
|
+
|
|
105
|
+
After an import, enter your provider keys again in Settings → **Providers**. For daily automatic copies, see [Backups](Backups).
|
|
106
|
+
|
|
107
|
+
## Free disk space
|
|
108
|
+
|
|
109
|
+
### Disk space
|
|
110
|
+
|
|
111
|
+
**Disk space** shows what Slopify stores on this computer: the total, project files (outputs plus the working files they were made from), staged uploads, and deleted projects still in the trash, for example "· 2.1 GB in the trash (3 deleted projects), freed when removed for good". Below it, every project is listed by size with its outputs and working files.
|
|
112
|
+
|
|
113
|
+
Deleted projects free their space when the trash removes them after 30 days, or when you choose **Delete now** in Settings → **Trash**. See [Trash](Trash).
|
|
114
|
+
|
|
115
|
+
### Keep outputs only
|
|
116
|
+
|
|
117
|
+
On a finished project, **Keep outputs only** deletes the working files it was made from (images, narration parts, subtitle timing, render settings) and keeps the video, shorts, thumbnail, article, description, document and your uploads.
|
|
118
|
+
|
|
119
|
+
1. Find the project in the **Disk space** list. The button says how much it frees.
|
|
120
|
+
2. Press **Keep outputs only**.
|
|
121
|
+
3. Read the confirmation and press **Keep outputs only** again.
|
|
122
|
+
|
|
123
|
+
If you change that project later (edit an image, a caption style or the narration, or re-render), Slopify has to make those files again first, which takes time and provider credits. The button is disabled until the project has finished, or when nothing is left to remove.
|
|
124
|
+
|
|
125
|
+
A finished project's own page offers the same in its right rail: **Free space** with **Free 1.2 GB: keep the outputs, drop the working files** (see [Project Page](Project-Page#free-space)).
|
|
126
|
+
|
|
127
|
+
### Clean orphan files
|
|
128
|
+
|
|
129
|
+
**Clean orphan files** deletes files in the projects folder that no project records any more, and uploaded files that no draft, template or project uses. Your projects, outputs and library are never touched. Slopify also does this each time it starts; use it after a crash or to free space now.
|
|
130
|
+
|
|
131
|
+
Cleanup only looks inside `Projects`. It leaves `Backups` alone (only Slopify's own `slopify-backup-*.tar` files there are ever pruned, by the backup rules), leaves hidden files such as `.DS_Store` and `desktop.ini`, never removes loose files in a `Projects` folder outside the data folder, and never touches `Exports` or anything else in your files folder.
|
|
132
|
+
|
|
133
|
+
## Sample projects
|
|
134
|
+
|
|
135
|
+
**Sample projects** lists the three bundled samples and whether each is in your projects, with **Open**. **Restore samples** adds back any that were deleted and replaces the others with the originals. Your own copies of them are not touched. See [First Launch and Welcome](First-Launch-and-Welcome#explore-the-samples).
|
|
136
|
+
|
|
137
|
+
## Tips
|
|
138
|
+
|
|
139
|
+
- Videos and images take most of the space. Put them on a larger disk with **Choose another folder**; the database stays in the data folder.
|
|
140
|
+
- To use a different data folder, start Slopify with `--data-dir <folder>`. That is a different install with its own database, not a move. To take your projects there, export and import. See [Uninstalling and Moving](Uninstalling-and-Moving).
|
|
141
|
+
|
|
142
|
+
## Related pages
|
|
143
|
+
|
|
144
|
+
- [Backups](Backups)
|
|
145
|
+
- [Trash](Trash)
|
|
146
|
+
- [Docker](Docker)
|
|
147
|
+
- [Install](Install)
|
|
148
|
+
- [Uninstalling and Moving](Uninstalling-and-Moving)
|
|
149
|
+
- [Settings Reference](Settings-Reference)
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# YouTube Description
|
|
2
|
+
|
|
3
|
+
Slopify can write your video's YouTube description for you: a short summary, chapters at the narration's real times, hashtags, and a separate list of search tags. Each part has a Copy button and can be edited in place, and your edits survive when the description is written again.
|
|
4
|
+
|
|
5
|
+
**Where to find it:** Play → **Outputs** row → **YouTube description**. On a finished project: the **YouTube** section (Description and Tags), and Edit project → **Prompts**.
|
|
6
|
+
|
|
7
|
+
## What you get
|
|
8
|
+
|
|
9
|
+
| Part | What it is |
|
|
10
|
+
|---|---|
|
|
11
|
+
| **Summary** | The opening of the description, written from the article. |
|
|
12
|
+
| **Chapters** | Timestamped lines such as `0:00 Introduction`, at the narration's real times. YouTube turns them into chapters. |
|
|
13
|
+
| **Hashtags** | The hashtags at the end of the description. YouTube shows the first three above the title. |
|
|
14
|
+
| **Tags** | Search tags for YouTube Studio's **Tags** field, kept separate from the description. Viewers don't see them. |
|
|
15
|
+
|
|
16
|
+
Slopify lays out the description itself (summary, blank line, one chapter per line, blank line, hashtags), so the layout YouTube needs never depends on the model's spacing. The files are saved in the project as `description.txt` and `tags.txt`.
|
|
17
|
+
|
|
18
|
+
## Turn it on
|
|
19
|
+
|
|
20
|
+
1. On Play, open the **Outputs** row.
|
|
21
|
+
2. Tick **YouTube description**. It is greyed out, with "Needs narration", when the Narration row is off.
|
|
22
|
+
3. Pick a **Description prompt**, or leave it on **Built-in**.
|
|
23
|
+
4. Start the run.
|
|
24
|
+
|
|
25
|
+
The description is written after the video's subtitle timing, beside the render, in one text-model call. The project language decides the language it is written in; see [Other-Languages](Other-Languages).
|
|
26
|
+
|
|
27
|
+
## Options
|
|
28
|
+
|
|
29
|
+
| Option | What it does | Default |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| **YouTube description** | Writes the description, chapters, hashtags and tags after subtitle timing. One text-model call. Needs narration. | Off |
|
|
32
|
+
| **Description prompt** | The Library prompt the description is written from. | **Built-in** |
|
|
33
|
+
|
|
34
|
+
The **Built-in** prompt asks for:
|
|
35
|
+
|
|
36
|
+
- a 2-3 sentence summary that says what the viewer gets, without clickbait;
|
|
37
|
+
- 5 to 12 chapters for a long video (fewer for a short one), with titles of 2-6 words in title case;
|
|
38
|
+
- 3 to 5 hashtags, most specific last;
|
|
39
|
+
- 15 to 25 tags, from broad to specific.
|
|
40
|
+
|
|
41
|
+
To change the tone or add your own links, write a prompt of the kind **YouTube Description** in **Library → Prompts**. Each `{{keyword}}` in it becomes a field on Play. The prompt editor's starter button (see **Starter text** in its help) fills in the Built-in wording to start from. See [Prompts](Prompts).
|
|
42
|
+
|
|
43
|
+
## Read and copy it
|
|
44
|
+
|
|
45
|
+
When the step has run, the project page's **YouTube** section shows two parts. A finished project with a written description opens on this section, so copying it is one press:
|
|
46
|
+
|
|
47
|
+
- **Description**, with the Summary, Chapters and Hashtags, a character count such as `1,240 / 5000 characters`, and **Copy**.
|
|
48
|
+
- **Tags**, shown as chips, with a count against YouTube's 500-character limit and **Copy**.
|
|
49
|
+
|
|
50
|
+
**Copy** on Description copies the whole description, placeholders filled in. **Copy** on Tags copies them comma-separated, ready to paste. A count over YouTube's limit turns red and says "over YouTube's limit".
|
|
51
|
+
|
|
52
|
+
You can also run **Copy description** (`Shift+D`) and **Copy tags** from the command palette (`Ctrl+K`) while the project is open. The **YouTube description (.txt)** and **YouTube tags (.txt)** downloads are the text exactly as the page shows it: your edits, the fitted chapters and the filled links. See [Keyboard-Shortcuts-and-Command-Palette](Keyboard-Shortcuts-and-Command-Palette).
|
|
53
|
+
|
|
54
|
+
While the stage is running the parts say "Written after the subtitle timing."; before it starts they say "Not written yet. It is made with the video."
|
|
55
|
+
|
|
56
|
+
## Edit a part
|
|
57
|
+
|
|
58
|
+
1. In the project's YouTube section, press **Edit** beside Summary, Chapters, Hashtags or Tags.
|
|
59
|
+
2. Change the text and save.
|
|
60
|
+
|
|
61
|
+
Your text is now marked **Your edit**. It is kept as yours:
|
|
62
|
+
|
|
63
|
+
- When the description is written again, your part stays and "New generated version available." appears beside it with **Use it**, **Keep mine** and **View diff**.
|
|
64
|
+
- **Use generated** goes back to the model's text at any time.
|
|
65
|
+
|
|
66
|
+
Edits cost nothing and don't re-run anything.
|
|
67
|
+
|
|
68
|
+
## Chapters follow YouTube's rules
|
|
69
|
+
|
|
70
|
+
YouTube only turns a description's timestamps into chapters when the first is at 0:00, there are at least three, and each lasts at least 10 seconds. A hand edit, or a video cut to a new length after the description was written, can break those rules, so Slopify fits the chapters each time they are shown or copied:
|
|
71
|
+
|
|
72
|
+
1. Chapters out of order are put in time order; of two at the same time, the one listed first stays.
|
|
73
|
+
2. A chapter starting at or after the end of the video is removed.
|
|
74
|
+
3. The first chapter moves to 0:00.
|
|
75
|
+
4. A chapter shorter than 10 seconds is merged into the one before it (or, for the first, into the one after it).
|
|
76
|
+
5. With fewer than three chapters left, the chapter list is left out, since YouTube would ignore it.
|
|
77
|
+
|
|
78
|
+
When anything was changed, a note under the chapters starts with "Chapters adjusted for YouTube:" and lists what changed. Your stored text and your edit are never changed; only what is shown and copied is fitted.
|
|
79
|
+
|
|
80
|
+
## Links in the description
|
|
81
|
+
|
|
82
|
+
Write a name in double braces, such as `{{Patreon}}` or `{{Discord}}`, in a description, a hand edit, or in your Description prompt (asking the model to include it). When the description is shown or copied, it becomes the link of that name.
|
|
83
|
+
|
|
84
|
+
Each channel has its own links:
|
|
85
|
+
|
|
86
|
+
1. Open **Channels** → the project's channel → **Brand**.
|
|
87
|
+
2. Under **Channel links**, press **Add link**, type the name (for example `Patreon`) and the address, and press **Save channel**.
|
|
88
|
+
|
|
89
|
+
A description takes the links of its project's channel. Names match without regard to case or extra spaces. A placeholder with no saved link stays as typed, is marked, and the YouTube section says "No link is saved for {{Name}}, so it stays as typed. Add it under Channel links on the channel's Brand tab."
|
|
90
|
+
|
|
91
|
+
Links saved in **Settings → Channel links** before each channel had its own still fill the default channel's descriptions until you save that channel's Brand tab. See [Channels](Channels#channel-links).
|
|
92
|
+
|
|
93
|
+
### Previous video
|
|
94
|
+
|
|
95
|
+
`{{Previous video}}` is special: each project can have its own.
|
|
96
|
+
|
|
97
|
+
1. In the project's YouTube section, paste the link under **Previous video for this project**.
|
|
98
|
+
2. Press **Save links**.
|
|
99
|
+
|
|
100
|
+
The project's link wins over a **Previous video** link in the channel's links. It changes only what is shown and copied, with no text-model call.
|
|
101
|
+
|
|
102
|
+
Because placeholders are filled when shown or copied, changing a channel's link changes every description of that channel at once.
|
|
103
|
+
|
|
104
|
+
## Write it again, or turn it on later
|
|
105
|
+
|
|
106
|
+
1. Open the project and press **Edit project**.
|
|
107
|
+
2. Open **Prompts**. Tick **YouTube description** if it was off, and pick a **Description prompt**.
|
|
108
|
+
3. To replace a description that is already written, press **Write the description again after review**. **Keep the current description** cancels it.
|
|
109
|
+
4. Save, then continue the run or start the rebuild review.
|
|
110
|
+
|
|
111
|
+
Writing it again is one paid text-model call. The description you have now is replaced, except for parts you edited, which stay yours with the new text offered beside them.
|
|
112
|
+
|
|
113
|
+
## Limits
|
|
114
|
+
|
|
115
|
+
| Limit | Value |
|
|
116
|
+
|---|---|
|
|
117
|
+
| Description length (YouTube) | 5,000 characters |
|
|
118
|
+
| Tags field (YouTube) | 500 characters in all, commas included; 100 per tag |
|
|
119
|
+
| Hashtags | YouTube ignores every hashtag if a description has more than 15 |
|
|
120
|
+
| Chapters | At least 3, first at 0:00, each at least 10 seconds |
|
|
121
|
+
|
|
122
|
+
Slopify does not upload the description to YouTube. Paste it in YouTube Studio yourself, or use Prepare upload and the optional Studio extension; see [Publishing-to-YouTube](Publishing-to-YouTube).
|
|
123
|
+
|
|
124
|
+
## Related pages
|
|
125
|
+
|
|
126
|
+
- [Play-Outputs](Play-Outputs)
|
|
127
|
+
- [Prompts](Prompts)
|
|
128
|
+
- [Publishing-to-YouTube](Publishing-to-YouTube)
|
|
129
|
+
- [Studio-Extension](Studio-Extension)
|
|
130
|
+
- [Settings-Reference](Settings-Reference)
|
|
131
|
+
- [Editing-a-Project](Editing-a-Project)
|
|
132
|
+
- [Shorts](Shorts)
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Your First Short
|
|
2
|
+
|
|
3
|
+
The quickest way to see Slopify work: type a topic, press one button, and get a narrated, captioned 9:16 short of about a minute. Slopify picks the providers for you from what your computer already has.
|
|
4
|
+
|
|
5
|
+
**Where to find it:** the first-run screen (**Welcome to Slopify**) → **3 · Make your first short** → **Make a 60-second short**. On a fresh install it opens by itself; its address is `http://127.0.0.1:6969/welcome`.
|
|
6
|
+
|
|
7
|
+
## What you get
|
|
8
|
+
|
|
9
|
+
| Part | Details |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| Script | About 150 words, written from your topic by a text model. No web research. |
|
|
12
|
+
| Narration | Spoken by your voice provider, or by your computer's own voice when no voice key is saved. |
|
|
13
|
+
| Images | Four vertical images, one for each 15 seconds of the minute. |
|
|
14
|
+
| Video | A 9:16 short with word-by-word captions and the title on top, rendered on your computer. |
|
|
15
|
+
| Not made | No thumbnail, no PDF, no YouTube description and no further shorts. |
|
|
16
|
+
|
|
17
|
+
With the command-line tools it usually takes about five minutes.
|
|
18
|
+
|
|
19
|
+
## Before you start
|
|
20
|
+
|
|
21
|
+
You need three things. Slopify checks them when you press the button and tells you what is missing.
|
|
22
|
+
|
|
23
|
+
| Need | What Slopify uses, in this order |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
| Text | Claude Code CLI (a Sonnet model when it has one), Codex CLI, Gemini CLI, then an OpenRouter key. |
|
|
26
|
+
| Images | Codex CLI, then an OpenAI, Google, fal.ai or Replicate key. |
|
|
27
|
+
| Voice | Your first saved voice whose provider has a key. If none, the style's suggested OpenAI voice when an OpenAI key is saved. If there is no voice key at all, your computer's own voice (the **System voice**): macOS or Windows speech, or Piper, SVOX Pico, eSpeak NG or eSpeak on Linux. |
|
|
28
|
+
|
|
29
|
+
Command-line tools can't speak, but you don't need a voice key to start: with none saved, the short is narrated by your computer's built-in voice, for free. It sounds robotic, so add a key when you want a better voice. With ElevenLabs, Cartesia or Inworld, also save a voice in Settings → **Voices**. See [the system voice](Providers-and-Keys#the-system-voice).
|
|
30
|
+
|
|
31
|
+
To set these up:
|
|
32
|
+
|
|
33
|
+
1. Install and sign in to Claude Code, Codex or Gemini CLI (see [AI CLIs](AI-CLIs)), or add keys in Settings → **Providers** (see [Providers and Keys](Providers-and-Keys)).
|
|
34
|
+
2. Optional: add a voice key in Settings → **Providers**. An OpenAI key is the simplest: the suggested voice works with it right away.
|
|
35
|
+
3. Back on the first-run screen, step **1 · What you have** shows which tools are ready and who will narrate.
|
|
36
|
+
|
|
37
|
+
## Make the short
|
|
38
|
+
|
|
39
|
+
1. Open the first-run screen.
|
|
40
|
+
2. On **2 · Pick a style**, press **Use this style** on one row:
|
|
41
|
+
- **General**: a neutral explainer style, with the OpenAI voice `alloy` as its suggestion.
|
|
42
|
+
- **Sleep lore**, **True crime**, **History** or **Science explainers**: that starter pack's script prompt, image style and suggested voice.
|
|
43
|
+
3. Go to **3 · Make your first short**. In **Topic**, type what the short is about, in a few words or a question (up to 200 characters). For example: `Why the sea glows at night`. A specific topic gives a sharper short than a broad one.
|
|
44
|
+
4. Press **Make a 60-second short**. The status line says **Starting your short…**.
|
|
45
|
+
5. Slopify creates the project and starts it. The step now says "Your short is being made." Press **Watch it being made** to open its page.
|
|
46
|
+
|
|
47
|
+
Pressing the button twice, or retrying after a dropped connection, opens the same project instead of starting a second one.
|
|
48
|
+
|
|
49
|
+
## What Slopify sets up for you
|
|
50
|
+
|
|
51
|
+
- **The project.** Its title is your topic, with a capital first letter. Its format is 9:16.
|
|
52
|
+
- **Library prompts.** The style's script and vertical-scene prompts are added to your Library (for General: **Starter · 60-second short** and **Starter · Vertical scene**). If you already have a prompt with that name and different text, the new one comes in as `<name> (2)`. Reusing them later changes nothing.
|
|
53
|
+
- **A saved voice.** The style's suggested OpenAI voice is added to Settings → **Voices** (for General: **Starter narrator**), unless you already have one with that voice. When the computer's own voice narrates, it is saved there too, named `<voice> (computer voice)`, so Play offers it later.
|
|
54
|
+
- **Settings.** Captions at the bottom, a slow zoom or pan on each image, half a second of silence at each end, and the volume levelled as in your Settings.
|
|
55
|
+
|
|
56
|
+
The pack's Play template is not added this way. To get it, press **Add to library** on the pack's row in step 2, or use Library → **Templates** → **Add pack**. **Make the full video on this topic** (below) also adds it.
|
|
57
|
+
|
|
58
|
+
## Watch it being made
|
|
59
|
+
|
|
60
|
+
The project page shows each step as it runs:
|
|
61
|
+
|
|
62
|
+
1. **Article**: the script is written.
|
|
63
|
+
2. **Narration**: the script is spoken.
|
|
64
|
+
3. **Images**: four vertical images are drawn.
|
|
65
|
+
4. **Video**: the words are timed against the narration and the short is rendered with word-by-word captions and the title on top.
|
|
66
|
+
|
|
67
|
+
Open the **Live** tab to see the steps, the script as it is written, the images as they land and the narration's waveform. Each running step says its time left. While it runs, Home also lists it under **Running now**, and the sidebar shows how many runs are going.
|
|
68
|
+
|
|
69
|
+
See [Project Page](Project-Page) for everything else on this page.
|
|
70
|
+
|
|
71
|
+
## Get the finished short
|
|
72
|
+
|
|
73
|
+
1. When the run is done, open **Video** on the project page.
|
|
74
|
+
2. Play the short in Slopify's own player. See [Project Page](Project-Page#the-players).
|
|
75
|
+
3. Press **Download** and pick **Video (.mp4)**, or press **Open folder** to see the file on your computer.
|
|
76
|
+
|
|
77
|
+
The file is also in the project's folder under your Projects folder (see [Where Your Files Live](Where-Your-Files-Live)).
|
|
78
|
+
|
|
79
|
+
## What it costs
|
|
80
|
+
|
|
81
|
+
- **Narration** uses your voice provider's credit, billed per character of the roughly 150-word script. The computer's own voice costs nothing.
|
|
82
|
+
- **Text and images** through a command-line tool count toward that tool's plan, not a per-call bill. Through API keys, they are billed by that provider.
|
|
83
|
+
- The project's **Cost** tab shows what each step cost. See [Costs and Run Cost](Costs-and-Run-Cost).
|
|
84
|
+
|
|
85
|
+
## If it refuses to start
|
|
86
|
+
|
|
87
|
+
The message names what is missing and where to fix it:
|
|
88
|
+
|
|
89
|
+
| Message starts with | Fix |
|
|
90
|
+
| --- | --- |
|
|
91
|
+
| No text model is ready. | Install Claude Code, Codex or Gemini CLI and sign in, or add an OpenRouter key in Settings → Providers. |
|
|
92
|
+
| No image model is ready. | Install Codex CLI and sign in, or add an OpenAI, Google, fal.ai or Replicate key in Settings → Providers. |
|
|
93
|
+
| No voice is ready to narrate the short | Install `espeak-ng` (Linux) so the computer's voice can narrate, or add an OpenAI, ElevenLabs, Cartesia or Inworld key in Settings → Providers. |
|
|
94
|
+
| Your voice provider has no saved voice yet. | Add a voice in Settings → Voices, then try again. |
|
|
95
|
+
| Slopify can't list the models on this machine right now. | Restart Slopify and try again. |
|
|
96
|
+
|
|
97
|
+
If the run fails later, the project page and Home's **Needs you** say which step failed and offer the fix. See [Recovery and Retries](Recovery-and-Retries).
|
|
98
|
+
|
|
99
|
+
## Make the full video next
|
|
100
|
+
|
|
101
|
+
When the short is done, the project's next action is **Make the full video on this topic**. It opens Play set up for a long video: the same topic and title, the starter pack's Play template (added to your Library if it wasn't yet), and the text, image and voice providers the short used, since those are known to work on your computer. Nothing starts until you press **Start run**. See [Play Overview](Play-Overview).
|
|
102
|
+
|
|
103
|
+
## Change the short afterwards
|
|
104
|
+
|
|
105
|
+
It is a normal project: you can edit the script, change an image, pick another voice or caption style, and Slopify rebuilds only what the change affects. See [Editing a Project](Editing-a-Project) and [Video Editing](Video-Editing).
|
|
106
|
+
|
|
107
|
+
## Next steps
|
|
108
|
+
|
|
109
|
+
- Make a long video with more control: [Play Overview](Play-Overview).
|
|
110
|
+
- Cut shorts from a long video automatically: [Shorts](Shorts).
|
|
111
|
+
- Reuse the style: add the starter pack and pick its template on Play ([Templates](Templates)).
|
|
112
|
+
|
|
113
|
+
## Tips
|
|
114
|
+
|
|
115
|
+
- The first-run screen disappears once you have a real project. Your later shorts are made from Play, or from Shorts on a long video.
|
|
116
|
+
- Want to try without spending anything first? Open a sample project from the first-run screen ([First Launch and Welcome](First-Launch-and-Welcome#explore-the-samples)).
|
|
117
|
+
|
|
118
|
+
## Related pages
|
|
119
|
+
|
|
120
|
+
- [First Launch and Welcome](First-Launch-and-Welcome)
|
|
121
|
+
- [Providers and Keys](Providers-and-Keys)
|
|
122
|
+
- [AI CLIs](AI-CLIs)
|
|
123
|
+
- [Project Page](Project-Page)
|
|
124
|
+
- [Shorts](Shorts)
|
|
125
|
+
- [Costs and Run Cost](Costs-and-Run-Cost)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Slopify is free and open source under the [Apache License 2.0](https://github.com/GentBajko/slopify/blob/main/LICENSE). Source: [github.com/GentBajko/slopify](https://github.com/GentBajko/slopify) · Website: [slopify.stream](https://slopify.stream)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
**[Home](Home)**
|
|
2
|
+
|
|
3
|
+
**Getting started**
|
|
4
|
+
- [Install](Install)
|
|
5
|
+
- [Docker](Docker)
|
|
6
|
+
- [First launch and welcome](First-Launch-and-Welcome)
|
|
7
|
+
- [Your first short](Your-First-Short)
|
|
8
|
+
- [Home and Projects](Home-and-Projects)
|
|
9
|
+
- [Where your files live](Where-Your-Files-Live)
|
|
10
|
+
- [Start at login](Start-at-Login)
|
|
11
|
+
- [Updating and patch notes](Updating-and-Patch-Notes)
|
|
12
|
+
- [Uninstalling and moving](Uninstalling-and-Moving)
|
|
13
|
+
|
|
14
|
+
**Providers**
|
|
15
|
+
- [Providers and keys](Providers-and-Keys)
|
|
16
|
+
- [AI CLIs](AI-CLIs)
|
|
17
|
+
- [Models](Models)
|
|
18
|
+
- [Costs and run cost](Costs-and-Run-Cost)
|
|
19
|
+
|
|
20
|
+
**Making a video**
|
|
21
|
+
- [Play overview](Play-Overview)
|
|
22
|
+
- [Title and article](Play-Title-and-Article)
|
|
23
|
+
- [Narration](Play-Narration)
|
|
24
|
+
- [Images](Play-Images)
|
|
25
|
+
- [Video and style](Play-Video-and-Style)
|
|
26
|
+
- [Outputs](Play-Outputs)
|
|
27
|
+
- [Reviews and checkpoints](Reviews-and-Checkpoints)
|
|
28
|
+
|
|
29
|
+
**Formats and outputs**
|
|
30
|
+
- [Multiple voices](Multiple-Voices)
|
|
31
|
+
- [Other languages](Other-Languages)
|
|
32
|
+
- [Shorts](Shorts)
|
|
33
|
+
- [YouTube description](YouTube-Description)
|
|
34
|
+
- [PDF documents](PDF-Documents)
|
|
35
|
+
|
|
36
|
+
**The project page**
|
|
37
|
+
- [Project page](Project-Page)
|
|
38
|
+
- [Editing a project](Editing-a-Project)
|
|
39
|
+
- [Video editing](Video-Editing)
|
|
40
|
+
- [Recovery and retries](Recovery-and-Retries)
|
|
41
|
+
- [Trash](Trash)
|
|
42
|
+
|
|
43
|
+
**Publishing**
|
|
44
|
+
- [Publishing to YouTube](Publishing-to-YouTube)
|
|
45
|
+
- [Studio extension](Studio-Extension)
|
|
46
|
+
|
|
47
|
+
**Automation**
|
|
48
|
+
- [Templates](Templates)
|
|
49
|
+
- [Schedules](Schedules)
|
|
50
|
+
- [Calendar](Calendar)
|
|
51
|
+
- [Notifications](Notifications)
|
|
52
|
+
- [Backups](Backups)
|
|
53
|
+
|
|
54
|
+
**Channels**
|
|
55
|
+
- [Channels](Channels)
|
|
56
|
+
- [Cast library](Cast-Library)
|
|
57
|
+
|
|
58
|
+
**Library**
|
|
59
|
+
- [Library overview](Library-Overview)
|
|
60
|
+
- [Prompts](Prompts)
|
|
61
|
+
- [Intros and outros](Intros-and-Outros)
|
|
62
|
+
- [Aliases and glossary](Narration-Aliases-and-Glossary)
|
|
63
|
+
- [Document themes](Document-Themes)
|
|
64
|
+
|
|
65
|
+
**Reference**
|
|
66
|
+
- [Settings reference](Settings-Reference)
|
|
67
|
+
- [Keyboard and Ctrl+K](Keyboard-Shortcuts-and-Command-Palette)
|
|
68
|
+
- [Troubleshooting](Troubleshooting)
|
|
69
|
+
- [FAQ](FAQ)
|