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, and LLAMA_LINE_API_KEY in a local .env file 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.

S
Description
Tiny Recipe Lab web UI for Magic Lists/Navidrome playlists
Readme GPL-3.0
99 KiB
Languages
Go 79.6%
JavaScript 10.2%
HTML 5.8%
CSS 4%
Dockerfile 0.4%