spotify-history

Access Spotify listening history, top artists/tracks, and get personalized recommendations via the Spotify Web API. Use when fetching a user's recent plays, analyzing music taste, or generating recommendations. Requires one-time OAuth setup.

7 stars

Best use case

spotify-history is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Access Spotify listening history, top artists/tracks, and get personalized recommendations via the Spotify Web API. Use when fetching a user's recent plays, analyzing music taste, or generating recommendations. Requires one-time OAuth setup.

Teams using spotify-history should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/spotify-history/SKILL.md --create-dirs "https://raw.githubusercontent.com/Demerzels-lab/elsamultiskillagent/main/public/skills/braydoncoyer/spotify-history/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/spotify-history/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How spotify-history Compares

Feature / Agentspotify-historyStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Access Spotify listening history, top artists/tracks, and get personalized recommendations via the Spotify Web API. Use when fetching a user's recent plays, analyzing music taste, or generating recommendations. Requires one-time OAuth setup.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Spotify History & Recommendations

Access Spotify listening history and get personalized recommendations.

## Setup (One-Time)

### Quick Setup (Recommended)

Run the setup wizard:
```bash
bash skills/spotify-history/scripts/setup.sh
```

This guides you through:
1. Creating a Spotify Developer App
2. Saving credentials securely
3. Authorizing access

### Manual Setup

1. **Create Spotify Developer App**
   - Go to [developer.spotify.com/dashboard](https://developer.spotify.com/dashboard)
   - Click **Create App**
   - Fill in:
     - **App name:** `Clawd` (or any name)
     - **App description:** `Personal assistant integration`
     - **Redirect URI:** `http://127.0.0.1:8888/callback` ⚠️ Use exact URL!
   - Save and copy **Client ID** and **Client Secret**

2. **Store Credentials**

   **Option A: Credentials file (recommended)**
   ```bash
   mkdir -p credentials
   cat > credentials/spotify.json <<EOF
   {
     "client_id": "your_client_id",
     "client_secret": "your_client_secret"
   }
   EOF
   chmod 600 credentials/spotify.json
   ```

   **Option B: Environment variables**
   ```bash
   # Add to ~/.zshrc or ~/.bashrc
   export SPOTIFY_CLIENT_ID="your_client_id"
   export SPOTIFY_CLIENT_SECRET="your_client_secret"
   ```

3. **Authenticate**

   **With browser (local machine):**
   ```bash
   python3 scripts/spotify-auth.py
   ```

   **Headless (no browser):**
   ```bash
   python3 scripts/spotify-auth.py --headless
   ```
   Follow the prompts to authorize via URL and paste the callback.

Tokens are saved to `~/.config/spotify-clawd/token.json` and auto-refresh when expired.

## Usage

### Command Line

```bash
# Recent listening history
python3 scripts/spotify-api.py recent

# Top artists (time_range: short_term, medium_term, long_term)
python3 scripts/spotify-api.py top-artists medium_term

# Top tracks
python3 scripts/spotify-api.py top-tracks medium_term

# Get recommendations based on your top artists
python3 scripts/spotify-api.py recommend

# Raw API call (any endpoint)
python3 scripts/spotify-api.py json /me
python3 scripts/spotify-api.py json /me/player/recently-played
```

### Time Ranges

- `short_term` — approximately last 4 weeks
- `medium_term` — approximately last 6 months (default)
- `long_term` — all time

### Example Output

```
Top Artists (medium_term):
  1. Hans Zimmer [soundtrack, score]
  2. John Williams [soundtrack, score]
  3. Michael Giacchino [soundtrack, score]
  4. Max Richter [ambient, modern classical]
  5. Ludovico Einaudi [italian contemporary classical]
```

## Agent Usage

When user asks about music:
- "What have I been listening to?" → `spotify-api.py recent`
- "Who are my top artists?" → `spotify-api.py top-artists`
- "Recommend new music" → `spotify-api.py recommend` + add your own knowledge

For recommendations, combine API data with music knowledge to suggest similar artists not in their library.

## Troubleshooting

### "Spotify credentials not found!"
- Make sure `credentials/spotify.json` exists **or** environment variables are set
- Credential file is checked first, then env vars
- Run `bash skills/spotify-history/scripts/setup.sh` to create credentials

### "Not authenticated. Run spotify-auth.py first."
- Tokens don't exist or are invalid
- Run: `python3 scripts/spotify-auth.py` (or with `--headless` if no browser)

### "HTTP Error 400: Bad Request" during token refresh
- Credentials changed or are invalid
- Re-run setup: `bash skills/spotify-history/scripts/setup.sh`
- Or update `credentials/spotify.json` with correct Client ID/Secret

### "HTTP Error 401: Unauthorized"
- Token expired and auto-refresh failed
- Delete token and re-authenticate:
  ```bash
  rm ~/.config/spotify-clawd/token.json
  python3 scripts/spotify-auth.py
  ```

### Headless / No Browser
- Use `--headless` flag: `python3 scripts/spotify-auth.py --headless`
- Manually open the auth URL on any device
- Copy the callback URL (starts with `http://127.0.0.1:8888/callback?code=...`)
- Paste it back when prompted

## Security Notes

- Tokens stored with 0600 permissions (user-only read/write)
- Client secret should be kept private
- Redirect URI uses `127.0.0.1` (local only) for security

## Required Scopes

- `user-read-recently-played` — recent listening history
- `user-top-read` — top artists and tracks
- `user-read-playback-state` — current playback
- `user-read-currently-playing` — currently playing track

Related Skills

Name: gaokao-history-tutor

7
from Demerzels-lab/elsamultiskillagent

**Description:** 模拟中国高三历史辅导老师,采用“史论结合、时空定位”的方法辅导历史问题。当学生提出历史题目、请求知识点背诵引导、说“记不住”、“不会分析材料”时使用。适用于高考历史复习、材料题解题技巧指导、历史逻辑建立。

spotify-player

7
from Demerzels-lab/elsamultiskillagent

Terminal Spotify playback/search via spogo (preferred) or spotify_player.

Ethereum History

7
from Demerzels-lab/elsamultiskillagent

Read-only factual data about historical Ethereum mainnet contracts. Use when the user asks about a specific contract address, early Ethereum contracts, deployment era, deployer, bytecode, decompiled code, or documented history (what a contract is and is not). Data is non-opinionated and includes runtime bytecode, decompiled code, and editorial history when available. Base URL https://ethereumhistory.com (or set BASE_URL for local/staging).

spotify-applescript

7
from Demerzels-lab/elsamultiskillagent

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.

session-history

7
from Demerzels-lab/elsamultiskillagent

Search and browse past conversation history across all sessions.

spotify

7
from Demerzels-lab/elsamultiskillagent

Control Spotify playback on macOS. Play/pause, skip tracks, control volume, play artists/albums/playlists. Use when a user asks to play music, control Spotify, change songs, or adjust Spotify volume.

paylock

7
from Demerzels-lab/elsamultiskillagent

Non-custodial SOL escrow for AI agent deals.

agent-reputation

7
from Demerzels-lab/elsamultiskillagent

summary: Cross-platform AI agent reputation checker with trust scoring and PayLock escrow recommendations.

Telecom Agent Skill

7
from Demerzels-lab/elsamultiskillagent

Turn your AI Agent into a Telecom Operator. Bulk calling, ChatOps, and Field Monitoring.

OpenClaw-Finnhub

7
from Demerzels-lab/elsamultiskillagent

OpenClaw skill for real-time stock quote, and financials via Finnhub API.

```markdown

7
from Demerzels-lab/elsamultiskillagent

# OpenClaw-Last.fm

security-operator

7
from Demerzels-lab/elsamultiskillagent

Runtime security guardrails for OpenClaw agents.