End-to-end automation pipeline for turning long videos into short-form content and distributing them across multiple platforms automatically.
This project handles downloading videos, clipping by timestamp, formatting for shorts, adding subtitles, scheduling uploads, managing multiple accounts, and sending upload notifications via 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 automation:
- YouTube
- TikTok
- Upload scheduling
- Local file support
- Proxy support
- Telegram success notifications per platform
- 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
# for send notif to telegram bot when successfully upload to a each platform
# 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
Authentication is already documented in detail. Follow these guides exactly:
/src/auth/GOOGLE_OAUTH.md
Covers:
- Google Cloud project creation
- OAuth consent screen
- Client ID setup
- Refresh token generation
/src/auth/META_GRAPH.md
/src/auth/TIKTOK_API.md
You need to create an accounts/ folder in project root,
then make a folder based username or account name ex: obrolan_clip/
inside that folder username add client_secret.json and meta.env
Complete folders accounts
accounts/
└── obrolan_clip/
├── client_secret.json // for youtube
└── meta.env // for ig and fb
└── tiktok.json // for tiktok
└── other_account/[
{
"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, # by default true, 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 social media and only download and saved to media/shorts/
"account": "other_username", # acccount 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, Meta, and Telegram policies
SOL: E1D96h652zzTzh8QyT1Dq8AqECT3j7dbJxJMiumnBV7c
EVM: 0x965244d54FFdf69A287e122090d320ae648f4cf8
- Test all social media