Skip to content

Automated pipeline for clipping long videos into shorts and publishing them across platforms.

Notifications You must be signed in to change notification settings

Jee-vim/clip-pipe

Repository files navigation

Clip Pipe

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.


Features

  • 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
    • Instagram
    • Facebook
    • TikTok
  • Upload scheduling
  • Local file support
  • Proxy support
  • Telegram success notifications per platform
  • Web Manager UI for job management
  • Fully JSON-driven workflow

Installation (Nix)

This project uses Nix shell for dependency management.

All required system tools and Python packages are provided automatically.

Requirements

  • Linux or WSL2 (Windows, not tested yet)
  • Nix package manager

Install Nix

Windows (WSL2)

wsl --install
curl -L https://nixos.org/nix/install | sh

Linux

curl -L https://nixos.org/nix/install | sh

Linux (Nixos)

nix-shell

Env Setup


# 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 Setup

Authentication is already documented in detail. Follow these guides exactly:

Google (YouTube Shorts)

/src/auth/GOOGLE_OAUTH.md

Covers:

  • Google Cloud project creation
  • OAuth consent screen
  • Client ID setup
  • Refresh token generation

Meta (Instagram & Facebook Reels)

/src/auth/META_GRAPH.md

TikTok

/src/auth/TIKTOK_API.md

Account Configuration

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/

Full JSON Configuration

[
  {
    "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)
      }
    ]
  }
]

Web Manager (Optional)

For a visual interface to manage jobs, use the Web Manager:

python3 start-web-manager.py

Then open http://localhost:9876 in your browser.


Run

Enter folder ./src then run

python3 job_runner.py

Disclaimer

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

Buy Me a Lambo

SOL: E1D96h652zzTzh8QyT1Dq8AqECT3j7dbJxJMiumnBV7c

EVM: 0x965244d54FFdf69A287e122090d320ae648f4cf8

TODO

  • Test all social media

About

Automated pipeline for clipping long videos into shorts and publishing them across platforms.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages