/openclaw-video-toolkit
Create professional videos autonomously using claude-code-video-toolkit — AI voiceovers, image generation, music, talking heads, and Remotion rendering.
$ npx -y skills add digitalsamba/claude-code-video-toolkit --skill openclaw-video-toolkit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/openclaw-video-toolkit
Context preview
The summary Claude sees to decide when to auto-load this skill.
Create professional videos autonomously using claude-code-video-toolkit — AI voiceovers, image generation, music, talking heads, and Remotion rendering.
SKILL.md
openclaw-video-toolkit.SKILL.mdname: video_toolkit
description: Create professional videos autonomously using claude-code-video-toolkit — AI voiceovers, image generation, music, talking heads, and Remotion rendering.
metadata:
openclaw:
emoji: "🎬"
skillKey: "video-toolkit"
os: ["darwin", "linux"]
requires:
bins: ["node", "python3", "ffmpeg", "npm"]Video Toolkit
Create professional explainer videos from a text brief. The toolkit uses open-source AI models on cloud GPUs (Modal or RunPod) for voiceover, image generation, music, and talking head animation. Remotion (React) handles composition and rendering.
CRITICAL: Toolkit Path
The toolkit lives at a fixed path. **ALWAYS `cd` here before running any tool command.**
TOOLKIT=~/.openclaw/workspace/claude-code-video-toolkit
cd $TOOLKIT
**NEVER run tool commands from inside a project directory.** Tools resolve paths relative to the toolkit root.
CRITICAL: Progress Reporting
**ALWAYS add `--progress json` to every cloud GPU tool command.** This gives you structured JSON Lines on stderr so you can monitor job status, detect stuck jobs, and report progress to the user in real-time.
# CORRECT — always include --progress json
python3 tools/music_gen.py --preset corporate-bg --duration 60 --output bg.mp3 --progress json
# WRONG — no visibility into job status
python3 tools/music_gen.py --preset corporate-bg --duration 60 --output bg.mp3
Tools that support `--progress json`: `music_gen.py`, `qwen3_tts.py`, `flux2.py`, `upscale.py`, `sadtalker.py`, `image_edit.py`, `dewatermark.py`, `ltx2.py`, `chain_video.py`.
See the **Progress Reporting** section below for output format and stage definitions.
CRITICAL: Long-Running Tasks — Use yieldMs, Not background:true
**Any tool command that takes more than 30 seconds MUST use `exec` with `yieldMs` so you can report progress to the user live.** This includes: batch FLUX generation, chain_video, SadTalker, music generation, and any multi-scene pipeline.
exec command:"cd ~/.openclaw/workspace/claude-code-video-toolkit && python3 tools/chain_video.py --output-dir /path/ --progress json ..." yieldMs:10000
**The polling loop:** 1. `exec` with `yieldMs:10000` starts the command and returns control to you every 10 seconds 2. Read the `--progress json` output — look for `"stage":"item"` (scene complete) or `"stage":"complete"` (all done) 3. Report progress to the user ("Scene 05/30 complete, 17%") 4. Poll again: `process action:poll sessionId:<id>` 5. Repeat until `"stage":"complete"`
**Why:** Your agent run ends when you finish responding. If you use `bash background:true`, you lose the ability to report progress — the user sees silence until they nudge you. With `yieldMs`, you stay in the loop.
**NEVER do this:**
- `bash background:true command:"long running thing"` then promise to "monitor" — you can't, your run ends
- Break a batch into individual tool calls across separate messages — your run ends between each one
- Promise to "continue autonomously" — you literally cannot without an external trigger
Setup
Step 1: Check Current State
cd ~/.openclaw/workspace/claude-code-video-toolkit
python3 tools/verify_setup.py
If everything shows `[x]`, skip to "Quick Test" below. Otherwise continue setup.
Step 2: Install Python Dependencies
cd ~/.openclaw/workspace/claude-code-video-toolkit
pip3 install --break-system-packages -r tools/requirements.txt
Note: `--break-system-packages` is needed on Debian/Ubuntu with managed Python (PEP 668). Safe inside containers.
Step 3: Configure Cloud GPU Endpoints
The toolkit needs cloud GPU endpoint URLs in `.env`. Check if `.env` exists and has Modal endpoints:
cat ~/.openclaw/workspace/claude-code-video-toolkit/.env | grep MODAL
If Modal endpoints are configured, you're ready. If not, **ask the user to provide Modal endpoint URLs** or set up Modal:
pip3 install --break-system-packages modal
python3 -m modal setup # Opens browser for authentication
# Deploy each tool — capture the endpoint URL from output
cd ~/.openclaw/workspace/claude-code-video-toolkit
modal deploy docker/modal-qwen3-tts/app.py
modal deploy docker/modal-flux2/app.py
modal deploy docker/modal-music-gen/app.py
modal deploy docker/modal-sadtalker/app.py
modal deploy docker/modal-image-edit/app.py
modal deploy docker/modal-upscale/app.py
modal deploy docker/modal-propainter/app.py
modal deploy docker/modal-ltx2/app.py # Requires: modal secret create huggingface-token HF_TOKEN=hf_...
**LTX-2 prerequisite:** Before deploying LTX-2, create a HuggingFace secret and accept the [Gemma 3 license](https://huggingface.co/google/gemma-3-12b-it-qat-q4_0-unquantized):
modal secret create huggingface-token HF_TOKEN=hf_your_read_access_token
Add each URL to `.env`:
ACEMUSIC_API_KEY=... # Free key from acemusic.ai/api-key (best music quality)
MODAL_QWEN3_TTS_ENDPOINT_URL=https://...modal.run
MODAL_FLUX2_ENDPOINT_URL=https://...modal.run
MODAL_MUSIC_GEN_ENDPOINT_URL=https://...modal.run
MODAL_SADTALKER_ENDPOINT_URL=https://...modal.run
MODAL_IMAGE_EDIT_ENDPOINT_URL=https://...modal.run
MODAL_UPSCALE_ENDPOINT_URL=https://...modal.run
MODAL_DEWATERMARK_ENDPOINT_URL=https://...modal.run
MODAL_LTX2_ENDPOINT_URL=https://...modal.run
Optional but recommended — Cloudflare R2 for reliable file transfer:
R2_ACCOUNT_ID=...
R2_ACCESS_KEY_ID=...
R2_SECRET_ACCESS_KEY=...
R2_BUCKET_NAME=video-toolkit
Step 4: Verify and Quick Test
cd ~/.openclaw/workspace/claude-code-video-toolkit
python3 tools/verify_setup.py
All tools should show `[x]`. Then run a quick test to confirm the GPU pipeline works:
cd ~/.openclaw/workspace/claude-code-video-toolkit
python3 tools/qwen3_tts.py --text "Hello, this is a test." --speaker Ryan --tone warm --output /tmp/video-toolkit-test.mp3 --cloud modal
If you get a valid .mp3 file, setup is comp
Read more
name: video_toolkit
description: Create professional videos autonomously using claude-code-video-toolkit — AI voiceovers, image generation, music, talking heads, and Remotion rendering.
metadata:
openclaw:
emoji: "🎬"
skillKey: "video-toolkit"
os: ["darwin", "linux"]
requires:
bins: ["node", "python3", "ffmpeg", "npm"]Video Toolkit
Create professional explainer videos from a text brief. The toolkit uses open-source AI models on cloud GPUs (Modal or RunPod) for voiceover, image generation, music, and talking head animation. Remotion (React) handles composition and rendering.
CRITICAL: Toolkit Path
The toolkit lives at a fixed path. **ALWAYS `cd` here before running any tool command.**
TOOLKIT=~/.openclaw/workspace/claude-code-video-toolkit cd $TOOLKIT
**NEVER run tool commands from inside a project directory.** Tools resolve paths relative to the toolkit root.
CRITICAL: Progress Reporting
**ALWAYS add `--progress json` to every cloud GPU tool command.** This gives you structured JSON Lines on stderr so you can monitor job status, detect stuck jobs, and report progress to the user in real-time.
# CORRECT — always include --progress json python3 tools/music_gen.py --preset corporate-bg --duration 60 --output bg.mp3 --progress json # WRONG — no visibility into job status python3 tools/music_gen.py --preset corporate-bg --duration 60 --output bg.mp3
Tools that support `--progress json`: `music_gen.py`, `qwen3_tts.py`, `flux2.py`, `upscale.py`, `sadtalker.py`, `image_edit.py`, `dewatermark.py`, `ltx2.py`, `chain_video.py`.
See the **Progress Reporting** section below for output format and stage definitions.
CRITICAL: Long-Running Tasks — Use yieldMs, Not background:true
**Any tool command that takes more than 30 seconds MUST use `exec` with `yieldMs` so you can report progress to the user live.** This includes: batch FLUX generation, chain_video, SadTalker, music generation, and any multi-scene pipeline.
exec command:"cd ~/.openclaw/workspace/claude-code-video-toolkit && python3 tools/chain_video.py --output-dir /path/ --progress json ..." yieldMs:10000
**The polling loop:** 1. `exec` with `yieldMs:10000` starts the command and returns control to you every 10 seconds 2. Read the `--progress json` output — look for `"stage":"item"` (scene complete) or `"stage":"complete"` (all done) 3. Report progress to the user ("Scene 05/30 complete, 17%") 4. Poll again: `process action:poll sessionId:<id>` 5. Repeat until `"stage":"complete"`
**Why:** Your agent run ends when you finish responding. If you use `bash background:true`, you lose the ability to report progress — the user sees silence until they nudge you. With `yieldMs`, you stay in the loop.
**NEVER do this:**
- `bash background:true command:"long running thing"` then promise to "monitor" — you can't, your run ends
- Break a batch into individual tool calls across separate messages — your run ends between each one
- Promise to "continue autonomously" — you literally cannot without an external trigger
Setup
Step 1: Check Current State
cd ~/.openclaw/workspace/claude-code-video-toolkit python3 tools/verify_setup.py
If everything shows `[x]`, skip to "Quick Test" below. Otherwise continue setup.
Step 2: Install Python Dependencies
cd ~/.openclaw/workspace/claude-code-video-toolkit pip3 install --break-system-packages -r tools/requirements.txt
Note: `--break-system-packages` is needed on Debian/Ubuntu with managed Python (PEP 668). Safe inside containers.
Step 3: Configure Cloud GPU Endpoints
The toolkit needs cloud GPU endpoint URLs in `.env`. Check if `.env` exists and has Modal endpoints:
cat ~/.openclaw/workspace/claude-code-video-toolkit/.env | grep MODAL
If Modal endpoints are configured, you're ready. If not, **ask the user to provide Modal endpoint URLs** or set up Modal:
pip3 install --break-system-packages modal python3 -m modal setup # Opens browser for authentication # Deploy each tool — capture the endpoint URL from output cd ~/.openclaw/workspace/claude-code-video-toolkit modal deploy docker/modal-qwen3-tts/app.py modal deploy docker/modal-flux2/app.py modal deploy docker/modal-music-gen/app.py modal deploy docker/modal-sadtalker/app.py modal deploy docker/modal-image-edit/app.py modal deploy docker/modal-upscale/app.py modal deploy docker/modal-propainter/app.py modal deploy docker/modal-ltx2/app.py # Requires: modal secret create huggingface-token HF_TOKEN=hf_...
**LTX-2 prerequisite:** Before deploying LTX-2, create a HuggingFace secret and accept the [Gemma 3 license](https://huggingface.co/google/gemma-3-12b-it-qat-q4_0-unquantized):
modal secret create huggingface-token HF_TOKEN=hf_your_read_access_token
Add each URL to `.env`:
ACEMUSIC_API_KEY=... # Free key from acemusic.ai/api-key (best music quality) MODAL_QWEN3_TTS_ENDPOINT_URL=https://...modal.run MODAL_FLUX2_ENDPOINT_URL=https://...modal.run MODAL_MUSIC_GEN_ENDPOINT_URL=https://...modal.run MODAL_SADTALKER_ENDPOINT_URL=https://...modal.run MODAL_IMAGE_EDIT_ENDPOINT_URL=https://...modal.run MODAL_UPSCALE_ENDPOINT_URL=https://...modal.run MODAL_DEWATERMARK_ENDPOINT_URL=https://...modal.run MODAL_LTX2_ENDPOINT_URL=https://...modal.run
Optional but recommended — Cloudflare R2 for reliable file transfer:
R2_ACCOUNT_ID=... R2_ACCESS_KEY_ID=... R2_SECRET_ACCESS_KEY=... R2_BUCKET_NAME=video-toolkit
Step 4: Verify and Quick Test
cd ~/.openclaw/workspace/claude-code-video-toolkit python3 tools/verify_setup.py
All tools should show `[x]`. Then run a quick test to confirm the GPU pipeline works:
cd ~/.openclaw/workspace/claude-code-video-toolkit python3 tools/qwen3_tts.py --text "Hello, this is a test." --speaker Ryan --tone warm --output /tmp/video-toolkit-test.mp3 --cloud modal
If you get a valid .mp3 file, setup is comp
Tell Claude Code what video you want — it writes the script, generates the voiceover, music, and visuals, and renders the MP4.
Repo: digitalsamba/claude-code-video-toolkit
Other skills on claude-code-video-toolkit.
- /acestep
AI music generation with ACE-Step 1.5 — background music, vocal tracks, covers, stem extraction, audio repainting, and continuation for video production. Use when generating music, soundtracks, jingles, or working with audio stems. Triggers include background music, soundtrack,
Open skill - /elevenlabs
Generate AI voiceovers, sound effects, and music using ElevenLabs APIs. Use when creating audio content for videos, podcasts, or games. Triggers include generating voiceovers, narration, dialogue, sound effects from descriptions, background music, soundtrack generation, voice
Open skill - /ffmpeg
Video and audio processing with FFmpeg. Use for format conversion, resizing, compression, audio extraction, and preparing assets for Remotion. Triggers include converting GIF to MP4, resizing video, extracting audio, compressing files, or any media transformation task.
Open skill - /frontend-design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Open skill - /ideogram4
Prompting patterns for Ideogram 4 text-to-image — best-in-class in-image text rendering and exact color/layout control via structured JSON captions. Use when generating images that need legible on-image text (title cards, thumbnails, logos, signage, CTAs), precise brand colors,
Open skill - /ltx2
AI video generation with LTX-2.3 22B — text-to-video, image-to-video clips for video production. Use when generating video clips, animating images, creating b-roll, animated backgrounds, or motion content. Triggers include video generation, animate image, b-roll, motion, video
Open skill

