agentCLAWHUBUnverified

Bootleg Link Mcp

MCP Server — YouTube/Qobuz/Beatport 下载 | CDJ-2000 兼容 MP3 (48kHz/320k CBR/JPEG封面) | Bootleg-Link Flow (Try Before Buy) | 20 MCP Tools | 断点续传 | 智能命名 | 播放列表分页 |... Skill: Bootleg Link Mcp Owner: esanle Summary: MCP Server — YouTube/Qobuz/Beatport 下载 | CDJ-2000 兼容 MP3 (48kHz/320k CBR/JPEG封面) | Bootleg-Link Flow (Try Before Buy) | 20 MCP Tools | 断点续传 | 智能命名 | 播放列表分页 |... Tags: MCP:0.9.2, audio:0.9.2, beatport:0.9.2, cdj:0.9.2, dj:0.9.2, download:0.9.2, latest:0.9.3, mp3:0.9.2, music:0.9.2, qobuz:0.9.2, youtube:0.9.2 Version history: v0.9.3 | 2026-06-04T02:32:45.740Z | user 修复并发下载

OpenClaw

Rank

62

Safety

84

Downloads

1.3k

Updated

Oct 10, 2026

Version

0.9.3

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 10, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 10, 2026
Adoption signal
1.3K downloadsadoption · observed Oct 10, 2026
Latest release
0.9.3release · observed Jun 4, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s1768xfhd0cm36583vncac7s9x83hbsb:bootleg-link-mcp
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-esanle-bootleg-link-mcp/snapshot"

Documentation

CLAWHUB

147,293 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: Bootleg-Link MCP
version: 0.9.0
description: "MCP Server — YouTube/Qobuz/Beatport 下载 | CDJ-2000 兼容 MP3 (48kHz/320k CBR/JPEG封面) | Bootleg-Link Flow (Try Before Buy) | 20 MCP Tools | 断点续传 | 智能命名 | 播放列表分页 | bgutil PO Token"
metadata:
  openclaw:
    emoji: "🎵"
    os: ["linux", "darwin"]
    requires:
      bins: ["python3>=3.10", "ffmpeg", "node>=24"]
---

# Bootleg-Link MCP v0.9.0

Python MCP server for downloading music from YouTube, Qobuz, and Beatport. Outputs CDJ-2000 compatible MP3 (48kHz/320k CBR/JPEG cover). Features task queue with resume, concurrent downloads, and intelligent file naming.

## Architecture

Single-file Python MCP server (`src/server.py`) over stdin/stdout JSON-RPC 2.0.

- **Multi-source**: YouTube (yt-dlp), Qobuz (qobuz-dl), Beatport (Playwright + requests)
- **CDJ-2000 Format**: 48kHz/320k CBR MP3, JPEG cover (WebP→JPEG auto-convert), no video streams
- **Task Queue**: In-memory + SQLite persistence, auto-resume on restart
- **Parallel Download**: ThreadPoolExecutor with configurable workers (max 32)
- **Paged Playlist**: Flat extraction (100/page) for large channel downloads
- **Smart Naming**: `Artist - Title (Mix) [LABEL].mp3` with auto artist extraction from YouTube metadata
- **YouTube Auth**: Playwright + Xvfb stealth Chromium login, bgutil PO Token provider
- **Config**: `~/.bootleg-link-mcp/config.json` for paths, proxy, quality, concurrency

## MCP Tools (20)

### Download & Task Management
| Tool | Description |
|------|-------------|
| `submit_download_task` | Submit YouTube URL (channel/playlist/video/search) |
| `query_progress` | Query task progress (incl. outputDir, url) |
| `list_tasks` | List all tasks with status filter |
| `cancel_task` | Cancel pending/downloading task |
| `clear_completed` | Clear completed/failed/cancelled tasks |
| `clear_database` | Clear ALL tasks and videos |
| `get_queue_status` | Queue metrics (active, queued, total) |

### YouTube
| Tool | Description |
|------|-------------|
| `youtube_login` | Playwright stealth Google login |
| `youtube_auth_status` | Check cookie authentication |
| `youtube_logout` | Clear YouTube cookies |

### Qobuz
| Tool | Description |
|------|-------------|
| `qobuz_login` | Login to Qobuz |
| `qobuz_search` | Search tracks/albums/artists |
| `qobuz_download` | Download (MP3 320 / CD FLAC / Hi-Res 96k / 192k) |
| `qobuz_my_purchases` | List purchased/favorite tracks |

### Beatport
| Tool | Description |
|------|-------------|
| `beatport_login` | Playwright login to Beatport |
| `beatport_search` | Search Beatport catalog |
| `beatport_download` | Download owned tracks |

## Dependencies

- `yt-dlp>=2026.05.25` — YouTube extraction (with Node.js for JS challenge solving)
- `mutagen` — MP3 ID3 tag + cover art embedding
- `playwright` — Stealth browser login (optional, for YouTube/Beatport auth)
- `qobuz-dl` — Qobuz integration (optional)
- `bgutil-ytdlp-pot-provider` — PO Token for YouTube (auto-started)
- `ffmpeg` — Audio extraction + for

bgutil-ytdlp-pot-provider/README.md

# BgUtils POT Provider

> [!CAUTION]
> Providing a PO token does not guarantee bypassing 403 errors or bot checks, but it _may_ help your traffic seem more legitimate.

[![Docker Image Version (tag)](https://img.shields.io/docker/v/brainicism/bgutil-ytdlp-pot-provider/latest?style=for-the-badge&label=docker)](https://hub.docker.com/r/brainicism/bgutil-ytdlp-pot-provider)
[![GitHub Release](https://img.shields.io/github/v/release/Brainicism/bgutil-ytdlp-pot-provider?style=for-the-badge)](https://github.com/Brainicism/bgutil-ytdlp-pot-provider/releases)
[![PyPI - Version](https://img.shields.io/pypi/v/bgutil-ytdlp-pot-provider?style=for-the-badge)](https://pypi.org/project/bgutil-ytdlp-pot-provider/)
[![CI Status](https://img.shields.io/github/actions/workflow/status/Brainicism/bgutil-ytdlp-pot-provider/test.yml?branch=master&label=Tests&style=for-the-badge)](https://github.com/Brainicism/bgutil-ytdlp-pot-provider/actions/workflows/test.yml)

[Frequently Asked Questions](https://github.com/Brainicism/bgutil-ytdlp-pot-provider?tab=readme-ov-file#faq)

A proof-of-origin token (POT) provider for yt-dlp. We use [LuanRT's Botguard interfacing library](https://github.com/LuanRT/BgUtils) to generate the token.
This project was used to bypass the 'Sign in to confirm you're not a bot' message when invoking yt-dlp from an IP address flagged by YouTube. See _[PO Token Guide](https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide)_ for more details.

The provider comes in two parts:

1. **Provider**: Two options -
   - (a) An HTTP server that generates the POT, and has interfaces for the plugin to retrieve data from (much faster, easy setup + docker image provided with Deno/Node.js support)
   - (b) A POT generation script, and has command line options for the plugin to invoke (needs to transpile the script)
2. **Provider plugin**: retrieves tokens from the provider and provides the token for yt-dlp using _[PO Token Provider Framework](https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/extractor/youtube/pot/README.md)_.

## Installation

### Base Requirements

1. yt-dlp `2025.05.22` or above.

2. If using Docker image for option (a) for the provider, the Docker runtime is required.  
   Otherwise, Node.js (>= 20) or Deno (>= 2.0.0) is required. You will also need git to clone the repository.

### 1. Set up the provider

There are two options for the provider, an always running POT generation HTTP server, and a POT generation script invoked when needed. The HTTP server option is simpler, faster, and comes with a prebuilt Docker image. **You only need to choose one option.**

You need to first install the repository unless you are using the Docker image for the HTTP server:

```shell
# Replace 1.3.1 with the latest version or the one that matches the plugin
git clone --single-branch --branch 1.3.1 https://github.com/Brainicism/bgutil-ytdlp-pot-provider.git
cd bgutil-ytdlp-pot-provider/server/
# If you are using Node:
npm ci
npx tsc
# Otherwise, if you want to use

bgutil-ytdlp-pot-provider/server/README.md

If using the provider along with yt-dlp as intended, stop reading here. The server and script will be used automatically with no intervention required.

If you are interested in using the script/server standalone for generating your own PO token, read onwards.

> [!CAUTION] 
> These endpoints and options are **unstable** and may change without notice.

# Server

**Endpoints**

- **POST /get_pot**: Generate a new POT.
    - The request data should be a JSON including:
        - `content_binding`: [Content binding](#content-binding) (optional, set to visitor data in `innertube_context` or a freshly generated visitor data if null).
        - `proxy`: A string indicating the proxy to use for the requests (optional).
        - `bypass_cache`: boolean, when set to true, bypasses any cache if present (optional).
        - `challenge`: string or null, the BotGuard challenge from Innertube (optional).
        - `disable_tls_verification`: boolean, when set to true, disables TLS certificate verification. (optional)
        - `innertube_context`: object, the innertube context to be sent in the innertube request in case `challenge` is not present. Note that when available, the public IP in the innertube context is used as the cache key for POTs. (optional)
        - `source_address`: string, the cient-side IP address to bind to. (optional)
    - Returns a JSON:
        - `poToken`: The POT.
        - `contentBinding`: The generated or passed [content binding](#content-binding).
        - `expiresAt`: The expiry timestamp of the POT entry.
- **GET /ping**: Ping the server. The response includes:
    - `server_uptime`: Uptime of the server process in seconds.
    - `version`: Current server version.

# Script Method

**Options**

- `-c, --content-binding <content-binding>`: The [content binding](#content-binding), optional.
- `-p, --proxy <proxy-all>`: The proxy to use for the requests, optional.
- `-b, --bypass-cache`: See `bypass_cache` from the `POST /get_pot` endpoint.
- `-s, --source-address <source-address>`: See `source_address` from the `POST /get_pot` endpoint, optional.
- `--innertube-context <innertube-context>`: See `innertube_context` from the `POST /get_pot` endpoint, optional.
- `--disable-tls-verification`: See `disable_tls_verification` from the above endpoint.
- `--version`: Print the script version and exit.
- `--verbose`: Use verbose logging.

**Environment Variables**

- **TOKEN_TTL**: The time in hours for a PO token to be considered valid. While there are no definitive answers on how long a token is valid, it has been observed to be valid for at least a couple of days (Default: 6).

### Content Binding

Content bindings refer to the data used to generate a PO Token.

GVS WEBPO tokens (See [PO Tokens for GVS](https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide#po-tokens-for-gvs) from the PO Token Guide) used to be session-bound so the content binding for a GVS token is either a Visitor ID (also known as `visitorData`, `VISITOR_INFO1_LIVE

README.md

# 🎵 Bootleg-Link MCP v0.9.0

> AI 助手专属的音乐下载 MCP 服务器 — YouTube、Qobuz、Beatport 一站式下载,CDJ-2000 兼容格式

---

## 功能矩阵

### 🎧 下载与任务管理
| 工具 | 功能 |
|------|------|
| `submit_download_task` | 提交 YouTube 下载(支持频道/播放列表/单视频/搜索) |
| `query_progress` | 查询任务进度(含下载目录、链接、入库数) |
| `list_tasks` | 列出所有任务 |
| `cancel_task` | 取消任务 |
| `clear_completed` / `clear_database` | 清理已完成/清空数据库 |
| `get_queue_status` | 队列状态(并发数、引擎信息) |

### 📺 YouTube
| 工具 | 功能 |
|------|------|
| `youtube_login` | Playwright 隐身登录 Google 账号 |
| `youtube_auth_status` | 检查 cookie 认证状态 |
| `youtube_logout` | 清除登录 |

### 🎹 Qobuz
| 工具 | 功能 |
|------|------|
| `qobuz_login` | 登录 Qobuz |
| `qobuz_search` | 搜索曲目/专辑/艺人 |
| `qobuz_download` | 下载高解析音频(MP3 320 / CD FLAC / Hi-Res 96k / 192k) |
| `qobuz_my_purchases` | 列出已购/收藏曲目 |

### 🎧 Beatport
| 工具 | 功能 |
|------|------|
| `beatport_login` | Playwright 登录 Beatport |
| `beatport_search` | 搜索 Beatport 曲库 |
| `beatport_download` | 下载已购曲目 |

---

## 🎚️ CDJ-2000 兼容格式

每首下载的 MP3 自动处理为老设备兼容格式:

- **48kHz / 320k CBR** 恒定比特率
- **JPEG 封面**嵌入(WebP→JPEG 自动转换)
- **无视频流**(`-vn` 清除)
- **ID3v2.3 标签**(artist、title、BPM、调性等完整元数据)

---

## ⚙️ 核心特性

### 智能下载目录
下载时自动从 URL 提取标签名/频道名在默认目录下建子目录。
```json
// ~/.bootleg-link-mcp/config.json
{
  "paths": { "outputDir": "/mnt/e/music" },
  "download": { "maxConcurrent": 32, "quality": "320" },
  "proxy": { "http": "http://100.64.0.3:1081" }
}
```
不指定 `outputDir` → 自动按 `[Label Name]` 建子目录。

### 断点续传
- SQLite 持久化每个任务的进度
- 重启后自动恢复未完成任务
- `downloaded_videos` 表去重,已下载的自动跳过

### YouTube 隐身登录
- Playwright + Xvfb 非无头 Chromium 绕过反爬检测
- 自动导出 Netscape 格式 cookie 给 yt-dlp 使用

### bgutil PO Token 自动启动
- 服务启动时自动拉起 `bgutil-ytdlp-pot-provider` HTTP 服务(端口 4416)
- Node.js v24+ 路径自动定位(`~/.nvm/versions/node/`)

### 并行分页下载
- 播放列表/频道按 100 条分页拉取(flat-playlist 模式)
- 内层 `ThreadPoolExecutor` 并发下载(最大 32 线程)
- 首映视频自动跳过

### 文件命名规范
```
Artist - Title (Remixer Remix) [LABEL].mp3
```
- 缺艺术家 → YouTube 详情页自动提取 `artist` 字段
- 缺混音标记 → 自动补 `(Original Mix)`
- 多标签自动识别(TECHAWAY RECORDS、NVDRZ、DRUMCODE 等 10+ label)

---

## 🔌 安装

```json
// .mcp.json
{
  "mcpServers": {
    "bootleg-link": {
      "command": "/opt/pyenv/versions/3.11.8/bin/python3",
      "args": ["/path/to/bootleg-link-mcp/src/server.py"],
      "env": {
        "BOOTLEG_DB_PATH": "/path/to/bootleg-link.db",
        "BOOTLEG_HTTP_PROXY": "http://proxy:1081",
        "BOOTLEG_HTTPS_PROXY": "http://proxy:1081"
      }
    }
  }
}
```

### 前置依赖
```bash
pip install yt-dlp mutagen
# YouTube 登录需要: playwright (chromium)
# Qobuz 需要: qobuz-dl
# Node.js ≥24 (配合 bgutil PO Token)
```

---

## 🗂️ 数据库

| 表 | 用途 |
|---|------|
| `tasks` | 任务状态(14 字段:url、outputDir、进度、songsCompleted 等) |
| `downloaded_videos` | 已下载视频去重(task_id + video_id 联合主键) |

---

## 🔧 技术栈

- **yt-dlp** Python API(2026.05.25+)
- **SQLite** 持久化
- **ThreadPoolExecutor** 双层并发
- **Playwright** 隐身浏览器登录
- **bgutil-ytdlp-pot-provider** PO Token 绕过
- **mutagen** ID3 标签处理
- **ffmpeg** 音频提取 + 格式转换 + 封面转换

---

## 🗺️ 路线图

### 🎯 正版优先无缝切换(设计阶段)

核心理念:**Bootleg-L

_meta.json

{
  "ownerId": "kn78xxw8r3tz0dcajntdj55q3980x0cz",
  "slug": "bootleg-link-mcp",
  "version": "0.9.3",
  "publishedAt": 1780540365740
}
Github ReposUpdated 1d agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/esanle/skills/bootleg-link-mcp",
      "sourceUrl": "https://clawhub.ai/esanle/skills/bootleg-link-mcp",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T18:28:24.936Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-esanle-bootleg-link-mcp/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-esanle-bootleg-link-mcp/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-10T18:28:24.936Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.3K downloads",
      "href": "https://clawhub.ai/esanle/bootleg-link-mcp",
      "sourceUrl": "https://clawhub.ai/esanle/bootleg-link-mcp",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T18:28:24.936Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "0.9.3",
      "href": "https://clawhub.ai/esanle/bootleg-link-mcp",
      "sourceUrl": "https://clawhub.ai/esanle/bootleg-link-mcp",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-06-04T02:32:45.740Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-esanle-bootleg-link-mcp/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-esanle-bootleg-link-mcp/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 0.9.3",
      "description": "修复并发下载封面丢失、ID3元数据清理、CIFS文件操作稳定性、下载后验证逻辑",
      "href": "https://clawhub.ai/esanle/bootleg-link-mcp",
      "sourceUrl": "https://clawhub.ai/esanle/bootleg-link-mcp",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-06-04T02:32:45.740Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 10, 2026.

Sponsored

Ads related to Bootleg Link Mcp and adjacent AI workflows.