Skip to main content

avd — agent-video-downloader

yt-dlp for cloud AI agents. One command downloads videos from TikTok, Instagram, Douyin, Rednote (Xiaohongshu), Reddit, X.com — no browser, no cookies, no login. Built for Claude / Cursor / Cline / GLM / GPT agents that need video bytes in task workflows.

CI PyPI version PyPI downloads License: MIT Python 3.10+

Install:

pip install agent-video-downloader
avd agent-setup

Live on PyPI: https://pypi.org/project/agent-video-downloader/


Quickstart — one command for AI agents

pip install agent-video-downloader
avd agent-setup
avd download 'https://www.tiktok.com/@anyuser/video/<numeric-id>'

avd agent-setup auto-installs ffmpeg, all Python deps, and the XHS-Downloader repo (for Rednote). It's idempotent — safe to re-run anytime. Zero manual steps for an AI agent.

For the full agent usage guide (8 steps, decision tree, MCP server config, env vars):

avd agent-instructions

Why

yt-dlp is broken from datacenter IPs for TikTok, Twitter, Reddit, Instagram, Douyin. Cloud CLI agents (Claude Code, GLM CLI, Cursor, Cline) that need to download videos for tasks (transcription, OCR, content analysis, archival) have no reliable path. avd fixes that with direct-API fallback chains that work from cloud IPs without login.

All six platforms download real video bytes (verified live 2026-10-03 from a Hong Kong datacenter IP, total 1.2 GB downloaded through avd itself):

Platform Method Sample download
TikTok TikWM mirror API 2.0 MB / 10.5 s
Twitter/X api.fxtwitter.com → video.twimg.com 156 MB / 74.8 s 4K
Reddit rapidsave.com + v.redd.it CMAF/DASH + ffmpeg mux 6.1 MB / 16.1 s
Instagram yt-dlp + facebookexternalhit/1.1 UA 8.4 MB / 77.3 s
Douyin api.douyin.wtf public demo (zero-config) 3.6 MB / 27.6 s
Rednote (XHS) XHS-Downloader (curl_cffi chrome146) 8.4 MB / 720p

Real-world batch test — 21/24 videos downloaded via avd itself

A 24-URL batch (4 per platform minimum, large videos first) was run through avd itself to validate the system on real public content rather than curated samples:

  • TikTok: 4/4 ✅
  • Twitter: 4/4 ✅ (largest file: 185 MB 4K video)
  • Instagram: 4/4 ✅
  • Reddit: 4/4 ✅ (largest file: 283 MB / 372 s interview)
  • Douyin: 4/4 ✅
  • Rednote: 1/4 ⚠️ (1 verified image; 3 bot-walled without cookie — documented limitation)

Total: 1.2 GB of real video content downloaded through avd itself.


Commands

Command Purpose
avd agent-setup One-command bootstrap — installs ffmpeg, deps, XHS-Downloader
avd agent-instructions Print step-by-step usage guide for AI agents
avd download <url> Download one URL
avd batch <file> Batch download (one URL per line, # comments OK)
avd verify <path> Verify a downloaded file's integrity
avd test --smoke End-to-end self-test on one URL per platform
avd jobs List recent jobs
avd dlq List dead-letter queue entries
avd replay <dlq_id> Replay a failed job
avd mcp Start MCP server (stdio JSON-RPC 2.0)
avd supported Show supported platforms
avd agents Show agent versions

Install

pip install agent-video-downloader
avd agent-setup

From source (development)

git clone https://github.com/hamza140202/agent-video-downloader
cd agent-video-downloader
pip install -e .[dev]
avd agent-setup

System requirements

  • Python 3.10+ (tested on 3.10, 3.11, 3.12, 3.13)
  • ffmpeg / ffprobe (auto-installed by avd agent-setup on Debian/Ubuntu; manual on other systems)
  • git (for cloning XHS-Downloader on first Rednote download)

Configuration (env vars)

Var Default Description
AVD_DOWNLOAD_DIR ./download Default download destination
AVD_LOG_LEVEL INFO DEBUG/INFO/WARNING/ERROR
AVD_REDDIT_CLIENT_ID — Reddit OAuth (only needed if rapidsave.com fails — rare)
AVD_REDDIT_CLIENT_SECRET — same
AVD_REDDIT_USERNAME — throwaway Reddit username
AVD_REDDIT_PASSWORD — throwaway Reddit password
AVD_DOUYIN_DTK_URL — self-hosted Evil0ctal DTK (optional — defaults to public demo)
AVD_XHS_DOWNLOADER_PATH ~/XHS-Downloader override XHS-Downloader clone path
AVD_XHS_COOKIE — XHS cookie (optional, unlocks HD Rednote videos)
AVD_PROXY — SOCKS5/HTTP proxy URL for all requests

Architecture (4 plain-Python agents, no LLM in runtime loop)

URL → Orchestrator → [TikTok|Twitter|Reddit|Instagram|Rednote|Douyin] extractors (fallback chain)
                     → Verifier (6-layer: size, magic bytes, ffprobe, duration, streams, moov)
                     → Truth Agent (cross-check vs source platform: oEmbed / syndication / RSS / OG)
                     → verified MP4 + manifest
  • Orchestrator — owns the extractor registry, drives the fallback chain, persists job state to SQLite
  • Verifier — 6-layer integrity check (size + magic bytes + ffprobe + duration + streams + moov atom)
  • Truth Agent — cross-references downloaded metadata against source platform
  • Tester — runs end-to-end on tests/sample_urls.json

Per-platform fallback chains (slot-based state machine, ytagent doctrine):

  • TikTok: TikWM → embed/v2 → tiklydown → oEmbed
  • Twitter/X: fxtwitter → syndication → unrollnow → vxtwitter
  • Reddit: rapidsave.com/info + v.redd.it CMAF/DASH direct + ffmpeg mux → rapidsave server-side mux → yt-dlp+OAuth → RSS image
  • Instagram: yt-dlp+facebookexternalhit UA → embed/captioned+fb-UA → embed+android-UA → embed+ios-UA → ddinstagram mirror
  • Douyin: api.douyin.wtf demo → self-hosted DTK sidecar → yt-dlp
  • Rednote: XHS-Downloader (curl_cffi) → curl_cffi direct → yt-dlp

Full design: docs/architecture.md · Full research: docs/research-report.md


Documentation

For users

  • README.md — this file (install + quickstart + commands)
  • Run avd agent-instructions — interactive step-by-step usage guide

For developers / agents modifying the code

  • CLAUDE.md — project memory (read first if modifying)
  • AGENTS.md — agent contracts + perfection prompting rules
  • TECHSTACK.md — every dependency, every version, why
  • PHASES.md — development phases with exit criteria
  • PLAN.md — concrete execution plan with task IDs
  • SKILLS.md — per-agent skill spec sheets

Deep technical references


License

MIT. See LICENSE.

Repo

Changelog

v1.2.0 (2026-10-03) — PyPI release

  • One-command install: pip install agent-video-downloader && avd agent-setup
  • New avd agent-setup command (auto-install ffmpeg, deps, XHS-Downloader)
  • New avd agent-instructions command (8-step AI agent usage guide)
  • Auto-bootstrap on first Rednote download (no manual setup)
  • Reddit extractor fix: probe BOTH CMAF and DASH format ladders
  • Rednote extractor fix: parse XHS-Downloader stdout for actual success
  • Verifier: adaptive min_size_bytes (50KB images / 5KB audio / 1MB video)
  • Verifier: skip slow integrity_decode for files > 50 MB
  • Real-world batch test: 21/24 videos downloaded via avd itself (1.2 GB)
  • Published to PyPI: https://pypi.org/project/agent-video-downloader/1.2.0/

v1.1.0 (2026-10-03) — all 6 platforms real downloads

  • Replaced honest-empties with verified-working methods per ytagent doctrine
  • TikTok via TikWM (2 MB MP4 verified)
  • Twitter via fxtwitter (156 MB 4K MP4 verified)
  • Reddit via rapidsave.com + v.redd.it CMAF + ffmpeg mux (6.1 MB verified)
  • Instagram via yt-dlp + facebookexternalhit UA (8.4 MB verified)
  • Douyin via api.douyin.wtf public demo (3.6 MB verified)
  • Rednote via XHS-Downloader (curl_cffi) (8.4 MB verified)
  • Truth Agent: Twitter returned verified verdict

v1.0.0 (2026-10-03) — initial release

  • Multi-agent architecture (Orchestrator + Verifier + Truth + Tester)
  • 6 platform extractors with fallback chains
  • MCP server (stdio JSON-RPC 2.0)
  • SQLite jobs table with resume / DLQ replay
  • 30/30 unit tests pass

Metadata

Release files for agent-video-downloader 1.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agent-video-downloader 1.2.2
File Size Uploaded
agent_video_downloader-1.2.2.tar.gz 50.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-video-downloader 1.2.2
File Interpreter ABI Platform
agent_video_downloader-1.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 118.5 kB

Release files / agent_video_downloader-1.2.2.tar.gz

Download URL agent_video_downloader-1.2.2.tar.gz
Size 50.9 kB
Tags Source
SHA-256 checksum
How to use checksums
102d7c6128f5e958dfa9340572b13a2465fb08d7143a8ced95b5e95ce1b2ed5c
BLAKE2b-256 checksum
How to use checksums
3fb67aaa57dbf54a2e6ce5dd1307ff0e5d30e808a0fb1159293b8de79c138627
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release files / agent_video_downloader-1.2.2-py3-none-any.whl

Download URL agent_video_downloader-1.2.2-py3-none-any.whl
Size 67.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2abed93ae7c6d20ceb38976057d112574ba523ee70a1da4570725e3732d08391
BLAKE2b-256 checksum
How to use checksums
0fd5481f24295d89569e0e2163528d2d6b82e77d2a6982fa28272ac29ce557d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

1.2.2 This release

2 release files

1.2.1

2 release files

1.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page