Flowlist reorders playlists into a smoother listening journey using emotional continuity, rhythmic continuity, energy progression, and user-chosen flow keywords (intro → build → peak → cooldown → outro). It does not stream music, download audio/video, or run lyrics analysis.
flow-list-kappa.vercel.app
- Import public YouTube Music / YouTube playlists
- Choose playlist type
- Choose up to 2 flow keywords
- Generate prototype listening order
- View mood chapters, energy/rhythm arcs, and transition explanations
- Mixed artists
- Mood swings
- Weird transitions
- Long saved playlists
- Next.js
- TypeScript
- Tailwind CSS
- YouTube Data API
- Vercel
Flowlist currently uses metadata and prototype mood/rhythm estimates. It does not stream, download, or analyze audio. BPM values are approximate ranges. No real AI model or third-party BPM provider is connected yet.
- AI feature estimation
- Third-party BPM provider
- Better artist/title matching
- Virtualized results for very large playlists
- Export/copy workflow polish
The primary import path is a public YouTube Music or YouTube playlist URL. The app uses the YouTube Data API v3 (server-side only) to read playlist and video metadata — titles, channels, thumbnails, links — then applies mock sequencing (not real AI yet).
YouTube playlist imports are intentionally bounded. Choose an import depth in the UI:
- Quick scan — first 100 tracks
- Standard — first 200 tracks (default)
- Deep sequence — first 300 tracks
Large imports may take longer to analyze and use more YouTube API quota.
- Manual paste — one track per line (
Artist - Song,Song - Artist,Artist, Song, etc.). Only your pasted text is used. - Demo playlist — clearly labeled mock data for testing the UI and sequencer.
- Experimental Spotify import — optional legacy path using Spotify client credentials. Public playlist access can be limited by Spotify; if it fails, use YouTube Music or manual paste. No Spotify OAuth, Audio Features, Audio Analysis, recommendations, or playlist writes.
Create .env.local (never commit real keys):
| Variable | Required | Purpose |
|---|---|---|
YOUTUBE_API_KEY |
Yes for YouTube import | YouTube Data API v3 key (server only; not exposed to the browser). |
SPOTIFY_CLIENT_ID |
No | Experimental Spotify import only. |
SPOTIFY_CLIENT_SECRET |
No | Experimental Spotify import only. |
See .env.example for a template.
npm install
npm run devOpen http://localhost:3000.
npm test
npm run lint
npm run buildNext.js 16 uses src/proxy.ts to reject cross-origin browser POSTs to the
YouTube playlist import route before any provider request is made. With the dev
server running, this manual check should return HTTP/1.1 403:
curl -i -X POST http://localhost:3000/api/youtube/playlist \
-H 'Origin: https://cross-origin.example' \
-H 'Content-Type: application/json' \
--data '{"url":"https://www.youtube.com/playlist?list=test"}'- No authentication, database, payment, or real AI API calls in this prototype.
- No Amazon Music integration.
- Metadata and user text only — no storage of audio/video files.
Next.js (App Router), TypeScript, Tailwind CSS, shadcn/ui.