ClawSkills logoClawSkills

Spotify Player

适用于无头 Linux 服务器的 Spotify CLI。使用 cookie 身份验证(无需 OAuth 回调)通过终端控制 Spotify 播放。非常适合没有...的远程服务器

介绍

# Spogo - Spotify CLI for Linux Servers

使用基于 Cookie 的身份验证从无头 Linux 服务器控制 Spotify。无需 OAuth 回调 —— 非常适合远程服务器。

## 为什么需要此技能?

ClawHub 上由 `steipete` 开发的原始 `spotify-player` 技能假设拥有本地浏览器访问权限以便导入 Cookie(`spogo auth import --browser chrome`)。在没有本地浏览器的无头 Linux 服务器上,这是行不通的。

此技能记录了基于 Cookie 的变通方法 —— 复制 2 个浏览器 Cookie 即可完成。无需 OAuth,无需 localhost。

## 要求 - Spotify Premium 账户 - 已安装 Go 1.21+ - 用户的 Spotify 浏览器 Cookie

## 安装 (Linux)

### 1. 安装 Go(如果尚未安装)

```bash # Ubuntu/Debian sudo apt update && sudo apt install -y golang-go

# Or download latest from https://go.dev/dl/ wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz echo 'export PATH=$PATH:/usr/local/go/bin:~/go/bin' >> ~/.bashrc source ~/.bashrc ```

### 2. 安装 spogo

```bash go install github.com/steipete/spogo/cmd/spogo@latest ```

这将安装到 `~/go/bin/spogo`。如有需要,请将其添加到 PATH: ```bash sudo ln -s ~/go/bin/spogo /usr/local/bin/spogo ```

### 3. 验证

```bash spogo --version # spogo v0.2.0 ```

## 设置(Cookie 认证)

由于 OAuth 需要 localhost 回调(这在远程服务器上是不可能的),因此我们改用 Cookie 认证。

### 1. 从浏览器获取 Cookie

让用户打开 DevTools(开发者工具) → Application(应用程序) → Cookies → `open.spotify.com` 并复制: - `sp_dc` - 主要认证令牌(长字符串,必需) - `sp_t` - 设备 ID(UUID 格式,播放时必需)

### 2. 创建配置

创建 `~/.config/spogo/config.toml`: ```toml default_profile = "default"

[profile.default] cookie_path = "/root/.config/spogo/cookies/default.json" market = "IL" language = "en" ```

### 3. 创建 Cookie 文件

创建 `~/.config/spogo/cookies/default.json`: ```json [ { "name": "sp_dc", "value": "USER_SP_DC_VALUE", "domain": ".spotify.com", "path": "/", "expires": "2027-01-01T00:00:00Z", "secure": true, "http_only": true }, { "name": "sp_t", "value": "USER_SP_T_VALUE", "domain": ".spotify.com", "path": "/", "expires": "2027-01-01T00:00:00Z", "secure": false, "http_only": false } ] ```

### 4. 验证

```bash spogo auth status # → "Cookies: 2 (file)" ```

## 命令

```bash # Search spogo search track "query" spogo search track "query" --json --limit 5

# Play spogo play spotify:track:ID spogo play # Resume spogo pause spogo next / spogo prev

# Devices spogo device list --json spogo device set "DEVICE_ID"

# Status spogo status spogo status --json ```

## "missing device id" 错误 - 浏览器回退

spogo 需要一个活跃的 Spotify 会话。如果没有设备最近播放过:

1. **在浏览器中打开曲目**: ``` browser open https://open.spotify.com/track/TRACK_ID profile=openclaw ```

2. **通过浏览器自动化点击播放**

3. **转移到目标设备**: ```bash spogo device set "DEVICE_ID" ```

浏览器配置文件将保持登录状态(Cookie 持久化)。播放结束后,会话将保持活跃数小时。

## 速率限制

- Connect API(默认):无速率限制 ✓ - Web API (`--engine web`):受速率限制(429 错误) - 当受到速率限制时访问媒体库 → 使用浏览器自动化

## 故障排除

### "missing device id"

没有活跃的 Spotify 会话。使用浏览器回退(见上文)先开始播放。

### "401 Unauthorized"

Cookie 已过期。从浏览器获取新的 Cookie 并更新 JSON 文件。

### 命令有效但没有声音

检查 `spogo device list` —— 播放可能发生在错误的设备上。使用 `spogo device set "DEVICE_ID"` 进行切换。

## 安全与隐私

- **Cookie 处理**:`sp_dc` 和 `sp_t` 本地存储在 `~/.config/spogo/cookies/` 中 —— 请将它们视为机密信息,切勿记录或分享 - **网络访问**:spogo 仅与 Spotify API(`api.spotify.com`、`open.spotify.com`)通信 - **浏览器回退**:可选 —— 仅当不存在活跃的 Spotify 设备时使用。它使用 Agent 的浏览器配置文件打开 `open.spotify.com` 并点击播放。这不会提取额外的 Cookie 或访问其他浏览器状态 - **安装来源**:从官方 [steipete/spogo](https://github.com/steipete/spogo) GitHub 仓库进行 `go install` —— 开源,可审计

## 注意事项

- **Cookie 有效期**:约 1 年,但如果用户注销或更改密码,可能会失效 - **需要 Premium**:免费帐户无法使用 Connect API - **市场设置**:在配置中更改 `market` 以获得正确的区域可用性(IL, US 等)

更多产品