{"skill":{"slug":"airfoil","displayName":"Airfoil","summary":"Control AirPlay speakers via Airfoil from the command line. Connect, disconnect, set volume, and manage multi-room audio with simple CLI commands.","description":"---\nname: airfoil\ndescription: Control AirPlay speakers via Airfoil from the command line. Connect, disconnect, set volume, and manage multi-room audio with simple CLI commands.\nmetadata: {\"clawdbot\":{\"emoji\":\"🔊\",\"os\":[\"darwin\"],\"requires\":{\"bins\":[\"osascript\"]}}}\n---\n\n# 🔊 Airfoil Skill\n\n```\n    ╔═══════════════════════════════════════════════════════════╗\n    ║                                                           ║\n    ║   🎵  A I R F O I L   S P E A K E R   C O N T R O L  🎵  ║\n    ║                                                           ║\n    ║        Stream audio to any AirPlay speaker                ║\n    ║              from your Mac via CLI                        ║\n    ║                                                           ║\n    ╚═══════════════════════════════════════════════════════════╝\n```\n\n> *\"Why hop to your Mac when you can croak at it?\"* 🐸\n\n---\n\n## 📖 What Does This Skill Do?\n\nThe **Airfoil Skill** gives you full control over your AirPlay speakers directly from the terminal – or through Clawd! Connect speakers, control volume, check status – all without touching the mouse.\n\n**Features:**\n- 📡 **List** — Show all available speakers\n- 🔗 **Connect** — Connect to a speaker\n- 🔌 **Disconnect** — Disconnect from a speaker\n- 🔊 **Volume** — Control volume (0-100%)\n- 📊 **Status** — Show connected speakers with volume levels\n\n---\n\n## ⚙️ Requirements\n\n| What | Details |\n|------|---------|\n| **OS** | macOS (uses AppleScript) |\n| **App** | [Airfoil](https://rogueamoeba.com/airfoil/mac/) by Rogue Amoeba |\n| **Price** | $35 (free trial available) |\n\n### Installation\n\n1. **Install Airfoil:**\n   ```bash\n   # Via Homebrew\n   brew install --cask airfoil\n   \n   # Or download from rogueamoeba.com/airfoil/mac/\n   ```\n\n2. **Launch Airfoil** and grant Accessibility permissions (System Settings → Privacy & Security → Accessibility)\n\n3. **Skill is ready!** 🚀\n\n---\n\n## 🛠️ Commands\n\n### `list` — Show All Speakers\n\n```bash\n./airfoil.sh list\n```\n\n**Output:**\n```\nComputer, Andy's M5 Macbook, Sonos Move, Living Room TV\n```\n\n---\n\n### `connect <speaker>` — Connect to Speaker\n\n```bash\n./airfoil.sh connect \"Sonos Move\"\n```\n\n**Output:**\n```\nConnected: Sonos Move\n```\n\n> 💡 Speaker name must match exactly (case-sensitive!)\n\n---\n\n### `disconnect <speaker>` — Disconnect Speaker\n\n```bash\n./airfoil.sh disconnect \"Sonos Move\"\n```\n\n**Output:**\n```\nDisconnected: Sonos Move\n```\n\n---\n\n### `volume <speaker> <0-100>` — Set Volume\n\n```bash\n# Set to 40%\n./airfoil.sh volume \"Sonos Move\" 40\n\n# Set to maximum\n./airfoil.sh volume \"Living Room TV\" 100\n\n# Quiet mode for night time\n./airfoil.sh volume \"Sonos Move\" 15\n```\n\n**Output:**\n```\nVolume Sonos Move: 40%\n```\n\n---\n\n### `status` — Show Connected Speakers\n\n```bash\n./airfoil.sh status\n```\n\n**Output:**\n```\nSonos Move: 40%\nLiving Room TV: 65%\n```\n\nOr if nothing is connected:\n```\nNo speakers connected\n```\n\n---\n\n## 🎯 Example Workflows\n\n### 🏠 \"Music in the Living Room\"\n```bash\n./airfoil.sh connect \"Sonos Move\"\n./airfoil.sh volume \"Sonos Move\" 50\n# → Now fire up Spotify/Apple Music and enjoy!\n```\n\n### 🎬 \"Movie Night Setup\"\n```bash\n./airfoil.sh connect \"Living Room TV\"\n./airfoil.sh volume \"Living Room TV\" 70\n./airfoil.sh disconnect \"Sonos Move\"  # If still connected\n```\n\n### 🌙 \"All Off\"\n```bash\nfor speaker in \"Sonos Move\" \"Living Room TV\"; do\n    ./airfoil.sh disconnect \"$speaker\" 2>/dev/null\ndone\necho \"All speakers disconnected 🌙\"\n```\n\n---\n\n## 🔧 Troubleshooting\n\n### ❌ \"Speaker Not Found\"\n\n**Problem:** `execution error: Airfoil got an error: Can't get speaker...`\n\n**Solutions:**\n1. Check exact spelling: `./airfoil.sh list`\n2. Speaker name is **case-sensitive** (\"sonos move\" ≠ \"Sonos Move\")\n3. Speaker must be on the same network\n4. Speaker must be powered on and reachable\n\n---\n\n### ❌ \"Airfoil Won't Start / No Permission\"\n\n**Problem:** AppleScript can't control Airfoil\n\n**Solutions:**\n1. **System Settings → Privacy & Security → Accessibility**\n2. Add Terminal (or iTerm)\n3. Add Airfoil\n4. Restart macOS (sometimes necessary 🙄)\n\n---\n\n### ❌ \"Volume Doesn't Work\"\n\n**Problem:** Volume command has no effect\n\n**Solutions:**\n1. Speaker must be **connected** before volume can be set\n2. First `connect`, then `volume`\n3. Some speakers have hardware-side limits\n\n---\n\n### ❌ \"Airfoil Not Installed\"\n\n**Problem:** `execution error: Application isn't running`\n\n**Solution:**\n```bash\n# Start Airfoil\nopen -a Airfoil\n\n# Or install it\nbrew install --cask airfoil\n```\n\n---\n\n### ❌ \"bc: command not found\"\n\n**Problem:** Volume calculation fails\n\n**Solution:**\n```bash\n# Install bc (should be standard on macOS)\nbrew install bc\n```\n\n---\n\n## 📋 Known Speakers\n\nThese speakers have been tested:\n\n| Speaker | Type | Notes |\n|---------|------|-------|\n| `Computer` | Local | Always available |\n| `Andy's M5 Macbook` | Mac | When on the network |\n| `Sonos Move` | Sonos | Bluetooth or WiFi |\n| `Living Room TV` | Apple TV | Via AirPlay |\n\n> 💡 Use `./airfoil.sh list` to discover your own speakers!\n\n---\n\n## 🔗 Integration with Clawd\n\nThis skill works perfectly with Clawd! Examples:\n\n```\n\"Hey Clawd, connect the Sonos Move\"\n→ ./airfoil.sh connect \"Sonos Move\"\n\n\"Turn the music down\"\n→ ./airfoil.sh volume \"Sonos Move\" 30\n\n\"Which speakers are on?\"\n→ ./airfoil.sh status\n```\n\n---\n\n## 📜 Changelog\n\n| Version | Date | Changes |\n|---------|------|---------|\n| 1.0.0 | 2025-01-25 | Initial release |\n| 1.1.0 | 2025-06-10 | Documentation polished 🐸 |\n| 1.2.0 | 2025-06-26 | Translated to English, ClawdHub-ready! |\n\n---\n\n## 🐸 Credits\n\n```\n  @..@\n (----)\n( >__< )   \"This skill was crafted with love\n ^^  ^^     by a frog and his human!\"\n```\n\n**Author:** Andy Steinberger (with help from his Clawdbot Owen the Frog 🐸)  \n**Powered by:** [Airfoil](https://rogueamoeba.com/airfoil/mac/) by Rogue Amoeba  \n**Part of:** [Clawdbot](https://clawdhub.com) Skills Collection\n\n---\n\n<div align=\"center\">\n\n**Made with 💚 for the Clawdbot Community**\n\n*Ribbit!* 🐸\n\n</div>\n","tags":{"latest":"1.0.1"},"stats":{"comments":0,"downloads":2778,"installsAllTime":4,"installsCurrent":4,"stars":0,"versions":2},"createdAt":1769324620847,"updatedAt":1778987040811},"latestVersion":{"version":"1.0.1","createdAt":1769324953058,"changelog":"Added YAML frontmatter with description for ClawdHub","license":null},"metadata":{"setup":[],"os":["darwin"],"systems":null},"owner":{"handle":"asteinberger","userId":"s17eknpz0e06033bpv8e5gee5n88412y","displayName":"Andy Steinberger","image":"https://avatars.githubusercontent.com/u/133219358?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779916076275}}