π¬ Automated YouTube to Short-Form Content Pipeline
Transform long-form YouTube videos (podcasts, interviews, vlogs) into engaging short-form content for TikTok, Instagram Reels, and YouTube Shorts β powered by AI.
Download the desktop app for your platform:
| Platform | Download | Notes |
|---|---|---|
| Windows | Latest Release (.exe) | Windows 10+ |
| macOS | Latest Release (.dmg) | macOS Catalina+, Apple Silicon & Intel |
Then follow the complete setup guide:
- π English Guide - Complete setup guide with screenshots
- π Panduan Indonesia - Panduan lengkap dengan screenshot
What you'll learn:
- How to download and run the app
- Setup required libraries (yt-dlp, FFmpeg, Deno)
- Setup YouTube cookies for video access
- Configure AI API (multiple providers supported)
- Start processing videos
If you want to contribute or run from source:
- See Installation below for development setup
- See Contributing for contribution guidelines
- See Building from Source for packaging the app
- π₯ Auto Download - Downloads YouTube videos with subtitles using yt-dlp
- π AI Highlight Detection - Uses GPT-4 to identify the most engaging segments (60-120 seconds)
- βοΈ Smart Clipping - Automatically cuts video at optimal timestamps
- π± Portrait Conversion - Converts landscape (16:9) to portrait (9:16) with intelligent speaker tracking
- π― Face Detection - Two modes available:
- OpenCV (Fast) - Crops to largest face, faster processing
- MediaPipe (Smart) - Tracks active speaker via lip movement detection, more accurate but 2-3x slower
- πͺ Hook Generation - Creates attention-grabbing intro scenes with AI-generated text and TTS voiceover
- π Auto Captions - Adds CapCut-style word-by-word highlighted captions using Whisper
- πΌοΈ Watermark Support - Add custom watermark with adjustable position, size, and opacity
- π SEO Metadata - Generates optimized titles and descriptions for each clip
- π₯οΈ Cross-Platform - Runs on Windows and macOS (Apple Silicon + Intel)
- β‘ GPU Acceleration - NVENC (NVIDIA), AMF (AMD), QSV (Intel), VideoToolbox (macOS)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β YT-Short-Clipper β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββ ββββββββββββββββ βββββββββββββββ β
β β YouTube βββββΆβ Downloader βββββΆβ Subtitle β β
β β URL β β (yt-dlp) β β Parser β β
β ββββββββββββ ββββββββββββββββ βββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββ β
β β Highlight Finder β β
β β (GPT-4) β β
β βββββββββββββββββββ β
β β β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Video Processing β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β β β Clipper βββΆβ Portrait βββΆβ Hook Generator β β β
β β β (FFmpeg) β β Converter β β (TTS + Overlay) β β β
β β ββββββββββββββ β OpenCV / β ββββββββββββββββββββββ β β
β β β MediaPipe β β β β
β β ββββββββββββββ βΌ β β
β β ββββββββββββββββββ β β
β β βCaption Generatorβ β β
β β β (Whisper) β β β
β β ββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββ β
β β Output Clips β β
β β + Metadata β β
β βββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Dependency | Version | Purpose |
|---|---|---|
| Python | 3.10+ | Runtime |
| FFmpeg | 4.4+ | Video processing |
| yt-dlp | Latest | YouTube downloading |
| Deno | 2.x | Required by yt-dlp for some extractors |
See requirements.txt for the full list. Key dependencies:
customtkinter>=5.2.0
openai>=1.0.0
opencv-python>=4.8.0
numpy>=1.24.0
Pillow>=10.0.0
mediapipe>=0.10.0
requests>=2.31.0
yt-dlp>=2026.3.17
google-generativeai>=0.7.0
google-api-python-client>=2.100.0
google-auth-oauthlib>=1.1.0
Note: The app uses OpenAI Whisper API instead of local Whisper model.
The app supports 10+ AI providers including:
- YT Clip AI (Recommended) - https://ai.ytclip.org
- OpenAI - GPT-4, Whisper, TTS
- Google Gemini - Free tier available
- Groq - Fastest + free
- Anthropic Claude - High quality
- And more...
See GUIDE.md or PANDUAN.md for detailed API setup instructions.
Note: This section is for developers who want to run the app from source code. If you're a regular user, please follow the User Guide or Panduan Indonesia instead.
git clone https://github.com/jipraks/yt-short-clipper.git
cd yt-short-clipperWindows (using Chocolatey):
choco install ffmpeg yt-dlpmacOS (using Homebrew):
brew install ffmpeg yt-dlpUbuntu/Debian:
sudo apt update
sudo apt install ffmpeg
pip install yt-dlppip install -r requirements.txtpython app.pyThe app will create a config.json file on first run where you can save your AI API keys and other settings.
yt-short-clipper/
βββ app.py # Main GUI application (entry point)
βββ clipper_core.py # Core processing logic (download, AI, video)
βββ version.py # Version info and update URL
βββ youtube_uploader.py # YouTube upload functionality
βββ tiktok_uploader.py # TikTok upload functionality
βββ requirements.txt # Python dependencies
βββ build.spec # PyInstaller build config (Windows)
βββ build_macos.spec # PyInstaller build config (macOS)
βββ build_web.spec # PyInstaller build config (Web version)
βββ components/ # Reusable UI widgets
β βββ ai_provider_card.py # AI provider configuration card
β βββ page_layout.py # Page layout components
β βββ progress_step.py # Progress step indicator
βββ config/ # Configuration management
β βββ ai_provider_config.py # AI provider definitions
β βββ config_manager.py # Config file read/write
βββ dialogs/ # Modal dialogs
β βββ model_selector.py # AI model search/select dialog
β βββ repliz_upload.py # Repliz upload dialog
β βββ terms_of_service.py # ToS dialog
β βββ tiktok_upload.py # TikTok upload dialog
β βββ youtube_upload.py # YouTube upload dialog
βββ pages/ # GUI pages
β βββ browse_page.py # Browse output clips
β βββ clipping_page.py # Clipping progress
β βββ contact_page.py # Contact/feedback
β βββ highlight_selection_page.py # Select highlights to process
β βββ processing_page.py # Processing progress
β βββ results_page.py # Results display
β βββ session_browser_page.py # Browse previous sessions
β βββ settings_page.py # Settings hub
β βββ status_pages.py # API & Library status pages
β βββ settings/ # Settings sub-pages
β βββ ai_api_settings.py # AI API configuration
β βββ ai_providers/ # Per-provider settings
β βββ output_settings.py # Output directory settings
β βββ performance_settings.py # GPU & performance
β βββ watermark_settings.py # Watermark configuration
β βββ ...
βββ utils/ # Utility modules
β βββ dependency_manager.py # Auto-download FFmpeg, Deno
β βββ gpu_detector.py # GPU detection & encoder selection
β βββ helpers.py # Path helpers, platform detection
β βββ logger.py # Logging utilities
βββ assets/ # App icons and images
β βββ icon.png # App icon (PNG)
β βββ icon.ico # App icon (Windows)
β βββ icon.icns # App icon (macOS)
βββ web/ # Web UI (experimental)
βββ index.html
βββ app.js
βββ css/
βββ components/
output/
βββ 20240115-143001/ # Session folder (timestamp-based)
βββ master.mp4 # Final clip
βββ data.json # Metadata
Each clip folder contains a data.json file with metadata:
{
"title": "π₯ Momen Kocak Saat Pembully Datang Minta Maaf",
"hook_text": "Mantan pembully TIARA datang ke rumah minta endorse salad buah",
"start_time": "00:15:23,000",
"end_time": "00:17:05,000",
"duration_seconds": 102.0,
"has_hook": true,
"has_captions": true,
"youtube_title": "π₯ Momen Kocak Saat Pembully Datang Minta Maaf",
"youtube_description": "Siapa sangka mantan pembully malah datang minta endorse! π #podcast #viral #fyp",
"youtube_tags": ["shorts", "viral", "podcast"]
}All settings can be configured through the GUI Settings page (βοΈ button in the app).
For complete setup instructions with screenshots, see:
| Parameter | Default | Description |
|---|---|---|
num_clips |
5 | Number of clips to generate |
min_duration |
60s | Minimum clip duration |
max_duration |
120s | Maximum clip duration |
target_duration |
90s | Ideal clip duration |
temperature |
1.0 | AI creativity (0.0-2.0) |
| Parameter | Default | Description |
|---|---|---|
output_resolution |
1080x1920 | Output video resolution |
min_frames_before_switch |
210 | Frames before speaker switch (~7s at 30fps) |
switch_threshold |
3.0 | Movement multiplier to trigger switch |
| Parameter | Default | Description |
|---|---|---|
language |
id | Transcription language |
chunk_size |
4 | Words per caption line |
| Parameter | Default | Description |
|---|---|---|
tts_voice |
nova | OpenAI TTS voice (nova/shimmer/alloy) |
tts_speed |
1.0 | Speech speed |
max_words |
15 | Maximum words in hook text |
tts_model |
tts-1 | TTS model (tts-1 or tts-1-hd) |
- Uses yt-dlp to download video in best quality (max 1080p)
- Automatically fetches auto-generated subtitles
- Extracts video metadata (title, description, channel)
- Parses SRT subtitle file with timestamps
- Sends transcript to GPT-4 with specific criteria:
- Punchlines and funny moments
- Interesting insights
- Emotional/dramatic moments
- Memorable quotes
- Complete story arcs
- Validates duration (60-120 seconds)
- Generates hook text for each highlight
- OpenCV mode: Uses Haar Cascade for face detection, crops to largest face
- MediaPipe mode: Tracks lip movement to identify active speaker
- Implements "camera cut" style switching (not smooth panning)
- Stabilizes crop position within each "shot"
- Maintains 9:16 aspect ratio at 1080x1920
- Extracts first frame from clip
- Generates TTS audio using OpenAI's voice API
- Creates intro scene with:
- Blurred/dimmed first frame background
- Centered hook text with yellow highlight
- AI voiceover reading the hook
- Concatenates hook with main clip
- Transcribes audio using OpenAI Whisper API
- Creates ASS subtitle file with:
- Word-by-word timing
- Yellow highlight on current word
- Black outline and semi-transparent background
- Burns captions into video using FFmpeg
The captions use CapCut-style formatting:
Font: Arial Black (platform-dependent fallback)
Size: 65px
Color: White (#FFFFFF)
Highlight: Yellow (#00FFFF)
Outline: 4px Black
Shadow: 2px
Position: Lower third (400px from bottom)
Estimated OpenAI API costs per video (5 clips):
| Feature | Model | Est. Cost |
|---|---|---|
| Highlight Detection | GPT-4.1 | ~$0.05-0.15 |
| TTS Voiceover | TTS-1 | ~$0.01/clip |
| Captions | Whisper API | ~$0.01/clip |
Total estimate: ~$0.10-0.25 per video (5 clips)
The desktop app shows real-time token usage and cost estimation during processing.
pip install -r requirements.txt
pip install pyinstaller
pyinstaller build.spec
# Output: dist/YTShortClipper.exeRequires Python 3.10+ and create-dmg (brew install create-dmg).
pip install -r requirements.txt
pip install pyinstaller
# Build .app bundle
python -m PyInstaller build_macos.spec --clean --noconfirm
# Create DMG (optional)
create-dmg \
--volname "YTShortClipper" \
--volicon "assets/icon.icns" \
--window-size 600 400 \
--icon "YTShortClipper.app" 150 185 \
--app-drop-link 450 185 \
"dist/YTShortClipper.dmg" \
"dist/YTShortClipper.app"macOS notes:
- User data is stored in
~/Library/Application Support/YTShortClipper/(persists across app updates) - FFmpeg is auto-downloaded from evermeet.cx (x86_64, runs on Apple Silicon via Rosetta 2)
- GPU acceleration uses VideoToolbox (hardware encoding on all Macs)
- ffplay is not available on macOS; video preview requires system player
Contributions are welcome! We greatly appreciate contributions from anyone.
# 1. Fork this repo (click the Fork button on GitHub)
# 2. Clone your fork
git clone https://github.com/YOUR-USERNAME/yt-short-clipper.git
cd yt-short-clipper
# 3. Add upstream remote
git remote add upstream https://github.com/jipraks/yt-short-clipper.git
# 4. Create a new branch
git checkout -b feature/your-new-feature
# 5. Make changes, then commit
git add .
git commit -m "feat: description of changes"
# 6. Push to your fork
git push origin feature/your-new-feature
# 7. Create a Pull Request on GitHub| Type | Description |
|---|---|
| π Bug Report | Report bugs in the Issues tab |
| π‘ Feature Request | Request new features in Issues |
| π Documentation | Improve docs, fix typos, add examples |
| π§ Code | Fix bugs, add features, improve performance |
π Complete guide available in CONTRIBUTING.md - includes Git tutorial for beginners!
This project is licensed under the MIT License - see the LICENSE file for details.
- This tool is for personal/educational use only
- Respect YouTube's Terms of Service
- Ensure you have rights to use the content you're processing
- The AI-generated content should be reviewed before publishing
- yt-dlp - YouTube downloading
- OpenAI Whisper - Speech recognition
- OpenCV - Computer vision
- MediaPipe - Face & lip tracking
- FFmpeg - Video processing
- OpenAI API - GPT-4 and TTS
Made with β by Aji Prakoso for content creators
| π | n8n & Automation eCourse |
| πΈ | @jipraks on Instagram |
| π¬ | Aji Prakoso on YouTube |
| π | About Aji Prakoso |