video-reframer
by LuckyAnggara
README.md
# Lucky Me Clipper
Tools untuk memotong video horizontal YouTube (16:9) jadi video vertikal (9:16) siap upload ke Shorts, TikTok, atau Reels. Deteksi pergantian scene diproses dengan PySceneDetect, dan posisi wajah pembicara dipantau dengan MediaPipe agar cropping pas di tengah.
Proyek ini menyediakan:
1. **MCP Server (Model Context Protocol)** yang bisa dipanggil oleh Claude Desktop, Cursor, Antigravity, OpenCode, VS Code / Roo Code, dan Windsurf.
2. **Web Control Center** ringan berbasis FastAPI + Tailwind + Alpine.js untuk memantau status render, cek video di theater player, dan mengelola publish ke YouTube via Zernio API.
---
## Cara Pasang MCP
Jalankan perintah ini di folder proyek untuk memasang server MCP ke semua editor AI yang terpasang di komputer Anda (Claude Desktop, Cursor, Antigravity, OpenCode, VS Code / Roo Code, atau Windsurf):
```bash
python doctor.py --install-all
```
Perintah ini akan mencari lokasi konfigurasi masing-masing editor secara otomatis dan mendaftarkan `video-reframer`.
Bila ingin memasang ke editor tertentu saja:
```bash
python doctor.py --install claude_desktop
# Pilihan lain: cursor, antigravity, opencode, windsurf, cline_roo
```
---
## Setup Awal Proyek
### 1. Pasang Dependensi Python
```bash
git clone https://github.com/LuckyAnggara/lucky-me-clipper.git
cd lucky-me-clipper
pip install -r requirements.txt
```
### 2. Atur Environment (.env)
Salin contoh file `.env`:
```bash
cp .env.example .env
```
Lalu masukkan API key Anda ke file `.env`:
```env
GEMINI_API_KEY=AIzaSyD-xxxxxx
# Opsional jika ingin auto publish ke YouTube Shorts
ZERNIO_API_KEY=
ZERNIO_YOUTUBE_ACCOUNT_ID=
```
### 3. Cek Status Sistem & Unduh FFmpeg
Jalankan diagnosa sistem:
```bash
python doctor.py --check
```
Jika FFmpeg belum terpasang di komputer Anda, jalankan Web UI untuk mengunduh FFmpeg portable sekali klik:
```bash
python ui.py
```
Buka browser di `http://127.0.0.1:8080`, lalu klik **Unduh FFmpeg Portable**. Binary akan tersimpan di folder lokal `./bin/` tanpa mengubah path sistem komputer Anda.
---
## Fitur Utama
- **Kurasi Otomatis (`curate_youtube_clips`)**: Menganalisis video YouTube langsung via Gemini 3.8 Flash tanpa perlu download file video utuh di awal. Memberi rekomendasi timestamp dan hook.
- **Sistem Memory Interaktif**: Server menyimpan percakapan analisis klip dan project aktif ke database SQLite lokal (`clipper_memory.db`). Jika Anda menanyakan *"tadi klip nomor berapa yang tersisa?"*, AI masih mengingat konteks sebelumnya.
- **Download Presisi (`fetch_and_trim_clip`)**: Hanya mengunduh potongan video yang dipilih menggunakan `yt-dlp`.
- **Deteksi Shot Kamera (`analyze_scene_composition`)**: Memotong klip tepat di pergantian sudut kamera dan menghitung koordinat wajah.
- **Layout Adaptif 9:16 (`render_adaptive_video`)**:
- 1 Wajah: Fullscreen crop 9:16 mengikuti pembicara.
- 2 Wajah: Split screen atas-bawah atau 1:1 berdampingan.
- B-roll / multi-orang: Format 1:1 di tengah dengan background ambient blur.
- **Subtitle Animasi Dinamis (`render_dynamic_css_captions`)**: Pilihan gaya `hormozi`, `mrbeast`, `cyberpunk`, atau `minimal`, dirender via Headless Chrome dan ditempel ke video dengan FFmpeg.
- **Cover Thumbnail 9:16 (`render_short_cover`)**: Menghasilkan thumbnail vertikal dengan hook text 2 baris di area dada agar tidak menutupi wajah.
- **Publish ke YouTube Shorts (`publish_clip_to_social`, `schedule_clip_post`)**: Upload dan jadwalkan posting lewat integrasi Zernio API dengan log audit tersimpan di database.
---
## Contoh Penggunaan via Chat AI
Setelah MCP terhubung ke AI editor Anda, Anda cukup memberikan instruksi seperti ini di ruang obrolan:
> *"Ambil bagian menarik dari link YouTube ini: https://www.youtube.com/watch?v=xxxx. Buatkan klip vertikal 9:16 dengan subtitle gaya hormozi dan buatkan cover pembukanya."*
AI Agent akan:
1. Menemukan momen terbaik dan memberikan daftar segmen.
2. Mengunduh segmen yang Anda pilih.
3. Mendeteksi pergantian shot dan wajah pembicara.
4. Merender klip 9:16 dan menempelkan subtitle animasi.
5. Memberikan tautan ke Web UI (`http://127.0.0.1:8080`) agar Anda bisa menonton hasilnya di theater player.
---
## Menjalankan Pengujian
Untuk memverifikasi semua fungsi server dan web UI:
```bash
python tests/test_server.py
python tests/test_web_server.py
```
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues