ClawKit Logo
ClawKitReliability Toolkit
Back to Registry
Official Verified

dj-set-ripper

Download individual songs from a DJ set or mix. Given a link from YouTube, SoundCloud, Mixcloud, or 1001Tracklists, extract the tracklist from the page description or metadata, then look up and download each track individually using the dj-mp3-sourcer skill. Use when a user shares a DJ set/mix link and wants the individual tracks downloaded, or when they paste a tracklist and want all tracks sourced. Generates a timestamped log file showing the status of every track (downloaded, purchase link, not found, bootleg/unavailable, unidentified). Also optionally downloads the full mix as a backup.

skill-install — Terminal

Install via CLI (Recommended)

clawhub install openclaw/skills/skills/robinnnnn/dj-set-ripper
Or

DJ Set Ripper

Extract tracklists from DJ sets and download each track individually.

⚠️ Legal Notice: This skill is intended for downloading music you have the right to access — purchases, free releases, creative commons, etc. Respect copyright laws in your jurisdiction. The author is not responsible for misuse.

Dependencies

Same as dj-mp3-sourcer (yt-dlp, ffmpeg/ffprobe, spotdl). No additional dependencies.

Workflow

1. Extract Page Content

Fetch the set URL and extract raw text (description, metadata, comments):

YouTube:

yt-dlp --dump-json "<url>" | jq -r '.description'

SoundCloud / Mixcloud: Use web_fetch to grab the page content in markdown mode.

1001Tracklists: Use web_fetch — this source has the most structured data. Prefer it when available.

2. Parse the Tracklist (LLM-Powered)

Feed the raw page content to the model with this prompt structure:

Extract all tracks from this DJ set description. Return a JSON array of objects:
[{"number": 1, "timestamp": "0:00", "artist": "Artist Name", "title": "Track Title (Mix Name)"}]

Rules:
- Preserve remix/mix names in the title (e.g. "Original Mix", "Extended Mix", "Remix")
- If a track is listed as "ID - ID" or "ID", set artist and title both to "ID"
- If only a timestamp exists with no track info, skip it
- Normalize artist names (fix ALL CAPS, etc.)
- If no timestamps exist, set timestamp to null
- Number tracks sequentially starting from 1

Raw content:
"""
{description_text}
"""

If parsing returns zero tracks, inform the user the tracklist couldn't be extracted and suggest:

  • Checking 1001Tracklists manually
  • Pasting the tracklist directly

3. Download Each Track

For each parsed track (skipping any with artist AND title = "ID"):

  1. Use the dj-mp3-sourcer workflow: search sources in priority order, prefer extended mixes, download or surface purchase links
  2. Use sessions_spawn to parallelize downloads (batch of 3-5 at a time to avoid rate limits)
  3. Save files to: ~/Downloads/{set-name}/

Set name is derived from the mix title (sanitized for filesystem).

4. Optionally Download the Full Mix

Ask the user if they also want the full mix downloaded. If yes:

yt-dlp -x --audio-format mp3 --audio-quality 0 \
  --embed-thumbnail --add-metadata \
  -o "~/Downloads/{set-name}/{set-name} [Full Mix].%(ext)s" "<url>"

5. Normalize Filenames

After all downloads complete (not per-batch — wait for every sub-agent to finish), run the normalization script once:

# 1. Write the parsed tracklist as JSON
cat > /tmp/tracklist.json << 'EOF'
[{"artist": "Artist", "title": "Title"}, ...]
EOF

# 2. Run normalize
scripts/normalize-filenames.sh ~/Downloads/{set-name} /tmp/tracklist.json

Metadata

Author@robinnnnn
Stars1133
Views0
Updated2026-02-18
View Author Profile
AI Skill Finder

Not sure this is the right skill?

Describe what you want to build — we'll match you to the best skill from 16,000+ options.

Find the right skill
Add to Configuration

Paste this into your clawhub.json to enable this plugin.

{
  "plugins": {
    "official-robinnnnn-dj-set-ripper": {
      "enabled": true,
      "auto_update": true
    }
  }
}
Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.