🎬 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)
┌─────────────────────────────────────────────────────────────────┐
│ master-cliper │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────────┐ ┌─────────────┐ │
│ │ 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/rizalfirmansyah120593-byte/master-cliper.git
cd master-cliperWindows (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.
master-cliper/
├── 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 "master-cliper" \
--volicon "assets/icon.icns" \
--window-size 600 400 \
--icon "master-cliper.app" 150 185 \
--app-drop-link 450 185 \
"dist/master-cliper.dmg" \
"dist/master-cliper.app"macOS notes:
- User data is stored in
~/Library/Application Support/master-cliper/(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/master-cliper.git
cd master-cliper
# 3. Add upstream remote
git remote add upstream https://github.com/rizalfirmansyah120593-byte/master-cliper.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