--- name: ozan-radio description: Operate Live Ozan Radio — DeepSeek DJ, Lyria 3, taste from settings.json and taste_seeds.json. Use for start/generate/skip, or updating taste from Spotify screenshots (no API). --- # Live Ozan Radio ## When to use - User says "ozan radio", "live radio", "generate a track", "what's playing" - User sends **Spotify screenshots** — update `settings.json` + `taste_seeds.json` (see `docs/TASTE-FROM-SCREENSHOTS.md`) - Operating or debugging `tinqs/live-radio` ## Taste from screenshots **No Spotify API.** Read `docs/TASTE-FROM-SCREENSHOTS.md` for the copy-paste Cursor prompt. Infer genres/mood/instruments from Home, Library, Daily Mixes; write both JSON files; never suggest playing Spotify URLs. ## Prerequisites - `GEMINI_API_KEY` and `DEEPSEEK_API_KEY` in `.env` - Server: `python -m ozan_radio serve` (port 8787) ## Operations | Intent | Action | |--------|--------| | Start station | `python -m ozan_radio serve` | | Generate track | `POST http://127.0.0.1:8787/api/generate` | | Now playing | `GET http://127.0.0.1:8787/api/now` | | Skip / shuffle | `POST http://127.0.0.1:8787/api/skip` | | One-shot CLI | `python -m ozan_radio generate` | ## DJ behavior DeepSeek reads `settings.json` + `taste_seeds.json`, avoids recent titles, outputs Lyria prompts. Generation only — no catalog playback. ## Models - Lyria: `lyria-3-pro-preview` (songs) or `lyria-3-clip-preview` (30s) - DeepSeek: `deepseek-chat` via Tinqs inference or `https://api.deepseek.com/v1`