Multi-platform video publishing automation with smart format detection.
Automatically upload videos to YouTube, TikTok, and Instagram with intelligent routing based on aspect ratio.
# Clone and install
git clone https://github.com/OnlyShoky/UploadVerse.git
cd UploadVerse
python -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # Linux/Mac
# Upgrade pip
python -m pip install --upgrade pip
# Install
pip install -r requirements.txt
pip install -e .
# Run app
python .\app.py
# Authenticate YouTube
video-publisher auth youtube
# Upload
# Upload
video-publisher upload video.mp4 --platforms youtube
video-publisher upload video.mp4 --platforms tiktok --metadata metadata.json
video-publisher upload video1.mp4 video2.mp4 --platforms tiktok # Batch upload- Python 3.10+
- Google Cloud account (for YouTube)
- Chrome browser (for TikTok/Instagram)
Create .env file:
# YouTube (safe, recommended)
YOUTUBE_CLIENT_SECRETS_FILE=client_secrets.json
# Global Browser Settings
# Set to 'true' to run without a visible browser window (default)
HEADLESS=true- Uses official Google API
- Safe and reliable
- Setup Guide β
β οΈ Browser automation (violates TOS)- Use test accounts only
- Setup Guide β
- π΄ High ban risk (violates TOS)
- Use test accounts only
- Setup Guide β
# Upload (auto-detects platform from aspect ratio)
video-publisher upload video.mp4
# Specify platform
video-publisher upload video.mp4 --platforms youtube
video-publisher upload video.mp4 --platforms tiktok# With custom thumbnail and metadata
video-publisher upload video.mp4 \
--platforms tiktok \
--thumbnail cover.jpg \
--metadata metadata.json
# Run with visible browser (override default headless)
video-publisher upload video.mp4 --no-headlessProcess multiple videos in a single browser session. Metadata files (.json) and thumbnails (.jpg/.png) are automatically detected if they share the same filename as the video.
Example: 3 Videos with unique metadata & thumbnails Given these files:
vids/clip1.mp4,vids/clip1.json,vids/clip1.jpgvids/clip2.mp4,vids/clip2.json(no thumb)vids/clip3.mp4(no metadata, no thumb)
Run:
# Batch upload using auto-discovery (detects .json and .jpg with same name)
video-publisher upload vids/*.mp4 --platforms tiktok
# Explicit batch upload with mapped metadata and thumbnails
video-publisher upload video1.mp4 video2.mp4 --platforms tiktok \
--metadata "meta1.json,meta2.json" \
--thumbnail "thumb1.jpg,thumb2.jpg"
video-publisher upload .\data\videos\112_es_vertical.mp4 .\data\videos\112_es_vertical.mp4 --platforms tiktok --metadata ".\data\videos\112_es_horizontal.json,.\data\videos\112_es_horizontal2.json" --thumbnail ".\data\videos\thumb_114_en_1.jpg,.\data\videos\thumb_114_en_2.jpg"What happens:
- clip1: Uploads with title/tags from
clip1.jsonAND custom coverclip1.jpg. - clip2: Uploads with title/tags from
clip2.json. - clip3: Uploads with default settings. All uploads occur in ONE browser session.
# Check status
video-publisher status
# Authenticate
video-publisher auth youtube
video-publisher auth tiktok
video-publisher auth instagramUploadVerse/
βββ .env β Your config
βββ client_secrets.json β YouTube OAuth (from Google Cloud)
βββ data/
β βββ videos/ β Your videos
β βββ sessions/ β Auth tokens (auto-created)
β βββ youtube_token.pickle
β βββ tiktok_session.pkl
β βββ instagram_session.pkl
βββ docs/ β Documentation
β βββ youtube_setup.md
β βββ tiktok_setup.md
β βββ instagram_setup.md
β βββ cli_usage.md
βββ src/ β Source code
- Smart Routing: 16:9 β YouTube, 9:16 β TikTok/Instagram
- Multi-Platform: Upload to multiple platforms simultaneously
- CLI Interface: Simple command-line tool
- Python Library: Programmatic access
- Authentication: Persistent sessions/tokens
| Guide | Description |
|---|---|
| YouTube Setup | Google Cloud Console + OAuth setup |
| TikTok Setup | Browser automation setup (risky) |
| Instagram Setup | Browser automation setup (very risky) |
| CLI Usage | All CLI commands and examples |
- Automation violates TikTok Terms of Service
- Account bans are common
- Always use test accounts
- Automation violates Instagram Terms of Service
- Account bans are almost guaranteed
- Never use your personal account
- Very high risk
- β Uses official API (safe)
- No TOS violations
- Recommended platform
pip install -r requirements-dev.txt
pytestMIT License
- Google API Python Client - YouTube API
- undetected-chromedriver - Stealth automation
- Selenium - Browser automation
- MoviePy - Video processing
- Typer - CLI framework
Version: 0.1.0
Status: Alpha
Repository: https://github.com/OnlyShoky/UploadVerse