Skip to main content

A local-first media workflow toolkit for downloads, playlists, and automation through CLI and MCP interfaces

Project description

VDL

VDL logo

VDL is a local-first media workflow toolkit for downloading videos, downloading playlists, crawling websites for downloadable media, managing local link lists, and automating those workflows from the CLI, Python library, tool API, or MCP.

flowchart TD
  StandaloneBinary["curl install.sh<br/>Standalone binary"]
  PythonPkg["pip install vdl<br/>Python package"]
  
  StandaloneBinary --> CLI["vdl CLI"]
  StandaloneBinary --> App["Interactive app"]
  StandaloneBinary --> MCP1["vdl-mcp"]
  
  PythonPkg --> Library["Python library<br/>import vdl"]
  PythonPkg --> CLI
  PythonPkg --> App
  PythonPkg --> Tools["vdl.tools"]
  PythonPkg --> MCP2["MCP server<br/>pip install vdl[mcp]"]
  
  style StandaloneBinary fill:#0277bd,color:#fff
  style PythonPkg fill:#7b1fa2,color:#fff
  style MCP2 fill:#e65100,color:#fff

Install vdl Binary

Use the standalone installer when you want the commands without setting up a Python project:

curl -fsSL https://bildcraft.gitlab.io/products/video-downloader/vdl/install.sh | sh

This gives you:

  • vdl
  • vdl-mcp

Interactive Download App

Start the interactive app with:

vdl

It opens an interactive terminal interface:

VDL Interactive App

The app guides you through:

  1. Input — paste a URL, local file path, or .txt link list
  2. Quality — choose preferred resolution (best, 2160p, 1440p, 1080p, 720p, 480p, or audio)
  3. Output — set download directory (default: ~/Downloads/VDL)
  4. Options — save thumbnails and subtitles
  5. Mode — download directly or crawl the page for more links

Perfect for downloading single videos, playlists, or discovering downloadable media on websites.

CLI Commands

Check the installed binary:

vdl --version

Run direct commands:

vdl download https://example.com/video
vdl playlist https://example.com/playlist
vdl resolve https://example.com/playlist
vdl status
vdl doctor

Install as Python Library

Use the Python package when you want to embed VDL in another Python project:

pip install vdl

That gives you:

  • the vdl Python library
  • the vdl CLI
  • the interactive app entrypoint
  • vdl.tools

Use the library directly:

import asyncio

from vdl import VDLClient


async def main() -> None:
    client = VDLClient()
    result = await client.download("https://example.com/video")
    print(result.status)


asyncio.run(main())

Use the tool surface:

import asyncio

from vdl.tools import download_video


async def main() -> None:
    result = await download_video("https://example.com/video")
    print(result["status"])


asyncio.run(main())

MCP Support

Install the MCP extra when you want vdl-mcp:

pip install "vdl[mcp]"

That adds MCP support on top of the Python package. If you installed the standalone binary, vdl-mcp is already included there too.

Example MCP client config:

{
  "mcpServers": {
    "vdl": {
      "command": "vdl-mcp",
      "args": []
    }
  }
}

Examples

Each demo in demos/ illustrates a single workflow:

Demo Use Case
download_video.py Download a single video
download_video_with_progress.py Track download progress in real-time
download_playlist.py Download an entire playlist
resolve_playlist.py Inspect playlist items before downloading
download_link_file.py Batch download URLs from a .txt file
crawl_websites.py Discover and download media on a webpage

All demos use placeholder URLs — copy and edit with your own.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vdl-1.0.6.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vdl-1.0.6-py3-none-any.whl (97.7 kB view details)

Uploaded Python 3

File details

Details for the file vdl-1.0.6.tar.gz.

File metadata

  • Download URL: vdl-1.0.6.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for vdl-1.0.6.tar.gz
Algorithm Hash digest
SHA256 12fd9619a1a7a697795c1c33e31d5f07ef2fd0c21e28b353a409afe8b6028562
MD5 a8dae23b11fd5e35cb67de0905d8c262
BLAKE2b-256 35df89e0f70331bd7eef3b8760712c933b5f146397904011deb38339ea804f72

See more details on using hashes here.

File details

Details for the file vdl-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: vdl-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 97.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for vdl-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 94275bb4ad0405f55690c53ad950933c702bd5337ac876170480ab7933b76ccd
MD5 ec82f6722fb11ddf442d96e3049102d7
BLAKE2b-256 df90e44c4a578488ce1fc725c8ddf539572b6591ab6ba3ecbeb2dea4689e2370

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page