VideoForge
VideoForge is a constrained Rust library for inspecting and archiving exact,
public YouTube videos through an external yt-dlp process. It deliberately has
no command-line binary and does not expose arbitrary yt-dlp arguments.
Version 0.1 is YouTube-only; other providers such as X/Twitter are not accepted.
Requirements
- Rust 1.85 or newer.
- A current
yt-dlpexecutable onPATH, or an explicit executable path. ffmpegandffprobeonPATHfor archive downloads.- The JavaScript runtime and YouTube EJS components recommended by the installed
yt-dlprelease (commonly Deno plus the EJS component) when YouTube extraction requires them. VideoForge disables remote component fetching, so install these dependencies independently and followyt-dlp's official installation guide.
For example, install yt-dlp using an official package, Python package, or
release binary, and install ffmpeg from the operating system package manager.
VideoForge never self-updates these tools.
Usage
use ;
use ;
VideoForge::with_executable selects a specific yt-dlp. Call
dependency_info to report yt-dlp, ffmpeg, and ffprobe versions. The
progress API reports inspection, download, verification, installation, skip,
failure, and completion phases without exposing extractor data.
Scope And Safety
Accepted input is HTTPS only and must identify one 11-character YouTube video:
youtube.com/watch?v=ID, youtu.be/ID, youtube.com/shorts/ID,
youtube.com/live/ID, or youtube.com/embed/ID. www.youtube.com and
m.youtube.com are also accepted. Credentials, ports, fragments, playlists,
list parameters, extra query parameters, and other hosts or paths are rejected.
Downloads require ArchiveOptions::authorized = true; the caller is responsible
for determining that it is authorized to save the content. The defaults impose a
2 GiB byte cap and a 30-minute timeout. VideoForge supports MP4, WebM, and Matroska
outputs, checks container magic, hashes content with BLAKE3, and writes
videoforge-video.json beside exactly one media file.
Existing recognized archives are fully verified before a requested skip.
Current provider metadata and the requested quality policy must also match.
Corrupt or stale recognized archives are rebuilt with staged replacement and
rollback for ordinary runtime failures. A destination without a recognized
VideoForge manifest or an internal installation marker is considered foreign and
is never overwritten. Ambiguous state after an abrupt process or power failure is
preserved for operator review instead of guessed or deleted. verify_archive can
independently verify an archive directory.
VideoForge does not support authentication, cookies, credentials, proxies, geo
bypass, impersonation, DRM bypass, plugins, remote components, SponsorBlock,
access-control bypasses, or arbitrary extractor options. It only accepts metadata
that yt-dlp identifies as public, age-unrestricted, non-live, and non-DRM.
Every subprocess explicitly disables ambient proxies and yt-dlp geo bypass.
Progress callbacks must return promptly; they are status observers, not places
for blocking work.
You must comply with the YouTube Terms of Service
and all applicable copyright
and content licenses. A "Standard YouTube License" or an unknown/missing license
does not grant redistribution rights. yt-dlp's software license governs the
tool itself and does not grant any right to download, copy, or redistribute a
video. VideoForge preserves source and attribution metadata but cannot determine
whether a use is lawful.
Agent Guidance
Operational constraints for automated coding agents are embedded as
videoforge::AGENT_GUIDE and are also available in AGENT_GUIDE.md.