Search and manage Spotify content — playlists, tracks, albums, artists, playback, and library — from chat using the Spotify Web API.
This skill uses ClawLink for hosted connection flows and credentials so you do not need to configure Spotify API access yourself.
Step 1: InstallStep 2: Pair AccountStep 3: Connect Spotify
_App-specific connection GIF coming soon_Run the install command in OpenClawSign in and approve the deviceOpen the dashboard and connect Spotify
text
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ OpenClaw │────▶│ ClawLink │────▶│ Spotify Web │
│ (User Chat) │ │ (OAuth) │ │ API │
└─────────────────┘ └──────────────┘ └──────────────────┘
│ │ │
│ 1. Install Plugin │ │
│ 2. Pair Device │ │
│ 3. Connect Spotify │ │
│ │ 4. Secure Token │
│ │ 5. Proxy Requests │
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ SKILL │ │ Dashboard│ │ Spotify │
│ File │ │ Auth │ │ Account │
└──────────┘ └──────────┘ └──────────┘
Install the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.
bash
openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
Then tell the user: "OpenClaw has been restarted. Send /new as a standalone message to start a fresh chat, then ask for Spotify again."
bash
# Search for tracks
clawlink_call_tool --tool "spotify_search" --params '{"q": "never gonna give you up", "type": "track"}'
# Get current user's playlists
clawlink_call_tool --tool "spotify_get_current_user_playlists" --params '{}'
# Get track details
clawlink_call_tool --tool "spotify_get_track" --params '{"track_id": "TRACK_ID"}'
All Spotify tool calls are authenticated automatically by ClawLink using the user's connected Spotify account OAuth token.
No API token is required in chat. ClawLink stores the OAuth token securely and injects it into every Spotify Web API request on the user's behalf.
clawlink_begin_pairing if it is not configured yet.clawlink_list_integrations to verify the connection is active.bash
clawlink_list_integrations
Response: Returns all connected integrations. Look for spotify in the list.
bash
clawlink_list_tools --integration spotify
Response: Returns the live tool catalog for Spotify.
If Spotify tools are missing or the connection shows an error:
clawlink_list_integrations to verifyclawlink_list_tools --integration spotifyToolDescriptionModespotify_searchSearch for tracks, albums, artists, playlists, or showsReadspotify_search_tracksSearch specifically for tracksReadspotify_search_artistsSearch specifically for artistsReadspotify_search_albumsSearch specifically for albumsReadspotify_search_playlistsSearch specifically for playlistsRead
ToolDescriptionModespotify_get_trackGet details for a single trackReadspotify_get_tracksGet details for multiple tracks at onceReadspotify_get_audio_featuresGet audio features (tempo, key, danceability, etc.)Readspotify_get_audio_analysisGet detailed audio analysis for a trackReadspotify_save_trackSave a track to the user's libraryWritespotify_remove_saved_trackRemove a track from the user's libraryWritespotify_check_saved_tracksCheck which tracks are saved in the libraryRead
ToolDescriptionModespotify_get_albumGet album details with tracksReadspotify_get_album_tracksGet tracks on an albumReadspotify_save_albumSave an album to the user's libraryWritespotify_remove_saved_albumRemove an album from the user's libraryWritespotify_check_saved_albumsCheck which albums are savedRead
ToolDescriptionModespotify_get_artistGet an artist's profile and follower countReadspotify_get_artist_albumsGet albums by an artistReadspotify_get_artist_top_tracksGet an artist's top tracksReadspotify_get_related_artistsGet artists related to this oneRead
ToolDescriptionModespotify_get_current_user_playlistsGet the current user's playlistsReadspotify_get_playlistGet a playlist's details and tracksReadspotify_create_playlistCreate a new playlist for the userWritespotify_update_playlistUpdate a playlist's name, description, or visibilityWritespotify_delete_playlistDelete a playlistWritespotify_add_tracks_to_playlistAdd tracks to a playlistWritespotify_remove_tracks_from_playlistRemove tracks from a playlistWritespotify_reorder_playlist_tracksReorder tracks within a playlistWritespotify_get_playlist_cover_imageGet the playlist's cover imageReadspotify_upload_playlist_cover_imageUpload a custom cover imageWrite
ToolDescriptionModespotify_get_current_userGet the current user's profileReadspotify_get_user_profileGet another user's public profileReadspotify_follow_userFollow a userWritespotify_unfollow_userUnfollow a userWritespotify_follow_playlistFollow a playlistWritespotify_unfollow_playlistUnfollow a playlistWrite
ToolDescriptionModespotify_get_playback_stateGet the user's current playback stateReadspotify_start_playbackStart or resume playbackWritespotify_pause_playbackPause playbackWritespotify_skip_to_nextSkip to the next trackWritespotify_skip_to_previousSkip to the previous trackWritespotify_seek_to_positionSeek to a position in the current trackWritespotify_set_repeat_modeSet the repeat mode (off, track, context)Writespotify_set_volumeSet the playback volumeWritespotify_shuffleToggle shuffle on or offWritespotify_transfer_playbackTransfer playback to another deviceWrite
ToolDescriptionModespotify_get_recently_playedGet the user's recently played tracksReadspotify_get_recently_played_episodesGet recently played episodes (podcasts)Read
ToolDescriptionModespotify_get_new_releasesGet new album releasesReadspotify_get_featured_playlistsGet featured Spotify playlistsReadspotify_get_recommendationsGet track recommendations based on seedsReadspotify_get_available_genre_seedsGet available genre seeds for recommendationsReadspotify_get_categoriesGet all Spotify categoriesReadspotify_get_category_playlistsGet playlists for a specific categoryRead
bash
clawlink_call_tool --tool "spotify_search" \
--params '{
"q": "bohemian rhapsody queen",
"type": "track",
"limit": 5
}'
bash
clawlink_call_tool --tool "spotify_get_playlist" \
--params '{
"playlist_id": "PLAYLIST_ID"
}'
bash
clawlink_call_tool --tool "spotify_create_playlist" \
--params '{
"name": "My OpenClaw Playlist",
"description": "Created via OpenClaw AI assistant",
"public": false
}'
bash
clawlink_call_tool --tool "spotify_add_tracks_to_playlist" \
--params '{
"playlist_id": "PLAYLIST_ID",
"uris": ["spotify:track:TRACK_ID_1", "spotify:track:TRACK_ID_2"]
}'
bash
clawlink_call_tool --tool "spotify_get_audio_features" \
--params '{
"track_id": "TRACK_ID"
}'
bash
clawlink_call_tool --tool "spotify_get_new_releases" \
--params '{
"limit": 10,
"country": "US"
}'
clawlink_list_integrations to confirm Spotify is connected.clawlink_list_tools --integration spotify to see the live catalog.clawlink_search_tools with a short query and integration spotify.text
┌─────────────────────────────────────────────────────────────┐
│ READ OPERATIONS (Safe) │
│ search → get → list → browse │
│ │
│ Example: Search tracks → Get track details → Show info │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ WRITE OPERATIONS (Require Confirmation) │
│ describe → preview → confirm → call │
│ │
│ Example: Preview playlist creation → User approves → Create│
└─────────────────────────────────────────────────────────────┘
clawlink_describe_tool first.whenToUse, askBefore, safeDefaults, examples, and followups to shape the call.clawlink_preview_tool first.clawlink_call_tool. Pass confirmation only after the preview matches the user's intent.spotify:track:3AhXNa5py1) or just the alphanumeric ID.limit parameter to control result count.Status / ErrorMeaningTool not foundThe tool name does not exist in the current catalog. Verify with clawlink_list_tools --integration spotify.Missing connectionSpotify is not connected. Direct the user to https://claw-link.dev/dashboard?add=spotify.NO_ACTIVE_DEVICENo active Spotify device found to control playback. Open Spotify on a device first.PREMIUM_REQUIREDPlayback control requires Spotify Premium.INVALID_TRACK_IDThe track ID does not match any track in Spotify's catalog.INVALID_PLAYLIST_IDThe playlist ID does not exist or is not accessible.NOT_FOUNDThe requested resource (track, album, artist) was not found.RATE_LIMITEDToo many requests — wait and retry.Write rejectedUser did not confirm a write action. Always confirm before executing writes.
Check that the ClawLink plugin is installed: bash
openclaw plugins list
If the plugin is installed but tools are missing, tell the user to send /new as a standalone message to reload the catalog.
If a fresh chat does not help, run: bash
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
After restart, tell the user to send /new again and retry.
spotify_transfer_playback is needed first.Powered by ClawLink — an integration hub for OpenClaw
