Install
openclaw skills install video-short-creatorTwo-phase AI-narrated video short creator with human review checkpoints. Phase 1 analyzes source materials, generates TTS narration via edge-tts, and exports...
openclaw skills install video-short-creatorTwo-phase workflow for creating AI-narrated short videos from source clips and a script, with human review at every critical step.
| Tool | Purpose | Install |
|---|---|---|
| FFmpeg | Video processing | winget install FFmpeg or download from ffmpeg.org |
| Python 3.8+ | Script execution | Use the managed runtime |
| edge-tts | Microsoft TTS | pip install edge-tts (no API key needed) |
| SimHei font | Chinese subtitle rendering | Usually pre-installed on Windows (C:\Windows\Fonts\simhei.ttf) |
This phase generates the narration audio and exports a review sheet. Stop and wait for user approval before proceeding.
zh-CN-YunxiNeural, young male Mandarin)ffprobe to catalog:
Create a Python list of segment dicts that maps each narration segment to source clips:
SCRIPT = [
{
"id": "seg1", # unique segment ID
"text": "...", # narration text for this segment
"videos": [ # source clips to use
{"file": "clip1.mp4", "start": 0, "max_dur": 14},
{"file": "clip2.mp4", "start": 5, "max_dur": 30},
],
},
# ... more segments
]
Key design decisions:
max_dur prevents over-long clips from a single sourceRun scripts/step1_generate_review.py with the SCRIPT config:
python scripts/step1_generate_review.py
This script:
SentenceBoundary events (NOT WordBoundary)subtitle_review.md with all subtitle entries + timing infoDisplay the following for user review:
subtitle_review.md) - All subtitle entries with:
Ask the user to review and confirm or provide modifications:
CRITICAL: Do NOT proceed to Phase 2 until the user explicitly approves.
Only start after user approval of Phase 1 materials.
If the user provided subtitle edits:
subtitle_edited.txt, load it (format: start_sec|end_sec|text per line)Run scripts/step2_edit_video.py:
python scripts/step2_edit_video.py
The assembly pipeline:
.srt file + FFmpeg subtitles filteroutput/{PROJECT_NAME}_FINAL.mp4Use open_result_view to present the final video. Ask user for feedback on:
All configuration lives in the SCRIPT data structure at the top of each script. Key constants:
| Constant | Default | Description |
|---|---|---|
VOICE | zh-CN-YunxiNeural | edge-tts voice (Mandarin, young male) |
TARGET_W/H | 1920x1080 | Output resolution |
XFADE_DUR | 0.8 | Transition duration in seconds |
SUBTITLE_FONT_SIZE | 14 | Subtitle font size |
SUBTITLE_MARGIN_V | 50 | Bottom margin for subtitles |
drawtext filter — shell escaping for \n and special characters is unreliable on Windows. Always use .srt file + subtitles filter instead.subtitles filter: replace \ with / and : with \:.SentenceBoundary gives clean text; WordBoundary may contain artifacts like stray n characters.tmp0, tmp1 format (not v01, v02) to avoid FFmpeg parsing errors.references/ffmpeg-pitfalls.md.