Vibe & Mood Recommendations
get_recommendations / POST /api/recommendationsGenerates a set of tracks from up to 5 combined seeds (genres, track IDs, artist IDs). Spotify removed its recommendations endpoint and audio features for Development Mode apps, so recommendations are songs by the seed artists' collaborators plus picks from a genre search. Audio targets (energy, valence, tempo) are accepted but ignored.
Click the โจ Vibe button in the top control bar to open the modal dialog. Enter comma-separated seed genres, tracks or artists. The audio sliders no longer change the results.
Submitting sends a payload to /api/recommendations and renders matching songs directly into the studio grid for previewing and staging.
The agent translates text prompts like "Give me uplifting dance music like Dua Lipa" into seeds:
1 The Core Inputs It Accepts
To generate recommendations, the tool takes up to 5 Seed Anchors:
-
seed_tracksTrack IDs; the track's lead artist becomes a seed -
seed_artistsArtist IDs; songs by their collaborators are recommended -
seed_genresAny genre keyword (e.g.synthwave,indie pop,lo-fi,house)
2 How Vibe & Type Recommendations Work in Practice
When you prompt your AI client (like Claude Desktop or Cursor), the LLM translates your natural language into seeds or a mood preset:
- seed_tracks: ["Blinding_Lights_ID"]
- seed_genres: ["synthwave"]
- mood: "focus" (ambient + classical)
3 What It Does vs. What It Doesn't Do
| Capability | Status | Explanation |
|---|---|---|
| Artist & Track Seeds | Built-in | Recommends songs by the artists the seeds share songs with (their collaborators). |
| Genre Seeding | Built-in | Searches Spotify with a genre: filter, falling back to a plain search for the genre name. |
| Numeric Vibe Targets | Estimated | Spotify no longer provides per-track audio features, so energy and valence targets are matched against estimated values per genre. Danceability, acousticness and tempo can't be applied. |
| Text Tag Matching | LLM-Driven | Doesn't search plain-text tags like #workout directly; instead, the attached LLM maps text tags (e.g. "upbeat workout") to a mood preset or genres (mood="workout", seed_genres=["edm"]). |