Video Editor Full — Full-Stack Video Post-Production Skill
Integrates 6 major capabilities into a one-stop video post-production Skill, from raw screen recording to finished product, all AI-driven.
Capability Matrix
| Module | Tool | Purpose | Dependency |
|---|---|---|---|
| Transcription | Whisper (base/small/medium) | Speech → SRT subtitles | Python + openai-whisper |
| Silence Removal | auto-editor | Automatic jump cuts for dead air | Python + auto-editor |
| Fine Editing | ffmpeg filter_complex | PIP magnifier, chapter titles, acceleration, drawbox highlights | ffmpeg 7.0+ |
| Subtitles | ffmpeg subtitles filter | Burn SRT (supports Chinese Microsoft YaHei) | ffmpeg + font |
| Animation | Remotion | Intros/outros, data visualization, dynamic charts | Node.js 18+ + Remotion |
| Branded Videos | HyperFrames | HTML/CSS → video, AI digital avatar | Node.js + HeyGen API Key |
Workflow Overview
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Raw Video │────▶│ Analyze & │────▶│ Content │
│ │ │ Transcribe │ │ Planning │
└─────────────┘ └──────────────┘ └─────────────────┘
│
┌──────────────────────────────┼──────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ auto-editor │ │ ffmpeg Fine │ │ Remotion │
│ Silence/Jump │ │ PIP+Chapters+ │ │ Intros/Outros│
│ Cuts │ │ Acceleration │ │ │
└──────┬───────┘ └────────┬────────┘ └──────┬───────┘
│ │ │
└─────────────────────────────┼───────────────────┘
▼
┌─────────────────┐
│ Subtitle Burn │
│ + Final Export │
└─────────────────┘
Prerequisites
# Required
pip install openai-whisper auto-editor
# ffmpeg must be in PATH (7.0+ recommended)
ffmpeg -version
# Optional: Remotion (intro/outro animations)
npx create-video@latest --blank
# Optional: HyperFrames (branded videos)
# Requires HeyGen API Key, see templates/hyperframes-config.example.json
Module Details
Module 1: Analysis & Transcription
Step 1: Video Metadata
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
Focus on: resolution, frame rate, duration, codec, bitrate.
Step 2: Extract Key Frames (every 5 seconds)
mkdir -p frames
ffmpeg -i input.mp4 -vf "fps=1/5" -q:v 2 frames/frame_%03d.jpg
Use visual analysis to determine key UI areas, chapter boundaries, and magnifier targets.
Step 3: Whisper Transcription
import whisper
model = whisper.load_model("base") # "base" is fine for Chinese, "medium" is more accurate but slower
result = model.transcribe("audio.wav", language="zh")
After outputting SRT, manual calibration is required:
- Proper nouns (product names, technical terms)
- Timeline alignment (especially drift in the latter half)
- Homophone errors
Module 2: auto-editor Silence Removal
# Basic usage: remove all silent segments
auto-editor input.mp4 --margin 0.2s --output no_silence.mp4
# Conservative mode: only remove silence longer than 1 second
auto-editor input.mp4 --min-clip-length 1s --margin 0.3s --output no_silence.mp4
# Export timeline (no direct rendering, for subsequent ffmpeg fine editing)
auto-editor input.mp4 --export timeline:api
Note: After auto-editor removes silence, the timeline changes. Subtitles must be generated or realigned after silence removal.
Recommended order: Original video → auto-editor → re-transcribe/align subtitles → ffmpeg fine editing
Module 3: ffmpeg Fine Editing (Core)
3.1 PIP Magnifier (Picture-in-Picture)
# Key: Use force_original_aspect_ratio for crop area to avoid stretching
PIP_W, PIP_H = 300, 188 # Target PIP window size
# filter_complex snippet:
# crop → scale (maintain ratio) → pad (add black borders) → drawbox (yellow border)
f"[pip{i}]crop={cw}:{ch}:{cx}:{cy},"
f"scale={PIP_W}:{PIP_H}:force_original_aspect_ratio=decrease,"
f"pad={PIP_W}:{PIP_H}:(ow-iw)/2:(oh-ih)/2:color=0x1a1a2e,"
f"drawbox=x=0:y=0:w={PIP_W}:h={PIP_H}:color=yellow:t=2"
f"[pip{i}s]"
3.2 Chapter Titles (drawtext fade)
# Display titles at chapter transition points, with fade in/out
f"drawtext=text='{title}':"
f"fontfile='C\\:/Windows/Fonts/msyh.ttc':"
f"fontsize=28:fontcolor=white:borderw=3:[email protected]:"
f"x=(w-text_w)/2:y=30:"
f"alpha='if(lt(t,{start}),0,if(lt(t,{start}+0.4),(t-{start})/0.4,"
f"if(lt(t,{end}-0.4),1,if(lt(t,{end}),({end}-t)/0.4,0))))':"
f"enable='between(t,{fade_in},{fade_out})'"
3.3 Acceleration
# Video acceleration
f"[vout]setpts=PTS/{SPEED}[vfinal]"
# Audio acceleration (atempo range 0.5-2.0, chain if exceeding)
f"[0:a]atempo={SPEED}[afinal]"
3.4 Subtitle Timeline Synchronization
After acceleration, subtitle timecodes must be adjusted synchronously:
new_start = original_start / SPEED
new_end = original_end / SPEED
3.5 Full Build Template
See scripts/build_template.py
Module 4: Remotion Animated Clips
Suitable for generating intros, outros, transition animations, and data visualizations.
# Initialize Remotion project
npx create-video@latest my-intro --blank
# Write animation in src/Composition.tsx
# Render to MP4
npx remotion render src/index.ts MyComp out/intro.mp4
Generated clips are concatenated to the main video via ffmpeg concat:
# concat list
echo "file 'intro.mp4'" > list.txt
echo "file 'main.mp4'" >> list.txt
echo "file 'outro.mp4'" >> list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy final.mp4
Remotion Agent Skill Installation:
# Official skill (recommended)
git clone https://github.com/remotion-dev/skills.git ~/.claude/skills/remotion
Module 5: HyperFrames Branded Videos
Renders HTML/CSS/JS into video frames, suitable for brand promotion and website-to-video conversion.
# Installation
npm install @anthropic-ai/hyperframes
# Basic usage: HTML → MP4
npx hyperframes render --input composition.html --output brand.mp4
Requires HeyGen API Key for Avatar digital human functionality.
Configuration template: templates/hyperframes-config.example.json
Module 6: Final Export
Subtitle Burning (Final Step)
ffmpeg -y -i video_no_sub.mp4 \
-vf "subtitles='srt_path':force_style='FontSize=13,FontName=Microsoft YaHei,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,Outline=2,Shadow=1,MarginV=22,Bold=1'" \
-c:v libx264 -preset slow -crf 17 \
-c:a copy -pix_fmt yuv420p -movflags +faststart \
output.mp4
Multi-Platform Export
| Platform | Resolution | Aspect Ratio | Duration Limit |
|---|---|---|---|
| YouTube | 1920x1080 | 16:9 | None |
| WeChat Video | 1080x1920 | 9:16 | 60s (recommended) |
| Xiaohongshu | 1080x1350 | 4:5 | 5min |
| Twitter/X | 1280x720 | 16:9 | 2:20 |
| 1920x1080 | 16:9 | 10min |
# Vertical crop example (16:9 → 9:16)
ffmpeg -i input.mp4 -vf "crop=ih*9/16:ih,scale=1080:1920" -crf 18 vertical.mp4
Quality Guidelines
- CRF 17 + slow preset — Standard quality for tutorial videos
- yuv420p — Compatible with all players
- faststart — Enables instant web playback
- lanczos — Preferred scaling algorithm
- No more than 2 encoding passes — Avoid generational loss
- Burn subtitles last — Ensure timeline alignment
Common Pitfalls
- Windows paths in ffmpeg subtitles filter require
/and:must be escaped as\: - Whisper on Windows must use Windows paths (cannot use
/tmp/) atemporange is 0.5-2.0, chain if exceeding:atempo=2.0,atempo=1.5= 3x- Mismatched PIP crop area and target window aspect ratios cause stretching; must use
force_original_aspect_ratio - auto-editor changes the timeline; any previous subtitles become invalid
- If filter_complex is too long to pass on the command line, use
-filter_complex_scriptto write to a file
File Structure
video-editor-skill-pack/
├── SKILL.md # This file
├── scripts/
│ ├── build_template.py # ffmpeg fine editing build template
│ ├── transcribe.py # Whisper transcription script
│ ├── adjust_srt_speed.py # SRT timeline speed adjustment
│ └── analyze_frames.py # Key frame extraction + analysis
├── templates/
│ ├── hyperframes-config.example.json
│ └── remotion-intro/ # Remotion intro template (to be populated)
└── examples/
└── tutorial-video-workflow.md # Tutorial video full workflow example