Skip to content

Mariosbro82/Auret

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Auret

Auret — AI DJ for Claude Code

Auret turns Claude Code into your personal DJ. It pulls your liked tracks from SoundCloud, Spotify, or Deezer, analyzes them with machine learning, builds a taste profile, and then picks the right music for what you're doing — coding, debugging, shipping, or chilling. All playback runs locally via afplay (macOS) or in the browser turntable UI.

Features

  • Context-aware mixing — Claude picks tracks based on your work mode (coding, debugging, shipping, chill, focus, hype)
  • Dual-deck turntable — Browser UI with vinyl animation, VU meters, smiley crossfader, and pitch control
  • Audio intelligence — librosa extracts BPM, energy, brightness, key, MFCCs, and more from every track
  • Taste clustering — K-Means groups your library into sonic clusters so Claude understands your vibe
  • Celebration system — Victory sounds, airhorns, and track snippets when you ship
  • Remote control — Claude sends commands to the browser turntable via SSE in real-time
  • Multi-platform — SoundCloud, Spotify, and Deezer support with cross-matching

Architecture

    SoundCloud / Spotify / Deezer
                |
      [fetch-likes.mjs]           Auth tokens from
                |                 browser DevTools
                v                 (.env file)
         data/likes.json
                |
    [download-previews.mjs]
                |
                v
      data/previews/*.mp3          ~3MB each, 30s clips
                |
     [analyze-audio.py]            librosa feature extraction
                |
                v
    data/track-features.json       BPM, energy, brightness,
                |                  key, MFCCs, chroma
     [generate-profile.py]         K-Means clustering
                |
          +-----+-----+
          |           |
          v           v
  vibe-profile    tracks.json
     .json        (turntable data)
          |           |
    +-----+-----+----+----+
    |           |          |
 [dj.mjs]  [turntable  [player
  CLI DJ     .html]      .html]
  (afplay)  Dual-deck   Single-deck
    |       browser UI  browser UI
 [celebration.mjs]
  Victory sounds

Quick Setup

1. Clone and install

git clone <this-repo> ~/.claude/skills/vibe-engine
cd ~/.claude/skills/vibe-engine
bash scripts/setup.sh

2. Authenticate with your music platform

# SoundCloud (primary)
node scripts/grab-auth.mjs

# Spotify (optional)
node scripts/grab-auth-spotify.mjs

# Deezer (optional)
node scripts/grab-auth-deezer.mjs

Each script walks you through extracting auth tokens from browser DevTools. Credentials are saved to .env.

3. Fetch and download your music

# Fetch liked tracks metadata
node scripts/fetch-likes.mjs

# Download 30-second MP3 previews
node scripts/download-previews.mjs

For Spotify tracks missing previews, cross-match to Deezer:

node scripts/fetch-likes-deezer.mjs
node scripts/cross-match-deezer.mjs
node scripts/download-previews-deezer.mjs

4. Analyze and profile

# Extract audio features (requires Python + librosa)
python3 scripts/analyze-audio.py

# Generate vibe profile and turntable data
python3 scripts/generate-profile.py

5. Play

# CLI: let Claude DJ for you
node scripts/dj.mjs suggest coding
node scripts/dj.mjs play <trackId>

# Browser: open the turntable
node scripts/turntable-server.mjs

Turntable Server

The turntable server (scripts/turntable-server.mjs) serves the dual-deck UI and provides an API for remote control:

node scripts/turntable-server.mjs              # starts on port 3333, opens browser
node scripts/turntable-server.mjs --port 4000   # custom port
node scripts/turntable-server.mjs --no-open      # don't auto-open browser

API Endpoints

Method Path Description
GET /api/events SSE stream — browser receives commands here
POST /api/cmd Send a command to the browser turntable
GET /api/state Get current playback state

Remote Control Examples

# Play a track
curl -X POST http://localhost:3333/api/cmd \
  -H 'Content-Type: application/json' \
  -d '{"action":"play","id":"1234567"}'

# Crossfade to next
curl -X POST http://localhost:3333/api/cmd \
  -d '{"action":"next"}'

# Switch context
curl -X POST http://localhost:3333/api/cmd \
  -d '{"action":"setContext","ctx":"shipping"}'

# Celebrate
curl -X POST http://localhost:3333/api/cmd \
  -d '{"action":"celebrate","style":"victory"}'

# Get state
curl http://localhost:3333/api/state

Claude Code Integration

When installed as a Claude Code skill, Claude automatically:

  • Reads your vibe profile to understand your taste
  • Picks tracks matching your current work context
  • Plays celebration sounds when you ship
  • Controls the turntable via the server API

Install as Claude Code Skill

# Clone to the skills directory
git clone <this-repo> ~/.claude/skills/vibe-engine
cd ~/.claude/skills/vibe-engine
bash scripts/setup.sh
# ... run the setup pipeline above ...

Claude reads SKILL.md to learn the DJ commands and context rules.

Supported Platforms

Platform Likes Previews Auth Method
SoundCloud Yes Yes (direct) OAuth token from DevTools
Spotify Yes Partial PKCE flow (no client secret)
Deezer Yes Yes (direct) OAuth token from DevTools

Spotify tracks without preview URLs can be cross-matched to Deezer by ISRC code or fuzzy text search.

FAQ

Q: Does this work on Linux/Windows? A: The browser turntable works everywhere. The CLI DJ (dj.mjs) uses afplay which is macOS-only. For Linux, swap afplay calls with mpv or ffplay.

Q: How many tracks do I need? A: The system works with any number, but 50+ gives better clustering and context filtering.

Q: Do I need all three platforms? A: No. SoundCloud alone is enough. Spotify and Deezer are optional for expanding your library.

Q: How often do tokens expire? A: SoundCloud tokens last ~3 months. Spotify refresh tokens are long-lived. Deezer tokens don't expire.

Q: Can I add local MP3 files? A: Not directly, but you can manually add entries to track-features.json and place MP3s in data/previews/.

License

CC BY-NC 4.0 — free to use, share, and adapt for non-commercial purposes.

About

AI DJ for Claude Code — context-aware music system powered by your SoundCloud, Spotify, or Deezer library

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors