Creating a Spotify Playlist with AI
I wanted to build a playlist around a specific vibe but couldn’t quite name it. Songs like Kurt Vile’s “Check Baby” and Mark Lanegan’s “Hit the City” captured a laid-back and unhurried aesthetic. Not slacker enough to be lazy but not energetic enough to be gym playlist material either. Just effortlessly cool. Searching by genre or artist for similar songs wasn’t cutting it. The usual categories returned were too broad and thus too vague. So I decided to use AI to help me find every song in my 2,500+ track library that matched this idea of an aesthetic.
I found and used Chosic to duplicate my Spotify liked songs into a working playlist, then exported it to CSV. I didn’t expect it and didn’t use the feature till much later on but the export not only gave me access to a list of my liked songs over the years but also all of Spotify’s audio metadata that define how each song actually feels.
My first instinct was to work with Claude on a traditional filtering approach: identify artists and genres that fit the vibe, then search for those patterns. I’ve been using Claude as my AI assistant of choice currently as its superior models and capabilities compared to ChatGPT make it particularly good for more analytical tasks like this. Claude’s initial attempt cast a wide net, pulling in artists like Air (too ethereal and electronic), Alice in Chains (too heavy and angsty), Deftones (strong emo undertones), Radiohead (too melancholic), and Beach House (too dreamy). This approach found 1,146 songs, but most didn’t fit the desired aesthetic at all. This broad selection was because I tried to build a similar songs list using basic metadata like genre tags and artist names, which are too subjective and inconsistent. For example, “Psychedelic rock” could mean The Doors or Tame Impala, with both offering completely different vibes.
So instead of guessing based on genre labels, I decided to mess around with the advanced metadata of my Spotify liked songs. The first iteration used happiness scores of 50 to 75 (not too sad, not too upbeat), energy scores of 50 to 75 (for that mid-range confident stride), dance scores of 0 to 50 (head-nod rather than dance floor movement), within rock as the parent genre. This narrowed it down to from 1,146 to 29 songs, much better, but the list still felt too broad on tempo.
For the final iteration, I took a closer look at what connected the original two tracks I started out with. Mark Lanegan’s “Hit the City” and Bass Drum of Death’s “Way Out” both had similar profiles. Moderate energy (between 50 and 90), some groove but not dancey (with dance scores between 25 and 65), and that sweet spot of emotional content (with happy scores between 35 and 80). But also crucially, mid-tempo (between 105 and 125 BPM). With the BPM range added to account for the desired walking pace tempo, combined with moderate energy, dance, and happiness metrics, I finally hit the sweet spot.
After some minor manual refinements like removing alt-grunge and classic rock tracks that technically fit the metrics but felt out of place, I ended up with 21 songs that perfectly capture the desired vibe:
- Kurt Vile - Check Baby
- Mark Lanegan, PJ Harvey - Hit the City
- Bass Drum of Death - Way Out
- Arctic Monkeys - My Propeller
- Arctic Monkeys - Crying Lightning
- Echo & the Bunnymen - It’s Alright
- Franz Ferdinand - Take Me Out
- Led Zeppelin - Dancing Days
- Pink Floyd - Have A Cigar
- Queens of the Stone Age - I’m Designer
- Queens of the Stone Age - You Would Know
- R.E.M. - Orange Crush
- Red Hot Chili Peppers - Don’t Forget Me
- Sebadoh - Not Too Amused
- Slint - Nosferatu Man
- The Breeders - Cannonball
- The Brian Jonestown Massacre - Vacuum Boots
- The Pack a.d. - Making Gestures
- The Raconteurs - Steady, as She Goes
- The Rolling Stones - Gimme Shelter
- The Vines - Ladybug
After all this analysis, I settled on the playlist name, ‘Cruiser Rock’ because it captured that cruising speed energy I was going for. The feeling of driving with the windows down, not in a hurry but moving with purpose. You can listen to the full Cruiser Rock playlist here.