home / skills / openclaw / skills / spotify-applescript

spotify-applescript skill

/skills/andrewjiang/spotify-applescript

This skill lets you control the Spotify desktop app via AppleScript to play, pause, skip, and adjust volume without APIs.

npx playbooks add skill openclaw/skills --skill spotify-applescript

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
5.5 KB
---
name: spotify-applescript
description: Control Spotify desktop app via AppleScript. Play playlists, tracks, albums, episodes, and manage playback. Works reliably with macOS Spotify app without API keys or OAuth.
homepage: https://github.com/andrewjiang/HoloClawd-Open-Firmware
metadata: {"clawdbot":{"emoji":"🎵","os":["darwin"]}}
triggers:
  - spotify
  - play music
  - play playlist
  - play episode
  - pause music
  - next track
  - previous track
---

# Spotify AppleScript Control

Control the Spotify desktop app using AppleScript. Works reliably with the macOS Spotify app without API rate limits or OAuth.

## Requirements

- Spotify desktop app installed and running on macOS
- No setup required - just works

## Quick Start

```bash
# Play a playlist
spotify play "spotify:playlist:665eC1myDA8iSepZ0HOZdG"
spotify play "https://open.spotify.com/playlist/665eC1myDA8iSepZ0HOZdG"

# Play an episode
spotify play "spotify:episode:5yJKH11UlF3sS3gcKKaUYx"
spotify play "https://open.spotify.com/episode/5yJKH11UlF3sS3gcKKaUYx"

# Play a track
spotify play "spotify:track:7hQJA50XrCWABAu5v6QZ4i"

# Playback control
spotify pause          # Toggle play/pause
spotify next           # Next track
spotify prev           # Previous track
spotify status         # Current track info

# Volume control
spotify volume 50      # Set volume (0-100)
spotify mute           # Mute
spotify unmute         # Unmute
```

## Spotify CLI Wrapper

The `spotify` command is a wrapper script at `{baseDir}/spotify.sh`

### Commands

| Command | Description | Example |
|---------|-------------|---------|
| `play <uri>` | Play track/album/playlist/episode | `spotify play spotify:track:xxx` |
| `pause` | Toggle play/pause | `spotify pause` |
| `next` | Next track | `spotify next` |
| `prev` | Previous track | `spotify prev` |
| `status` | Show current track info | `spotify status` |
| `volume <0-100>` | Set volume | `spotify volume 75` |
| `mute` | Mute | `spotify mute` |
| `unmute` | Unmute | `spotify unmute` |

### URI Formats

Accepts both Spotify URIs and open.spotify.com URLs:

- `spotify:track:7hQJA50XrCWABAu5v6QZ4i`
- `https://open.spotify.com/track/7hQJA50XrCWABAu5v6QZ4i`
- `spotify:playlist:665eC1myDA8iSepZ0HOZdG`
- `https://open.spotify.com/playlist/665eC1myDA8iSepZ0HOZdG?si=xxx`
- `spotify:episode:5yJKH11UlF3sS3gcKKaUYx`
- `https://open.spotify.com/episode/5yJKH11UlF3sS3gcKKaUYx`
- `spotify:album:xxx`
- `spotify:artist:xxx`

The script auto-converts URLs to URIs.

## Direct AppleScript Commands

For more control, use AppleScript directly:

```bash
# Play
osascript -e 'tell application "Spotify" to play track "spotify:playlist:xxx"'

# Pause/Play toggle
osascript -e 'tell application "Spotify" to playpause'

# Next/Previous
osascript -e 'tell application "Spotify" to next track'
osascript -e 'tell application "Spotify" to previous track'

# Get current track
osascript -e 'tell application "Spotify"
  set trackName to name of current track
  set artistName to artist of current track
  return trackName & " by " & artistName
end tell'

# Get player state
osascript -e 'tell application "Spotify" to player state'

# Set volume (0-100)
osascript -e 'tell application "Spotify" to set sound volume to 75'

# Get current position (in seconds)
osascript -e 'tell application "Spotify" to player position'

# Set position (in seconds)
osascript -e 'tell application "Spotify" to set player position to 30'
```

## Available Properties

```applescript
tell application "Spotify"
  name of current track          -- Track name
  artist of current track        -- Artist name
  album of current track         -- Album name
  duration of current track      -- Duration in ms
  player position                -- Position in seconds
  player state                   -- playing/paused/stopped
  sound volume                   -- 0-100
  repeating                      -- true/false
  repeating enabled              -- true/false
  shuffling                      -- true/false
  shuffling enabled              -- true/false
end tell
```

## Examples

### Agent Usage

When the user says:
- "Play my power hour playlist" → extract playlist URI and run `spotify play <uri>`
- "Pause the music" → run `spotify pause`
- "Next track" → run `spotify next`
- "What's playing?" → run `spotify status`

### Play a specific episode

```bash
spotify play https://open.spotify.com/episode/5yJKH11UlF3sS3gcKKaUYx
```

### Get full track info

```bash
osascript -e 'tell application "Spotify"
  return "Track: " & (name of current track) & "\nArtist: " & (artist of current track) & "\nAlbum: " & (album of current track) & "\nState: " & (player state as string)
end tell'
```

## Installation

The skill is self-contained. To make the `spotify` command available system-wide:

```bash
chmod +x {baseDir}/spotify.sh
sudo ln -sf {baseDir}/spotify.sh /usr/local/bin/spotify
```

Or add the skill directory to PATH.

## Troubleshooting

**"Spotify got an error"**
- Make sure Spotify desktop app is running
- Spotify must be launched at least once to accept AppleScript commands

**Play command does nothing**
- Verify the URI format is correct
- Try playing from Spotify app first to ensure the content exists

**No audio**
- Check system volume and Spotify app volume
- Ensure correct output device is selected in Spotify preferences

## Limitations

- Requires Spotify desktop app to be running
- macOS only (uses AppleScript)
- Cannot search or browse library (use web interface or app for discovery)
- Cannot manage playlists (add/remove tracks)

For playlist management and search, use the web interface or consider the `spotify-player` skill (requires OAuth setup).

Overview

This skill controls the Spotify desktop app on macOS using AppleScript. It plays tracks, playlists, albums, and episodes, and manages playback and volume without API keys or OAuth. It works directly with the local Spotify app for reliable, low-latency control.

How this skill works

The skill uses AppleScript calls (via a small CLI wrapper) to send commands to the Spotify macOS application. It accepts both Spotify URIs and open.spotify.com URLs, converts URLs to URIs when needed, and exposes commands for play, pause, next, previous, status, and volume control. No external APIs, tokens, or rate limits are involved—only the local Spotify app must be running.

When to use it

  • Quickly play a playlist, album, track, or podcast episode from a script or shortcut
  • Control playback from the command line or automation workflows on macOS
  • Integrate simple Spotify controls into personal agents or desktop automations
  • Adjust Spotify volume or jump to a position in the currently playing track
  • Retrieve current track or player state for status displays or notifications

Best practices

  • Ensure the Spotify desktop app is installed and running before invoking commands
  • Use full Spotify URIs or standard open.spotify.com URLs (the wrapper auto-converts URLs)
  • Grant Spotify permission to accept AppleScript commands by launching it at least once
  • Validate URIs by testing them in the Spotify app if a play command does nothing
  • Use the CLI wrapper for common tasks and raw osascript for advanced AppleScript operations

Example use cases

  • Add a keyboard shortcut that runs spotify play <uri> to instantly start a favorite playlist
  • Embed spotify status into a menu bar script that shows currently playing track and artist
  • Automate a morning routine to set volume to 50, play a news podcast episode, then mute after 30 minutes
  • Create a shell script for party mode: spotify play <party playlist> and set volume to 80
  • Use osascript to jump to a specific position in a track for previewing clips

FAQ

Do I need a developer key or OAuth to use this?

No. The skill talks directly to the local Spotify macOS app via AppleScript and does not require API keys or OAuth.

What platforms are supported?

macOS only. It relies on AppleScript and the Spotify desktop application being installed and running.