Gemini AI + Spotify

Birthday playlists that slap.

Tell it who the birthday person is, link a Spotify playlist, and Gemini AI curates the whole night — from wine o'clock to sunrise. Lands in your Spotify with custom cover art.

Star on GitHub See how it works

One prompt. Eight hours
of perfectly sequenced music.

Waveform breaks the night into chapters. Each block has its own mood, its own energy, its own Spotify cover art — and they flow seamlessly into each other.

8:00 PM – 10:00 PM
Wine & Chill
Warm, smooth, inviting vibes
32 tracks
10:00 PM – 12:00 AM
Singalongs
Anthems everyone knows the words to
35 tracks
12:00 AM – 2:00 AM
Dance Floor
Peak energy, full send, living room club
40 tracks
2:00 AM – 4:00 AM
Late Groove
Groovy afterparty, deep talks, rhythmic
35 tracks
4:00 AM – 5:00 AM
Sunrise
Wind down, peaceful, happy exhaustion
18 tracks

Set up once.
Generate endlessly.

Four steps from zero to Spotify. No web app, no subscription, no data sold.

Add your keys

Drop your Spotify client ID and Gemini API key into a .env file. Both have generous free tiers. First launch auto-creates all config files from included templates.

Write the brief

Edit master_prompt.md — describe the party, list the artists your crowd loves, set rules like "no breakup songs." This is the AI's main instruction file.

Link a reference playlist

Optional but powerful. Link any Spotify playlist and Gemini reads the actual song list to calibrate taste — genre ratios, energy level, artist choices. The prompt sets direction, the playlist calibrates sound.

Run and party

Run python create_playlist.py. Choose Full Night, Split Night, or Both. The playlists land in your Spotify account with custom generated cover art for each block.

Watch the magic
happen in real time.

This simulates what running Waveform actually looks like in your terminal. Hit Generate to see the night come together.

waveform — python create_playlist.py
Enter the birthday person's first name
Select the type of party
Select how to organize the playlists
Terminal output
Waveform ready. Hit Generate to begin.
Ready

Thoughtfully built.
No fluff.

Fully dynamic AI curation

No hardcoded song pools. Gemini reads your prompt and reference playlist fresh every time, so every generation is unique to your crowd.

No-repeat guarantee

Waveform remembers every song per playlist name. Regenerate without repeats, or start fresh — your call. Per-playlist history so different events never collide.

Custom cover art

Each block gets auto-generated gradient cover art in the exact color palette of its mood. Wine & Chill gets deep crimson. Dance Floor gets hot pink. Actual art, in Spotify.

Smart shuffling

Songs are shuffled within each block so artists aren't clumped together — but the energy arc between blocks is always preserved. Best of both worlds.

Artist blocklist

List artists in blocked_artists.txt and they're excluded unconditionally — no matter what the AI or mood rules say. Hard veto, no exceptions.

Mood rules on the fly

Quick one-off tweaks from the menu without touching any files — "more 80s", "extra reggaeton", "no house music tonight." Layers on top of your master prompt.

Existing playlist detection

If a playlist with the same name exists, Waveform asks: overwrite, append, or rename? No accidental duplicates, no lost playlists.

Latest Gemini models

Switch between Gemini 2.0, 2.5 Flash, 2.5 Pro, and previews from the settings menu. Try different models for speed vs. quality tradeoffs on the same party.

Private by default

Runs entirely on your machine with your own API keys. No accounts, no servers, no data collection. Your party, your music, your privacy.

Pick your mode.
Press play. Forget.

Generate everything in one run. You can even ask for all three at once.

Full Night

One big playlist, all blocks in order. Press play when guests arrive and don't touch it again. The night runs itself.

Both

Get the full night playlist and all the split playlists at once, same songs across both. Decide on the night which to use.

Up and running
in five minutes.

Python 3.10+, a Spotify developer account, and a Gemini API key. Both API keys are free to get.

bash
# Clone and install
git clone https://github.com/thepixelabs/waveform.git
cd waveform
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt

# Set up credentials
cp .env.example .env
# Edit .env and add your Spotify + Gemini keys

# Run it
python create_playlist.py