Install
openclaw skills install @leosaucedo/soundcloudInteract with SoundCloud API for searching tracks, managing playlists, user operations, and audio discovery. Use when the user asks to search for music on SoundCloud, create/edit playlists, get track information, find user profiles, manage favorites, or work with SoundCloud audio content. Requires SOUNDCLOUD_CLIENT_ID and SOUNDCLOUD_CLIENT_SECRET for all operations; SOUNDCLOUD_USER_TOKEN for write operations (playlists, likes, follows).
openclaw skills install @leosaucedo/soundcloudThis skill enables interaction with SoundCloud's API for music discovery, playlist management, user operations, and audio content analysis.
All API calls now require the Authorization: Bearer <token> header. The old ?client_id= query parameter is deprecated.
# Required for ALL operations
export SOUNDCLOUD_CLIENT_ID="your_client_id"
export SOUNDCLOUD_CLIENT_SECRET="your_client_secret"
# Optional: For write operations (playlists, likes, follows)
# Run the OAuth helper to get one:
./scripts/auth_soundcloud.sh
# Or set manually:
export SOUNDCLOUD_USER_TOKEN="your_oauth_token"
Two token types are managed automatically:
| Token Type | Grant | Used For | Managed |
|---|---|---|---|
| App Token | client_credentials | Search, track info, user profiles, playlists (read) | Auto-acquired & cached |
| User Token | authorization_code | Create playlists, like tracks, follow users | Via auth_soundcloud.sh |
Token cache: ~/.cache/soundcloud/
# Search for tracks
./scripts/search_tracks.sh "lofi hip hop" --limit 10
# Get user info
./scripts/get_user_info.sh "nocopyrightsounds" --with-tracks 5
# Analyze a track
./scripts/analyze_track.sh "https://soundcloud.com/artist/track"
# Check token status
./scripts/auth_token.sh status
scripts/search_tracks.shSearch tracks with filters and formatted output.
./scripts/search_tracks.sh "search query" [options]
Options: --limit N, --genre "genre", --bpm-min N, --bpm-max N, --duration-min N, --duration-max N, --sort "field", --json, --csv
scripts/analyze_track.shGet detailed track information from ID or URL.
./scripts/analyze_track.sh "track_id_or_url"
Output: Metadata, audio properties (BPM, key), engagement stats, license, stream/download URLs.
scripts/get_user_info.shGet user profile with stats, bio, and optional tracks/playlists.
./scripts/get_user_info.sh "username_or_id" [--with-tracks N] [--with-playlists N] [--json]
scripts/get_user_playlists.shList playlists for a user.
./scripts/get_user_playlists.sh "username_or_id" [--limit N] [--with-tracks] [--json]
scripts/follow_user.shFollow or unfollow a user (requires user token).
./scripts/follow_user.sh "username_or_id" [--unfollow]
scripts/like_track.shLike or unlike a track (requires user token).
./scripts/like_track.sh "track_id_or_url" [--unlike]
scripts/create_playlist.shCreate a new playlist (requires user token).
./scripts/create_playlist.sh "Playlist Name" [--description "text"] [--tracks "id1,id2"] [--sharing public|private] [--genre "genre"] [--tags "tag1,tag2"] [--no-confirm]
scripts/update_playlist.shUpdate playlist title, description, sharing, tracks (requires user token).
./scripts/update_playlist.sh PLAYLIST_ID [--title "New Title"] [--description "text"] [--sharing public|private] [--add-tracks "id1,id2"] [--remove-tracks "id1,id2"] [--set-tracks "id1,id2"]
scripts/delete_playlist.shDelete a playlist (requires user token).
./scripts/delete_playlist.sh PLAYLIST_ID [--force]
scripts/batch_operations.shPerform operations on multiple tracks from a file.
./scripts/batch_operations.sh [action] [file] [options]
Actions:
like-tracks — Like all tracks in file (requires user token)unlike-tracks — Unlike all tracks in file (requires user token)add-to-playlist — Add tracks to a playlist (requires user token + --playlist-id)download-metadata — Download full metadata JSON for all trackscheck-availability — Check which tracks are still availableFile format: One track ID per line, or CSV with IDs in first column.
scripts/auth_token.shToken manager — source'd by other scripts. Standalone usage:
./scripts/auth_token.sh status # Show token status
./scripts/auth_token.sh refresh # Force app token refresh
./scripts/auth_token.sh test # Test API connectivity
./scripts/auth_token.sh app # Print app token
./scripts/auth_token.sh user # Print user token (if available)
scripts/auth_soundcloud.shInteractive OAuth flow to get a user token for write operations.
./scripts/auth_soundcloud.sh
Walks through: browser authorization → code exchange → token save.
Used automatically for all read operations. Requires SOUNDCLOUD_CLIENT_ID + SOUNDCLOUD_CLIENT_SECRET.
curl -X POST https://api.soundcloud.com/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=CLIENT_ID" \
-d "client_secret=CLIENT_SECRET" \
-d "grant_type=client_credentials"
Required for write operations. Run ./scripts/auth_soundcloud.sh for interactive setup, or:
http://localhost:8080/callback# 1. Search for tracks
./scripts/search_tracks.sh "study beats" --genre "lofi" --bpm-min 60 --bpm-max 80 --limit 50 --csv > candidates.csv
# 2. Analyze specific tracks
./scripts/analyze_track.sh "track_id"
# 3. Create playlist (requires user token)
./scripts/create_playlist.sh "Study Focus" --description "Concentration music" --tracks "id1,id2,id3"
./scripts/get_user_info.sh "artistname" --with-tracks 10 --with-playlists 5
# Download metadata for a list of tracks
echo -e "123\n456\n789" > track_ids.txt
./scripts/batch_operations.sh download-metadata track_ids.txt --delay 1
# Check which tracks are still available
./scripts/batch_operations.sh check-availability track_ids.txt
All scripts include:
# Check token status
./scripts/auth_token.sh status
# Force refresh app token
./scripts/auth_token.sh refresh
# Re-run OAuth for user token
./scripts/auth_soundcloud.sh
references/ for: api_endpoints.md, oauth_flow.md, best_practices.md