Skip to the content.

Getting started

Requirements

Optional extras

Shortlist works fully without any of these.

Install (Docker)

With Docker Compose:

mkdir shortlist && cd shortlist
curl -fsSLO https://raw.githubusercontent.com/stevezau/shortlist/master/docker-compose.example.yml
mv docker-compose.example.yml docker-compose.yml
docker compose up -d

Or with docker run:

docker run -d --name shortlist \
  -p 5959:5959 \
  -e TZ=Etc/UTC -e PUID=1000 -e PGID=1000 \
  -v /path/to/shortlist/config:/config \
  --restart unless-stopped \
  ghcr.io/stevezau/shortlist:latest

Open http://your-host:5959. A fresh install goes straight into the wizard — there is nothing to sign in to yet. Step 1 connects your Plex account (that’s the sign-in, and it’s what claims the instance for you); from then on Shortlist only opens for that account.

Set Shortlist up on your own network first. Until you sign in with Plex and link a server, anyone who can open the page could claim it as theirs — so don’t put it on the public internet until you’ve finished the wizard. Once you’ve claimed it, it’s yours.

The wizard has 7 steps, and the progress bar counts them the same way this list does:

  1. Welcome — a short intro screen. Read it and continue.
  2. Connect Plex — sign in with a PIN, then pick your server. Shortlist checks your Plex version, Plex Pass, and libraries, and tells you in plain English whether each one is OK.
  3. Recommendations & history — choose where picks come from (TMDB, Trakt, AI web search). Watch history comes straight from Plex with no setup. Tautulli is optional, and only improves the names people are shown by.
  4. Choose your AI provider — Claude / GPT / Gemini / a local server / None. Keys stay yours: stored encrypted, and hidden again once saved. Picking None is a perfectly good choice.
  5. Pick your users — everyone you share with, with badges showing how much history each person has.
  6. Make it yours — the row’s name, how many titles it holds, and how often it refreshes. Each row keeps its own schedule; there’s no single global one.

    The name can be plain text, or use a placeholder that fills itself in:

    Placeholder Becomes Example
    {library_name} the library’s name “✨ Movies Picked for You”
    {user} the person’s name “Sarah’s picks”
    {top_seed} their current favourite “Because you watched Dune”
  7. First run — watch it build, person by person. When it finishes, everyone has their row.

Trying it safely

Shortlist is new and modifies real Plex share permissions, so it’s fair to want to watch it before trusting it. Two ways to de-risk your first run:

The first real run is the slowest: it builds every enabled user’s rows and merges every account’s share filter. Later runs are much faster — most rows are unchanged and skipped.

Every row is kept private automatically: it’s a labeled collection excluded on every other account’s share, delivered hidden and only promoted once those exclusions are in place. Your share filters are snapshotted before the first change, so Uninstall (Settings → Danger Zone) puts them back exactly as they were. This hiding relies on Plex Media Server ≥ 1.43.2.10687 — older builds ignore the label exclusion, which is why the wizard surfaces your version before you begin.

The one honest caveat

You’re in the user list too, so you can give yourself a row like anyone else — on a one-person server that’s the whole point.

What Plex cannot do is hide collections from the server owner: your own Home shows every user’s row, not just yours. If you share the server with other people and want a clean Home, watch on a Plex Home user and keep the admin account for administration.