{
  "schemaVersion": "1.0",
  "item": {
    "slug": "dj-mp3-sourcer",
    "name": "DJ mp3 sourcer",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Robinnnnn/dj-mp3-sourcer",
    "canonicalUrl": "https://clawhub.ai/Robinnnnn/dj-mp3-sourcer",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/dj-mp3-sourcer",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=dj-mp3-sourcer",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/normalize-filenames.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "dj-mp3-sourcer",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-02T08:30:53.654Z",
      "expiresAt": "2026-05-09T08:30:53.654Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=dj-mp3-sourcer",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=dj-mp3-sourcer",
        "contentDisposition": "attachment; filename=\"dj-mp3-sourcer-1.0.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "dj-mp3-sourcer"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/dj-mp3-sourcer"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/dj-mp3-sourcer",
    "agentPageUrl": "https://openagent3.xyz/skills/dj-mp3-sourcer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/dj-mp3-sourcer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/dj-mp3-sourcer/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "DJ MP3 Sourcer",
        "body": "DJ-oriented music downloading skill. Takes any music link and finds the best available source, prioritizing extended mixes and MP3 320k output.\n\n⚠️ 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."
      },
      {
        "title": "Dependencies",
        "body": "pip install yt-dlp spotdl\nbrew install ffmpeg  # needed by yt-dlp for audio extraction\n\n# optional\npip install bandcamp-dl  # for free bandcamp downloads"
      },
      {
        "title": "Source Priority",
        "body": "Search in this order — stop at the first match:\n\nBandcamp — supports artists directly, often has extended mixes\nBeatport — DJ-standard, has BPM/key metadata, extended mixes\nAmazon Music — digital purchase option\nSpotify (via spotdl) — good metadata/tagging, 320k MP3\nYouTube (via yt-dlp) — fallback, always works\n\nFor paid sources (bandcamp, beatport, amazon), surface the purchase link with price. For free sources, download directly.\n\nIf free only mode is enabled, skip steps 1-3 and go straight to spotdl → yt-dlp."
      },
      {
        "title": "Core Rule: Prefer Extended Mixes",
        "body": "Always prefer the extended mix over radio edits. An extended mix from a lower-priority source beats a radio edit from a higher-priority one.\n\nExample: extended mix on YouTube > radio edit on Spotify.\n\nWhen searching, append \"extended mix\" to queries. If only a radio edit exists, note it in the output."
      },
      {
        "title": "Workflow",
        "body": "Identify the track — extract artist + title:\nyt-dlp --dump-json \"<url>\" | jq '{title, artist: .artist // .uploader, duration}'\n\n\nSearch each source using web_search:\n\"<artist> <title> extended mix site:bandcamp.com\"\n\"<artist> <title> extended mix site:beatport.com\"\n\"<artist> <title> site:amazon.com/music\"\n\n\nDownload or link — free sources download; paid sources return purchase URL with price\nTag the file — artist, title, album, cover art. Note BPM/key if available from beatport."
      },
      {
        "title": "spotdl",
        "body": "spotdl download \"<spotify-url>\" --output \"{artist} - {title}\" --format mp3 --bitrate 320k"
      },
      {
        "title": "yt-dlp",
        "body": "yt-dlp -x --audio-format mp3 --audio-quality 0 \\\n  --embed-thumbnail --add-metadata \\\n  --metadata-from-title \"%(artist)s - %(title)s\" \\\n  -o \"%(artist)s - %(title)s.%(ext)s\" \"<url>\""
      },
      {
        "title": "Post-Download: Filename Normalization",
        "body": "yt-dlp filenames are often messy (NA - prefixes, (Official Video) suffixes, label names, wrong artist credits). Always run the normalization script after downloads complete.\n\nUsage:\n\n# 1. Write the tracklist as JSON (from the parsed tracklist in step 2)\ncat > /tmp/tracklist.json << 'EOF'\n[{\"artist\": \"Karol G\", \"title\": \"Ivonny Bonita\"}, {\"artist\": \"Doja Cat\", \"title\": \"Woman (Never Dull's Disco Rework)\"}]\nEOF\n\n# 2. Run the normalize script\nscripts/normalize-filenames.sh ~/Downloads/set-name /tmp/tracklist.json\n\nThe script fuzzy-matches each mp3 in the directory to a tracklist entry and renames to clean Artist - Title.mp3 format. Unmatched files are left untouched.\n\nThe tracklist is the source of truth for filenames, not YouTube metadata."
      },
      {
        "title": "Configuration",
        "body": "SettingDefaultNotesOutput directory~/Downloads/Where files are saved (subfolder per set when used with dj-set-ripper)Formatmp3 320kHigh-bitrate MP3; configurable to flac if neededExtended mixalwaysPrefer extended/original mix over radio editFree onlyfalseWhen true, skip paid sources (bandcamp, beatport, amazon) — only use spotdl and yt-dlp"
      },
      {
        "title": "Batch Processing",
        "body": "When given multiple links, process in parallel using sub-agents (sessions_spawn). Report results as each track completes."
      },
      {
        "title": "Edge Cases",
        "body": "DJ mixes / long sets — download via yt-dlp directly, skip source searching\nUnavailable tracks — report clearly, suggest alternatives if found\nRegion-locked content — note restriction, try alternative sources\nRemix vs original — if the link is a specific remix, search for that exact remix, not the original"
      }
    ],
    "body": "DJ MP3 Sourcer\n\nDJ-oriented music downloading skill. Takes any music link and finds the best available source, prioritizing extended mixes and MP3 320k output.\n\n⚠️ 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.\n\nDependencies\npip install yt-dlp spotdl\nbrew install ffmpeg  # needed by yt-dlp for audio extraction\n\n# optional\npip install bandcamp-dl  # for free bandcamp downloads\n\nSource Priority\n\nSearch in this order — stop at the first match:\n\nBandcamp — supports artists directly, often has extended mixes\nBeatport — DJ-standard, has BPM/key metadata, extended mixes\nAmazon Music — digital purchase option\nSpotify (via spotdl) — good metadata/tagging, 320k MP3\nYouTube (via yt-dlp) — fallback, always works\n\nFor paid sources (bandcamp, beatport, amazon), surface the purchase link with price. For free sources, download directly.\n\nIf free only mode is enabled, skip steps 1-3 and go straight to spotdl → yt-dlp.\n\nCore Rule: Prefer Extended Mixes\n\nAlways prefer the extended mix over radio edits. An extended mix from a lower-priority source beats a radio edit from a higher-priority one.\n\nExample: extended mix on YouTube > radio edit on Spotify.\n\nWhen searching, append \"extended mix\" to queries. If only a radio edit exists, note it in the output.\n\nWorkflow\nIdentify the track — extract artist + title:\nyt-dlp --dump-json \"<url>\" | jq '{title, artist: .artist // .uploader, duration}'\n\nSearch each source using web_search:\n\"<artist> <title> extended mix site:bandcamp.com\"\n\"<artist> <title> extended mix site:beatport.com\"\n\"<artist> <title> site:amazon.com/music\"\n\nDownload or link — free sources download; paid sources return purchase URL with price\nTag the file — artist, title, album, cover art. Note BPM/key if available from beatport.\nDownload Commands\nspotdl\nspotdl download \"<spotify-url>\" --output \"{artist} - {title}\" --format mp3 --bitrate 320k\n\nyt-dlp\nyt-dlp -x --audio-format mp3 --audio-quality 0 \\\n  --embed-thumbnail --add-metadata \\\n  --metadata-from-title \"%(artist)s - %(title)s\" \\\n  -o \"%(artist)s - %(title)s.%(ext)s\" \"<url>\"\n\nPost-Download: Filename Normalization\n\nyt-dlp filenames are often messy (NA - prefixes, (Official Video) suffixes, label names, wrong artist credits). Always run the normalization script after downloads complete.\n\nUsage:\n\n# 1. Write the tracklist as JSON (from the parsed tracklist in step 2)\ncat > /tmp/tracklist.json << 'EOF'\n[{\"artist\": \"Karol G\", \"title\": \"Ivonny Bonita\"}, {\"artist\": \"Doja Cat\", \"title\": \"Woman (Never Dull's Disco Rework)\"}]\nEOF\n\n# 2. Run the normalize script\nscripts/normalize-filenames.sh ~/Downloads/set-name /tmp/tracklist.json\n\n\nThe script fuzzy-matches each mp3 in the directory to a tracklist entry and renames to clean Artist - Title.mp3 format. Unmatched files are left untouched.\n\nThe tracklist is the source of truth for filenames, not YouTube metadata.\n\nConfiguration\nSetting\tDefault\tNotes\nOutput directory\t~/Downloads/\tWhere files are saved (subfolder per set when used with dj-set-ripper)\nFormat\tmp3 320k\tHigh-bitrate MP3; configurable to flac if needed\nExtended mix\talways\tPrefer extended/original mix over radio edit\nFree only\tfalse\tWhen true, skip paid sources (bandcamp, beatport, amazon) — only use spotdl and yt-dlp\nBatch Processing\n\nWhen given multiple links, process in parallel using sub-agents (sessions_spawn). Report results as each track completes.\n\nEdge Cases\nDJ mixes / long sets — download via yt-dlp directly, skip source searching\nUnavailable tracks — report clearly, suggest alternatives if found\nRegion-locked content — note restriction, try alternative sources\nRemix vs original — if the link is a specific remix, search for that exact remix, not the original"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Robinnnnn/dj-mp3-sourcer",
    "publisherUrl": "https://clawhub.ai/Robinnnnn/dj-mp3-sourcer",
    "owner": "Robinnnnn",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/dj-mp3-sourcer",
    "downloadUrl": "https://openagent3.xyz/downloads/dj-mp3-sourcer",
    "agentUrl": "https://openagent3.xyz/skills/dj-mp3-sourcer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/dj-mp3-sourcer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/dj-mp3-sourcer/agent.md"
  }
}