Install
openclaw skills install bumblebeeTwo modes: (1) BUMBLEBEE — Communicate through music by playing exact lyric lines on Spotify, like Bumblebee from Transformers speaking through radio snippets. (2) R2-DJ — Contextual music curation that reads the moment (time, mood, recent listening, activity) and builds the perfect queue. Use when: expressing something through song lyrics, playing music for the current vibe, curating a playlist for a mood/activity, responding to 'play music' or 'what should I listen to', DJ requests, or any music playback control (play, pause, skip, volume, search). Requires: Spotify Premium with active device, OAuth tokens in projects/spotify/.
openclaw skills install bumblebeeTwo sides of the same coin:
projects/spotify/tokens.json (auto-refreshes)projects/spotify/.env (SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET)scripts/build-lyric-index.md for how to build one. Lyrics are copyrighted and not included in this skill. You'll need to curate your own lyric-index.json and optionally lyrics-db.json.Search the lyric index for lines that literally say what you mean:
node scripts/lyric-engine.js search "phrase to find"
Returns matching lines with IDs, timestamps, and scores. Use literal phrases — search for what the lyrics actually say, not metaphors.
Send specific lyric lines to the active Spotify device:
node scripts/lyric-engine.js speak "artist::track::lineNum" "artist::track::lineNum"
Each clip plays its exact timestamp window, then advances to the next with a brief pause. Chain multiple IDs to build a sentence.
node scripts/bumblebee.js devices
Verify an active Spotify device exists before attempting playback. 🟢 = active.
Bumblebee doesn't paraphrase — it finds lyrics that literally say the words. The goal is chaining real song lines into a coherent sentence or feeling that the listener can understand.
Give the engine a message and it finds the best lyric chain:
node scripts/lyric-engine.js compose "I miss you and I want to see you"
Returns a chain of clips with a ready-to-use speak command. The engine uses greedy phrase-matching: longest matching phrase first, then fills gaps.
For more nuanced messages, the agent should:
node scripts/lyric-engine.js search "I need you"
node scripts/lyric-engine.js search "come back"
node scripts/lyric-engine.js search "I'll be waiting"
node scripts/lyric-engine.js speak "artist::track::3" "artist::track::12" "artist::track::7"
node scripts/lyric-engine.js index "Artist" "Track"node scripts/lyric-engine.js batch-indexnode scripts/lyric-engine.js catalogThe original bumblebee.js supports mood-based playback from a curated clips database:
node scripts/bumblebee.js play greeting
node scripts/bumblebee.js say greeting motivation celebration
Available intents: greeting, motivation, freedom, empathy, celebration, goodnight, warning, pride, lets_go.
batch-index to start, then add songs that match your user's taste.version: "1.0.0"
An AI DJ that reads the moment and plays the right music. Knows 5 frequency profiles that map to different states of mind and times of day.
| Frequency | Vibe | Time | Key Artists |
|---|---|---|---|
| Architect | Solo builder, focus, flow state | 9AM-5PM, 10PM-2AM | C418, Jarre, Tangerine Dream, Vangelis |
| Dreamer | Synthwave, retro-futurism, night cruising | 8PM-3AM | Kavinsky, M83, Com Truise, Perturbator |
| Mexican Soul | Heritage, roots, identity | Anytime | José José, Vicente, Natalia, Café Tacvba |
| Seeker | Post-midnight processing, healing | 11PM-6AM | Solfeggio, 528Hz, 639Hz, ambient |
| Cinephile | Film scores, thinking, reflecting | 7PM-2AM | Jóhannsson, Zimmer, Richter, Greenwood |
node scripts/r2-dj.js vibe
Reads time of day + recent listening → detects the right frequency → builds and plays a queue. Outputs a JSON summary for the agent's reply.
node scripts/r2-dj.js vibe --frequency seeker
node scripts/r2-dj.js vibe --frequency architect --device iPhone
node scripts/r2-dj.js now # What's playing
node scripts/r2-dj.js pause # Pause
node scripts/r2-dj.js skip # Next track
node scripts/r2-dj.js volume 50 # Set volume
node scripts/r2-dj.js play "Nils Frahm Says" # Search + play
node scripts/r2-dj.js play spotify:track:xxx # Play URI directly
node scripts/r2-dj.js search "ambient electronic" # Search tracks
node scripts/r2-dj.js context # Time, recent plays, detected frequency, devices
node scripts/r2-dj.js frequencies # List all frequency profiles
node scripts/r2-dj.js history # Recent listening history
node scripts/r2-dj.js devices # Spotify devices
r2-dj.js vibe (auto-detect)r2-dj.js vibe --frequency architectr2-dj.js vibe --frequency dreamerr2-dj.js vibe --frequency seekerr2-dj.js play "song name"vibe --frequency <key>---JSON_SUMMARY--- is for agent parsing, not user display