video-reframer
by LuckyAnggara
README.md
# Video Reframer MCP: AI Video Clipper & Reframer 9:16
Aplikasi ini mengubah video horizontal YouTube (16:9) menjadi video vertikal (9:16) untuk TikTok, Reels, dan Shorts. Pemotongan kamera diproses otomatis berbasis pergantian scene (*Scene-Adaptive Dynamic Reframing*) dan deteksi wajah MediaPipe.
Proyek ini menyediakan dua antarmuka:
1. **Server MCP (Model Context Protocol)** yang bisa langsung dipanggil oleh AI Agent di Claude Desktop, Cursor, Antigravity, OpenCode, dan Windsurf.
2. **Desktop Control Center** berbasis NiceGUI untuk cek dependensi, unduh FFmpeg otomatis, dan pasang konfigurasi MCP dengan satu klik.
---
## Kemampuan Utama
- **Kurasi video YouTube (`curate_youtube_clips`)**: Menganalisis URL YouTube publik memakai model `gemini-3.8-flash` tanpa perlu mengunduh seluruh file video di awal. Menghasilkan rekomendasi klip dengan hook dan timestamp.
- **Unduh dan potong presisi (`fetch_and_trim_clip`)**: Hanya mengunduh rentang waktu yang dipilih menggunakan `yt-dlp` dan memisahkan file audio.
- **Deteksi shot kamera (`analyze_scene_composition`)**: Memotong klip tepat di pergantian sudut kamera memakai PySceneDetect ContentDetector, lalu menghitung posisi wajah dengan MediaPipe.
- **Layout 9:16 adaptif (`render_adaptive_video`)**:
- 1 Wajah: Fullscreen 9:16 crop mengikuti pembicara.
- 2 Wajah: Split screen atas-bawah (atau 1:1 jika duduk berdampingan).
- 3+ Wajah: 1:1 di tengah dengan background ambient blur.
- 0 Wajah / B-roll: 16:9 di tengah dengan background blur.
- Audio tetap utuh tanpa desinkronisasi.
- **Dynamic CSS/JS animated captions (`render_dynamic_css_captions`)**:
- Transkripsi kata via `gemini-3.5-transcribe`.
- Pilihan preset animasi: `hormozi` (kuning tebal dengan pop-in), `mrbeast` (komik miring dengan bayangan kontras), `cyberpunk` (pulse neon), dan `minimal` (kapsul pill lembut).
- Dirender menggunakan Headless Chrome/Edge lokal dan ditempelkan via FFmpeg pada area aman (`margin_v=380`).
- **Cover thumbnail 9:16 (`suggest_cover_hooks`, `render_short_cover`, `attach_cover_to_video`)**:
- Menganalisis ekspresi wajah paling menarik dari frame asli.
- Menghasilkan judul hook 2 tingkat (kata pemicu kuning + teks pendukung putih) di area dada/bawah agar tidak menutupi wajah.
- Bisa digabungkan langsung ke 0.1 detik pertama video.
---
## Kebutuhan Sistem
- Python 3.10 atau lebih baru.
- Google Chrome atau Microsoft Edge (untuk render cover dan dynamic caption).
- FFmpeg (tersedia fitur download otomatis lewat aplikasi).
- API Key Google Gemini (gratis di [Google AI Studio](https://aistudio.google.com/apikey)).
---
## Panduan Instalasi Cepat
### 1. Pasang dependensi Python
Buka terminal di folder proyek ini lalu jalankan:
```bash
pip install -r requirements.txt
```
### 2. Atur API Key
Salin file contoh konfigurasi dan isi API key Gemini Anda:
```bash
cp .env.example .env
```
Buka file `.env` dan masukkan key:
```env
GEMINI_API_KEY=AIzaSyD-xxxxxxxxxxxxxx
```
### 3. Buka Control Center & Siapkan FFmpeg
Jalankan antarmuka desktop:
```bash
python ui.py
```
Pada antarmuka Control Center:
1. **Library Hasil Kerja**: Tonton langsung klip 9:16 hasil render dengan pemutar video web bawaan, periksa badge gaya subtitle (Hormozi, MrBeast, Cyberpunk, Minimalist), unduh klip, atau buka folder file di Windows Explorer dalam satu klik.
2. **Kesehatan Sistem & FFmpeg**: Klik tombol **Unduh & Pasang Otomatis** bila FFmpeg belum terpasang di komputer Anda. File `ffmpeg.exe` akan tersimpan di dalam folder `./bin/` lokal tanpa merusak PATH Windows.
3. **Integrasi MCP Multi-Agent**: Buka tab integrasi, lalu klik **Pasang Otomatis ke Semua yang Terdeteksi**. Konfigurasi MCP akan langsung disalin ke Claude Desktop, Cursor, Antigravity, atau OpenCode yang ada di komputer Anda.
---
## Menghubungkan MCP ke AI Agent Secara Manual
Jika Anda memilih memasukkan konfigurasi secara manual ke editor AI Anda, gunakan format berikut.
### Claude Desktop (`%APPDATA%\Claude\claude_desktop_config.json`)
```json
{
"mcpServers": {
"video-reframer": {
"command": "python",
"args": ["D:/Lucky/NgodingCuy/python-clipper-mcp/server.py"],
"env": {
"GEMINI_API_KEY": "AIzaSyD-xxxxxxxxxxxxxx"
}
}
}
}
```
### Cursor (`~/.cursor/mcp.json`)
```json
{
"mcpServers": {
"video-reframer": {
"command": "python",
"args": ["D:/Lucky/NgodingCuy/python-clipper-mcp/server.py"],
"env": {
"GEMINI_API_KEY": "AIzaSyD-xxxxxxxxxxxxxx"
}
}
}
}
```
### Google Antigravity (`~/.gemini/config/mcp_config.json`)
```json
{
"mcpServers": {
"video-reframer": {
"command": "python",
"args": ["D:/Lucky/NgodingCuy/python-clipper-mcp/server.py"],
"env": {
"GEMINI_API_KEY": "AIzaSyD-xxxxxxxxxxxxxx"
}
}
}
}
```
*(Catatan: Ganti path `D:/Lucky/NgodingCuy/python-clipper-mcp/server.py` dengan lokasi folder tempat Anda meletakkan proyek ini).*
---
## Menggunakan Skill Bersama MCP
Proyek ini menyertakan folder `.agents/skills/` yang kompatibel dengan standar **Agent Skills**. Begitu folder repo ini dibuka di agent harness yang mendukung skills (seperti Antigravity, OpenCode, atau Claude Code), skill berikut akan aktif otomatis:
1. **`video-reframer-workflow`**: Prosedur utama untuk memproses video dari link YouTube sampai menjadi video 9:16 utuh.
2. **`video-caption-designer`**: Menangani penataan gaya animasi subtitle (Hormozi, MrBeast, Cyberpunk, Minimalist) melalui tool MCP `render_dynamic_css_captions`.
3. **`video-cover-designer`**: Membuat cover vertikal beresolusi 1080x1920 dengan safe zone wajah.
4. **`video-batch-automation`**: Menangani proses banyak video sekaligus secara otomatis setelah konfigurasi awal dijawab.
### Contoh Perintah ke AI Agent:
Setelah MCP dan skill aktif, Anda cukup mengetik instruksi di chat AI seperti biasa:
> *"Tolong ambil klip menarik dari video YouTube ini: https://www.youtube.com/watch?v=xxxx. Jadikan video vertikal 9:16, beri subtitle gaya hormozi, dan buatkan cover pembuka."*
AI Agent akan:
1. Memanggil `curate_youtube_clips` dan memberikan pilihan segmen terbaik.
2. Mengunduh segmen yang Anda setujui.
3. Mendeteksi shot kamera dan meminta persetujuan layout framing.
4. Merender video 9:16 dan menempelkan animasi caption sesuai preset pilihan Anda.
5. Menampilkan hasil audit retensi video.
6. Membuka Control Center secara otomatis (`open_control_center`) dan memberikan tautan: *"Kamu bisa melihat hasil kerja disini ya: http://127.0.0.1:8080"*.
7. Jika Anda ingin mencoba variasi gaya (misalnya *"coba ganti style subtitle jadi MrBeast"*), AI Agent langsung merender ulang versi baru dalam hitungan detik tanpa mengunduh ulang video dari awal!
---
## Menjalankan Pengujian
Untuk memastikan seluruh fungsi tool MCP dan sistem render berjalan baik:
```bash
python tests/test_server.py
```
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues