02ea026851
Remove spotify integration; add TASTE-FROM-SCREENSHOTS guide; ship Ozan settings.json and taste_seeds.json as Cursor examples plus new wandering dervish track. Co-authored-by: Cursor <cursoragent@cursor.com>
41 lines
1.5 KiB
Markdown
41 lines
1.5 KiB
Markdown
---
|
|
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`
|