AI Spotify Playlist Generator  /  Open Source

The night,
orchestrated.

The invisible architect of your event. From the first pour to the final sunrise.

Stop managing music; start managing the vibe. Waveform engineers the full arc — arrival through the dance floor to early-morning reflection — and drops it straight into your Spotify, with custom cover art for every chapter.

Claim the Soundtrack Python 3.11+  ·  ~5 min setup Explore the night arc ↓
The night arc

One prompt.
The architecture of an
unforgettable night.

Waveform engineers the night into five distinct chapters. Each is a shift in energy, a new chapter of the story, and a custom visual identity in your Spotify library.

20:00 — 22:00
Wine & Chill
Setting the frequency. The anticipation of the night ahead as the first drinks pour.
32 tracks  ·  ~2 hrs
22:00 — 00:00
The Union
Inhibitions drop. Anthems emerge. The moment the room starts to move as one.
35 tracks  ·  ~2 hrs
00:00 — 02:00
Peak Send
The living room disappears. Kinetic energy. Full immersion in the moment.
40 tracks  ·  ~2 hrs
02:00 — 04:00
The Aftermath
Groovy, deep, and rhythmic. The sound of small circles and deep conversations.
35 tracks  ·  ~2 hrs
04:00 — 05:00
Earned Ending
The peaceful wind-down. Happy exhaustion. The soundtrack to the memories you just made.
18 tracks  ·  ~1 hr
Setup

Up and running
in five minutes.

Python 3.10+. A Spotify developer account (free). A Gemini API key (also free). That's the whole stack.

01

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 example templates.

02

Write the brief

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

03

Link a reference playlist

Optional but powerful. Link any Spotify playlist and Gemini reads the actual tracks to calibrate taste — genre ratios, energy, artist mix. It learns what this crowd responds to.

04

Run and party

Run python create_playlist.py. Choose Full Night, Split Night, or Both. Playlists land in Spotify within minutes, each block with its own gradient cover art.

Live demo

Watch the night
come together.

This is exactly what Waveform looks like in your terminal. Hit Generate to see the arc build in real time.

waveform — python create_playlist.py
Enter the guest of honour's first name
Terminal output
$ Waveform ready. Hit Generate to begin.
Ready
What's inside

Thoughtfully built.
No fluff.

Fully dynamic AI curation

No hardcoded song pools. Gemini reads your prompt and reference playlist fresh every run — every generation is unique to your crowd and moment. It does not sample from a pre-built catalogue.

No-repeat guarantee

Waveform remembers every song per playlist name. Regenerate any time without repeats, or clear history to start fresh. Per-playlist tracking so different events never collide.

Custom cover art

Each block gets auto-generated gradient cover art in its exact palette. Wine & Chill gets deep crimson. Dance Floor gets hot pink. Real art, uploaded directly to Spotify.

Smart shuffling

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

Hard artist blocklist

List artists in blocked_artists.txt and they are excluded unconditionally — no matter what Gemini says. Hard veto. No exceptions.

Mood rules on the fly

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

Latest Gemini models

Switch between Gemini 2.0, 2.5 Flash, 2.5 Pro, and preview releases from the settings menu. Speed versus quality tradeoff, your choice per run.

Collision detection

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

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.

Three ways to play

Pick your mode.
Press play.

Generate everything in one run. You can 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

Full night playlist and all the split playlists at once. Decide on the night which to use.

Quick start

Clone. Configure.
Generate.

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 — add Spotify + Gemini keys, set BIRTHDAY_NAME

# Run it
python create_playlist.py