I built a Claude Code skill that creates Spotify playlists from natural language. You describe what you want — “70s Ethiopian jazz fusion,” “ambient music that sounds like it was recorded in a cathedral,” “deep cuts from the golden age of hip-hop” — and Claude talks to Spotify’s API and generates a personalized playlist in your Spotify account, informed by your actual listening history.
Spotify’s Recommendations Are Fine
OK let’s be more generous – Spotify’s recommendation algorithms are actually pretty good. I’ve discovered all kinds of new genre and artists since I became a member in 2020. I no longer hate World Music, I just wasn’t listening to enough afropsychedelica. But the more time I spend on Spotify, the more it feels genuinely hard to find really good music that the rest of the world hasn’t discovered via the same correlation matrixes.
To wit, I think we’ve all had the experience of sitting in a restaurant and realizing that a song we thought we were so cool for finding on Spotify was actually on heavy rotation on everyone else’s playlists as well. (I’m looking at you: Fantastic Man by William Onyeabor).
In an effort to get some more interesting human curated music in my life, I participate in a Music League with my friends. It’s basically a weekly playlist competition based on a single prompt.
Our most recent prompt was more or less about this:
We Shall Overcome (Da Algoriddim)
Search Spotify for obscure and it will make an “obscure mix” for you. It will be….fine. But go to a track you find especially interesting, make it make a “radio” off this track, then you start getting somewhere good. Enter to the best/most intriguing track off THIS playlist. Then do the same thing again. Points go to things truly new to you and (hopefully) everyone else.
After trying this well intentioned directive, I quickly found running into a similar feeling: I’ve seen a lot of these songs before.
But since I spend most of my waking hours interacting with Claude, I wondered if I could get Claude to help me out with this instead of futzing around in Spotify. Which beame the inspiration for my playlist-builder skill:

Your Music Library Is Invisible to Spotify
One key thing I wanted to incorporate that Spotify could never handle: I have a large MP3 collection I regularly listen to. Hundreds of gigabytes meticulously organized and carefully curated tunes that I’ve excruciatingly preserved across hard drives throughout the years. But this collection represents two decades of music taste that Spotify knows nothing about. When Spotify recommends music to me, it’s working with maybe 40% of my actual listening history. The other 60% – all that music that I began listening to since I had my first Mp3 player, through college, through … well 2020 when I signed up for Spotify – it’s all useless for understanding my tastes algorithmically.

The playlist builder skill fixes this. It reads a simple list of my mp3 archive list and my Spotify liked songs, and then uses Claude to build a combined taste profile. Then it’s simply a matter of asking for some recommendations. Claude has the musical knowledge to understand that if I own a bunch of Mulatu Astatke records and a bunch of Khruangbin records, I might like Mdou Moctar or Bombino — connections that require cultural context, not just collaborative filtering.
Claude Code for Non-Code Projects
Using Claude Code for things that aren’t software engineering is not just my hobby, it’s also my passion. The tool is designed for code, but the underlying capabilities — reading files, understanding context, executing scripts, maintaining state across a workflow — make it a surprisingly good platform for creative or research projects.
My playlist builder is a good example. The actual Python script is ~290 lines of stdlib-only code that talks to the Spotify API. The interesting part is everything Claude does before the script runs: reading your listening history, understanding the genre you’re describing, reasoning about what specific tracks would fit, balancing familiarity with discovery, and knowing enough about music history to make connections across decades and continents. The script is plumbing. Claude is the curator.
There’s something satisfying about the workflow. You type a sentence describing a vibe. Claude thinks for a moment, then produces a paragraph explaining its curatorial approach — why it chose certain artists, how it’s balancing eras, what sonic thread connects the selections. Then the script runs, tracks appear in your Spotify, and you hit play. The whole thing takes about two minutes.
Free-Form Genre Description Is Underrated
One thing that’s become clear from using this: the natural language interface feels better for music discovery than just searching for songs you already know, genre tags or Spotify’s Radio feature. Music taste is idiosyncratic and contextual in ways that fixed taxonomies can’t capture.
Try describing what you want to a genre picker: “I want something that sounds like a 1970s French film soundtrack but with more percussion and maybe some dub influence.” You can’t click your way to that. But you can say it to Claude, and it knows exactly what you mean — it’ll pull from Serge Gainsbourg, Manu Dibango, Lee “Scratch” Perry, and Stereolab, and the resulting playlist will feel coherent in a way that no algorithmic “mood blend” achieves.
The Measurement Problem
All that said, I have no idea if Claude’s playlists are objectively better than Spotify’s. “Better” in music recommendation is deeply subjective, and the only way to rigorously test it would be large-scale controlled experiments — A/B testing playlist sources across thousands of users, measuring skip rates, save rates, repeat listens, and long-term retention. I can’t run that experiment.
What I can say is that Claude’s playlists feel better. They have more range and more intelligence for how they’re built. They also come with interesting anecdotes about the music itself – though I suppose you have to trust that those aren’t hallucinations.
If Spotify ever opened up their engagement data through an API, it would be a fascinating experiment: take 1,000 users, give half of them Claude-curated playlists and half Spotify’s algorithmic ones for the same prompt, and compare the engagement metrics after a month. My guess is Claude would win on satisfaction and discovery but lose on raw play-through rates, because Spotify is very good at picking songs you won’t skip — which isn’t the same thing as picking songs that expand your taste.
What’s Actually Happening Here
The interesting meta-observation is that this skill works because Claude has absorbed a huge amount of music criticism, history, and cultural context from its training data. It understands genre genealogies, regional scenes, label rosters, producer relationships, and era-specific sounds in a way that’s genuinely useful for curation. It’s not doing collaborative filtering (“users who liked X also liked Y”). It’s doing something closer to what a knowledgeable record store clerk does: understanding what you’re asking for, drawing on deep domain knowledge, and making recommendations that respect your taste while pushing its boundaries.
That’s a fundamentally different approach to recommendation, and it’s one that the major streaming platforms can’t easily replicate since they rely on collaborative filtering. This means they’re trying to send you recommendations of what people typically listen to not necessarily recommendations that will broaden or challenge your horizons.
The skill is open source if you want to try it yourself. You’ll need a Spotify developer account and Python 3, but no other dependencies.