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.4.tar.gz (1.3 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.4-py3-none-any.whl (81.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vdl-1.0.4.tar.gz
  • Upload date:
  • Size: 1.3 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.4.tar.gz
Algorithm Hash digest
SHA256 a47ddda8fb50775d562cbb46063c98a15b443768e32a3bc49937320b98b30057
MD5 bb3be134dc445522db3cf3f534f54e7e
BLAKE2b-256 4b9c33764d475ba654b642d5e1c8cc856ce784b19edf774b4a0a18f74d54f38e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vdl-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 81.3 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 af33fa499405d2f8d174f3065cb2e53bcc8ea2dfbd45dfb38843f07dddca62de
MD5 d7e79da54c9696fa882009123d05c951
BLAKE2b-256 69841d7f9ffd1ce096f09715b084ddfc41e6cee554a632f883d269273a0f16e7

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