Skills home-music
Control whole-house music scenes combining Spotify playback with Airfoil speaker routing. Quick presets for morning, party, chill modes.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/asteinberger/home-music" ~/.claude/skills/openclaw-skills-home-music && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/asteinberger/home-music" ~/.openclaw/skills/openclaw-skills-home-music && rm -rf "$T"
skills/asteinberger/home-music/SKILL.md♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ 🏠 H O M E M U S I C 🎵 ╔══════════════════════════════════════════╗ ║ Whole-House Music Scenes ║ ║ One command. All speakers. Perfect. ║ ╚══════════════════════════════════════════╝ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫
"Why click 17 times when one command does the job?" – Owen 🐸
🎯 What Does This Skill Do?
Home Music combines Spotify + Airfoil into magical music scenes. One command – and the right playlist plays on the right speakers at the perfect volume.
Imagine:
- You wake up →
→ Gentle tunes in the bathroomhome-music morning - Friends arrive →
→ All speakers blasting rockhome-music party - Time to relax →
→ Lounge vibes everywherehome-music chill - Done for the day →
→ Silence. Peace. Serenity.home-music off
📋 Dependencies
| What | Why | Link |
|---|---|---|
| 🍏 macOS | This skill uses AppleScript | — |
| 🟢 Spotify Desktop App | The music source! Must be running. | spotify.com |
| 📡 Airfoil | Routes audio to AirPlay speakers | rogueamoeba.com |
| 🎵 spotify-applescript | Clawdbot skill for Spotify control | |
⚠️ Important: Both Spotify and Airfoil must be running before you start any scenes!
🎬 Scenes
🌅 Morning
A gentle start to your day
home-music morning
- Speaker: Sonos Move
- Volume: 40%
- Playlist: Morning Playlist
- Vibe: ☕ Coffee + good vibes
🎉 Party
Time to celebrate!
home-music party
- Speaker: ALL (Computer, MacBook, Sonos Move, Living Room TV)
- Volume: 70%
- Playlist: Rock Party Mix
- Vibe: 🤘 Neighbors hate this one trick
😌 Chill
Pure relaxation
home-music chill
- Speaker: Sonos Move
- Volume: 30%
- Playlist: Chill Lounge
- Vibe: 🧘 Om...
🔇 Off
Silence
home-music off
- Pauses Spotify
- Disconnects all speakers
- Vibe: 🤫 Finally, peace and quiet
📊 Status
What's playing right now?
home-music status
Shows:
- Current Spotify track
- Connected speakers
🔧 Installation
# Make the script executable chmod +x ~/clawd/skills/home-music/home-music.sh # Symlink for global access sudo ln -sf ~/clawd/skills/home-music/home-music.sh /usr/local/bin/home-music
Now
home-music works from anywhere in your terminal! 🎉
🎨 Custom Playlists & Scenes
Changing Playlists
Open
home-music.sh and find the playlist configuration:
# === PLAYLIST CONFIGURATION === PLAYLIST_MORNING="spotify:playlist:19n65kQ5NEKgkvSAla5IF6" PLAYLIST_PARTY="spotify:playlist:37i9dQZF1DXaXB8fQg7xif" PLAYLIST_CHILL="spotify:playlist:37i9dQZF1DWTwnEm1IYyoj"
How to find Playlist URIs:
- Right-click on a playlist in Spotify
- "Share" → "Copy Spotify URI"
- Or copy the URL and extract the
part/playlist/
Adding a New Scene
Add a new case in the
main block:
# In home-music.sh after the "scene_chill" function: scene_workout() { echo "💪 Starting Workout scene..." airfoil_set_source_spotify airfoil_connect "Sonos Move" sleep 0.5 airfoil_volume "Sonos Move" 0.8 "$SPOTIFY_CMD" play "spotify:playlist:YOUR_WORKOUT_PLAYLIST" "$SPOTIFY_CMD" volume 100 echo "✅ Workout: Sonos Move @ 80%, Pump it up!" } # And in the case block: workout) scene_workout ;;
Available Speakers
ALL_SPEAKERS=("Computer" "Andy's M5 Macbook" "Sonos Move" "Living Room TV")
You can add any AirPlay speaker – they just need to be visible in Airfoil.
🐛 Troubleshooting
❌ "Speaker won't connect"
Check 1: Is Airfoil running?
pgrep -x Airfoil || echo "Airfoil is not running!"
Check 2: Is the speaker on the network?
- Open the Airfoil app
- Check if the speaker appears in the list
- Try connecting manually
Check 3: Is the name exactly correct?
- Speaker names are case-sensitive!
- Open Airfoil and copy the exact name
❌ "No sound"
Check 1: Is Spotify playing?
~/clawd/skills/spotify-applescript/spotify.sh status
Check 2: Is the Airfoil source correct?
- Open Airfoil
- Check if "Spotify" is selected as the audio source
- If not: Click "Source" → Select Spotify
Check 3: Speaker volume?
# Manually check volume osascript -e 'tell application "Airfoil" to get volume of (first speaker whose name is "Sonos Move")'
❌ "Spotify won't start"
Is Spotify open?
pgrep -x Spotify || open -a Spotify
Is spotify-applescript installed?
ls ~/clawd/skills/spotify-applescript/spotify.sh
❌ "Permission denied"
chmod +x ~/clawd/skills/home-music/home-music.sh
🔊 Direct Airfoil Commands
If you want to control Airfoil manually:
# Connect a speaker osascript -e 'tell application "Airfoil" to connect to (first speaker whose name is "Sonos Move")' # Set speaker volume (0.0 - 1.0) osascript -e 'tell application "Airfoil" to set (volume of (first speaker whose name is "Sonos Move")) to 0.5' # Disconnect a speaker osascript -e 'tell application "Airfoil" to disconnect from (first speaker whose name is "Sonos Move")' # List connected speakers osascript -e 'tell application "Airfoil" to get name of every speaker whose connected is true' # Set audio source osascript -e 'tell application "Airfoil" set theSource to (first application source whose name contains "Spotify") set current audio source to theSource end tell'
📁 Files
skills/home-music/ ├── SKILL.md # This documentation └── home-music.sh # The main script
💡 Pro Tips
-
Set aliases for even faster access:
alias mm="home-music morning" alias mp="home-music party" alias mc="home-music chill" alias mo="home-music off" -
Use with Clawdbot:
"Hey, start party mode" "Put on some chill music" "Stop the music"
-
Combine scenes: Create a
scene with a jazz playlist at 25% – perfect for guests!dinner
🐸 Credits
╭─────────────────────────────────────────────╮ │ │ │ Crafted with 💚 by Owen the Frog 🐸 │ │ │ │ "Ribbit. Music makes everything better." │ │ │ ╰─────────────────────────────────────────────╯
Author: Andy Steinberger (with help from his Clawdbot Owen the Frog 🐸)
Version: 1.0.0
License: MIT
Pond: The one with the water lilies 🪷
Did this skill improve your life? Owen appreciates flies. 🪰