· 02:25
Here are a few self-hosted approaches you can experiment with to replace Plex/Jellyfin’s built-in recommendation algorithms:
Apache PredictionIO
• A full ML recommendation server you can train on your own play-history data.
• You’ll point its data import at the Plex (via Tautulli) or Jellyfin playback APIs, pick a collaborative-filtering template, let it build a model, then query its REST endpoint for personalized suggestions.
LensKit or Surprise (Python)
• Both are lightweight Python toolkits for building and evaluating recommender systems.
• You’d extract your user–item ratings (or play counts) from Plex/Jellyfin, feed them into a LensKit/Surprise script, train a CF model, then wrap the inference call in a small Flask/Gunicorn service.
• Plex can consume the output via a webhook or the “Watchlist” plug-in; Jellyfin has a plugin framework where you can point to your new recommendation API.
LibRec (Java)
• Another mature CF library.
• Package as a microservice, import your server’s watch logs, and expose a simple “/recommend?user=XYZ” endpoint you point your media server’s UI at.
Community Plugins & Scripts
– “plex-recommendations” on GitHub (Python + Pandas) that reads your Plex history and spits out top-N lists.
– Jellyfin’s third-party “External Recommendations” plugin (still in active development) lets you call any HTTP API and show its results right in the Jellyfin UI.
Workflows typically look like this:
• Extract watch events from Plex with Tautulli (or directly from Jellyfin’s API).
• Feed those events into your chosen CF engine and build a model.
• Host that model behind a simple REST API.
• Point your media server (via plugin or webhook) at that API to display fresh movie/TV recommendations in your library.
That stack gives you full control—you can swap algorithms, tweak parameters, and retrain whenever your tastes evolve, all behind your own firewall.
Link to Article
Listen to jawbreaker.io using one of many popular podcasting apps or directories.