-
-
Notifications
You must be signed in to change notification settings - Fork 36
CLI Reference
Muhammad Naufal Rizqullah edited this page Jul 20, 2026
·
2 revisions
Complete reference for all command-line arguments. Run python main.py --help for a quick overview.
| Argument | Default | Description |
|---|---|---|
--url, -u
|
— | Video URL to process (Required unless --story-mode) |
--source |
youtube |
Video source platform: youtube, tiktok, instagram, gdrive
|
--clips, -n
|
7 |
Number of highlight clips to generate |
--ratio, -r
|
9:16 |
Output aspect ratio: 9:16, 16:9, 1:1, 3:4, 4:5
|
--source-height |
max |
Preferred source download max height (max, 1080, 1440, 2160) |
--render-height |
1080 |
Target output render height (1080, 1440, 2160, source) |
| Argument | Default | Description |
|---|---|---|
--ai-provider |
gemini |
AI provider for analysis: gemini or nvidia
|
--gemini-model |
gemini-3-flash-preview |
Gemini model name |
--gemini-fallback-model |
gemini-2.5-flash |
Fallback model if main model fails |
--nvidia-model |
deepseek-ai/deepseek-v4-pro |
Model name for NVIDIA NIM API |
--load-gemini-json |
False |
Load saved gemini_response.json to bypass AI call |
| Argument | Default | Description |
|---|---|---|
--words-per-sub |
5 |
Max words per karaoke subtitle group |
--hook-duration |
3 |
Hook teaser duration (seconds) |
--hook-source |
None |
Path or URL for custom hook video (.mp4) |
--hook-source-start |
0.0 |
Start time in seconds for custom hook |
--no-broll |
— | Disable B-roll footage |
--no-hook |
— | Disable hook glitch teaser (V1) |
--no-bgm |
— | Disable background music |
--no-subs |
— | Disable all subtitle rendering |
--no-karaoke |
— | Use clean text instead of karaoke highlight |
| Argument | Default | Description |
|---|---|---|
--hook-v2 |
False |
Enable Multi-Hook Intro V2 mode |
--hook-v2-items |
3 |
Number of micro-hooks to generate |
--hook-v2-style |
controversial_fast_glitch |
Style prompt for AI hook selection |
--white-flash-duration |
0.12 |
Duration of flash transition between hooks (seconds) |
--no-segment-trim |
False |
Disable AI segment trimming (render full clip) |
--silence-trim |
False |
Aggressively trim silence/dead air |
| Argument | Default | Description |
|---|---|---|
--font-style |
HORMOZI |
Font preset: DEFAULT, STORYTELLER, HORMOZI, CINEMATIC
|
--advanced-text |
False |
Enable kinetic typography (word scaling & animation) |
--advanced-text-hook |
False |
Enable kinetic typography on hook teaser |
| Argument | Default | Description |
|---|---|---|
--bgm-mode |
ducking |
ducking (auto-lower during speech) or background (constant low volume) |
| Argument | Default | Description |
|---|---|---|
--edge-glow |
False |
Apply ambient edge glow to the entire output video (hook, clip, broll, voiceover). By default, glow only appears on voice-over intros. |
--edge-glow-mode |
smooth |
Edge glow rendering strategy: default (original 10s loop, may stutter at loop points), smooth (10s loop with auto-adjusted speed for seamless loop), full (renders full duration, heavier but zero stutter). |
| Argument | Default | Description |
|---|---|---|
--split-screen |
False |
Enable split-screen mode (9:16 only) |
--dynamic-split |
False |
Auto-toggle between full and split based on speakers |
--split-trigger |
diarization |
Trigger: diarization (audio) or face (visual count) |
--diarization-speakers |
auto |
Number of speakers or auto for visual detection |
--camera-switch |
False |
Enable camera-switch mode (cinematic speaker switching) |
--switch-hold-duration |
2.0 |
Min seconds before switching speakers |
--split-zoom |
1.0 |
Manual zoom factor for split panels |
--split-v-align |
0.5 |
Vertical alignment (0.0=top, 0.5=center, 1.0=bottom) |
--split-auto-zoom |
False |
Auto-zoom to isolate each speaker |
--split-max-zoom |
2.5 |
Maximum zoom limit for auto-zoom |
| Argument | Default | Description |
|---|---|---|
--whisper-model |
large-v3 |
Faster-Whisper model size |
--whisper-device |
cuda |
Device: cuda, cpu, auto
|
--whisper-compute-type |
float16 |
Compute type: float32, float16, int8
|
--use-dlp-subs |
— | Use YouTube's built-in subtitles (skips Whisper if found) |
| Argument | Default | Description |
|---|---|---|
--face-detector |
mediapipe |
AI model: mediapipe (CPU) or yolo (GPU) |
--yolo-size |
8m |
YOLO model size: 8n, 8s, 8m, 8n_v2, 9c
|
--box-face-detection |
False |
Draw yellow bounding boxes (debug) |
--static-crop |
False |
Disable face tracking, use static center crop |
| Argument | Default | Description |
|---|---|---|
--track-step |
0.25 |
Face detection frequency (seconds) |
--track-deadzone |
0.15 |
Camera deadzone ratio |
--track-smooth |
0.30 |
Camera catch-up speed factor |
--track-jitter |
5 |
Pixel threshold to ignore micro-shakes |
--track-snap |
0.25 |
Jump threshold for hard cut between speakers |
--track-conf |
0.55 |
Face detection confidence threshold |
--track-smooth-window |
12 |
Frame window for layout stability (~0.5s) |
--scene-cut-threshold |
18 |
Sensitivity for camera-cut detection |
--track-iou-threshold |
0.2 |
Overlap threshold for merging duplicate detections |
| Argument | Default | Description |
|---|---|---|
--video-bitrate |
auto |
Target bitrate (e.g. 8M, 12M, auto) |
--video-sharpen |
— | Apply subtle sharpening filter |
--video-cq |
23 |
NVENC CQ quality (lower = sharper) |
--video-crf |
20 |
libx264 CRF quality (lower = sharper) |
--video-preset |
auto |
Encoder preset (NVENC: p1-p7, x264: ultrafast-veryslow) |
--video-scale-algo |
lanczos |
Resize algorithm: lanczos, bicubic, bilinear, area
|
| Argument | Default | Description |
|---|---|---|
--dev-mode |
False |
Enable 16:9 visualization for 9:16 tracking |
--dev-mode-with-output |
False |
Generate both final + dev dashboard simultaneously |
--dev-mode-with-output-merge |
False |
Merged side-by-side ultrawide output |
--track-lines |
False |
Draw crosshair tracking lines from face box |
| Argument | Default | Description |
|---|---|---|
--story-mode |
False |
Enable Story Clip multi-source assembly |
--story-recipe |
story_recipe.json |
Path to story recipe JSON file |
--sources-json |
sources.json |
Path to sources registry JSON |
--story-output-dir |
outputs/story_clips |
Output directory for story clips |
--skip-download |
False |
Skip downloads, use cached files |