Spotify Automation
Automate Spotify music playback, playlist management, and discovery workflows.
Core Capabilities
Playback Control
playback_commands:
- play_track: "spotify:track:xxx"
- pause
- next_track
- previous_track
- set_volume: 75
- set_shuffle: true
- set_repeat: "context" # track, context, off
- seek_position: 30000 # milliseconds
- transfer_playback:
device_id: "device_xxx"
Playlist Management
playlist_operations:
create:
name: "{{playlist_name}}"
description: "{{description}}"
public: false
collaborative: false
add_tracks:
playlist_id: "xxx"
tracks:
- "spotify:track:xxx"
- "spotify:track:yyy"
position: 0 # optional
smart_playlist:
name: "Workout Mix"
criteria:
energy: "> 0.8"
tempo: "> 120"
genres: ["electronic", "pop"]
limit: 50
refresh: weekly
Music Discovery
recommendations:
seed_tracks: ["track_id_1", "track_id_2"]
seed_artists: ["artist_id"]
seed_genres: ["pop", "rock"]
target_features:
energy: 0.8
danceability: 0.7
valence: 0.6 # positiveness
limit: 20
Audio Analysis
audio_features:
- acousticness: 0.0-1.0
- danceability: 0.0-1.0
- energy: 0.0-1.0
- instrumentalness: 0.0-1.0
- liveness: 0.0-1.0
- loudness: -60 to 0 dB
- speechiness: 0.0-1.0
- tempo: BPM
- valence: 0.0-1.0 (mood)
- key: 0-11 (C to B)
- mode: 0 (minor) or 1 (major)
Workflow Examples
Daily Mix Generator
workflow:
trigger: daily at 6:00 AM
steps:
- get_recently_played: 50
- analyze_mood: based_on_audio_features
- get_recommendations:
based_on: recent_tracks
mood: current_time_appropriate
- create_playlist: "Today's Mix - {{date}}"
- add_tracks: recommended
Party Mode
party_playlist:
trigger: "party mode"
actions:
- get_top_tracks:
time_range: medium_term
limit: 20
- get_recommendations:
seed: top_tracks
energy: "> 0.8"
danceability: "> 0.7"
- shuffle_and_play
- set_crossfade: 5 # seconds
API Examples
// Search and Play
const results = await spotify.search("Bohemian Rhapsody", ["track"]);
await spotify.play({ uris: [results.tracks.items[0].uri] });
// Create Smart Playlist
const recs = await spotify.getRecommendations({
seed_genres: ["chill"],
target_energy: 0.4,
limit: 30
});
const playlist = await spotify.createPlaylist("Chill Vibes", {
description: "AI-curated relaxation",
public: false
});
await spotify.addTracksToPlaylist(playlist.id, recs.tracks.map(t => t.uri));
Best Practices
- Rate Limits: Respect Spotify API limits
- Caching: Cache frequently accessed data
- User Consent: Request appropriate scopes
- Fallbacks: Handle unavailable tracks gracefully