radio.py analyze-taste — paginates full Liked Songs, joins with last 50 played + local played + feedback tables, writes ~/workspace/state/spotify_taste.{json,md}.
radio.py curator — reads taste report + mood_pools.yaml + steering note + last 7d activity, calls Claude CLI for a weekly curator note, writes ~/workspace/state/spotify_curator_proposal.md.
Proposal-only. Elmar reviews on MC /spotify#curation and applies via radio.py boost/block or by editing mood_pools.yaml.
Telegram fires on success with the MC link; on failure with the error.
Pulling Liked Songs (paginated)...
980 liked songs across 689 artists
Pulling recently played (Spotify caps at 50)...
...
Pulling Liked Songs (paginated)...
980 liked songs across 689 artists
Pulling recently played (Spotify caps at 50)...
Aggregating local played table + feedback...
Fetching genres for top 60 saved artists...
JSON → /home/lucienne/workspace/state/spotify_taste.json
Markdown → /home/lucienne/workspace/state/spotify_taste.md
Inputs: 30 top artists, 0 played(7d), 0 feedback(7d), steering=yes
Calling Claude CLI for curator pass...
Proposal → /home/lucienne/workspace/state/spotify_curator_proposal.md
Sent to Elmar DM