main
Magic Playlists
Tiny Go web UI for creating and scheduling playlists through the existing Magic Lists for Navidrome service.
What it does
- Shows Magic Lists health and scheduler status.
- Lists playlists stored by Magic Lists.
- Creates Re-Discover, artist, and genre playlists.
- Creates Recipe Lab playlists from candidate filters, scoring, diversity rules, and optional llama-line curation.
- Triggers the Magic Lists scheduler refresh.
- Deletes playlists from Magic Lists and Navidrome via the Magic Lists API.
Run locally
go run ./cmd/magic-playlists
Open http://localhost:8098.
For your Almaz media stack, the recommended run mode is Docker so this app can reach Magic Lists on the internal media network and bypass the Authelia-protected public URL:
docker compose up -d --build
Configuration
| Env var | Default | Purpose |
|---|---|---|
MAGIC_PLAYLISTS_ADDR |
:8097 |
Address for this web app. |
MAGIC_LISTS_URL |
http://magiclists:8000 |
Base URL for the existing Magic Lists service. |
NAVIDROME_URL |
http://navidrome:4533 |
Internal Navidrome URL for Recipe Lab candidate builders. |
NAVIDROME_USERNAME |
empty | Navidrome/Subsonic username. Required for Recipe Lab. |
NAVIDROME_PASSWORD |
empty | Navidrome/Subsonic password or token-compatible password value. Required for Recipe Lab. |
NAVIDROME_CLIENT |
magic-playlists |
Subsonic client name. |
LLAMA_LINE_URL |
http://10.0.0.50:11434/v1/chat/completions |
llama-line OpenAI-compatible endpoint. |
LLAMA_LINE_API_KEY |
empty | Bearer key for llama-line. Required for LLM curation. |
LLAMA_LINE_MODEL |
openai/gpt-5.4-fast |
Model used for LLM curation. |
LLAMA_LINE_TIMEOUT_SECONDS |
180 |
LLM request timeout. |
If you run this app directly on the host with go run, http://magiclists:8000 will not resolve unless the host has Docker DNS access. Prefer docker compose up -d --build, or set MAGIC_LISTS_URL to a host-reachable Magic Lists endpoint.
Current notes
- Re-Discover may still use Magic Lists fallback mode if there is not enough listening history in its rediscovery window.
- Artist playlist creation expects whatever Magic Lists accepts as
artist_ids; if names do not work, use Magic Lists/Navidrome artist IDs. - This app stores no secrets. It relies on the already configured Magic Lists service.
- Recipe Lab writes directly to Navidrome. Set
NAVIDROME_USERNAME,NAVIDROME_PASSWORD, andLLAMA_LINE_API_KEYin a local.envfile before using Recipe Lab in Docker.
Recipe Lab modes
- Forgotten Favorites
- Deep Cuts
- New To Me
- Genre Bridge
- Artist Radio
- Album Archaeology
- Micro-set
- Live / Studio Contrast
- Decade / Year Trip
- Scrobble Gap Repair (experimental fallback mode)
Verify
gofmt -w .
go test ./...
License
Licensed under GPL-3.0-or-later. See LICENSE.
Languages
Go
79.6%
JavaScript
10.2%
HTML
5.8%
CSS
4%
Dockerfile
0.4%