spoti-cli
Installation
SKILL.md
spoti-cli
Prerequisites
Check auth: spoti-cli me --json. If it fails, run setup:
- Install:
bun add -g spoti-cli - Create Spotify app at developer.spotify.com/dashboard/create:
- Set redirect URI to
http://127.0.0.1:8888/callback - Check Web API
- Copy the Client ID
- Set redirect URI to
- Auth:
spoti-cli auth --client-id <CLIENT_ID>
Workflow
1. Parse Intent
Three modes:
- Explicit: user names artists/tracks → search directly
- Mood/activity: user describes vibe → read mood-mapping.md
- Vault-aware: user says "based on my day" → read
02_Journal/daily/{YYYY-MM-DD}.md, extract mood signals from mood-mapping.md
2. Find Seeds
spoti-cli search "Radiohead" --type artist --limit 5 --json
spoti-cli search "Everything In Its Right Place" --type track --limit 3 --json
Extract id fields from results.
3. Get Recommendations
spoti-cli recommend --seed-artists ID1,ID2 --seed-genres ambient --energy 0.3 --valence 0.4 --limit 25 --json
Max 5 seeds total (artists + genres + tracks combined). Tunable attributes in mood-mapping.md.
4. Create Playlist
spoti-cli create "Deep Work — Mar 24" --description "Focus music" --tracks URI1,URI2,... --json
Name contextually: include mood + date. Vault-aware example: "Post-shipping Celebration — Mar 24".
5. Open in Spotify
open "spotify:playlist:{PLAYLIST_ID}" 2>/dev/null || open "https://open.spotify.com/playlist/{PLAYLIST_ID}"
Always open the playlist after creating it. Try Spotify desktop first (URI scheme), fall back to web if desktop isn't available.
6. Report
Return: playlist URL, seed logic summary, track count.
Commands
| Command | Example |
|---|---|
search |
spoti-cli search "query" --type track --limit 10 --json |
recommend |
spoti-cli recommend --seed-genres pop --energy 0.8 --limit 20 --json |
create |
spoti-cli create "Name" --tracks URIs --public --json |
playlist list |
spoti-cli playlist list --limit 10 --json |
playlist get |
spoti-cli playlist get ID --json |
playlist add |
spoti-cli playlist add ID --tracks URIs |
me |
spoti-cli me --json |
All commands support --json for structured output.