
Dhruv Bhutani / Android Authority
I have a complicated relationship with music streaming algorithms. On one hand, the convenience of having the world’s music catalog in my pocket is undeniable. It is the dream we were sold in the early 2010s, and for the most part, it has delivered. But the algorithmic magic that services like Spotify and Apple Music rely on feels less like a discovery tool and more like a feedback loop. I’ve complained enough about Spotify’s repetitive recommendations before. While Spotify keeps trying to surface new and innovative variations on generative playlists, the fact of the matter is my “Daily Mixes” are just the same 50 songs I listened to last week, reshuffled. The “Smart Shuffle” feature seems hellbent on pushing the same trending tracks that labels are paying to promote, regardless of whether they fit the vibe that I’m going for. Suffice it to say that it certainly doesn’t feel like the personal DJ that it calls itself on the label. And sure, YouTube Music’s recommendations might be ahead of Spotify, but even that isn’t entirely clued into what I’m looking for.
My Spotify Daily Mixes are just the same 50 songs I listened to last week, reshuffled.
That frustration has led me back to my roots – my local music library. I have spent years curating a massive collection of FLACs and MP3s, hosted on a Plex server that sits in my home office. It is a treasure trove of deep cuts, unreleased demos, and specific versions of tracks that streaming services simply don’t have. But Plex has always lacked one thing that sets streaming services apart – the ability to automagically generate playlists for me. It plays what I tell it to play, nothing more. It doesn’t know that when I want to create a playlist titled “Neon Pulse Riot,” I’m referring to a mood, not just a genre tag. Plex used to have an OpenAI integration, but since that does a whole lot of nothing today, it’s back to being just a really good dumb music player.
That is, until I found MediaSage. MediaSage is an open-source tool that bridges the gap between your dumb local music files and the smarts of modern Large Language Models like Google’s Gemini, and, frankly, it has ruined streaming services for me.
Are you happy with Spotify’s AI playlists?
1 votes
The cure for algorithm fatigue is in your Plex library

Dhruv Bhutani / Android Authority
Streaming algorithms feel so stale because when you click create radio on a track in Spotify, you are effectively interacting with a black box. You have absolutely zero idea why the algorithm chose a particular song in the first place. There’s a range of factors involved, of course, things like tempo and genre, but also general popularity. But as an enthusiast, I’m searching for the deep cuts, and there’s really no way to force that action. If I listen to a lot of 80s synth-pop, the last thing I want to hear is Take on My by Aha, or Tainted Love by Soft Cell on repeat. I’m looking for something fresh.
This lack of control is what drove me to look for alternatives. I wanted the convenience of a generated playlist but with the depth and specificity of my own hand-curated library. That’s doable through human curation, but in 2026, there has to be a faster way.
MediaSage bridges the gap between dumb local files and genuinely smart music discovery.
MediaSage is an open-source tool I stumbled upon on GitHub that completely changes how you interact with a local music library. The premise is deceptively simple: it scans your Plex music library, sends the metadata to an LLM, and asks the AI to create playlists based on natural language prompts. This is different from a standard “smart playlist” in your regular music players or Plex. Those rely on rigid logic, like filtering by genre or year. MediaSage is semantic. You can ask it for songs similar to a certain song you like, or high-octane cyberpunk chase music. You can even ask if for fast-paced heavy metal tracks that avoid all the popular tracks and ballads, and because the LLM understands context, mood, and has basically the internet’s database on what the song’s vibe truly is, it can actually deliver.
The setup isn’t exactly plug-and-play as you need to be comfortable spinning up a Docker container and grabbing an API key for Plex, but for anyone who already runs a Plex server, it is a trivial weekend project. You’ll also need an API key for your preferred large language model with support for Gemini, OpenAI, and Claude baked in. You can, of course, also pair it with a local LLM, but you’ll need a reasonably beefy computer to get quality results.
Once it’s running, it acts as a web interface that sits on top of your library, takes your requests, parses them through your LLM of choice, and feeds the results directly back into Plex. And it does it astonishingly well.
MediaSage transforms a single song into multiple listening paths

Dhruv Bhutani / Android Authority
The feature that hooked me immediately was the “Seed Track” generation. In Spotify, if I seed a radio station with a track, like say, Golden Skans by The Klaxons, I get a generic playlist full of 2000s Indie rock. It’s fine, but it’s also broad and not necessarily matching the hard tempo, dance-rock vibe of the song. In MediaSage, I selected Golden Skans and hit Create. Instead of just spitting out a list of songs, the tool analysed the track, tempo, and pacing of the song, in addition to a whole range of LLM-based analysis that’s beyond my understanding. Suffice it to say, it understood the assignment.
MediaSage understands semantic search. You ask for a vibe, and it actually understands the assignment.
The AI analyzed the track and offered me different paths or vibes to explore based on that specific song. It gave me options like a playlist titled “The Defining New Rave Sound,” focusing on the fusion of indie rock and dance rhythms. Another option was “High-Octane Dancefloor Energy,” which ignored the genre entirely to focus purely on the tempo and drive. A third option, “Bright, Pulsating Synth Hooks,” zeroed in on the specific instrumentation. This is the granularity I have been missing. I chose the high-octane option because I wanted a workout playlist with a similar feed to the track, not a history lesson on 2007’s indie rock.
The result was a playlist titled Neon Pulse Riot that pulled tracks from my library that completely fit that specific energy and included deep cut artists like The Horrors, Digitalism, as well as more popular artists like Ratatat, and The Prodigy. It didn’t just match the genre; it matched the feel of the track. For example, on the face of it, a track like Omen by The Prodigy shares nothing with the indie rock track I seeded in. However, placed in the playlist, it just works together.

Dhruv Bhutani / Android Authority
Beyond seed tracks, you can simply type what you want or are in the mood for. I decided to test its limits with a prompt asking for a positive Turkish funk playlist. That’s a genre that I’m very familiar with, but don’t have much of, if any, in my digital library. That’s where the reality of a local library comes in. If I asked Spotify this, it would serve me artists like Altin Gun or Barıs Manco instantly. But MediaSage is constrained by the limits of my library.
The AI scanned my library, realized I was short on Anatolian rock, and pivoted. Instead, it generated a playlist full of positive funk and funk-adjacent music from my library. With tracks like Stevie Wonder’s “Uptight,” Earth, Wind & Fire’s “Shining Star,” and Red Hot Chili Peppers’ “Freaky Styley“, it managed to create an enjoyable playlist bound by the restraints of my library.
Did it fail the prompt? Technically, yes. It didn’t give me Turkish funk. But, it couldn’t have since I didn’t have those songs in my library. Instead, it succeeded in matching the vibe. It found the most adjacent “happy, positive funk” tracks I actually owned. I wouldn’t face this problem on Spotify, but Spotify would also regurgitate the same 20 tracks that it always does. MediaSage can’t work around a small library, but it can send you on a creative detour through your own music collection, and it’s the first time I’ve experienced that since Pandora Radio diversified into a full fledged streaming service.
The economics of AI-powered playlist generation

Dhruv Bhutani / Android Authority
You might be wondering about the “token cost” visible in the interface. Since I am using the paid API tier for Gemini, every request costs a tiny amount of money. Looking at my “Joyful Funk Pulse” playlist, the cost was roughly $0.0082. That is less than a penny. I could generate a hundred playlists a day and still not hit the cost of a single month of Spotify Premium.
A playlist cost me less than a fraction of a penny. That’s worth the huge improvement in quality of recommendations.
The trade-off, of course, is speed. Spotify is instant. MediaSage takes a few moments to get going. You hit generate, following which the app sends across a selection of music to the AI mode for scanning. It takes about 10 to 20 seconds for the AI to parse the request, look at the available tracks, and come up with a tracklist. Additionally, by default, it won’t send across your entire library to be parsed by the LLM provider to keep costs in check. However, you have options to send across a larger number of files if you want. Moreover, it won’t just straight up give you a playlist. In most cases, MediaSage gives you a few pathways to follow that you can opt for before creating the playlist.
Finally, it is a disjointed experience that’s not built within the Plex interface. You’ll have to work with MediaSage separately and send the generated playlist to Plex. It’s not a huge issue, but it also means that the app isn’t really meant for on-the-go playlist creation. All that to say, that this really is a tool for music enthusiasts, not necessarily someone just dabbling with custom playlists once in a while.
Access is convenient, ownership is powerful
One of the most pro-consumer features of MediaSage is that it doesn’t lock you into a single AI provider. By default, it works beautifully with OpenAI and Google’s Gemini. I opted for Gemini because the Flash models are incredibly fast and cheap. That last bit matters, and using Gemini Flash means that a playlist costs me less than a fraction of a penny. However, the real kicker for privacy enthusiasts and homelab users is the support for Ollama.
Switching to a local LLM can give you a completely offline semantic playlist generator that is better than most streaming services.
If you have a decent GPU in your home server, you don’t even need to send your data to Google or OpenAI. You can point MediaSage at a local instance of Ollama running Llama 3 or Mistral, and keep the entire process offline. This is the holy grail of self-hosting, a music recommendation engine that runs entirely on your hardware, using your files, with no monthly subscription fee and no data harvesting. You’ll, obviously, need a suitably beefy computer if you plan to go down this route. For my testing, I stuck with Gemini 2.5 Flash simply for the speed, but knowing I can switch to a local LLM and have the same listening experience if I ever lose internet access gives me peace of mind that Spotify can never offer.
The future of AI doesn’t have to be a walled garden. It can be modular, open, and personal.
As an avid self-hoster, the merits of self-hosting aren’t lost on me. But using MediaSage highlighted a fundamental issue with the modern music landscape. We have traded ownership for access, and in doing so, we lost the ability to deeply interact with our music. When you rent your music from Spotify, you are at the mercy of their metadata. You can’t fix a wrong genre tag. You can’t organize albums by the original release date if they only have the remaster. And you certainly can’t plug their database into your own AI tools to slice and dice the data how you see fit.
My Plex library is mine. If I want to tag a folder of tracks as dark jazz rock, I can. And now, with MediaSage, I can leverage that ownership to interact with my broader library. The AI sees the music exactly how I have organized it and respects the boundaries of my curation. But within those limits, it lets me surface tracks that I might not even be aware of, or might not have heard in ages. With a local library spanning over 1,20,000 tracks, that’s certainly plausible. And my library is barely a drop in the bucket compared to other self-hosters.
A practical use case for personal AI

Dhruv Bhutani / Android Authority
I won’t pretend this solution is for everyone. If your idea of fixing a music library involves anything more complex than downloading an app from the Play Store, you might find the Docker setup annoying. You also need a music library to begin with. If you have spent the last 15 years streaming and own zero MP3s, MediaSage is useless to you.
And, of course, the discovery aspect is limited to what you have already discovered. MediaSage can’t play you a brand new release from a band you have never heard of. It only effectively remixes your existing library. But for me, that is a small compromise. I have thousands of tracks I haven’t listened to in years. I don’t always need more new music; MediaSage helps me appreciate the lifetime of music I have already paid for. And, of course, it’ll still work as I add in fresh tracks.
MediaSage represents an era of Personal AI where AI tools run on your hardware, and let you interact with your own data in ways you couldn’t before.
We are entering an era where AI is going to be baked into everything, but usually in a way that benefits the corporation, not so much the user. Spotify’s AI DJ is designed to keep you on the platform and reduce their licensing costs by pushing promoted music, and, lately, AI music. Google’s Gemini integration in YouTube Music is designed to keep you within the Google ecosystem.
MediaSage represents the other path that I’m actually excited about — personal AI. This is AI that works for you. It runs on your terms, uses your data, and is often running on your own hardware. It doesn’t care about engagement metrics or monthly active users. Plugged into MediaSage, it just wants to find you a banger of a track to listen to while you cook dinner. The fact that I can swap out the brain of the operation from Gemini to OpenAI to a local Llama model proves that the future of AI doesn’t have to be a walled garden. It can be modular, open-source, and deeply personal. If you have a Plex server gathering digital dust, I urge you to give this a try. It might just remind you why you started collecting music in the first place.
Don’t want to miss the best from Android Authority?


Thank you for being part of our community. Read our Comment Policy before posting.














