A weekly agent that searches Chicago venue listings, matches upcoming artists to your Spotify taste profile using Claude, and keeps a private playlist up to date.
Stack: TypeScript · Anthropic API (claude-sonnet-4 + web_search) · Spotify REST API · GitHub Actions
web_search to scrape upcoming shows at ~12 Chicago venuesRuns every Monday at 9am Chicago time via GitHub Actions.
http://localhost:8888/callback as a Redirect URInpm install
SPOTIFY_CLIENT_ID=xxx SPOTIFY_CLIENT_SECRET=xxx npm run get-token
This opens a browser, asks you to authorize, and prints the refresh token to your terminal.
In your repo → Settings → Secrets and variables → Actions, add:
| Secret | Value |
|---|---|
ANTHROPIC_API_KEY |
Your Anthropic API key |
SPOTIFY_CLIENT_ID |
From the Spotify dashboard |
SPOTIFY_CLIENT_SECRET |
From the Spotify dashboard |
SPOTIFY_REFRESH_TOKEN |
From step 2 |
Push to GitHub. Then go to Actions → Concert Playlist Update → Run workflow to trigger manually before waiting for Monday.
cp .env.example .env
# Fill in .env with your secrets
npm install
npm run dev # runs via tsx, no build step needed
| What | Where |
|---|---|
| Venues | CHICAGO_VENUES array in src/agent.ts |
| Playlist name | PLAYLIST_NAME in src/agent.ts |
| Tracks per artist | TRACKS_PER_ARTIST in src/agent.ts |
| Schedule | cron in .github/workflows/concert-playlist.yml |
| Matching criteria | System prompt in discoverConcertArtists() |