SMART PLAYLIST CURATOR
Curatorr is a self-hosted Plex, Jellyfin, and Emby companion for playback tracking, smart playlist generation, artist discovery, and optional Lidarr automation.
- Tracks playback from Plex, Jellyfin, or Emby
- Builds per-user smart playlists from real listening behavior
- Supports personal playlists, blended playlists, Curatorr rotating playlists, and configurable Daily Mix
- Adds feature-driven playlist building with BPM, key, Camelot, energy, and danceability filters when analysis data is available
- Surfaces library-based suggestions and external discovery
- Integrates with Lidarr for optional add, queue, and progression workflows
- Supports Last.fm history/station features and ListenBrainz playlist suggestions on supported server paths
- Plex: broadest feature set, including Plex SSO, Plex Home users, native Plex webhooks, optional Tautulli support, Daily Mix, Last.fm station playlists, and ListenBrainz playlist suggestions
- Jellyfin: native server login, library indexing, live playback tracking, smart playlists, personal playlists, blended playlists, discovery, and Lidarr automation
- Emby: native server login, library indexing, live playback tracking, smart playlists, personal playlists, blended playlists, discovery, and Lidarr automation
Current Plex-only features:
- Tautulli integration
- Daily Mix sync
- Last.fm station playlists
- ListenBrainz playlist suggestion sync
- Sonic ordering and loudness-aware sequencing
Minimal Docker Compose example:
services:
curatorr:
image: mickygx/curatorr:latest
container_name: curatorr
ports:
- "7676:7676"
environment:
- CONFIG_PATH=/app/config/config.json
- DATA_DIR=/app/data
- BASE_URL=http://localhost:7676
- TRUST_PROXY=true
- TRUST_PROXY_HOPS=1
- SESSION_SECRET=replace-this-with-a-random-secret
- WEBHOOK_SECRET=replace-this-with-a-random-secret
volumes:
- ./config:/app/config
- ./data:/app/data
- ./data/icons/custom:/app/public/icons/custom
network_mode: bridge
restart: unless-stoppedGenerate SESSION_SECRET and WEBHOOK_SECRET with:
openssl rand -hex 32Start Curatorr with:
docker compose up -dThen open http://localhost:7676/wizard and complete the setup wizard for Plex, Jellyfin, or Emby.
Curatorr supports an optional analyzer sidecar for BPM, musical key, Camelot key, energy, and danceability enrichment. For setup and workflow details, see Track Analysis.
Spotify support is optional and user-specific. Users can connect Spotify accounts to browse and import playlists after app-level credentials are configured on the Curatorr container. Owned Spotify playlists imported through the connected-account flow are the most reliable option, especially for larger playlists. Shared or public Spotify playlist URLs imported through the URL tab depend on whatever Spotify exposes on its public web pages, so some playlists may only preview or import part of the track list. If a shared/public playlist is incomplete, copy its tracks into a new playlist you own in Spotify and import that owned copy from the Spotify tab instead. For setup details, see Spotify in Integrations.
YouTube playlist URL import is optional and server-level. Public YouTube playlists can be previewed and imported when YOUTUBE_API_KEY is configured on the Curatorr container. For setup details, see Integrations.
For installation, setup, configuration, and troubleshooting:
