← 返回 Skills 市场
terrycarter1985

Home Music (Enhanced)

作者 terrycarter1985 · GitHub ↗ · v1.1.0 · MIT-0
darwin ✓ 安全检测通过
42
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install home-music-terry
功能描述
Control whole-house music scenes combining Spotify playback with Airfoil speaker routing. Quick presets for morning, party, chill modes.
使用说明 (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 → home-music morning → Gentle tunes in the bathroom
  • Friends arrive → home-music party → All speakers blasting rock
  • Time to relax → home-music chill → Lounge vibes everywhere
  • Done for the day → home-music off → Silence. Peace. Serenity.

📋 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 skills/spotify-applescript/

⚠️ 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:

  1. Right-click on a playlist in Spotify
  2. "Share" → "Copy Spotify URI"
  3. Or copy the URL and extract the /playlist/ part

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
├── __init__.py     # Python interface (play_chill_mode, stop_music, etc.)
└── home-music.sh   # The main shell script

🐍 Python API

The skill also ships a Python package (home_music) for programmatic control:

from home_music import play_chill_mode, stop_music, get_status

# Start chill focus music
play_chill_mode(volume=30)

# Check what's playing
print(get_status())

# Stop all music and disconnect speakers
stop_music()

Available functions:

Function Description
play_morning_mode(volume=40) Morning scene
play_party_mode(volume=70) Party scene
play_chill_mode(volume=30) Chill scene
stop_music() Pause Spotify + disconnect all speakers
get_status() Current status string

💡 Pro Tips

  1. 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"
    
  2. Use with Clawdbot:

    "Hey, start party mode" "Put on some chill music" "Stop the music"

  3. Combine scenes: Create a dinner scene with a jazz playlist at 25% – perfect for guests!


🐸 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.1.0
License: MIT
Pond: The one with the water lilies 🪷


Did this skill improve your life? Owen appreciates flies. 🪰

安全使用建议
Before installing, inspect the shell script, verify the separate spotify-applescript helper, update the hard-coded local path and speaker names, and decide whether a global sudo-installed command is necessary. No evidence of hidden exfiltration, destructive behavior, or background persistence was found.
功能分析
Type: OpenClaw Skill Name: home-music-terry Version: 1.1.0 The skill is a legitimate automation tool for controlling Spotify and Airfoil speakers on macOS via AppleScript. While it contains a hardcoded user path in `home-music.sh` (/Users/asteinberger/...) that may cause it to fail for other users, there is no evidence of malicious intent, data exfiltration, or unauthorized access. The use of subprocess and osascript is strictly limited to the stated purpose of music management.
能力评估
Purpose & Capability
The artifacts are coherent with the stated purpose: they define morning, party, chill, off, and status scenes that control Spotify playback and Airfoil speaker routing. This is benign but affects real local speakers and audio volume.
Instruction Scope
The actions are bounded to documented scene commands, with no hidden goal-changing instructions. Because model invocation is allowed by default and the skill can start music on multiple speakers, users should prefer explicit requests for scene changes.
Install Mechanism
There is no install spec; SKILL.md provides user-directed setup commands including chmod and a sudo symlink into /usr/local/bin. This is common for a local CLI, but users should review the script before installing it globally.
Credentials
The README discloses macOS, Spotify Desktop, Airfoil, and a spotify-applescript dependency, but registry requirements declare no required binaries or config paths. The dependency is purpose-aligned but under-declared in metadata.
Persistence & Privilege
No background service, launch agent, or self-persistence is shown. The main persistent change is the optional global symlink, and the script also relies on the user's already-running Spotify/Airfoil apps.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install home-music-terry
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /home-music-terry 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.1.0
Added Python interface (__init__.py) with stop_music(); updated SKILL.md with Python API docs
元数据
Slug home-music-terry
版本 1.1.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Home Music (Enhanced) 是什么?

Control whole-house music scenes combining Spotify playback with Airfoil speaker routing. Quick presets for morning, party, chill modes. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 42 次。

如何安装 Home Music (Enhanced)?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install home-music-terry」即可一键安装,无需额外配置。

Home Music (Enhanced) 是免费的吗?

是的,Home Music (Enhanced) 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Home Music (Enhanced) 支持哪些平台?

Home Music (Enhanced) 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(darwin)。

谁开发了 Home Music (Enhanced)?

由 terrycarter1985(@terrycarter1985)开发并维护,当前版本 v1.1.0。

💬 留言讨论