Video Editor Full — Vollständiger Video-Postproduktions-Skill
Integriert 6 leistungsstarke Module in einer All-in-One-Video-Postproduktions-Pipeline. Vom Rohmaterial bis zum fertigen Produkt – komplett KI-gesteuert.
Fähigkeitsmatrix
| Modul | Tool | Zweck | Abhängigkeit |
|---|---|---|---|
| Transkription | Whisper (base/small/medium) | Sprache → Untertitel (SRT) | Python + openai-whisper |
| Stille entfernen | auto-editor | Automatische Jump Cuts bei Stille | Python + auto-editor |
| Feinschnitt | ffmpeg filter_complex | PIP-Lupe, Kapiteltitel, Beschleunigung, drawbox-Hervorhebung | ffmpeg 7.0+ |
| Untertitel | ffmpeg subtitles filter | SRT einbrennen (unterstützt Chinesisch, Microsoft YaHei) | ffmpeg + Schriftart |
| Animation | Remotion | Intro/Outro, Datenvisualisierung, dynamische Diagramme | Node.js 18+ + Remotion |
| Markenvideo | HyperFrames | HTML/CSS → Video, KI-Avatar | Node.js + HeyGen API Key |
Workflow-Übersicht
┌──────────────┐ ┌───────────────┐ ┌──────────────────┐
│ Rohvideo │────▶│ Analyse & │────▶│ Inhaltsplanung │
└──────────────┘ │ Transkription │ └──────────────────┘
└───────────────┘
│
┌──────────────────────┼──────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ auto-editor │ │ ffmpeg- │ │ Remotion │
│ Stille/Jump │ │ Feinschnitt │ │ Intro/Outro │
└──────┬───────┘ │ PIP+Kapitel+ │ └──────┬───────┘
│ │ Beschleunigung │ │
│ └────────┬────────┘ │
└─────────────────────┼────────────────────┘
▼
┌─────────────────┐
│ Untertitel- │
│ Einbrennung │
│ + Finaler │
│ Export │
└─────────────────┘
Voraussetzungen
# Erforderlich
pip install openai-whisper auto-editor
# ffmpeg muss im PATH sein (7.0+ empfohlen)
ffmpeg -version
# Optional: Remotion (Intro/Outro-Animationen)
npx create-video@latest --blank
# Optional: HyperFrames (Markenvideos)
# Benötigt HeyGen API Key, siehe templates/hyperframes-config.example.json
Modul-Details
Modul 1: Analyse & Transkription
Schritt 1: Video-Metadaten
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
Wichtige Informationen: Auflösung, Bildrate, Dauer, Codec, Bitrate.
Schritt 2: Schlüsselbilder extrahieren (alle 5 Sekunden)
mkdir -p frames
ffmpeg -i input.mp4 -vf "fps=1/5" -q:v 2 frames/frame_%03d.jpg
Mit visueller Analyse wichtige UI-Bereiche, Kapitelgrenzen und Zielregionen für die Lupe identifizieren.
Schritt 3: Whisper-Transkription
import whisper
model = whisper.load_model("base") # Für Chinesisch reicht base; medium ist genauer aber langsamer
result = model.transcribe("audio.wav", language="zh")
SRT-Ausgabe muss manuell überprüft werden:
- Eigennamen (Produktnamen, technische Begriffe)
- Sync der Zeitachsen (insbesondere am Ende kann es zu Abweichungen kommen)
- Homophon-Fehler
Modul 2: Stille mit auto-editor entfernen
# Basis: Alle stillen Abschnitte entfernen
auto-editor input.mp4 --margin 0.2s --output no_silence.mp4
# Konservativ: Nur Stille >1s entfernen
auto-editor input.mp4 --min-clip-length 1s --margin 0.3s --output no_silence.mp4
# Timeline exportieren (ohne Rendern, für späteren ffmpeg-Feinschnitt)
auto-editor input.mp4 --export timeline:api
Hinweis: auto-editor verändert die Zeitachse. Untertitel müssen nach dem Entfernen der Stille generiert oder neu ausgerichtet werden.
Empfohlene Reihenfolge: Rohvideo → auto-editor → Transkription/Untertitel-Ausrichtung → ffmpeg-Feinschnitt
Modul 3: ffmpeg-Feinschnitt (Kern)
3.1 PIP-Lupe (Bild-in-Bild)
# Wichtig: crop-Bereich mit force_original_aspect_ratio, um Verzerrung zu vermeiden
PIP_W, PIP_H = 300, 188 # Zielgröße des PIP-Fensters
# filter_complex-Fragment:
# crop → scale (Seitenverhältnis beibehalten) → pad (schwarze Ränder) → drawbox (gelber Rahmen)
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 Kapiteltitel (drawtext mit Ein-/Ausblendung)
# Titel an Kapitelübergängen anzeigen, mit Ein-/Ausblendung
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 Beschleunigung
# Videobeschleunigung
f"[vout]setpts=PTS/{SPEED}[vfinal]"
# Audiobeschleunigung (atempo-Bereich 0.5-2.0; für höhere Werte verketten)
f"[0:a]atempo={SPEED}[afinal]"
3.4 Synchronisation der Untertitel-Zeitachse
Nach der Beschleunigung müssen die Zeitcodes der Untertitel entsprechend angepasst werden:
new_start = original_start / SPEED
new_end = original_end / SPEED
3.5 Vollständige Build-Vorlage
Siehe scripts/build_template.py
Modul 4: Remotion-Animationen
Geeignet für Intro, Outro, Übergänge, Datenvisualisierung.
# Remotion-Projekt initialisieren
npx create-video@latest my-intro --blank
# In src/Composition.tsx Animation schreiben
# Als MP4 rendern
npx remotion render src/index.ts MyComp out/intro.mp4
Erstellte Sequenzen mit ffmpeg concat an das Hauptvideo anhängen:
# concat-Liste
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 installieren:
# Offizieller Skill (empfohlen)
git clone https://github.com/remotion-dev/skills.git ~/.claude/skills/remotion
Modul 5: HyperFrames-Markenvideos
HTML/CSS/JS in Videoframes rendern – ideal für Markenwerbung oder Website-zu-Video.
# Installation
npm install @anthropic-ai/hyperframes
# Basis: HTML → MP4
npx hyperframes render --input composition.html --output brand.mp4
Für die Avatar-Funktion (digitaler Mensch) wird ein HeyGen API Key benötigt.
Konfigurationsvorlage siehe templates/hyperframes-config.example.json.
Modul 6: Finaler Export
Untertitel einbrennen (letzter Schritt)
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-Plattform-Export
| Plattform | Auflösung | Seitenverhältnis | Zeitlimit |
|---|---|---|---|
| YouTube | 1920x1080 | 16:9 | Keins |
| WeChat-Video | 1080x1920 | 9:16 | 60s (empfohlen) |
| Xiaohongshu | 1080x1350 | 4:5 | 5min |
| Twitter/X | 1280x720 | 16:9 | 2:20 |
| 1920x1080 | 16:9 | 10min |
# Beispiel: Hochformat-Crop (16:9 → 9:16)
ffmpeg -i input.mp4 -vf "crop=ih*9/16:ih,scale=1080:1920" -crf 18 vertical.mp4
Qualitätsrichtlinien
- CRF 17 + slow preset — Standardqualität für Tutorial-Videos
- yuv420p — Kompatibel mit allen Playern
- faststart — Schneller Start bei Web-Playback
- lanczos — Bevorzugter Skalierungsalgorithmus
- Maximal 2 Kodierungsdurchgänge — Vermeidet Generationsverlust
- Untertitel zuletzt einbrennen — Stellt sicher, dass die Zeitachse synchron ist
Häufige Fallstricke
- Windows-Pfade im ffmpeg subtitles filter benötigen
/und:muss als\:escaped werden - Whisper auf Windows muss Windows-Pfade verwenden (nicht
/tmp/) atempo-Bereich 0.5-2.0; für höhere Werte verketten:atempo=2.0,atempo=1.5= 3x- PIP-crop-Bereich und Zielfenstergröße müssen das gleiche Seitenverhältnis haben, sonst kommt es zu Verzerrungen –
force_original_aspect_ratioverwenden - Nach auto-editor ist die Zeitachse geändert – vorher erstellte Untertitel sind ungültig
- Bei zu langen filter_complex-Befehlen nicht in der Kommandozeile übergeben, sondern mit
-filter_complex_scriptals Datei schreiben
Dateistruktur
video-editor-skill-pack/
├── SKILL.md # Diese Datei
├── scripts/
│ ├── build_template.py # ffmpeg-Feinschnitt-Build-Vorlage
│ ├── transcribe.py # Whisper-Transkriptionsskript
│ ├── adjust_srt_speed.py # SRT-Zeitachsenanpassung (Beschleunigung)
│ └── analyze_frames.py # Schlüsselbild-Extraktion + Analyse
├── templates/
│ ├── hyperframes-config.example.json
│ └── remotion-intro/ # Remotion-Intro-Vorlage (noch auszufüllen)
└── examples/
└── tutorial-video-workflow.md # Beispiel für einen vollständigen Tutorial-Video-Workflow