End-to-end automation pipeline for turning long videos into short-form content and uploading to YouTube + Telegram automatically.
This project handles downloading videos, clipping by timestamp, formatting for shorts, adding subtitles, and sending the result to YouTube and Telegram.
Built for batch processing and unattended execution.
- Download videos from YouTube by URL
- Clip videos using start and end timestamps
- Auto-generate short-form vertical videos
- Subtitle embedding (auto)
- Video cropping and positioning
- Watermark based account
- Brainrot
- Multi-account support
- Upload to YouTube
- Send video to Telegram (title + description)
- Upload scheduling
- Local file support
- Proxy support
- Web Manager UI for job management
- Fully JSON-driven workflow
This project uses Nix shell for dependency management.
All required system tools and Python packages are provided automatically.
- Linux or WSL2 (Windows, not tested yet)
- Nix package manager
wsl --installcurl -L https://nixos.org/nix/install | shcurl -L https://nixos.org/nix/install | shnix-shell
# Telegram bot for sending videos
# create bot using this bot official telegram @BotFather
TELEGRAM_TOKEN=
TELEGRAM_CHAT_ID=
# (optional)
# Comma-separated list of proxy URLs
PROXIES=proxy1,proxy2
# (optional) Delay between jobs (in seconds)
MIN_DELAY=30
MAX_DELAY=60
# (optional) How often to check for pending jobs (in seconds)
CHECK_INTERVAL=30
# (optional) Max retries on failure
MAX_RETRIES=3
Follow /src/auth/GOOGLE_OAUTH.md which covers:
- Google Cloud project creation
- OAuth consent screen
- Client ID setup
- Refresh token generation
Create an accounts/ folder in project root, then create a folder for your account name (e.g., obrolan_clip/).
Inside that folder, add client_secret.json.
accounts/
└── obrolan_clip/
└── client_secret.json // for YouTube
└── other_account/
└── client_secret.json
[
{
"date": "2026-01-28,12:00", # date for scheduling
"status": "pending", # if already executed will change to completed
"items": [
{
"url": "", # url youtube (or use local for local file)
"local": "", # local file path (alternative to url)
"start": "00:06:18", # time start clip
"end": "00:07:18", # end time clip (result will be 01:00 minute shorts video)
"crop": null, # crop position: "left", "center", "right" or null for no crop
"caption": false, # if set to false will skip fast-whisper (auto generate subtitle)
"model": "small", # whisper model: tiny, small, medium, large
"brainrot": false, # if true it will added other video below the original shorts
"tests": false, # if true will skip upload to YouTube and Telegram, save to media/shorts/
"account": "other_username", # account name based on folder inside accounts/
"title": "", # title video
"description": "" # description (pass tags is accepted)
}
]
}
]For a visual interface to manage jobs, use the Web Manager:
python3 start-web-manager.pyThen open http://localhost:9876 in your browser.
Enter folder ./src
then run
python3 job_runner.py
This project is intended for educational and automation purposes only.
You are responsible for:
- API usage
- Platform rate limits
- Content ownership
- Compliance with YouTube and Telegram policies
SOL: E1D96h652zzTzh8QyT1Dq8AqECT3j7dbJxJMiumnBV7c
EVM: 0x965244d54FFdf69A287e122090d320ae648f4cf8
- Auto detect most replay (get timestamp)