{
  "schemaVersion": "1.0",
  "item": {
    "slug": "home-music",
    "name": "Home Music",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/asteinberger/home-music",
    "canonicalUrl": "https://clawhub.ai/asteinberger/home-music",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/home-music",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=home-music",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "home-music.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/home-music"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/home-music",
    "agentPageUrl": "https://openagent3.xyz/skills/home-music/agent",
    "manifestUrl": "https://openagent3.xyz/skills/home-music/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/home-music/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "🎯 What Does This Skill Do?",
        "body": "Home Music combines Spotify + Airfoil into magical music scenes. One command – and the right playlist plays on the right speakers at the perfect volume.\n\nImagine:\n\nYou wake up → home-music morning → Gentle tunes in the bathroom\nFriends arrive → home-music party → All speakers blasting rock\nTime to relax → home-music chill → Lounge vibes everywhere\nDone for the day → home-music off → Silence. Peace. Serenity."
      },
      {
        "title": "📋 Dependencies",
        "body": "WhatWhyLink🍏 macOSThis skill uses AppleScript—🟢 Spotify Desktop AppThe music source! Must be running.spotify.com📡 AirfoilRoutes audio to AirPlay speakersrogueamoeba.com🎵 spotify-applescriptClawdbot skill for Spotify controlskills/spotify-applescript/\n\n⚠️ Important: Both Spotify and Airfoil must be running before you start any scenes!"
      },
      {
        "title": "🌅 Morning",
        "body": "A gentle start to your day\n\nhome-music morning\n\nSpeaker: Sonos Move\nVolume: 40%\nPlaylist: Morning Playlist\nVibe: ☕ Coffee + good vibes"
      },
      {
        "title": "🎉 Party",
        "body": "Time to celebrate!\n\nhome-music party\n\nSpeaker: ALL (Computer, MacBook, Sonos Move, Living Room TV)\nVolume: 70%\nPlaylist: Rock Party Mix\nVibe: 🤘 Neighbors hate this one trick"
      },
      {
        "title": "😌 Chill",
        "body": "Pure relaxation\n\nhome-music chill\n\nSpeaker: Sonos Move\nVolume: 30%\nPlaylist: Chill Lounge\nVibe: 🧘 Om..."
      },
      {
        "title": "🔇 Off",
        "body": "Silence\n\nhome-music off\n\nPauses Spotify\nDisconnects all speakers\nVibe: 🤫 Finally, peace and quiet"
      },
      {
        "title": "📊 Status",
        "body": "What's playing right now?\n\nhome-music status\n\nShows:\n\nCurrent Spotify track\nConnected speakers"
      },
      {
        "title": "🔧 Installation",
        "body": "# Make the script executable\nchmod +x ~/clawd/skills/home-music/home-music.sh\n\n# Symlink for global access\nsudo ln -sf ~/clawd/skills/home-music/home-music.sh /usr/local/bin/home-music\n\nNow home-music works from anywhere in your terminal! 🎉"
      },
      {
        "title": "Changing Playlists",
        "body": "Open home-music.sh and find the playlist configuration:\n\n# === PLAYLIST CONFIGURATION ===\nPLAYLIST_MORNING=\"spotify:playlist:19n65kQ5NEKgkvSAla5IF6\"\nPLAYLIST_PARTY=\"spotify:playlist:37i9dQZF1DXaXB8fQg7xif\"\nPLAYLIST_CHILL=\"spotify:playlist:37i9dQZF1DWTwnEm1IYyoj\"\n\nHow to find Playlist URIs:\n\nRight-click on a playlist in Spotify\n\"Share\" → \"Copy Spotify URI\"\nOr copy the URL and extract the /playlist/ part"
      },
      {
        "title": "Adding a New Scene",
        "body": "Add a new case in the main block:\n\n# In home-music.sh after the \"scene_chill\" function:\n\nscene_workout() {\n    echo \"💪 Starting Workout scene...\"\n    airfoil_set_source_spotify\n    airfoil_connect \"Sonos Move\"\n    sleep 0.5\n    airfoil_volume \"Sonos Move\" 0.8\n    \"$SPOTIFY_CMD\" play \"spotify:playlist:YOUR_WORKOUT_PLAYLIST\"\n    \"$SPOTIFY_CMD\" volume 100\n    echo \"✅ Workout: Sonos Move @ 80%, Pump it up!\"\n}\n\n# And in the case block:\n    workout)\n        scene_workout\n        ;;"
      },
      {
        "title": "Available Speakers",
        "body": "ALL_SPEAKERS=(\"Computer\" \"Andy's M5 Macbook\" \"Sonos Move\" \"Living Room TV\")\n\nYou can add any AirPlay speaker – they just need to be visible in Airfoil."
      },
      {
        "title": "❌ \"Speaker won't connect\"",
        "body": "Check 1: Is Airfoil running?\n\npgrep -x Airfoil || echo \"Airfoil is not running!\"\n\nCheck 2: Is the speaker on the network?\n\nOpen the Airfoil app\nCheck if the speaker appears in the list\nTry connecting manually\n\nCheck 3: Is the name exactly correct?\n\nSpeaker names are case-sensitive!\nOpen Airfoil and copy the exact name"
      },
      {
        "title": "❌ \"No sound\"",
        "body": "Check 1: Is Spotify playing?\n\n~/clawd/skills/spotify-applescript/spotify.sh status\n\nCheck 2: Is the Airfoil source correct?\n\nOpen Airfoil\nCheck if \"Spotify\" is selected as the audio source\nIf not: Click \"Source\" → Select Spotify\n\nCheck 3: Speaker volume?\n\n# Manually check volume\nosascript -e 'tell application \"Airfoil\" to get volume of (first speaker whose name is \"Sonos Move\")'"
      },
      {
        "title": "❌ \"Spotify won't start\"",
        "body": "Is Spotify open?\n\npgrep -x Spotify || open -a Spotify\n\nIs spotify-applescript installed?\n\nls ~/clawd/skills/spotify-applescript/spotify.sh"
      },
      {
        "title": "❌ \"Permission denied\"",
        "body": "chmod +x ~/clawd/skills/home-music/home-music.sh"
      },
      {
        "title": "🔊 Direct Airfoil Commands",
        "body": "If you want to control Airfoil manually:\n\n# Connect a speaker\nosascript -e 'tell application \"Airfoil\" to connect to (first speaker whose name is \"Sonos Move\")'\n\n# Set speaker volume (0.0 - 1.0)\nosascript -e 'tell application \"Airfoil\" to set (volume of (first speaker whose name is \"Sonos Move\")) to 0.5'\n\n# Disconnect a speaker\nosascript -e 'tell application \"Airfoil\" to disconnect from (first speaker whose name is \"Sonos Move\")'\n\n# List connected speakers\nosascript -e 'tell application \"Airfoil\" to get name of every speaker whose connected is true'\n\n# Set audio source\nosascript -e 'tell application \"Airfoil\"\n    set theSource to (first application source whose name contains \"Spotify\")\n    set current audio source to theSource\nend tell'"
      },
      {
        "title": "📁 Files",
        "body": "skills/home-music/\n├── SKILL.md        # This documentation\n└── home-music.sh   # The main script"
      },
      {
        "title": "💡 Pro Tips",
        "body": "Set aliases for even faster access:\nalias mm=\"home-music morning\"\nalias mp=\"home-music party\"\nalias mc=\"home-music chill\"\nalias mo=\"home-music off\"\n\n\n\nUse with Clawdbot:\n\n\"Hey, start party mode\"\n\"Put on some chill music\"\n\"Stop the music\"\n\n\n\nCombine scenes: Create a dinner scene with a jazz playlist at 25% – perfect for guests!"
      },
      {
        "title": "🐸 Credits",
        "body": "╭─────────────────────────────────────────────╮\n│                                             │\n│   Crafted with 💚 by Owen the Frog 🐸      │\n│                                             │\n│   \"Ribbit. Music makes everything better.\"  │\n│                                             │\n╰─────────────────────────────────────────────╯\n\nAuthor: Andy Steinberger (with help from his Clawdbot Owen the Frog 🐸)\nVersion: 1.0.0\nLicense: MIT\nPond: The one with the water lilies 🪷\n\nDid this skill improve your life? Owen appreciates flies. 🪰"
      }
    ],
    "body": "♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫\n    \n    🏠  H O M E   M U S I C  🎵\n    \n    ╔══════════════════════════════════════════╗\n    ║   Whole-House Music Scenes               ║\n    ║   One command. All speakers. Perfect.    ║\n    ╚══════════════════════════════════════════╝\n    \n    ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫\n\n\n\"Why click 17 times when one command does the job?\" – Owen 🐸\n\n🎯 What Does This Skill Do?\n\nHome Music combines Spotify + Airfoil into magical music scenes. One command – and the right playlist plays on the right speakers at the perfect volume.\n\nImagine:\n\nYou wake up → home-music morning → Gentle tunes in the bathroom\nFriends arrive → home-music party → All speakers blasting rock\nTime to relax → home-music chill → Lounge vibes everywhere\nDone for the day → home-music off → Silence. Peace. Serenity.\n📋 Dependencies\nWhat\tWhy\tLink\n🍏 macOS\tThis skill uses AppleScript\t—\n🟢 Spotify Desktop App\tThe music source! Must be running.\tspotify.com\n📡 Airfoil\tRoutes audio to AirPlay speakers\trogueamoeba.com\n🎵 spotify-applescript\tClawdbot skill for Spotify control\tskills/spotify-applescript/\n\n⚠️ Important: Both Spotify and Airfoil must be running before you start any scenes!\n\n🎬 Scenes\n🌅 Morning\n\nA gentle start to your day\n\nhome-music morning\n\nSpeaker: Sonos Move\nVolume: 40%\nPlaylist: Morning Playlist\nVibe: ☕ Coffee + good vibes\n🎉 Party\n\nTime to celebrate!\n\nhome-music party\n\nSpeaker: ALL (Computer, MacBook, Sonos Move, Living Room TV)\nVolume: 70%\nPlaylist: Rock Party Mix\nVibe: 🤘 Neighbors hate this one trick\n😌 Chill\n\nPure relaxation\n\nhome-music chill\n\nSpeaker: Sonos Move\nVolume: 30%\nPlaylist: Chill Lounge\nVibe: 🧘 Om...\n🔇 Off\n\nSilence\n\nhome-music off\n\nPauses Spotify\nDisconnects all speakers\nVibe: 🤫 Finally, peace and quiet\n📊 Status\n\nWhat's playing right now?\n\nhome-music status\n\n\nShows:\n\nCurrent Spotify track\nConnected speakers\n🔧 Installation\n# Make the script executable\nchmod +x ~/clawd/skills/home-music/home-music.sh\n\n# Symlink for global access\nsudo ln -sf ~/clawd/skills/home-music/home-music.sh /usr/local/bin/home-music\n\n\nNow home-music works from anywhere in your terminal! 🎉\n\n🎨 Custom Playlists & Scenes\nChanging Playlists\n\nOpen home-music.sh and find the playlist configuration:\n\n# === PLAYLIST CONFIGURATION ===\nPLAYLIST_MORNING=\"spotify:playlist:19n65kQ5NEKgkvSAla5IF6\"\nPLAYLIST_PARTY=\"spotify:playlist:37i9dQZF1DXaXB8fQg7xif\"\nPLAYLIST_CHILL=\"spotify:playlist:37i9dQZF1DWTwnEm1IYyoj\"\n\n\nHow to find Playlist URIs:\n\nRight-click on a playlist in Spotify\n\"Share\" → \"Copy Spotify URI\"\nOr copy the URL and extract the /playlist/ part\nAdding a New Scene\n\nAdd a new case in the main block:\n\n# In home-music.sh after the \"scene_chill\" function:\n\nscene_workout() {\n    echo \"💪 Starting Workout scene...\"\n    airfoil_set_source_spotify\n    airfoil_connect \"Sonos Move\"\n    sleep 0.5\n    airfoil_volume \"Sonos Move\" 0.8\n    \"$SPOTIFY_CMD\" play \"spotify:playlist:YOUR_WORKOUT_PLAYLIST\"\n    \"$SPOTIFY_CMD\" volume 100\n    echo \"✅ Workout: Sonos Move @ 80%, Pump it up!\"\n}\n\n# And in the case block:\n    workout)\n        scene_workout\n        ;;\n\nAvailable Speakers\nALL_SPEAKERS=(\"Computer\" \"Andy's M5 Macbook\" \"Sonos Move\" \"Living Room TV\")\n\n\nYou can add any AirPlay speaker – they just need to be visible in Airfoil.\n\n🐛 Troubleshooting\n❌ \"Speaker won't connect\"\n\nCheck 1: Is Airfoil running?\n\npgrep -x Airfoil || echo \"Airfoil is not running!\"\n\n\nCheck 2: Is the speaker on the network?\n\nOpen the Airfoil app\nCheck if the speaker appears in the list\nTry connecting manually\n\nCheck 3: Is the name exactly correct?\n\nSpeaker names are case-sensitive!\nOpen Airfoil and copy the exact name\n❌ \"No sound\"\n\nCheck 1: Is Spotify playing?\n\n~/clawd/skills/spotify-applescript/spotify.sh status\n\n\nCheck 2: Is the Airfoil source correct?\n\nOpen Airfoil\nCheck if \"Spotify\" is selected as the audio source\nIf not: Click \"Source\" → Select Spotify\n\nCheck 3: Speaker volume?\n\n# Manually check volume\nosascript -e 'tell application \"Airfoil\" to get volume of (first speaker whose name is \"Sonos Move\")'\n\n❌ \"Spotify won't start\"\n\nIs Spotify open?\n\npgrep -x Spotify || open -a Spotify\n\n\nIs spotify-applescript installed?\n\nls ~/clawd/skills/spotify-applescript/spotify.sh\n\n❌ \"Permission denied\"\nchmod +x ~/clawd/skills/home-music/home-music.sh\n\n🔊 Direct Airfoil Commands\n\nIf you want to control Airfoil manually:\n\n# Connect a speaker\nosascript -e 'tell application \"Airfoil\" to connect to (first speaker whose name is \"Sonos Move\")'\n\n# Set speaker volume (0.0 - 1.0)\nosascript -e 'tell application \"Airfoil\" to set (volume of (first speaker whose name is \"Sonos Move\")) to 0.5'\n\n# Disconnect a speaker\nosascript -e 'tell application \"Airfoil\" to disconnect from (first speaker whose name is \"Sonos Move\")'\n\n# List connected speakers\nosascript -e 'tell application \"Airfoil\" to get name of every speaker whose connected is true'\n\n# Set audio source\nosascript -e 'tell application \"Airfoil\"\n    set theSource to (first application source whose name contains \"Spotify\")\n    set current audio source to theSource\nend tell'\n\n📁 Files\nskills/home-music/\n├── SKILL.md        # This documentation\n└── home-music.sh   # The main script\n\n💡 Pro Tips\n\nSet aliases for even faster access:\n\nalias mm=\"home-music morning\"\nalias mp=\"home-music party\"\nalias mc=\"home-music chill\"\nalias mo=\"home-music off\"\n\n\nUse with Clawdbot:\n\n\"Hey, start party mode\" \"Put on some chill music\" \"Stop the music\"\n\nCombine scenes: Create a dinner scene with a jazz playlist at 25% – perfect for guests!\n\n🐸 Credits\n╭─────────────────────────────────────────────╮\n│                                             │\n│   Crafted with 💚 by Owen the Frog 🐸      │\n│                                             │\n│   \"Ribbit. Music makes everything better.\"  │\n│                                             │\n╰─────────────────────────────────────────────╯\n\n\nAuthor: Andy Steinberger (with help from his Clawdbot Owen the Frog 🐸)\nVersion: 1.0.0\nLicense: MIT\nPond: The one with the water lilies 🪷\n\nDid this skill improve your life? Owen appreciates flies. 🪰"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/asteinberger/home-music",
    "publisherUrl": "https://clawhub.ai/asteinberger/home-music",
    "owner": "asteinberger",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/home-music",
    "downloadUrl": "https://openagent3.xyz/downloads/home-music",
    "agentUrl": "https://openagent3.xyz/skills/home-music/agent",
    "manifestUrl": "https://openagent3.xyz/skills/home-music/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/home-music/agent.md"
  }
}