@gentbajko/slopify
v3.10.1
Published
Turn a prompt into a finished video, locally, with your own provider keys
Readme
A prompt and a few keywords in. A narrated slideshow video out. Your keys, your machine, free.
Start contributing to the internet's enshittification today!
npx @gentbajko/slopify@latestThat opens a browser at http://127.0.0.1:6969. Node 26 or newer is required.
For a persistent install that makes slopify available everywhere:
npm install -g @gentbajko/slopify
slopifyBoth commands launch the same local app.
For Docker on Linux with Node 26+, Docker Engine and the Docker Compose plugin, use
slopify --docker or npx @gentbajko/slopify@latest --docker. It writes one
compose.yaml and its .env under ~/.local/share/slopify/docker/slopify/ and starts
Slopify at http://127.0.0.1:6969, restarting with Docker. Project files go to
Documents/Slopify/Projects (--projects-dir to choose another, --port for the port); the
database, keys and logs stay private in the slopify-data volume.
If Claude Code, Codex or Gemini is installed, it asks once before setting up the host CLI
bridge, a private helper that runs those CLIs on your machine with their existing logins.
Use --host-cli=off for API keys only, or --accept-host-cli to approve without a prompt.
Update with npx @gentbajko/slopify@latest update, Docker or not. Without Docker, update
asks the running app to update itself, so it works only while Slopify is running (to just
start the newest version, run npx @gentbajko/slopify@latest). It waits for running
work, keeps a copy to go back to (the database, or a recovery volume in Docker), and puts
the previous version back if the new one doesn't start. Installations made by 2.5.0 or
earlier are taken over as they are: same volume, same project folder. See the
Docker guide for details.
How to use it
- Add provider keys and voices in Settings. They stay in your local Slopify database.
- Write reusable article, image and thumbnail prompts in Prompts, using
{{keywords}}where each video's subject belongs. - In Play, build an autosaved setup across Content, Outputs, Style and Review. Supply or skip optional stages, preview subtitles, and inspect the estimated cost before Start.
- Follow total and per-stage progress in the project workspace. Pause unfinished work to change providers, add review checkpoints, or edit a paused or completed project as a retained revision. Saving does not rebuild until you explicitly ask.
- Save Play setups or project revisions as templates. Apply one to a fresh draft or schedule one-off, daily or weekly jobs with keyword variants and a spend ceiling.
The article is the only required output. Slopify can make a narrated or silent slideshow, an audio-only WAV, locally timed English subtitles, or just the intermediate results you select. Uploaded and already completed outputs are reused when their inputs still match.
Inworld narration
In Settings, add the Base64 credentials from Inworld's API Keys page, then add an
Inworld voice ID (for example Dennis, or a voice from your workspace). In Play,
choose Realtime TTS-2 or Realtime TTS-2 Flash and that voice.
Short text streams immediately. TTS-2 text over 4,000 characters uses one async job, up to 100,000 characters; Inworld caps On-Demand accounts at 10,000. Audio becomes available once that job finishes. Flash uses streamed parts of at most 4,000 characters. For longer articles, select paragraph chunking. Successful status checks keep long jobs alive, and automatic polling/download retries reuse the accepted job. Pausing stops local requests; Inworld may still finish and bill an accepted job. Resuming after a pause or app restart starts a new request for unfinished narration.
See Inworld's async API for account limits. Both model IDs are bundled; Inworld's LLM catalogue does not list TTS models.
Options
| Flag | Environment variable | Default |
|---|---|---|
| --port | SLOPIFY_PORT | 6969 |
| --host | SLOPIFY_HOST | 127.0.0.1 |
| --data-dir | SLOPIFY_DATA_DIR | ~/.slopify |
| --projects-dir (Docker only) | SLOPIFY_DOCKER_PROJECTS_DIR | remembered path; otherwise <Documents>/Slopify/Projects (custom names: <Documents>/Slopify/<container>/Projects); installs from before 3.0 keep ~/Slopify/Projects |
| --no-open | SLOPIFY_NO_OPEN | the browser opens |
| --docker | — | run locally; with the flag, install or update the Docker version |
| update | — | update the running app (it must be running), or the Docker installation if you have one |
| — | SLOPIFY_FFMPEG | the bundled binary |
There is no login. Binding to anything but 127.0.0.1 hands the app and every key in
it to whoever reaches the port, and the CLI says so on startup.
Native installations keep slopify.db, projects/, staging/ and logs/ under
their configured data directory. Docker places only projects in its
remembered host folder; keep both that folder and the named private volume when
backing up an installation. The portable settings archive is not a project/history backup.
ffmpeg and the GPL
No separate FFmpeg installation is required. The ffmpeg-static dependency downloads
a prebuilt binary to node_modules/ffmpeg-static/ at install time. Docker includes
the checked binary, licence and source notice in the image, ready on first launch.
Slopify checks that ffmpeg runs before starting. If the install-time download is
missing, it downloads the same platform build into <data-dir>/bin/, keeping the
licence and source notice beside it. Later launches reuse that copy. If recovery
fails, check your connection and antivirus quarantine, or choose your own executable.
That binary is a separate program, run as a child process with an argument array. It
is licensed under the GPL-3.0-or-later. Slopify does not link against it, does not
embed it, and does not distribute it inside this package; its licence text and the
location of its corresponding source ship beside it in ffmpeg-static. Slopify's own
code is Apache-2.0 and stays Apache-2.0. Anyone redistributing the downloaded binary takes on the
GPL's obligations for it, including offering that corresponding source.
Point SLOPIFY_FFMPEG at your own build to use that instead.
In Windows PowerShell:
$env:SLOPIFY_FFMPEG = 'C:\tools\ffmpeg\bin\ffmpeg.exe'
npx @gentbajko/slopify@latestTelemetry
Slopify sends anonymous counters to a collector: installs, projects created, stages completed, images and videos made, audio seconds, provider and model names, token counts, and the time each of those happened. Every event carries a random id of its own and this machine's random id, and nothing else.
Never your keys, prompts, keywords, titles, article text, filenames, or anything about your machine. A notice says all of this the first time you run it, before the machine id exists, and the Usage screen shows you your own numbers at any time.
Supporting the project
Slopify is free and always will be. If it is worth something to you, there is Patreon and Buy Me a Coffee. The people who do are listed in SUPPORTERS.md.
Licence
Apache-2.0 (see LICENSE and NOTICE; keep the NOTICE when redistributing). The ffmpeg binary fetched at install time is a separate GPL-3.0-or-later program, as described above.
Source, issues and the full guide: https://github.com/GentBajko/slopify
