SkillAgentSearch skills...

Tubeup

Use yt-dlp to download video/metadata and upload to the Internet Archive.

Install / Use

/learn @bibanon/Tubeup
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Tubeup - a multi-VOD service to Archive.org uploader

Unit Tests Lint

tubeup uses yt-dlp to download a Youtube video (or any other provider supported by yt-dlp), and then uploads it with all metadata to the Internet Archive using the python module internetarchive.

It was designed by the Bibliotheca Anonoma to archive single videos, playlists (see warning below about more than video uploads) or accounts to the Internet Archive.

Prerequisites

This script strongly recommends Linux or some sort of POSIX system (such as macOS), preferably from a rented VPS and not your personal machine or phone.

Reccomended system specifications:

  • Linux VPS with Python 3.10 or higher and pipx installed
  • 2GB of RAM, 100GB of storage or much more for anything other than single short video mirroring. If your OS drive is too small, symlink it to something larger.

Setup and Installation

Installation via third-party package managers like Homebrew, MacPorts, or Linux system packages (apt, yum, etc.) is not supported.

  1. Install ffmpeg, pip3 (typically python3-pipx or in Arch python-pipx), and Deno (external java script support required by yt-dlp for Youtube extractor).
    To install ffmpeg in Ubuntu, enable the Universe repository.

For Debian/Ubuntu:

   sudo apt remove yt-dlp ; sudo apt install ffmpeg python3-pipx deno

Then run:

   pipx ensurepath
  1. Use pipx to install the required python packages. At a minimum Python 3.9 and up is required (latest Python preferred).
   pipx install "yt-dlp[default,curl-cffi]" internetarchive tubeup
  1. If you don't already have an Internet Archive account, register for one to give the script upload privileges.

  2. Configure internetarchive with your Internet Archive account.

   ia configure

You will be prompted for your login credentials for the Internet Archive account you use.

Once configured to upload, you're ready to go.

  1. Start archiving a video by running the script on a URL (or multiple URLs) supported by yt-dlp.. For YouTube, this includes account URLs and playlist URLs.
   tubeup <url>
  1. Each archived video gets its own Archive.org item. Check out what you've uploaded at

    http://archive.org/details/@YOURUSERNAME.

  2. Upgrading

Perodically before running, upgrade tubeup its pyton dependencies and Deno by running:

   pipx upgrade-all ; deno upgrade

To use a nightly yt-dlp build, inject it into your yt-dlp virtual environment:

   pipx inject yt-dlp "yt-dlp[default,curl-cffi] @ https://github.com/yt-dlp/yt-dlp-nightly-builds/releases/download/[NIGHTLY TAG]/yt-dlp.tar.gz" --force

Where [NIGHTLY TAG] would for example be 2025.10.11.232807 in this yt-dlp release.

Upgrades will take it to latest nightly, which yt-dlp releases with a stable tag (see notes about upgrading below).

Docker

Dockerized tubeup is provided by etnguyen03/docker-tubeup. Instructions are provided.

Windows Setup

  1. Install WSL2, pick a distribution of your choice. Ubuntu is popular and well-supported.
  2. Use Windows Terminal by Microsoft to interact with the WSL2 instance.
  3. Fully update the Linux installation with your package manager of choice. sudo apt update ; sudo apt upgrade
  4. Install python pipx, ffmpeg and deno.
  5. Install Tubeup using steps 4-6 in the Linux configuration guide above and configuring internetarchive for your Archive.org account.
  6. Periodically update your Linux packages and python packages.

Usage

Usage:
  tubeup <url>... [--username <user>] [--password <pass>]
                  [--metadata=<key:value>...]
                  [--cookies=<filename>]
                  [--proxy <prox>]
                  [--quiet] [--debug]
                  [--use-download-archive]
                  [--output <output>]
                  [--dir <dir>]
                  [--ignore-existing-item]
  tubeup -h | --help
  tubeup --version
Arguments:
  <url>                         yt-dlp compatible URL to download.
                                Check yt-dlp documentation for a list
                                of compatible websites.
  --metadata=<key:value>        Custom metadata to add to the archive.org
                                item.
  --dir <dir>                   Provide a directory for downloads and metadata.
  
Options:
  -h --help                    Show this screen.
  -p --proxy <prox>            Use a proxy while uploading.
  -u --username <user>         Provide a username, for sites like Nico Nico Douga.
  -p --password <pass>         Provide a password, for sites like Nico Nico Douga.
  -a --use-download-archive    Record the video url to the download archive.
                               This will download only videos not listed in
                               the archive file. Record the IDs of all
                               downloaded videos in it.
  -q --quiet                   Just print errors.
  -d --debug                   Print all logs to stdout.
  -o --output <output>         yt-dlp output template.
  -i --ignore-existing-item    Don't check if an item already exists on archive.org

Metadata

You can specify custom metadata with the --metadata flag. For example, this script will upload your video to the Community Video collection by default. You can specify a different collection with the --metadata flag:

   tubeup --metadata=collection:opensource_audio <url>

Any arbitrary metadata can be added to the item, with a few exceptions. You can learn more about archive.org metadata here.

Collections

Archive.org users can upload to four open collections:

Note that care should be taken when uploading entire channels. Read the appropriate section in this guide for creating collections, and contact the collections staff if you're uploading a channel or multiple channels on one subject (gaming or horticulture for example). Internet Archive collections staff will either create a collection for you or merge any uploaded items based on the YouTube uploader name that are already up into a new collection.

Dumping entire channels into Community Video is abusive and may get your account locked. Talk to the Internet Archive admins first before doing large uploads; it's better to ask for guidence or help first than run afoul of the rules.

If you do not own a collection you will need to be added as an admin for that collection if you want to upload to it. Talk to the collection owner or staff if you need assistance with this.

Troubleshooting

  • Some videos are copyright blocked in certain countries. Use the proxy or torrenting/privacy VPN option to use a proxy to bypass this. Sweden and Germany are good countries to bypass geo-restrictions.
  • Upload taking forever? Getting s3 throttling on upload? Tubeup has specifically been tailored to wait the longest possible time before failing, and we've never seen a S3 outage that outlasted the insane wait times set in Tubeup. Disabling waits for S3 timeouts won't make the upload work, instead it will leave the downloaded contents on your disk in the downloads folder (~/.tubeup/downloads) because the download will immeaditly fail instead of gracefully waiting. The waits are a safety in case timeouts occur, do not disable them.

A note on live videos

Do not use Tubeup to archive live Youtube (or any other site) video. We will not/cannot fix it, it's not even our problem, and any solutions are unpalitable since they involve more code complexity to be maintained ontop of having to disable livechat for one extractor only for live video.

Major Credits (in no particular order)

Related Skills

View on GitHub
GitHub Stars481
CategoryContent
Updated16h ago
Forks73

Languages

Python

Security Score

100/100

Audited on Mar 21, 2026

No findings