| 1 | <p align="center"> |
| 2 | <img src="video-claw-pics/banner.png" width="100%" /> |
| 3 | </p> |
| 4 | |
| 5 | <h1 align="center"> |
| 6 | VideoClaw: AI Creative Video Production Agent |
| 7 | </h1> |
| 8 | |
| 9 | <p align="center"> |
| 10 | <a href="./README.md">简体中文</a> | <b>English</b> |
| 11 | </p> |
| 12 | |
| 13 | <h3 align="center"> |
| 14 | <img src="https://img.shields.io/badge/Version-1.0.0-blue.svg" alt="Version"> |
| 15 | <a href="https://github.com/HITsz-TMG/VideoClaw/blob/main/LICENSE"> |
| 16 | <img src="https://img.shields.io/github/license/HITsz-TMG/VideoClaw?style=flat-square" alt="License"> |
| 17 | </a> |
| 18 | <a href="https://github.com/HITsz-TMG/VideoClaw/stargazers"> |
| 19 | <img src="https://img.shields.io/github/stars/HITsz-TMG/VideoClaw?style=flat-square&logo=github" alt="Stars"> |
| 20 | </a> |
| 21 | <a href="https://github.com/HITsz-TMG/VideoClaw/fork"> |
| 22 | <img src="https://img.shields.io/github/forks/HITsz-TMG/VideoClaw?style=flat-square&logo=github" alt="Forks"> |
| 23 | </a> |
| 24 | <img src="https://img.shields.io/badge/Python-3.9+-purple.svg" alt="Python"> |
| 25 | <a href="#method-3-openclaw-auto-setup"> |
| 26 | <img src="https://img.shields.io/badge/OpenClaw-Compatible-ff4444?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6IiBmaWxsPSJ3aGl0ZSIvPjwvc3ZnPg==" alt="OpenClaw Compatible"> |
| 27 | </a> |
| 28 | </h3> |
| 29 | |
| 30 | <p align="center"> |
| 31 | <b><i><font size="5">Talk to <a href="https://github.com/openclaw/openclaw">OpenClaw</a> directly: "Generate a video about X" -> done.</font></i></b> |
| 32 | </p> |
| 33 | |
| 34 | <div align="center"> |
| 35 | |
| 36 | 📺 [**Bilibili**](https://space.bilibili.com/2031891503?spm_id_from=333.1007.0.0) ▶️ [**YouTube**](https://www.youtube.com/@imryanxu) 📖 [**Integration Guide**](#method-3-openclaw-auto-setup) 🦀 [**ClawHub**](https://clawhub.ai/hit-cxf/video-claw) |
| 37 | |
| 38 | <a href="https://trendshift.io/repositories/24295" target="_blank"><img src="https://trendshift.io/api/badge/repositories/24295" alt="HITsz-TMG%2FVideo-Claw | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a> |
| 39 | |
| 40 | </div> |
| 41 | |
| 42 | |
| 43 | # 💥 News |
| 44 | |
| 45 | - `2026/3/27`: 🎬 VideoClaw was officially released, supporting full workflow automation from idea to video generation, with user intervention and adjustment available at any time. |
| 46 | - `2026/4/9`: ♾️ VideoClaw was optimized for short dramas, adding infinite continuation and customizable plots. |
| 47 | - `2026/4/29`: 🧩 Added three features: commentary-style short videos, action transfer, and digital human talking videos. |
| 48 | - `2026/5/8`: ⚙️ Added WebUI configuration for APIs and default models, with one-click installation support. |
| 49 | - `2026/5/13`: 🎞️ Integrated Pixelle-Video HTML templates into commentary-style short videos. |
| 50 | |
| 51 | |
| 52 | # 📖 Overview |
| 53 | |
| 54 | <p align="center"> |
| 55 | <img src="video-claw-pics/workflow.png" width="100%" /> |
| 56 | </p> |
| 57 | |
| 58 | VideoClaw is an AI director system for creative video production. **You only need to provide an idea, a story outline, or even a vague concept. The system will break it down into an executable filmmaking workflow, continuously producing intermediate assets that can be reviewed, confirmed, revised, and delivered, until a complete final video is generated.** |
| 59 | |
| 60 | It is not a one-shot text-to-video tool. It is a full production line covering **script planning -> character and scene design -> storyboard planning -> reference image generation -> video generation -> post-production editing**. Instead of giving you a black-box result, VideoClaw behaves like a collaborative AI directing team: each stage informs the next, and every key node is visible, editable, and extensible. |
| 61 | |
| 62 | # 📺 Demos |
| 63 | |
| 64 | ## 🎬 VideoClaw |
| 65 | |
| 66 | <details> |
| 67 | <summary><b>Click to view WebUI UI design</b></summary> |
| 68 | |
| 69 | | Stage | Demo | Description | |
| 70 | |---|---|---| |
| 71 | | Home | <img src="video-claw-pics/workflow_demo/homepage.png" width="800" /> | Displays the system overview, supports viewing historical projects, creating new projects, and global configuration (API keys and default model settings). This is the starting point of the creation workflow. | |
| 72 | | Script Planning | <img src="video-claw-pics/workflow_demo/stage-1.png" width="800" /> | Enter a creative title and project synopsis, and the system automatically generates a structured multi-scene script (including narration and dialogue), with support for intelligent continuation of subsequent plots. | |
| 73 | | Character/Scene Design | <img src="video-claw-pics/workflow_demo/stage-2.png" width="800" /> | Automatically extracts core characteristics of characters and scenes from the script, generating stylistically consistent reference concept art as the visual basis for later storyboard generation. | |
| 74 | | Storyboard Planning | <img src="video-claw-pics/workflow_demo/stage-3.png" width="800" /> | Breaks each script scene into continuous visual storyboards, specifying camera perspective, action descriptions, and reference content in detail to ensure narrative coherence. | |
| 75 | | Reference Image Generation | <img src="video-claw-pics/workflow_demo/stage-4.png" width="800" /> | Generates high-quality, high-precision reference base images for each storyboard scene, controlling lighting details and composition as key visual references for video generation. | |
| 76 | | Video Generation | <img src="video-claw-pics/workflow_demo/stage-5.png" width="800" /> | Calls mainstream high-performance video generation models (such as Wan and Kling) to convert storyboard images into dynamic clips. | |
| 77 | | Final Editing | <img src="video-claw-pics/workflow_demo/stage-6.png" width="800" /> | Aggregates all generated video clips and exports a publishable final video with one click. | |
| 78 | |
| 79 | </details> |
| 80 | |
| 81 | ### 📱 Series 1: A Programmer Uses OpenClaw to Acquire His Former Company After Being Laid Off (Realistic Short Drama) |
| 82 | > 8 episodes in total, an underdog story with twists and reversal. The first 6 episodes were generated initially, followed by 2 continued episodes. |
| 83 | |
| 84 | <table> |
| 85 | <tr> |
| 86 | <td align="center" valign="top" width="25%"> |
| 87 | <a href="https://github.com/user-attachments/assets/1d095b82-3a72-4acc-9ca1-3ff4a6189232"> |
| 88 | <img src="https://github.com/user-attachments/assets/47b1621e-5c5a-4cb1-9c51-dcf723ac5fda" width="100%" alt="Play Episode 1"> |
| 89 | </a> |
| 90 | <br><b>▶️ Episode 1</b><br>Laid Off |
| 91 | </td> |
| 92 | <td align="center" valign="top" width="25%"> |
| 93 | <a href="https://github.com/user-attachments/assets/489c5343-6345-4bce-81dc-bf6012b9c1cf"> |
| 94 | <img src="https://github.com/user-attachments/assets/b0dd3781-b767-45c2-9fe2-3dc7421fbf80" width="100%" alt="Play Episode 2"> |
| 95 | </a> |
| 96 | <br><b>▶️ Episode 2</b><br>Late-Night Departure, First Breakthrough |
| 97 | </td> |
| 98 | <td align="center" valign="top" width="25%"> |
| 99 | <a href="https://github.com/user-attachments/assets/359809cf-678b-429c-bafa-55ff50fd3277"> |
| 100 | <img src="https://github.com/user-attachments/assets/fcfd191c-61f9-484f-a036-ce717620c827" width="100%" alt="Play Episode 3"> |
| 101 | </a> |
| 102 | <br><b>▶️ Episode 3</b><br>AI Funding, Old Employer in Crisis |
| 103 | </td> |
| 104 | <td align="center" valign="top" width="25%"> |
| 105 | <a href="https://github.com/user-attachments/assets/5561a04a-5ab3-4099-bc63-2fdbcc48f8e9"> |
| 106 | <img src="https://github.com/user-attachments/assets/14a535da-b0eb-4b4b-8039-517bac692696" width="100%" alt="Play Episode 4"> |
| 107 | </a> |
| 108 | <br><b>▶️ Episode 4</b><br>Acquiring Xingyao |
| 109 | </td> |
| 110 | </tr> |
| 111 | <tr> |
| 112 | <td align="center" valign="top"> |
| 113 | <a href="https://github.com/user-attachments/assets/ae4c3618-1990-4ff5-ad85-e09f23b08f7d"> |
| 114 | <img src="https://github.com/user-attachments/assets/e2d7fbae-d945-461f-be2f-5eb781337cac" width="100%" alt="Play Episode 5"> |
| 115 | </a> |
| 116 | <br><b>▶️ Episode 5</b><br>Acquisition, Liquidation, New Life |
| 117 | </td> |
| 118 | <td align="center" valign="top"> |
| 119 | <a href="https://github.com/user-attachments/assets/4ddbb725-34d8-478b-97bc-5d7143f73101"> |
| 120 | <img src="https://github.com/user-attachments/assets/02a8f7d4-04c9-460e-9ba1-07d594ffcd24" width="100%" alt="Play Episode 6"> |
| 121 | </a> |
| 122 | <br><b>▶️ Episode 6</b><br>New Life, Looking Back |
| 123 | </td> |
| 124 | <td align="center" valign="top"> |
| 125 | <a href="https://github.com/user-attachments/assets/1c1e5970-aaea-44ba-b041-5d551905bfde"> |
| 126 | <img src="https://github.com/user-attachments/assets/053be420-20e8-423e-8379-f1d1554546c5" width="100%" alt="Play Episode 7"> |
| 127 | </a> |
| 128 | <br><b>▶️ Episode 7</b><br>Technology Backfires |
| 129 | </td> |
| 130 | <td align="center" valign="top"> |
| 131 | <a href="https://github.com/user-attachments/assets/e56e6784-6e49-4891-b0bc-a32308dd2145"> |
| 132 | <img src="https://github.com/user-attachments/assets/19a50fcd-0a5a-4649-bb63-c7867e945d46" width="100%" alt="Play Episode 8"> |
| 133 | </a> |
| 134 | <br><b>▶️ Episode 8</b><br>Upholding Ethics, Getting Through Together |
| 135 | </td> |
| 136 | </tr> |
| 137 | </table> |
| 138 | |
| 139 | <br> |
| 140 | |
| 141 | ### 🖥️ Series 2: The Village Teacher (Sci-Fi Comic Drama) |
| 142 | > 5 episodes in total, a tribute to the inheritance of civilization. |
| 143 | |
| 144 | <table> |
| 145 | <tr> |
| 146 | <td align="center" valign="top" width="50%"> |
| 147 | <a href="https://github.com/user-attachments/assets/1ffe7b06-73e9-44cd-ad3f-afced5239f97"> |
| 148 | <img src="https://github.com/user-attachments/assets/e1328cf7-23fe-48d8-9ae6-a7beeae6dda9" width="100%" alt="Play Episode 1"> |
| 149 | </a> |
| 150 | <br><b>▶️ Episode 1</b><br>The Last Lesson |
| 151 | </td> |
| 152 | <td align="center" valign="top" width="50%"> |
| 153 | <a href="https://github.com/user-attachments/assets/7547e5d3-872c-4344-8727-ee2be109797d"> |
| 154 | <img src="https://github.com/user-attachments/assets/65bc3866-6405-4033-97b2-54de42a61402" width="100%" alt="Play Episode 2"> |
| 155 | </a> |
| 156 | <br><b>▶️ Episode 2</b><br>The Cleansing Plan |
| 157 | </td> |
| 158 | </tr> |
| 159 | <tr> |
| 160 | <td align="center" valign="top"> |
| 161 | <a href="https://github.com/user-attachments/assets/affed408-4df7-4ce7-9681-8f4ed45a6fcf"> |
| 162 | <img src="https://github.com/user-attachments/assets/81acd075-e4f1-4621-b2dc-b2d87ed83b81" width="100%" alt="Play Episode 3"> |
| 163 | </a> |
| 164 | <br><b>▶️ Episode 3</b><br>A Dying Entrustment |
| 165 | </td> |
| 166 | <td align="center" valign="top"> |
| 167 | <a href="https://github.com/user-attachments/assets/dc7a85a8-6912-4443-a995-3d8f3ca30bc8"> |
| 168 | <img src="https://github.com/user-attachments/assets/738c539e-8f90-47f5-9983-f3ac35d3d385" width="100%" alt="Play Episode 4"> |
| 169 | </a> |
| 170 | <br><b>▶️ Episode 4</b><br>Questions of Life and Death |
| 171 | </td> |
| 172 | </tr> |
| 173 | <tr> |
| 174 | <td align="center" valign="top"> |
| 175 | <a href="https://github.com/user-attachments/assets/1fb889c5-0e2b-40fa-a438-7399322ada47"> |
| 176 | <img src="https://github.com/user-attachments/assets/ce4a1ac4-7308-43ba-a803-fc77b9b9561e" width="100%" alt="Play Episode 5"> |
| 177 | </a> |
| 178 | <br><b>▶️ Episode 5</b><br>Light of Civilization |
| 179 | </td> |
| 180 | <td align="center" valign="top"> |
| 181 | <!-- Empty cell to keep table layout aligned --> |
| 182 | </td> |
| 183 | </tr> |
| 184 | </table> |
| 185 | |
| 186 | <br> |
| 187 | |
| 188 | ### 🎞️ More Demos |
| 189 | <details> |
| 190 | <summary><b>More Micro-Drama Clips</b></summary> |
| 191 | |
| 192 | <table> |
| 193 | <tr> |
| 194 | <td align="center" valign="top" width="33%"> |
| 195 | <video src="https://github.com/user-attachments/assets/63c2f33c-da50-44f0-8c26-a65611479d6a" controls width="100%" preload="none"></video> |
| 196 | <br><b>London Mystery</b> |
| 197 | </td> |
| 198 | <td align="center" valign="top" width="33%"> |
| 199 | <video src="https://github.com/user-attachments/assets/d7c65cad-05b9-46c8-ab0e-96e39909f978" controls width="100%" preload="none"></video> |
| 200 | <br><b>A Dog's Purpose</b> |
| 201 | </td> |
| 202 | <td align="center" valign="top" width="33%"> |
| 203 | <video src="https://github.com/user-attachments/assets/ec67546e-2d3d-4b34-b1ad-7d860a9bc1aa" controls width="100%" preload="none"></video> |
| 204 | <br><b>Drone Delivers Lychees</b> |
| 205 | </td> |
| 206 | </tr> |
| 207 | </table> |
| 208 | |
| 209 | </details> |
| 210 | |
| 211 | <br> |
| 212 | |
| 213 | <details> |
| 214 | <summary><b>WeChat Interaction</b></summary> |
| 215 | <div align="center"> |
| 216 | |
| 217 | | | | | | |
| 218 | |:---:|:---:|:---:|:---:| |
| 219 | |  |  |  |  | |
| 220 | |
| 221 | </div> |
| 222 | </details> |
| 223 | |
| 224 | <br> |
| 225 | |
| 226 | <details> |
| 227 | <summary><b>Feishu Interaction</b></summary> |
| 228 | <div align="center"> |
| 229 | |
| 230 | | | | | | |
| 231 | |:---:|:---:|:---:|:---:| |
| 232 | |  |  |  |  | |
| 233 | |
| 234 | </div> |
| 235 | </details> |
| 236 | |
| 237 | <!-- |
| 238 | ## 🧩 Quick Creation |
| 239 | |
| 240 | <details> |
| 241 | <summary><b>Click to view WebUI UI design</b></summary> |
| 242 | |
| 243 | | Pipeline | Demo | Frontend Entry | Description | |
| 244 | |---|---|---|---| |
| 245 | | Artistic Short Video | <img src="video-claw-pics/pipeline_demo/standard.png" width="600" /> | Sidebar: "Artistic Short Video" | Supports both "Image Montage / Dynamic Video" and "Creative Inspiration / Full Script" modes. The system splits narration by periods, generates an image and voiceover for each segment, then either composes image-based clips or calls an image-to-video model for dynamic segments. Optional title and subtitles are supported. | |
| 246 | | Action Transfer | <img src="video-claw-pics/pipeline_demo/action_transfer.png" width="600" /> | Sidebar: "Action Transfer" | Takes a reference image, an action video, and a prompt, then calls a video model with action-transfer capability to generate the result video. | |
| 247 | | Digital Human Talking Video | <img src="video-claw-pics/pipeline_demo/digital_human.png" width="600" /> | Sidebar: "Digital Human Talking Video" | Takes a character image and talking script, generates sentence-level speech and digital human video clips, uses the previous clip's tail frame to continue multi-clip generation, and replaces the final video audio with the generated speech. | |
| 248 | |
| 249 | </details> |
| 250 | |
| 251 | ### Artistic Short Video |
| 252 | |
| 253 | <div align="center"> |
| 254 | <table align="center" border="0" cellspacing="0" cellpadding="0" style="border:none; border-collapse:collapse; margin:0 auto;"> |
| 255 | <tr> |
| 256 | <td align="center" valign="top" width="25%" style="border:none;"></td> |
| 257 | <td align="center" valign="top" width="25%" style="border:none;"> |
| 258 | <video src="https://github.com/user-attachments/assets/7a674bb7-6ee9-4b83-bfd3-0d880127b632" controls width="100%" preload="none"></video> |
| 259 | <br><b>▶️ Mountain and River Dreams</b> |
| 260 | </td> |
| 261 | <td align="center" valign="top" width="25%" style="border:none;"> |
| 262 | <video src="https://github.com/user-attachments/assets/a62c8184-322d-4c06-b16f-19660766e816" controls width="100%" preload="none"></video> |
| 263 | <br><b>▶️ The Vastness of Life</b> |
| 264 | </td> |
| 265 | <td align="center" valign="top" width="25%" style="border:none;"></td> |
| 266 | </tr> |
| 267 | </table> |
| 268 | </div> |
| 269 | |
| 270 | <br> |
| 271 | --> |
| 272 | |
| 273 | # ✨ Features |
| 274 | |
| 275 | | Capability | Description | |
| 276 | |---|---| |
| 277 | | 🎬 **End-to-end generation from idea to final cut** | Connects scripts, characters, storyboards, reference images, video clips, and post-production into one complete workflow, upgrading scattered generation abilities into a full video production pipeline. | |
| 278 | | 🖼️ **Storyboard-driven controllable creation** | Uses structured scripts, storyboard planning, and reference image generation to make character consistency, shot expression, and visual style more stable and controllable. | |
| 279 | | ✍️ **Editable, continuable, and regenerable** | Supports intelligent continuation of plots and storyboards, while also allowing character, reference image, and video stages to be edited and regenerated without starting from scratch. | |
| 280 | | 🧩 **Lightweight Pipeline tasks** | Supports three one-shot tasks: commentary-style short videos, action transfer, and digital human talking videos. They are suitable for batch generation of image/text or dynamic short videos, action-transfer videos, and talking-head videos. | |
| 281 | | 📲 **Local deployment, multi-platform collaboration, and asset retention** | Supports Web UI, WeChat / Feishu collaboration, OpenClaw Skill integration, and full-chain retention of scripts, images, video clips, and final outputs. | |
| 282 | |
| 283 | --- |
| 284 | |
| 285 | # 🚀 Quick Start |
| 286 | |
| 287 | ## Method 1: One-Click Installation (Recommended) |
| 288 | |
| 289 | **Linux / MacOS**: |
| 290 | |
| 291 | ```bash |
| 292 | # 1. Clone the repository |
| 293 | git clone https://github.com/HITsz-TMG/VideoClaw.git |
| 294 | cd VideoClaw |
| 295 | |
| 296 | # 2. Enter the app directory and run the installer |
| 297 | cd video-claw/video-claw |
| 298 | chmod +x install.sh |
| 299 | ./install.sh |
| 300 | |
| 301 | # 3. back to root dir |
| 302 | cd ../.. |
| 303 | ``` |
| 304 | |
| 305 | **Windows**: |
| 306 | |
| 307 | ```bat |
| 308 | # 1. Clone the repository |
| 309 | git clone https://github.com/HITsz-TMG/VideoClaw.git |
| 310 | cd VideoClaw |
| 311 | |
| 312 | # 2. Enter the app directory and run the installer |
| 313 | cd video-claw\video-claw |
| 314 | install.bat |
| 315 | |
| 316 | # 3. back to root dir |
| 317 | cd ../.. |
| 318 | ``` |
| 319 | |
| 320 | The installer checks Python, Node.js, npm, and ffmpeg, installs backend and frontend dependencies, copies `backend/config.yaml.example` to `backend/config.yaml`, and builds the frontend. After installation, fill in model service API keys in `backend/config.yaml` and confirm the main-workflow default models under `models`. You can also start the frontend and edit these settings from the "Settings" page at the bottom of the sidebar. Then start the services: |
| 321 | |
| 322 | ```bash |
| 323 | # Start backend |
| 324 | cd video-claw/video-claw/backend |
| 325 | uv run python api_server.py |
| 326 | |
| 327 | # Start frontend in a new terminal |
| 328 | cd video-claw/video-claw/frontend |
| 329 | npm start |
| 330 | ``` |
| 331 | |
| 332 | By default, the backend runs at `http://localhost:8000`, and the frontend runs at `http://localhost:3000`. |
| 333 | |
| 334 | If you only want to install dependencies and skip the frontend build temporarily, run: |
| 335 | |
| 336 | ```bash |
| 337 | AIGC_DIRECTOR_SKIP_FRONTEND_BUILD=1 ./install.sh |
| 338 | ``` |
| 339 | |
| 340 | ## Method 2: Manual Installation |
| 341 | |
| 342 | ```bash |
| 343 | # 1. Clone the repository |
| 344 | git clone https://github.com/HITsz-TMG/Video-Claw.git |
| 345 | cd Video-Claw |
| 346 | |
| 347 | # 2. Configure and start the backend |
| 348 | cd video-claw/video-claw/backend |
| 349 | |
| 350 | # Install backend dependencies |
| 351 | uv sync |
| 352 | |
| 353 | # Configure backend YAML |
| 354 | cp config.yaml.example config.yaml |
| 355 | # Edit config.yaml, fill in API keys, and confirm main-workflow default models |
| 356 | # You can also use the frontend Settings page after startup |
| 357 | |
| 358 | # Start backend |
| 359 | uv run python api_server.py |
| 360 | # Service runs at http://localhost:8000 |
| 361 | ``` |
| 362 | |
| 363 | ```bash |
| 364 | # 3. Configure and start the frontend in a new terminal |
| 365 | cd video-claw/video-claw/frontend |
| 366 | npm install |
| 367 | npm run build |
| 368 | npm start |
| 369 | # Visit http://localhost:3000 |
| 370 | ``` |
| 371 | |
| 372 | If `uv` is not installed, you can also create a Python virtual environment manually and install backend dependencies with `pip install -r requirements.txt`. |
| 373 | |
| 374 | ## Method 3: OpenClaw Auto Setup |
| 375 | |
| 376 | Send this message to OpenClaw: |
| 377 | |
| 378 | ```text |
| 379 | Please clone this git repository: https://github.com/HITsz-TMG/Video-Claw.git |
| 380 | Then recursively copy the video-claw folder inside Video-Claw to .openclaw/workspace/skills and use it as an AIGC-related skill. |
| 381 | ``` |
| 382 | |
| 383 | When using it, it is recommended to explicitly say "use video-claw": |
| 384 | |
| 385 | ```text |
| 386 | Use video-claw to generate a video with the content "A Dog's Purpose". |
| 387 | ``` |
| 388 | |
| 389 | ## Method 4: Install via ClawHub |
| 390 | |
| 391 | Make sure `clawhub-cli` is installed locally. |
| 392 | |
| 393 | Open a terminal and run the following command. Choose `yes` for every prompt. |
| 394 | |
| 395 | ```bash |
| 396 | clawhub install video-claw |
| 397 | ``` |
| 398 | |
| 399 | After installation, ClawHub will copy `video-claw` into `workspace/skills` or your specified skills directory. |
| 400 | |
| 401 | Then you can follow Method 1 for one-click installation or Method 2 for manual setup, or let OpenClaw build and run the project for you. |
| 402 | |
| 403 | The first time you use `video-claw`, if the project has not been built manually, OpenClaw will automatically build and start both the backend and frontend. This may take some time because setup involves dependency installation and compilation. |
| 404 | |
| 405 | --- |
| 406 | |
| 407 | # 🔧 Configuration |
| 408 | |
| 409 | <details> |
| 410 | <summary><b>Click to expand full requirements and configuration</b></summary> |
| 411 | |
| 412 | ## Requirements |
| 413 | |
| 414 | - **Python**: 3.9+ |
| 415 | - **Node.js**: 18+ |
| 416 | - **npm**: 9+ |
| 417 | |
| 418 | ## Backend Configuration |
| 419 | |
| 420 | Backend configuration is stored in `video-claw/backend/config.yaml` using a lowercase hierarchical YAML structure. You can edit this file directly, or open the frontend "Settings" page from the bottom of the sidebar. |
| 421 | |
| 422 | - `api_providers` stores API keys, base URLs, and proxy toggles for each model provider. |
| 423 | - `models` stores default models for the **main workflow** home page. When creating a project, the frontend reads these defaults first and sends the concrete model parameters to the backend. The backend no longer silently chooses fallback models for the main workflow; missing model parameters will return an error. |
| 424 | - Pipelines (Artistic Short Video, Action Transfer, and Digital Human Talking Video) do not use these main-workflow defaults. Choose their models separately on each Pipeline page. |
| 425 | |
| 426 | ## Frontend Settings Page |
| 427 | |
| 428 | After starting both the backend and frontend, open the "Settings" page from the bottom of the left sidebar. You do not have to edit YAML manually for common configuration: |
| 429 | |
| 430 | - Fill in or update API Key / Access Key / Secret Key values for OpenAI, Gemini, DeepSeek, DashScope, Volcengine ARK, Kling, and other configured providers. |
| 431 | - Edit each provider's `base_url`, `enable_proxy`, and the shared proxy address `api_providers.common.proxy`. |
| 432 | - Select main-workflow default models, including `llm`, `vlm`, `image_t2i`, `image_it2i`, `video`, `video_ratio`, and `eval`. |
| 433 | - Saving writes the values back to `backend/config.yaml`. API keys, proxy settings, and default models are read by newly created projects; service startup fields such as `server.host` and `server.port` require restarting the backend to fully take effect. |
| 434 | |
| 435 | ```yaml |
| 436 | project_name: Video-Claw |
| 437 | |
| 438 | server: |
| 439 | host: 127.0.0.1 |
| 440 | port: 8000 |
| 441 | debug: false |
| 442 | |
| 443 | api_providers: |
| 444 | common: |
| 445 | print_model_input: false |
| 446 | proxy: '' |
| 447 | openai: |
| 448 | api_key: your_openai_key |
| 449 | base_url: https://api.openai.com/v1 |
| 450 | enable_proxy: false |
| 451 | gemini: |
| 452 | api_key: your_gemini_key |
| 453 | base_url: https://generativelanguage.googleapis.com/v1beta |
| 454 | enable_proxy: false |
| 455 | deepseek: |
| 456 | api_key: your_deepseek_key |
| 457 | base_url: https://api.deepseek.com/v1 |
| 458 | enable_proxy: false |
| 459 | dashscope: |
| 460 | api_key: your_dashscope_key |
| 461 | base_url: https://dashscope.aliyuncs.com/api/v1 |
| 462 | enable_proxy: false |
| 463 | ark: |
| 464 | api_key: your_ark_key |
| 465 | base_url: https://ark.cn-beijing.volces.com/api/v3 |
| 466 | enable_proxy: false |
| 467 | kling: |
| 468 | access_key: your_kling_access_key |
| 469 | secret_key: your_kling_secret_key |
| 470 | enable_proxy: false |
| 471 | |
| 472 | models: |
| 473 | llm: qwen3.5-plus |
| 474 | vlm: qwen3.5-plus |
| 475 | image_t2i: doubao-seedream-5-0-260128 |
| 476 | image_it2i: doubao-seedream-5-0-260128 |
| 477 | video: wan2.7-i2v |
| 478 | video_ratio: '16:9' |
| 479 | eval: qwen3.5-plus |
| 480 | ``` |
| 481 | |
| 482 | <!-- `api_providers.common.proxy` is the only proxy address. Each provider decides whether to use it via `enable_proxy`, which is disabled by default, so different model calls in the same process do not pollute each other. Changes to service startup fields such as `server.host` and `server.port` require restarting the backend to fully take effect. API keys, proxy settings, and main-workflow defaults under `models` are read by new project creation and model calls. --> |
| 483 | |
| 484 | ## API Keys and Model Providers |
| 485 | |
| 486 | | Provider | Config fields | Common use | |
| 487 | |:---:|:---|:---| |
| 488 | | **OpenAI** | `api_providers.openai.api_key` / `base_url` | GPT text/vision models and OpenAI image models | |
| 489 | | **Gemini** | `api_providers.gemini.api_key` / `base_url` | Gemini text and vision models | |
| 490 | | **DeepSeek** | `api_providers.deepseek.api_key` / `base_url` | DeepSeek text models | |
| 491 | | **DashScope** | `api_providers.dashscope.api_key` / `base_url` | Qwen, Wan image/video models, and related Alibaba Cloud services | |
| 492 | | **Volcengine ARK** | `api_providers.ark.api_key` / `base_url` | Seedream image models and Seedance video models | |
| 493 | | **Kling** | `api_providers.kling.access_key` / `secret_key` / `base_url` | Kling video generation | |
| 494 | |
| 495 | You only need to fill in the provider keys required by the models you choose. For example, if the main workflow uses a `doubao-seedream-*` image model, configure `ark.api_key`; if it uses a `wan*` video model, configure `dashscope.api_key`. If you choose different models on a Pipeline page, make sure the corresponding provider key is also configured. |
| 496 | |
| 497 | ## Available Models |
| 498 | |
| 499 | | Type | Models | |
| 500 | |:---:|:---| |
| 501 | | **LLM** | qwen3.6-max-preview, qwen3-max, deepseek-chat, deepseek-reasoner, deepseek-v4-flash, deepseek-v4-pro, gpt-4o, gpt-5, gpt-5.4, gemini-2.5-flash, gemini-2.0-flash, kimi-k2.6 | |
| 502 | | **VLM** | qwen3.6-plus, qwen3.6-flash, kimi-k2.6, gpt-5.4, gemini-2.5-flash-image, gemini-2.0-flash | |
| 503 | | **Text-to-Image** | wan2.7-image, wan2.7-image-pro, wan2.6-t2i, doubao-seedream-5.0/4.5/4.0, gpt-image-2 | |
| 504 | | **Image-to-Image** | wan2.7-image, wan2.7-image-pro, doubao-seedream-5.0/4.5/4.0, gpt-image-2 | |
| 505 | | **Video Generation** | wan2.7-i2v, wan2.6-i2v-flash, doubao-seedance-2.0 (Normal/Fast), kling-v3/v2.6/v2.5 | |
| 506 | |
| 507 | Model information is defined in `video-claw/video-claw/backend/models/config_model.py`. The frontend and Pipeline APIs filter models by capability tags, such as text generation, image generation, image-to-video, action transfer, and TTS. |
| 508 | |
| 509 | </details> |
| 510 | |
| 511 | |
| 512 | # Artifacts and Storage |
| 513 | |
| 514 | All tasks metadata and generated artifacts are stored under `video-claw/video-claw/backend/code/`. |
| 515 | |
| 516 | <details> |
| 517 | <summary><b>Click to expand Storage Structure and Identifiers</b></summary> |
| 518 | |
| 519 | ## 📁 Storage Structure |
| 520 | |
| 521 | ```text |
| 522 | video-claw/video-claw/backend/code/ |
| 523 | ├── data/ |
| 524 | │ ├── tasks/ # Pipeline task metadata (JSON) |
| 525 | │ └── sessions/ # AIGC-Claw session metadata (JSON) |
| 526 | └── result/ |
| 527 | ├── task/ # Pipeline generated artifacts (by Task ID) |
| 528 | │ └── <task_id>/ # e.g., 20260514_204946_961f95d9 |
| 529 | │ ├── audio_xx.mp3 # Audio segments |
| 530 | │ ├── video_xx.mp4 # Video segments |
| 531 | │ ├── storyboard.json # Storyboard data |
| 532 | │ └── final.mp4 # Final combined video |
| 533 | ├── image/ # AIGC-Claw generated images |
| 534 | │ └── <session_id>/ # By Session ID |
| 535 | │ ├── Assets/ # Character and setting assets |
| 536 | │ │ ├── characters/ # Character reference images |
| 537 | │ │ └── settings/ # Setting reference images |
| 538 | │ └── Scenes/ # Generated storyboard reference images |
| 539 | ├── video/ # AIGC-Claw generated videos |
| 540 | │ └── <session_id>/ # By Session ID |
| 541 | └── script/ # AIGC-Claw generated script/storyboard data |
| 542 | ``` |
| 543 | |
| 544 | ## 🆔 Identifiers |
| 545 | |
| 546 | - **Task ID**: Format: `YYYYMMDD_HHMMSS_RandomHash` (e.g., `20260514_204946_961f95d9`), used to uniquely identify a Pipeline task. |
| 547 | - **Session ID**: Millisecond-level timestamp (e.g., `1778810088325`), used to associate interaction context and generated images in the main workflow. |
| 548 | |
| 549 | </details> |
| 550 | |
| 551 | # 🙏 Acknowledgments |
| 552 | |
| 553 | The idea and design of Video-Claw were inspired by [Pixelle-Video](https://github.com/AIDC-AI/Pixelle-Video), [AutoResearchClaw](https://github.com/aiming-lab/AutoResearchClaw), [huobao-drama](https://github.com/chatfire-AI/huobao-drama), [Flova](https://www.flova.ai), and [libtv-skills](https://github.com/libtv-labs/libtv-skills). |
| 554 | |
| 555 | |
| 556 | # 📚 Related Work |
| 557 | |
| 558 | | Framework | Paper Information | |
| 559 | |:---:|---| |
| 560 | | <img src="./FilmAgent-pics/framework.png" width="420" alt="FilmAgent framework"/> | **[SIGGRAPH Asia 2024] FilmAgent: Automating Virtual Film Production Through a Multi-Agent Collaborative Framework**<br>*Zhenran Xu, Jifang Wang, Longyue Wang, Zhouyi Li, Senbao Shi, Baotian Hu, Min Zhang*<br>[[Paper](https://doi.org/10.1145/3681758.3698014)] [[GitHub](https://github.com/HITsz-TMG/Video-Claw/blob/main/FilmAgent.md)] | |
| 561 | | <img src="https://github.com/HITsz-TMG/Anim-Director/blob/main/Anim-Director/assets/visualeg.png" width="420" alt="Anim-Director result"/> | **[SIGGRAPH Asia 2024] Anim-Director: A Large Multimodal Model Powered Agent for Controllable Animation Video Generation**<br>*Yunxin Li, Haoyuan Shi, Baotian Hu, Longyue Wang, Jiashun Zhu, Jinyi Xu, Zhen Zhao, Min Zhang*<br>[[Paper](https://doi.org/10.1145/3680528.3687688)] [[GitHub](https://github.com/HITsz-TMG/Anim-Director/tree/main/Anim-Director)] | |
| 562 | | <img src="https://raw.githubusercontent.com/HITsz-TMG/Anim-Director/main/AniMaker/assets/pipeline.png" width="420" alt="AniMaker pipeline"/> | **[SIGGRAPH Asia 2025] AniMaker: Multi-Agent Animated Storytelling with MCTS-Driven Clip Generation**<br>*Haoyuan Shi, Yunxin Li, Xinyu Chen, Longyue Wang, Baotian Hu, Min Zhang*<br>[[Paper](https://doi.org/10.1145/3757377.3764009)] [[GitHub](https://github.com/HITsz-TMG/Anim-Director/tree/main/AniMaker)] | |
| 563 | |
| 564 | |
| 565 | <p align="center"> |
| 566 | <sub>Built with 🦞 by the Lychee Agent team</sub> |
| 567 | </p> |
| 568 |