soundcloud
Upload, update, list, and manage tracks and playlists on SoundCloud via the official API.
Skill by maximusmaximus
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/maximusmaximus-soundcloud
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/soundcloud
What's inside
- Skill name
soundcloud- Description
- Upload, update, list, and manage tracks and playlists on SoundCloud via the official API.
- License
- MIT
- Instructions
- 275 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Instructions call the network
Agent Skills spec issues
- body: contains an absolute path from the author's machine
Files (21)
- SKILL.md
- album-upload-workflow.md · references/
- cover-art-generation.md · references/
- oauth-quirks.md · references/
- playlist-api.md · references/
- playlist-artwork-quirk.md · references/
- playlist-artwork-update.md · references/
- publish-fallback-workflow.md · references/
- publish-release-pattern.md · references/
- release-directory.md · references/
- remove-track-from-existing-album.md · references/
- remove-track-from-published-album.md · references/
- replace-track-in-published-album.md · references/
- replacing-tracks.md · references/
- soundcloud-analyzer.md · references/
- soundcloud-api.md · references/
- track-replacement-workflow.md · references/
- oauth_flow.py · scripts/
- publish_release.py · scripts/
- soundcloud-analyzer.py · scripts/
- soundcloud_api.py · scripts/
SKILL.md (first lines)
# SoundCloud Manager
Upload, update, list, and manage SoundCloud tracks via OAuth 2.1 PKCE. Token refresh is automatic after one-time auth.
> **References:** `references/oauth-quirks.md` · `references/soundcloud-api.md` · `references/playlist-api.md` · `references/release-directory.md` · `references/track-replacement-workflow.md` · `references/replace-track-in-published-album.md` · `references/publish-fallback-workflow.md`
## 🚀 Publishing Albums (USE THIS)
For album/EP releases, **always use `publish_release.py`** — it handles upload, playlist, tags, artwork, and label in one command with user confirmation buttons:
```bash
# Review gate: sends summary + Publish/Preview/Edit/Cancel buttons to Telegram
python3 /opt/data/skills/music/soundcloud/scripts/publish_release.py --release mars-descent
# Send audio for user review first, then publish buttons
python3 /opt/data/skills/music/soundcloud/scripts/publish_release.py --release mars-descent --preview
# Skip gates, publish immediately
python3 /opt/data/skills/music/soundcloud/scripts/publish_release.py --release mars-descent --confirm
# List release-ready albums
python3 /opt/data/skills/music/soundcloud/scripts/publish_release.py --list
```
Reads `release.json` + `tracks_meta.json` from `/opt/data/music/releases/<album>/`, auto-discovers artwork. See `references/release-directory.md` for structure.
For full end-to-end album publishing with per-track artwork, tags, label, and playlist creation, see `references/publish-release-pattern.md` — it documents the proven Python subprocess script pattern used for CHERENKOV-HORIZON and subsequent releases.
**⛔ Do NOT manually piece together upload → tags → playlist → artwork. Use this script.**
**User preference — skip review gate on explicit "Publish":** When the user says "Publish" or "Promote and Publish", they mean upload to SoundCloud immediately. Skip the review-files-first step in that case. Only send files for review when the user hasn't explicitly requested publishing.
## CLI Commands
All via `python3 /opt/data/skills/music/soundcloud/scripts/soundcloud_api.py`:
| Command | Usage |
|---------|-------|
| `upload` | `upload --file track.flac --title "Title" --tags "tag1 tag2" --genre Electronic --artwork cover.png --sharing public --downloadable --label "VØIDRIDE"` |
| `update` | `update --track-id ID --title "New" --tags "new tags" --genre Bass --artwork new.png --sharing private` |
| `list` | `list [--limit 50] [--json]` |
| `status` | `status --track-id ID` (states: `finished`=live, `processing`=encoding, `failed`=re-upload) |
| `batch-upload` | `batch-upload --dir /path/ --genre Electronic --tags "tag1 tag2" [--artwork-dir /covers/]` |
| `create-playlist` | `create-playlist --title "Album" --track-ids "123,456,789" [--artwork cover.png]` |
## First-Time Auth
```bash
# Native Linux (browser redirect works):
python3 /opt/data/skills/music/soundcloud/scripts/oauth_flow.py --auth
# WSL/headless (browser can't reach WSL):
python3 /opt/data/skills/music/soundcloud/scripts/oauth_flow.py --auth-url
# → Copy URL to Windows browser → authorize → copy callback URL
python3 /opt/data/skills/music/soundcloud/scripts/oauth_flow.py --exchange-url 'http://127.0.0.1:8080/callback?code=XXXXX'
```
Requires `SOUNDCLOUD_CLIENT_ID` + `SOUNDCLOUD_CLIENT_SECRET` env vars. Redirect URI must be `http://127.0.0.1:8080/callback`.
Tokens stored at `~/.hermes/credentials/soundcloud_tokens.json` (auto-refreshed, single-use refresh tokens).
## Publishing Rules (HARD RULES)
1. **SEND AUDIO FOR REVIEW BEFORE UPLOADING.** Never publish without user approval. No exceptions.
- **User preference — skip review gate on explicit "Publish":** When the user says "Publish" or "Promote and Publish" (or similar imperative), go straight to `--confirm`. Don't send previews first.
- **No Telegram available?** Send files manually via `MEDIA:` paths in your response, then ask for approval. Once approved, use `--confirm` to publish.
2. **FLAC ONLY.** Always upload FLAC masters — never MP3. SC re-encodes; lossless source = best quality.
3. **NO production details in descriptions.** No version numbers, LUFS stats, stem info, or how-it-was-made notes. Description = track name + genre/vibe only.
4. **NO poems in descriptions** unless user explicitly asks.
5. **Track titles: plain ASCII.** "Entrywound" not "Ɇ₦₮ƦɎ₩ØɄ₦Đ". Unicode belongs on cover art and playlist titles only.
6. **Cover art: Unicode-styled titles.** "BLΔCK MΔSS" not "BLACK MASS". Use Open Sans Bold (not Helvetica).
7. **Re-mix stems before regenerating.** Remove/reduce a bad stem rather than regenerating the whole track.
## Replacing a Track in a Published Album
When a user asks to replace a track in a published album:
1. **Find playlist + track ID** from `release.json`'s `soundcloud.track_ids` array
2. **DELETE** the track via raw API call: `DELETE /tracks/{id}`
3. **PUT** the playlist with remaining track IDs (PUT replaces the entire list)
4. **Update** `release.json` with the new track ID array
5. **Produce** a replacement track using the SAME model as the original (`production_plan.json` → `stems.main.model`)
6. **DAWAGENT** — Demucs separation + session handoff
7. **Cover art** — title overlay for the new track
8. **Upload** new track + update playlist with new ID
See `references/replacing-tracks.md` for the full step-by-step workflow with API examples.
## Playlist Creation (JSON format required)
```python
import json, urllib.request
with open('/opt/data/home/.hermes/credentials/soundcloud_tokens.json') as f:
tokens = json.load(f)
payload = json.dumps({
"playlist": {
"title": "Album Title",
"sharing": "public",
"tracks": [{"id": "123456"}, {"id": "789012"}] # STRING IDs, not ints!
}
}).encode('utf-8')
req = urllib.request.Request("https://api.soundcloud.com/playlists", data=payload, method='POST')
req.add_header('Authorization', f'OAuth {tokens["access_token"]}')
req.add_header('Content-Type', 'application/json; charset=utf-8')
req.add_header('Accept', 'application/json; charset=utf-8') # REQUIRED — 422 without this
resp = urllib.request.urlopen(req)
```
**PUT replaces** the entire track list — include ALL track IDs, not just new ones.
### Playlist Artwork
Must use `playlist[artwork_data]` (not `track[artwork_data]` — that 500s on playlists):
```python
boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW"From maximusmaximus/Mcmusic, MIT.
More from maximusmaximus/Mcmusic
- 0.557score
a2a-client
maximusmaximus
Send tasks, queries, and instructions to the PlanetaryExplorer A2A (Agent2Agent) server over Tailscale.
SkillAFreshness: AClaude Code +9 - 0.557score
artwork
maximusmaximus
Full album/playlist cover art pipeline — background generation via Venice AI (grok-imagine-image-quality), upscale to 3000×3000, waveform banner extraction…
SkillAFreshness: AClaude Code +9 - 0.554score
dawagent
maximusmaximus
Ardour DAW session tools — create sessions, manage tracks, check exports.
SkillAFreshness: AClaude Code +9 - 0.554score
master-producer
maximusmaximus
Studio-quality music production with multi-pass K3 inference pipeline.
SkillAFreshness: AClaude Code +9 - 0.554score
producer-profiles
maximusmaximus
Create and manage Producer Profiles — reusable identities with signature sound, default models, mastering presets, and a catalog of linked productions.
SkillAFreshness: AClaude Code +9 - 0.554score
secure-share
maximusmaximus
File service infrastructure to securely package music releases, FLACs, and Windows playlists into ZIP archives and generate live local and Cloudflare external…
SkillAFreshness: AClaude Code +9 - 0.553score
delivery-receipt
maximusmaximus
Generates production receipts with local FLAC links and VLC playlists for Windows review.
SkillAFreshness: AClaude Code +9 - 0.553score
cover-title-overlay
maximusmaximus
Overlay Unicode-styled song titles onto cover art images with multi-font Unicode fallback (Segoe UI Symbol / Historic / Black / DejaVu Sans), scaled to fill…
SkillAFreshness: AClaude Code +9 - 0.519score
diagram-creation
maximusmaximus
Create architecture and flow diagrams: dark-themed SVG infra diagrams (HTML) or hand-drawn Excalidraw JSON (arch, flow, seq).
SkillBFreshness: BClaude Code +9 - 0.519score
ascii-creative
maximusmaximus
ASCII art and video: pyfiglet, cowsay, image-to-ASCII, and full video-to-ASCII conversion with audio-reactive and generative modes.
SkillBFreshness: BClaude Code +9 - 0.519score
creative-coding
maximusmaximus
Creative coding: p5.js sketches and Manim math/algorithm animations for visual art, generative graphics, and educational videos.
SkillBFreshness: BClaude Code +9 - 0.514score
unicode-track-titles
maximusmaximus
Stylize track titles using cool uncommon Unicode characters.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 3, 2026 (26 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/maximusmaximus/Mcmusic
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from maximusmaximus
- 0.557score
poa-floor
maximusmaximus
Interact with Proof Floor (https://poa.grok.me) using poa-agent-kit (`poa.py floor`) over JSON-RPC MCP (`https://poa.grok.me/api/mcp`).
SkillAFreshness: AClaude Code +9 - 0.557score
poa-onboarding
maximusmaximus
Onboard an autonomous agent onto Proof of Agent (minepoa.com) and Proof Floor (poa.grok.me) on Linux, macOS, or Windows.
SkillAFreshness: AClaude Code +9 - 0.557score
a2a-client
maximusmaximus
Send tasks, queries, and instructions to the PlanetaryExplorer A2A (Agent2Agent) server over Tailscale.
SkillAFreshness: AClaude Code +9 - 0.557score
artwork
maximusmaximus
Full album/playlist cover art pipeline — background generation via Venice AI (grok-imagine-image-quality), upscale to 3000×3000, waveform banner extraction…
SkillAFreshness: AClaude Code +9 - 0.557score
poa-mine
maximusmaximus
Runs one Proof of Agent (minepoa.com) mining cycle on Linux, macOS, or Windows using poa-agent-kit.
SkillAFreshness: AClaude Code +9 - 0.556score
meeting-workflow-setup
maximusmaximus
Request and verify Calendly, Read.ai, and GitHub before the meeting-to-ship workflow runs.
SkillAFreshness: AClaude Code +9
Cite this page
soundcloud skill. Agent Mart. https://agentmart.dev/skills/maximusmaximus-soundcloud (last updated 2026-10-24)