Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
rbouschery avatar

Spotify

  • 13 installs
  • Updated January 22, 2026
  • rbouschery/marketplace

Helps with ai & agent building tasks.

About

spotify is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.

  • spotify
  • AI & Agent Building
  • AI-coding skill

Spotify by the numbers

  • 13 all-time installs (skills.sh)
  • Ranked #11,389 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/rbouschery/marketplace --skill spotify

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs13
Last updatedJanuary 22, 2026
Repositoryrbouschery/marketplace

What it does

Helps with ai & agent building tasks.

Files

SKILL.mdMarkdownGitHub ↗

Spotify Mac Skill

This skill provides commands to control Spotify on macOS via AppleScript.

Available Scripts

All scripts are in the ./scripts/ directory (relative to this file). Execute them via bash from the plugin root.

Playback Control

ScriptPurposeArguments
play.shResume playbacknone
pause.shPause playbacknone
toggle-playback.shToggle play/pausenone
next-track.shSkip to next tracknone
previous-track.shGo to previous tracknone
play-uri.shPlay specific URI<spotify_uri> [context_uri]

Search

ScriptPurposeArguments
search.shOpen Spotify search visually<query>

Agent-Assisted Search (Recommended): To search and play automatically, use web search to find Spotify URLs: 1. Search: site:open.spotify.com [query] (e.g., "site:open.spotify.com bohemian rhapsody") 2. Get the URL from results (e.g., https://open.spotify.com/track/6l8GvAyoUZwWDgF1e4822w) 3. Play it: play-uri.sh "https://open.spotify.com/track/..."

This works for tracks, albums, playlists, and artists.

Track Information

ScriptPurposeArguments
get-current-track.shGet current track infonone
get-player-state.shGet player statenone

Volume Control

ScriptPurposeArguments
get-volume.shGet current volumenone
set-volume.shSet volume level<volume 0-100>
volume-up.shIncrease volume by 10none
volume-down.shDecrease volume by 10none

Position Control

ScriptPurposeArguments
get-position.shGet current positionnone
set-position.shSeek to position<seconds>
fast-forward.shForward 10 secondsnone
rewind.shRewind 10 secondsnone

Mode Control

ScriptPurposeArguments
toggle-shuffle.shToggle shuffle modenone
toggle-repeat.shToggle repeat modenone
get-modes.shGet shuffle/repeat statusnone

Utility

ScriptPurposeArguments
is-running.shCheck if Spotify is runningnone
launch.shLaunch Spotify appnone
quit.shQuit Spotifynone

Output Format

Scripts use delimiters for structured output:

  • <<>> separates fields within a record
  • ERROR: prefix indicates an error message

Track Record Format

name<<>>artist<<>>album<<>>albumArtist<<>>duration<<>>position<<>>trackNumber<<>>discNumber<<>>id<<>>spotifyUrl<<>>artworkUrl<<>>popularity

Player State Format

state<<>>position<<>>volume<<>>shuffling<<>>repeating

Modes Format

shuffling<<>>repeating

Usage Examples

Basic Playback

# Play/pause
./scripts/play.sh
./scripts/pause.sh
./scripts/toggle-playback.sh

# Navigation
./scripts/next-track.sh
./scripts/previous-track.sh

Search and Play (Agent-Assisted)

# Agent searches web for: site:open.spotify.com bohemian rhapsody
# Gets URL from results, then plays:
./scripts/play-uri.sh "https://open.spotify.com/track/6l8GvAyoUZwWDgF1e4822w"

# Works for any content type:
./scripts/play-uri.sh "https://open.spotify.com/playlist/37i9dQZF1DXaXB8fQg7xif"
./scripts/play-uri.sh "https://open.spotify.com/album/3BHe7LbW5yRjyqXNJ3A6mW"

Visual Search (Opens Spotify App)

./scripts/search.sh "bohemian rhapsody"
./scripts/search.sh "artist:queen"
./scripts/search.sh "playlist:hot country"

Play Specific Content

# Play a track
./scripts/play-uri.sh "spotify:track:4uLU6hMCjMI75M1A2tKUQC"

# Play an album
./scripts/play-uri.sh "spotify:album:7ppypgQppMf3mkRbZxYIFM"

# Play a playlist
./scripts/play-uri.sh "spotify:playlist:37i9dQZF1DXcBWIGoYBM5M"

# Play track in album context (enables album queue)
./scripts/play-uri.sh "spotify:track:xxx" "spotify:album:yyy"

Get Track Information

# Get current track details
./scripts/get-current-track.sh
# Output: Song Name<<>>Artist<<>>Album<<>>Album Artist<<>>180<<>>45<<>>1<<>>1<<>>spotify:track:xxx<<>>https://open.spotify.com/track/xxx<<>>https://i.scdn.co/image/xxx<<>>75

# Get player state
./scripts/get-player-state.sh
# Output: playing<<>>45.5<<>>75<<>>false<<>>true

Volume Control

# Get current volume
./scripts/get-volume.sh

# Set specific volume
./scripts/set-volume.sh 50

# Adjust volume
./scripts/volume-up.sh
./scripts/volume-down.sh

Seeking

# Get current position
./scripts/get-position.sh

# Jump to 30 seconds
./scripts/set-position.sh 30

# Skip forward/backward 10 seconds
./scripts/fast-forward.sh
./scripts/rewind.sh

Shuffle and Repeat

# Toggle modes
./scripts/toggle-shuffle.sh
./scripts/toggle-repeat.sh

# Check current modes
./scripts/get-modes.sh
# Output: true<<>>false

App Control

# Check if running
./scripts/is-running.sh

# Launch/quit
./scripts/launch.sh
./scripts/quit.sh

Parsing Output

When receiving track info, parse like this:

1. Split by <<>> to get fields 2. Fields are: name, artist, album, albumArtist, duration, position, trackNumber, discNumber, id, spotifyUrl, artworkUrl, popularity

Example parsing in bash:

IFS='<<>>' read -ra fields <<< "$output"
name="${fields[0]}"
artist="${fields[1]}"
album="${fields[2]}"
# ... etc

Spotify URI Format

Spotify uses URIs to identify content:

  • Tracks: spotify:track:<track_id>
  • Albums: spotify:album:<album_id>
  • Playlists: spotify:playlist:<playlist_id>
  • Artists: spotify:artist:<artist_id>

You can get URIs from:

  • Spotify desktop: Right-click > Share > Copy Spotify URI
  • Spotify web: Copy from URL (e.g., https://open.spotify.com/track/xxx -> spotify:track:xxx)

Notes

  • Scripts require macOS with Spotify Desktop app installed
  • Works with free or premium Spotify accounts
  • No authentication or API keys required
  • First run may trigger macOS permission prompts for automation
  • Duration is returned in seconds (converted from milliseconds)
  • Position is in seconds

Limitations

AppleScript API does NOT support:

  • Adding to playlists
  • Viewing or managing queue
  • Liking/saving tracks
  • Browsing library
  • Searching private/personal playlists (use play-uri.sh with the playlist URI instead)

For these features, use the Spotify Web API (requires Premium + OAuth).

Reference

For advanced AppleScript patterns and customization, see ./reference/applescript-patterns.md.

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.