
🎬 Your personal editor for turning hours of footage into cinematic montages.
<a href="https://github.com/GVCLab/CutClaw/raw/main/readme.md"><img src="https://img.shields.io/badge/English-1a1a2e"></a>
<a href="https://github.com/GVCLab/CutClaw/raw/main/readme_zh.md"><img src="https://img.shields.io/badge/中文版-1a1a2e"></a>
<a href="https://arxiv.org/abs/2603.29664"><img src="https://img.shields.io/badge/arXiv-paper-b31b1b.svg"></a>
<a href="https://github.com/GVCLab/CutClaw"><img src="https://img.shields.io/github/stars/GVCLab/CutClaw?style=social"></a>
Overview • Roadmap • Features • Gallery • Quick Start • Troubleshooting • Citation • Star History
CutClaw is an end-to-end editing system for long-form footage + music.
It first deconstructs raw video/audio into structured captions, then uses a multi-agent pipeline to plan shots (shot_plan), select clip timestamps (shot_point), and validate final quality before rendering.

We warmly welcome new issues and ideas from the community. If you have suggestions, please open an issue. Your feedback will help shape our future plans and be the fuel that helps this project take off. 🔥
What we're building next for faster, cheaper, and more expressive video editing.
Broader product and ecosystem directions for the next stage of CutClaw.
|
### 🎬 **One-Click Deconstruction**
|
### 🎯 **Instruction Control**
|
### 📱 **Smart Auto-Cropping**
|
### 🎵 **Music-Aware Sync**
|
git clone https://github.com/GVCLab/CutClaw.git
cd CutClaw
conda create -n CutClaw python=3.12
conda activate CutClaw
pip install -r requirements.txt
We strongly recommend the GPU-accelerated Decord/NVDEC build for faster video decoding. Build from source.
resource/
├── video/ ← put your .mp4 / .mkv here
├── audio/ ← put your .mp3 / .wav here
└── subtitle/ ← optional .srt (skips ASR, saves time)
UI (recommended)
streamlit run app.py
Then open http://localhost:8501 in your browser. (*If http://localhost:8501 does not work well, try http://127.0.0.1:8501)

Place your footage in the paths above, then you can directly select those files in the UI.
Model selection guidance:
Recommended: Gemini-3, Qwen3.5, GPT-5.3
Audio model
Recommended: Gemini-3
Agent model
shot_plan and shot_point.We leverage LiteLLM as the api manager gateway, the typical Model name is e.g. 'openai/MiniMax-2.7' which means using openai protocol to call the given model, more information see LiteLLM documents.
CLI (advanced)
python local_run.py \
--Video_Path "resource/video/xxxx.mp4" \
--Audio_Path "resource/audio/xxxx.mp3" \
--Instruction "xxxx"
Common config overrides
Any src/config.py parameter can be overridden with --config.PARAM_NAME VALUE.
| Parameter | Default | Effect |
|---|---|---|
VIDEO_PATH |
"resource/video/The_Dark_Knight.mkv" |
Default input video path used by UI remembered inputs |
AUDIO_PATH |
"resource/audio/Way_Down_We_Go.mp3" |
Default input audio path used by UI remembered inputs |
INSTRUCTION |
"Joker's crazy that want to change the world." |
Default editing instruction prompt |
ASR_BACKEND |
"litellm" |
ASR engine (litellm cloud or whisper_cpp local) |
VIDEO_FPS |
2 |
Sampling FPS for preprocessing |
MAIN_CHARACTER_NAME |
"Joker" |
Protagonist name for character-focused edits |
AUDIO_MIN_SEGMENT_DURATION |
3.0 |
Minimum beat segment duration (seconds) |
AUDIO_MAX_SEGMENT_DURATION |
5.0 |
Maximum beat segment duration (seconds) |
AUDIO_DETECTION_METHODS |
["downbeat", "pitch", "mel_energy"] |
Audio keypoint detection methods |
PARALLEL_SHOT_MAX_WORKERS |
4 |
Parallel shot selection workers |
Example:
python local_run.py \
--Video_Path "resource/video/xxxx.mp4" \
--Audio_Path "resource/audio/xxxx.mp3" \
--Instruction "xxxx" \
--config.MAIN_CHARACTER_NAME "Batman" \
--config.VIDEO_FPS 2 \
--config.AUDIO_TOTAL_SHOTS 50
Then render manually:
python render/render_video.py \
--shot-plan "Output/<video_audio>/shot_plan_*.json" \
--shot-json "Output/<video_audio>/shot_point_*.json" \
--video "resource/video/xxxx.mp4" \
--audio "resource/audio/xxxx.mp3" \
--output "output/final.mp4" \
--crop-ratio "9:16" \
--no-labels --render-hook-dialogue
Very slow runtime
libx264 worked reliably.If you find CutClaw useful for your research, welcome to cite our work using the following BibTeX:
bibtex
@article{cutclaw,
title={CutClaw: Agentic Hours-Long Video Editing via Music Synchronization},
author={Shifang Zhao, Yihan Hu, Ying Shan, Yunchao Wei, Xiaodong Cun},
journal={arXiv preprint arXiv:2603.29664},
year={2026}
}
$ claude mcp add CutClaw \
-- python -m otcore.mcp_server <graph>