npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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@latest

That 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
slopify

Both 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

  1. Add provider keys and voices in Settings. They stay in your local Slopify database.
  2. Write reusable article, image and thumbnail prompts in Prompts, using {{keywords}} where each video's subject belongs.
  3. 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.
  4. 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.
  5. 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@latest

Telemetry

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