README.md
April 19, 2026 ยท View on GitHub
CURATORR
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.
Preview

What It Does
- 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
Media Server Support
- 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
Quick Start
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-stopped
Generate SESSION_SECRET and WEBHOOK_SECRET with:
openssl rand -hex 32
Start Curatorr with:
docker compose up -d
Then open http://localhost:7676/wizard and complete the setup wizard for Plex, Jellyfin, or Emby.
Optional Features
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.
Documentation
For installation, setup, configuration, and troubleshooting:
- GitHub Wiki
- Wiki Home
- Quick Start
- Configuration
- Authentication and Roles
- Integrations
- Track Analysis
- Artist Suggestions and Lidarr Activity
- Discover
- Smart Playlists
- History
- Tracks
- Blend
- User Profile
- Troubleshooting
- FAQ