vot-cli is a tool for translating videos or downloading subtitles using vot.js.
This script lets you:
- Download a video translation or get a link to it
- Download video subtitles in SRT, VTT or JSON format or get a link to them
- Get a link to the finished file without downloading (preview mode)
- Use lively voices for translation (en -> ru)
- Output results in JSON or as plain links (without progress)
- Process multiple links in one run
Warning
This script is created solely for research purposes and is not intended for commercial use. All rights to the original software belong to their respective owners.
Click to expand
- -h, --help: show help
- -v, --version: show script version
- -o, --out, --outdir=(path): set output directory
- --outfile=(name): set output filename
- --lang=(lang): set source video language (see wiki for supported languages). Default:
en - --reslang=(lang): set audio track or subtitle language (see wiki for supported languages). Default:
ru - --proxy=(url): set HTTP or HTTPS proxy in format
[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<port>] - --worker-host=(url): set your own vot-worker in format
[<PROTOCOL>://]<HOST>[:<port>][/<PREFIX>] - --vot-host=(url): set your own vot-backend server in format
[<PROTOCOL>://]<HOST>[:<port>][/<PREFIX>] - --subs: get subtitles instead of audio, if available
- --subs-format=(format): set subtitle format (
json,srt,vtt. Does not work with--preview) - --preview: get a download link without downloading
- --lively-voice: use lively voices for available videos (only
en->ru) - --api-token: set Yandex OAuth API token for using lively voices. You can get a token via the debug link
- --no-visual: output result to stdout/stderr without progress info (1 line = 1 link)
- --json: output result to stdout/stderr as JSON without progress info
- --no-title: use video ID as filename, without attempting to get the video title
Click to expand
vot-cli [options] <link> [link2] [link3] ...- general examplevot-cli <link>- get audio translation from a linkvot-cli --help- show helpvot-cli --version- show versionvot-cli --json [options] <link>- get result as JSONvot-cli --outdir=<path> <link>- get audio translation and save it to the specified pathvot-cli --outdir=<path> --reslang=en <link>- get audio translation in English and save it to the specified pathvot-cli --subs --outdir=<path> --reslang=en <link>- get English subtitles and save them to the specified pathvot-cli --outdir="." "https://www.youtube.com/watch?v=X98VPQCE_WI" "https://www.youtube.com/watch?v=djr8j-4fS3A&t=900s"- real data example
All examples in this README have been formatted separately for readability. In real output, JSON will be a single line, and some lists may be longer.
Successful execution
vot-cli --json ...{
"ok": true,
"summary": {
"total": 1,
"success": 1,
"failed": 0
},
"results": [
{
"input": "https://www.youtube.com/watch?v=X98VPQCE_WI",
"status": "success",
"type": "audio",
"videoId": "X98VPQCE_WI",
"url": "https://example.com/audio.mp3",
"outputPath": "C:\\downloads\\X98VPQCE_WI.mp3"
}
]
}Processing error
vot-cli --json ...{
"ok": false,
"summary": {
"total": 1,
"success": 0,
"failed": 1
},
"results": [
{
"input": "not-a-url",
"status": "failed",
"type": "audio",
"videoId": null,
"url": null
}
]
}Version
vot-cli --version --json{
"version": "2.0.0",
"runtime": "Bun/1.3.14"
}Help
vot-cli --help --json{
"usage": "vot-cli [options] <link> [link2] [link3] ...",
"options": [
{ "flags": ["-h", "--help"], "description": "Show help (You're here)" },
{
"flags": ["--json"],
"description": "Write result to stdout/stderr as JSON without progress info"
}
],
"requestLangs": ["auto", "ru", "en"],
"responseLangs": ["ru", "en", "kk"],
"subtitlesTypes": ["srt", "vtt", "json"]
}Choose the most convenient way to install vot-cli.
If you don't want to install Node.js or Bun, you can simply download a pre-built binary from GitHub Releases.
Choose the archive for your operating system and architecture:
Extract the archive, make the file executable, and move it to a directory in your PATH:
tar -xzf vot-linux-x64.tar.gz
chmod +x vot-linux-x64
sudo mv vot-linux-x64 /usr/local/bin/vot-cli
vot-cli --versionDownload vot-darwin-x64.tar.gz or vot-darwin-arm64.tar.gz (depending on your Mac) and run the same commands, replacing the filename.
Download vot-windows-x64.exe.zip, extract vot-windows-x64.exe, optionally rename it to vot-cli.exe.
To make it accessible from anywhere, add its folder to the PATH environment variable.
This option is suitable if you already have Bun.sh or Node.js 22+ installed.
Installation for Bun:
bun install -g vot-cliInstallation for Node:
npm install -g vot-cli- Install Bun.sh
- Install dependencies:
bun install- Build vot-cli:
bun run build:bun- Install Bun.sh
- Install dependencies:
bun install- Run the build:
bun run compileIf you get Failed to move cross-compiled bun binary into cache directory on Windows, use WSL or move the source folder to the C: drive.
- Link the directory:
bun link- Done, now you can use vot-cli in your terminal
-
Browser extension: Link
-
Scripts for downloading videos with built-in translation (add-ons for vot-cli):
OS Shell Author Link Windows PowerShell Dragoy Link Unix Fish Musickiller Link Linux Bash s-n-alexeyev Link Cloud Google Colab alex2844 Link
vot-cli can use yt-dlp to get human-readable video titles for output filenames.
If yt-dlp is not found on the system, video IDs will be used as filenames (X98VPQCE_WI.mp3 instead of the title).
You can disable this behavior with the --no-title flag.
- Wrap links in quotes to avoid errors
- Writing to a system partition (e.g., "C: drive" on Windows) requires administrator privileges
- yt-dlp is optionally used for fetching video titles (see the "Optional features" section)
