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/@scout2015/video/6718335390845095173'

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

Babymonster batch test — 21/24 videos downloaded via avd itself

24 real K-pop interview/documentary URLs (4 per platform minimum):

  • TikTok: 4/4 ✅ — Babymonster YG official countdown interviews
  • Twitter: 4/4 ✅ — SpaceX 4K static fire (548 MB total)
  • Instagram: 4/4 ✅ — Babymonster reels (All Night Nippon podcast)
  • Reddit: 4/4 ✅ — Babymonster interviews incl. 6-min 372s video (468 MB total)
  • Douyin: 4/4 ✅ — Babymonster/Ahyeon choreography (152 MB total)
  • Rednote: 1/4 ⚠️ — 1 verified image; 3 bot-walled without cookie (documented limitation)

Total: 1.2 GB of real K-pop 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
  • Babymonster 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.1

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.1
File Size Uploaded
agent_video_downloader-1.2.1.tar.gz 51.1 kB Details

Built distribution (wheel)

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

Total release size: 118.8 kB

Release files / agent_video_downloader-1.2.1.tar.gz

Download URL agent_video_downloader-1.2.1.tar.gz
Size 51.1 kB
Tags Source
SHA-256 checksum
How to use checksums
db756cd67a6559503a4eb5cd13d784ef25a077b1a75fcad03b5193635aa7864c
BLAKE2b-256 checksum
How to use checksums
76eb5d8951dc534db8a9d6cfd738b9e0adc380a644ca22d5ba814baf623a6a54
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.1-py3-none-any.whl

Download URL agent_video_downloader-1.2.1-py3-none-any.whl
Size 67.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f35db5687f7bce0067b51718317dd0191c4df5357003b36a6c4ea86f21cf600
BLAKE2b-256 checksum
How to use checksums
50f83b13786d3fe5b1b5d265ca4ab3bde4ecb6c800141985ab7ce91d16847a36
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

1.2.2

2 release files

This release

1.2.1 This release

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