Back to Skills
    🦞

    spotify-applescript

    Control Spotify desktop app via AppleScript.

    By @andrewjiang
    View on GitHub
    SKILL.md
    ---
    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).