Sno Station
Sno Station is your agents' workstation: open-source software that turns the AI agents you already run into one squad on your own machine. Two heads are better than one, and they get better with every
Media Preview Generator makes Plex, Emby and Jellyfin preview thumbnails on your GPU, plus Skip Intro and Skip Credits markers. Install guide and FAQ.
PluginsPython · JavaScriptGitHub @stevezauOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Self-hosted previews, intro/credits detection and cross-server reuse for Plex, Emby and Jellyfin, with GPU acceleration and remote processing. Includes Plex chapter thumbnails and CPU loudness analysis; Sonarr/Radarr automation.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Your media server's slowest jobs, done on your GPU. Media Preview Generator makes the preview thumbnails and the Skip Intro and Skip Credits markers for Plex, Emby and Jellyfin. It starts the moment Sonarr or Radarr imports a file and sends the results to every server at once. [README 설치·사용 부분 발췌] Setup Health tab says which setting to turn off on each server, and which to leave on: switching Jellyfin's trickplay off deletes the tiles this app wrote. If your server's own generator keeps up, youRead the full README ↗
Plex, Jellyfin and Emby web players on test servers, each paused mid-scrub on the same film. The thumbnails were made by this app. Tears of Steel, (CC) Blender Foundation | mango.blender.org, CC BY 3.0.
Plex, Emby and Jellyfin can make preview thumbnails themselves, but they do it inside the server, mostly on the CPU, and mostly on a schedule. On a big library that can take days, and the episode that arrived tonight can sit with a blank timeline until the next maintenance window.
Media Preview Generator makes them on your GPU, for each file as it arrives. When more than one server holds the same file, it decodes it once and writes each server's own format.
It also adds Skip Intro and Skip Credits. It finds each file's intro and end credits once and sends the markers to every server that has the file. When it isn't sure, it sends nothing; you can add or adjust a marker in the Inspector.
The GPU can be in another machine. Add it as a worker node; the app keeps the queue and every write.
| It finds every server with that file |
|---|
| One GPU pass per file |
|---|
| Each server gets its own format |
|---|
| It waits for slow servers |
|---|
App screenshots come from a test setup with made-up servers; the job titles are open films.
GPU first, CPU when needed
Starts on its own
Every server from one decode
Choose what to generate. Filter manual or scheduled library scans by date added, keep the most recent X available TV seasons, or select a movie release-year range. Combine filters while keeping existing previews. See the library-scan guide.
Right colours
Skip Intro and Skip Credits
Plex loudness
Plex chapter thumbnails and loudness write Plex's database, so they need this app on the Plex machine or a Plex database node beside it.
It sits next to Sonarr, Radarr and Tdarr and takes over the media server's own preview job. Once it runs, the server's own generation is the same work done twice. The app's Setup Health tab says which setting to turn off on each server, and which to leave on: switching Jellyfin's trickplay off deletes the tiles this app wrote. If your server's own generator keeps up, you don't need this: see how it compares.
You'll need: Docker · Plex, Emby or Jellyfin (Jellyfin 10.10 or newer), reachable from the container · write access where previews go: Plex's data folder, or the media folder for Emby and Jellyfin. A GPU is optional: its driver on the host, plus the NVIDIA Container Toolkit for NVIDIA on Linux.
docker run -d \
--name media-preview-generator \
--restart unless-stopped \
-p 8080:8080 \
--device /dev/dri:/dev/dri \
-e PUID=1000 -e PGID=1000 \
-v /path/to/media:/media \
-v /path/to/plex/config:/plex \
-v /path/to/app/config:/config \
stevezzau/media_preview_generator:latest
--device /dev/dri as above. NVIDIA: --gpus all -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all instead. No GPU, or on Windows or macOS? Delete the --device /dev/dri line./plex, so the media can be :ro. Emby, and Jellyfin in its default layout, write next to each video, so for them the media mount must be read-write. No Plex? Drop the /plex mount.http://YOUR_IP:8080 and sign in with the token saved in auth.json in your app config folder (or pin your own with -e WEB_AUTH_TOKEN=...), then follow the setup wizard.stevezzau/media_preview_generator. The double z is the Docker Hub account's name, not a typo.Docker Compose, Unraid and GPU details: Getting started.
The docs are also a website: mediapreviewgenerator.dev.
| Page | What's in it |
|---|---|
| Getting started | Docker, GPUs, mounts, Unraid, networking |
| How it compares | Plex, Jellyfin and Emby built-in generation, side by side |
| Guides | The web UI, webhooks, schedules, troubleshooting |
| Remote nodes | Another machine's GPU, and Plex on another machine or Windows |
| Multi-server | Plex, Emby and Jellyfin from one instance |
| Reference | Every setting, environment variable and API endpoint |
| FAQ | Windows, GPUs, RAM, skipped files |
| Why Plex previews are slow | What Plex does, and what to change |
| Plex previews with a GPU | Moving Plex's preview job to a GPU |
| Faster Jellyfin trickplay | Jellyfin's own settings first, then a GPU |
It's free and MIT licensed. Helping is optional.
MIT, see LICENSE. Development is AI-assisted (Claude); every change is reviewed and tested.
| Emby BIF previews with a GPU |
| Emby BIFs made on a GPU, next to each video |
| Previews on Sonarr or Radarr import | Webhooks, quiet period, retries |
| HDR and Dolby Vision previews | Tone mapping, and the Dolby Vision 5 caveat |
| Skip Intro and Skip Credits | What each server needs, how they're found, limits |