Communitygithub.com

Video-Editor

Ermöglicht das Bearbeiten, Erstellen, Trimmen, Komprimieren, Zusammenführen, Skalieren, Ändern der Geschwindigkeit, Stabilisieren, Hinzufügen von Übergängen, Transkribieren, Hinzufügen von Untertiteln, Erstellen von Titel- und Endkarten, Lower Thirds, Teasern, Thumbnails, GIFs, Wasserzeichen und die Audiobearbeitung.

Was ist Video-Editor?

Diese Fertigkeit bietet eine KI-gestützte Videobearbeitung, die auf drei leistungsstarken Engines basiert: ffmpeg für die Bearbeitung bestehender Aufnahmen, Remotion für die Erstellung neuer Videoinhalte und Whisper für Transkription und Untertitel. Sie erkennt automatisch, welche Engine für die Benutzeranfrage geeignet ist, und führt die entsprechenden Schritte aus. Besonders hervorzuheben ist die Hardwarebeschleunigung auf Apple Silicon und die Integration von Design-Assets für konsistente visuelle Themen. Die Fertigkeit ist für Plattformen wie Claude Code, Cursor und Codex optimiert und bietet eine umfassende Pipeline für alles vom einfachen Trimmen bis hin zu komplexen, mehrstufigen Workflows mit Übergängen und Animationen.

Funktioniert mit~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/ElSalvatore-sys/video-editor-plugin/tree/main/skills/video-editor

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Video Editor

Überblick

KI-gestützter Video-Workflow mit drei Engines:

  • ffmpeg – Bearbeiten vorhandenen Materials (Trimmen, Komprimieren, Zusammenführen, Skalieren, Geschwindigkeit, Stabilisieren, Wasserzeichen, Audio, GIF, Thumbnail, Übergänge, Untertitel)
  • Remotion – Erstellen neuer Videoinhalte (Titelkarten, Lower Thirds, Endkarten, Teaser, animierte Overlays)
  • Whisper – Transkription und Untertitelgenerierung

Zusätzliche Funktionen:

  • Hardwarebeschleunigung auf Apple Silicon via h264_videotoolbox / hevc_videotoolbox
  • Theme-Integration mit Design-Assets aus ~/design-assets/color-palettes/
  • Plattform-Voreinstellungen für YouTube, Instagram, TikTok, Twitter und mehr
  • Workspace-Caching für Remotion, um wiederholte npm install-Aufrufe zu vermeiden

Wann verwenden

Auslösen bei ALLEN dieser Benutzerabsichten:

KategorieSchlüsselwörter
Grundlegende Bearbeitungtrimmen, schneiden, kürzen, teilen
Kompressionkomprimieren, Größe reduzieren, verkleinern, optimieren
Zusammenführenzusammenführen, kombinieren, konkatenieren, verbinden
Skalierenskalieren, zuschneiden, anpassen, Seitenverhältnis, Hochformat, Querformat, Quadrat
Geschwindigkeitbeschleunigen, verlangsamen, Zeitlupe, Zeitraffer, vorspulen, rückwärts
Stabilisierungstabilisieren, verwackelt, glätten, Verwacklung entfernen
ÜbergängeÜberblendung, Kreuzblende, auflösen, wischen, Übergang
UntertitelUntertitel, SRT, transkribieren, Sprache-zu-Text
TitelkartenTitel, Intro, Eröffnung, animierter Text
Lower ThirdsLower Third, Namensetikett, Chyron, Namensleiste
EndkartenEndkarte, Outro, Endbild, Schluss
TeaserTeaser, Trailer, Vorschau, Höhepunkte, Zusammenstellung
ThumbnailsVorschaubild, Poster, Einzelbild extrahieren, Screenshot
GIFsGIF, animiertes Bild, Schleife, Meme
WasserzeichenWasserzeichen, Logo-Overlay, Branding
AudioAudio, Lautstärke, normalisieren, Lautheit, stumm, Einblenden, Ausblenden, mischen, Audio extrahieren
InfoInfo, Details, Dauer, Auflösung, Codec, Bitrate, Metadaten
PipelinePipeline, Stapel, Arbeitsablauf, mehrstufig
PlattformYouTube, Instagram, TikTok, Twitter, Reels, Shorts

Befehlsreferenz

Bearbeitungsbefehle (ffmpeg)

BefehlBeschreibungBeispiel
/trimEinen Abschnitt aus einem Video ausschneiden„video.mp4 von 0:30 bis 1:45 trimmen“
/compressDateigröße mit Qualitätskontrolle reduzieren„auf unter 10 MB komprimieren“
/mergeMehrere Clips zu einem zusammenführen„clip1.mp4 und clip2.mp4 mit Überblendung zusammenführen“
/resizeAbmessungen, Seitenverhältnis ändern, zuschneiden oder anpassen„auf 1080x1080 Quadrat skalieren“
/speedBeschleunigen, verlangsamen oder umkehren„2x Geschwindigkeit“ oder „0,5x Zeitlupe“
/stabilizeKameraverwacklung entfernen (vidstab zwei Durchgänge)„verwackeltes.mp4 stabilisieren“
/watermarkBild oder Text auf Video legen„logo.png unten-rechts hinzufügen“
/audioLautstärke, normalisieren, mischen, ein-/ausblenden, extrahieren, stumm„Audio auf -14 LUFS normalisieren“
/thumbnailEinzelbild als Bild extrahieren„Thumbnail bei 0:15“
/gifAnimiertes GIF aus Videoausschnitt erstellen„GIF von 0:05 bis 0:10 bei 320px“
/extractAudio- oder Untertitelspuren extrahieren„Audio als mp3 extrahieren“
/infoVideo-Metadaten und Streamdetails anzeigen„info video.mp4“

Erstellungsbefehle (Remotion)

BefehlBeschreibungBeispiel
/title-cardAnimierte Titelcard mit Theme-Unterstützung„Titelkarte: Coming Soon, wad Theme, Zoom-Animation“
/lower-thirdAnimiertes Namens-/Titel-Overlay„Lower Third: John Doe, CEO, moderner Stil“
/end-cardAnimiertes Outro mit CTA und sozialen Medien„Endkarte: Abonnieren!, @handle, ea Theme“
/teaserMehrfach-Clip-Zusammenstellung mit Übergängen und Titeln„Teaser aus dem clips/-Ordner, 30 Sekunden“

Transkriptionsbefehle (Whisper)

BefehlBeschreibungBeispiel
/transcribeSRT/VTT aus Sprache generieren„Interview.mp4 transkribieren“
/add-captionsTranskribieren + Untertitel in Video einbrennen„talk.mp4 Untertitel hinzufügen“

Orchestrierung

BefehlBeschreibungBeispiel
/pipelineMehrstufige Verarbeitungskette„trimmen, Titelcard hinzufügen, für Instagram komprimieren“

Arbeitsablauf

Schritt 1: Verfügbare Werkzeuge prüfen

which ffmpeg ffprobe && echo "ffmpeg: ok"
node --version && echo "node: ok"
which whisper && echo "whisper: ok" || echo "whisper: nicht installiert (Untertitel benötigen manuelle .srt)"
ffmpeg -encoders 2>/dev/null | grep videotoolbox && echo "hw accel: ok" || echo "hw accel: nicht verfügbar"
ffmpeg -filters 2>/dev/null | grep vidstab && echo "vidstab: ok" || echo "vidstab: nicht verfügbar (brew install ffmpeg --with-libvidstab)"

Wenn ffmpeg fehlt: „Installiere mit brew install ffmpeg“ Wenn Node.js fehlt: „Installiere von https://nodejs.org oder mit brew install node“ Wenn vidstab fehlt: „ffmpeg neu installieren mit vidstab: brew install ffmpeg --with-libvidstab“

Schritt 2: Anfrage klassifizieren

BenutzerabsichtEnginePfad
Vorhandenes Material bearbeitenffmpegSchritt 3a
Neue Videoinhalte erstellenRemotionSchritt 3b
Audiobearbeitungffmpeg AudiofilterSchritt 3a
Informationen/ÜberprüfungffprobeSchritt 3a
Kombinierte Pipelinebeide orchestrierenSchritt 3c
PlattformveröffentlichungVoreinstellungen skalieren + komprimierenSchritt 3a
TranskriptionWhisper + ffmpegSchritt 3a

Schritt 3a: ffmpeg-Pfad

  1. Nach Eingabedatei(en) fragen, falls nicht angegeben
  2. Mit ffprobe untersuchen:
    ffprobe -v quiet -print_format json -show_format -show_streams "<datei>"
    
  3. Hardwarebeschleunigung erkennen (macOS Apple Silicon):
    # Auf VideoToolbox-Unterstützung prüfen
    ffmpeg -encoders 2>/dev/null | grep h264_videotoolbox
    # Falls verfügbar, bevorzugen: -c:v h264_videotoolbox -b:v 5M
    # Fallback: -c:v libx264 -crf 23 -preset medium
    
  4. Ausgabekonfliktbehandlung:
    # Vor dem Schreiben der Ausgabe prüfen, ob Datei existiert
    # Wenn "trimmed_video.mp4" existiert, "trimmed_video_2.mp4", "trimmed_video_3.mp4" usw. verwenden
    OUTPUT="trimmed_video.mp4"
    COUNTER=2
    while [ -f "$OUTPUT" ]; do
      OUTPUT="trimmed_video_${COUNTER}.mp4"
      COUNTER=$((COUNTER + 1))
    done
    
  5. ffmpeg-Befehl erstellen
  6. Jedes Flag in einfachem Deutsch erklären
  7. Ausgabedateinamen nennen (Quelle niemals überschreiben)
  8. Fragen: „Soll ich das ausführen?“
  9. Ausführen, dann überprüfen:
    # Exit-Code prüfen
    if [ $? -eq 0 ]; then
      echo "Erfolg"
      ffprobe -v quiet -print_format json -show_format "$OUTPUT" | grep -E '"duration"|"size"'
    else
      echo "Fehler — siehe ffmpeg-Ausgabe oben"
    fi
    
  10. Ausgabepfad + Dateigröße + Dauer melden

Ausgabenbenennungskonventionen:

BefehlAusgabemuster
Trimmentrimmed_<dateiname>
Komprimierencompressed_<dateiname>
Zusammenführenmerged_output.<endung>
Skalierenresized_<dateiname>
Geschwindigkeitspeed_<faktor>x_<dateiname>
Stabilisierenstabilized_<dateiname>
Wasserzeichenwatermarked_<dateiname>
Untertitelcaptioned_<dateiname>
Audio extrahieren<name>.mp3
Audio geändertaudio_<dateiname>
Untertitel extrahieren<name>.srt
Thumbnailthumb_<name>_<zeitcode>.jpg
GIF<name>.gif

Schritt 3b: Remotion-Pfad

  1. Prüfen, ob Node.js installiert ist
  2. Workspace-Caching – vorhandenen Workspace wiederverwenden:
    WORKSPACE="/tmp/remotion-workspace"
    if [ -d "$WORKSPACE/node_modules" ]; then
      echo „Verwende gecachten Remotion-Workspace“
    else
      echo „Erstelle Remotion-Workspace (erster Durchlauf)...“
      mkdir -p "$WORKSPACE"
      cp -r ~/project-templates/remotion-video/* "$WORKSPACE/"
      cd "$WORKSPACE" && npm install
    fi
    
  3. Theme laden aus ~/design-assets/color-palettes/:
    # Wenn Benutzer ein Theme angibt (wad, bloghead, ea), Farben aus JSON laden
    # Als inputProps an die Remotion-Komposition übergeben
    
  4. Quelldateien der Komposition nach Bedarf schreiben oder aktualisieren
  5. Verfügbare Kompositionen:
    • TitleCard – animierter Titel mit mehreren Animationsvoreinstellungen
    • LowerThird – Namens-/Titel-Overlay mit Akzentbalken
    • EndCard – Outro mit CTA, sozialen Medien, Logo
    • Teaser – Mehrfach-Clip-Zusammenstellung mit TransitionSeries
  6. Rendern:
    cd "$WORKSPACE"
    npx remotion render src/index.ts <CompositionId> /pfad/zur/ausgabe.mp4 \
      --props='{"text":"Titel","bg":"#09090B","fg":"#FFFFFF","accent":"#7C3AED"}'
    
  7. Ausgabe in das Arbeitsverzeichnis des Benutzers kopieren
  8. Ausgabepfad + Dauer melden

Schritt 3c: Kombinierte Pipeline

Bei mehrstufigen Anfragen (z.B. „einen Teaser mit Titelcard, Clips und Endcard erstellen“):

  1. Planen – jeden Schritt dem Benutzer vor der Ausführung beschreiben
  2. Erstellen – zuerst Remotion-Inhalte generieren (Titelkarten, Endkarten)
  3. Verarbeiten – Quellclips mit ffmpeg trimmen/skalieren
  4. Zusammenstellen – alle Teile mit Übergängen mittels ffmpeg zusammenführen
  5. Finalisieren – für die Zielplattform komprimieren, falls angegeben
  6. Zwischen den Hauptphasen (Erstellung vs. Bearbeitung vs. Zusammenstellung) Bestätigung einholen

ffmpeg-Kurzreferenz

Trimmen (verlustfrei)

ffmpeg -ss <start> -to <ende> -i eingabe.mp4 -c copy trimmed_eingabe.mp4

Komprimieren – Web (CRF 23)

ffmpeg -i eingabe.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k compressed_eingabe.mp4

Komprimieren – hardwarebeschleunigt (macOS)

ffmpeg -i eingabe.mp4 -c:v h264_videotoolbox -b:v 5M -c:a aac -b:a 128k compressed_eingabe.mp4

Zusammenführen mit Überblendung

# Zwei Clips mit 1 s Kreuzblende bei Offset = dauer_von_clip1 - 1
ffmpeg -i clip1.mp4 -i clip2.mp4 \
  -filter_complex "[0][1]xfade=transition=fade:duration=1:offset=<offset>,format=yuv420p[v];[0:a][1:a]acrossfade=d=1[a]" \
  -map "[v]" -map "[a]" merged_output.mp4

Skalieren / Größe ändern

# Auf bestimmte Abmessungen skalieren (Seitenverhältnis mit -1 beibehalten)
ffmpeg -i eingabe.mp4 -vf "scale=1920:1080" resized_eingabe.mp4
ffmpeg -i eingabe.mp4 -vf "scale=1080:-1" resized_eingabe.mp4

# Auf mittiges Quadrat zuschneiden
ffmpeg -i eingabe.mp4 -vf "crop=min(iw\,ih):min(iw\,ih)" cropped_eingabe.mp4

# Auf Ziel-Seitenverhältnis anpassen (Letterbox/Pillarbox)
ffmpeg -i eingabe.mp4 -vf "scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)/2:(oh-ih)/2:black" padded_eingabe.mp4

Geschwindigkeit ändern

# 2x Geschwindigkeit (Video + Audio)
ffmpeg -i eingabe.mp4 -vf "setpts=0.5*PTS" -af "atempo=2.0" speed_2x_eingabe.mp4

# 0,5x Zeitlupe
ffmpeg -i eingabe.mp4 -vf "setpts=2.0*PTS" -af "atempo=0.5" speed_0.5x_eingabe.mp4

# 4x Geschwindigkeit (atempo für >2x Audio verketten: atempo max = 2.0)
ffmpeg -i eingabe.mp4 -vf "setpts=0.25*PTS" -af "atempo=2.0,atempo=2.0" speed_4x_eingabe.mp4

# Rückwärts
ffmpeg -i eingabe.mp4 -vf "reverse" -af "areverse" reversed_eingabe.mp4

Wasserzeichen-Overlay

# Unten-rechts mit Abstand
ffmpeg -i eingabe.mp4 -i logo.png \
  -filter_complex "overlay=W-w-20:H-h-20" watermarked_eingabe.mp4

# Oben-links
ffmpeg -i eingabe.mp4 -i logo.png \
  -filter_complex "overlay=20:20" watermarked_eingabe.mp4

# Zentriert mit Transparenz
ffmpeg -i eingabe.mp4 -i logo.png \
  -filter_complex "[1]format=rgba,colorchannelmixer=aa=0.3[wm];[0][wm]overlay=(W-w)/2:(H-h)/2" watermarked_eingabe.mp4

# Text-Wasserzeichen
ffmpeg -i eingabe.mp4 \
  -vf "drawtext=text='Meine Marke':fontsize=24:[email protected]:x=W-tw-20:y=H-th-20" watermarked_eingabe.mp4

Videostabilisierung (vidstab zwei Durchgänge)

# Durchgang 1: Bewegung analysieren
ffmpeg -i verwackelt.mp4 -vf vidstabdetect=shakiness=10:accuracy=15 -f null -

# Durchgang 2: Stabilisierung anwenden
ffmpeg -i verwackelt.mp4 -vf vidstabtransform=smoothing=30:input=transforms.trf stabilized_verwackelt.mp4

Audiobearbeitung

# Lautstärke anpassen
ffmpeg -i eingabe.mp4 -af "volume=1.5" audio_eingabe.mp4

# Lautheit normalisieren (Rundfunkstandard -14 LUFS)
ffmpeg -i eingabe.mp4 -af "loudnorm=I=-14:TP=-1:LRA=11" audio_eingabe.mp4

# Zwei Audiospuren mischen
ffmpeg -i video.mp4 -i musik.mp3 \
  -filter_complex "[0:a]volume=1.0[a1];[1:a]volume=0.3[a2];[a1][a2]amix=inputs=2:duration=first[a]" \
  -map 0:v -map "[a]" audio_eingabe.mp4

# Audio ein-/ausblenden (3 s Einblendung, 3 s Ausblendung)
ffmpeg -i eingabe.mp4 -af "afade=t=in:ss=0:d=3,afade=t=out:st=<ende-3>:d=3" audio_eingabe.mp4

# Audio stumm schalten
ffmpeg -i eingabe.mp4 -an muted_eingabe.mp4

# Audio ersetzen
ffmpeg -i eingabe.mp4 -i neuer_track.mp3 -c:v copy -map 0:v:0 -map 1:a:0 replaced_audio_eingabe.mp4

GIF-Erstellung (zwei Durchgänge für Qualität)

# Durchgang 1: Palette generieren
ffmpeg -ss <start> -t <dauer> -i eingabe.mp4 \
  -vf "fps=15,scale=320:-1:flags=lanczos,palettegen" palette.png

# Durchgang 2: GIF mit Palette erstellen
ffmpeg -ss <start> -t <dauer> -i eingabe.mp4 -i palette.png \
  -filter_complex "[0:v]fps=15,scale=320:-1:flags=lanczos[v];[v][1:v]paletteuse" ausgabe.gif

# Aufräumen
rm palette.png

Thumbnail-Extraktion

# Einzelbild bei Zeitstempel
ffmpeg -ss <zeitstempel> -i eingabe.mp4 -frames:v 1 -q:v 2 thumb_eingabe_<zeitstempel>.jpg

# Raster von Thumbnails (4x4)
ffmpeg -i eingabe.mp4 -vf "fps=1/<intervall>,scale=320:-1,tile=4x4" thumb_grid_eingabe.jpg

.srt-Untertitel einbrennen

ffmpeg -i eingabe.mp4 -vf "subtitles=untertitel.srt:force_style='FontSize=24,PrimaryColour=&H00FFFFFF'" captioned_eingabe.mp4

Audio extrahieren

ffmpeg -i eingabe.mp4 -vn -c:a libmp3lame -q:a 2 ausgabe.mp3

Video-Informationen

ffprobe -v quiet -print_format json -show_format -show_streams eingabe.mp4

Remotion-Kurzreferenz

Gecachter Workspace einrichten

WORKSPACE="/tmp/remotion-workspace"
if [ ! -d "$WORKSPACE/node_modules" ]; then
  cp -r ~/project-templates/remotion-video/* "$WORKSPACE/"
  cd "$WORKSPACE" && npm install
fi

TitleCard-Komposition

import { AbsoluteFill, spring, useCurrentFrame, useVideoConfig, Img } from 'remotion';

type Animation = 'fade' | 'slide-up' | 'slide-down' | 'zoom' | 'typewriter' | 'glitch' | 'blur-in';

export const TitleCard: React.FC<{
  text: string;
  subtitle?: string;
  bg?: string;
  fg?: string;
  accent?: string;
  animation?: Animation;
  logo?: string;
}> = ({ text, subtitle, bg = '#09090B', fg = '#FFFFFF', accent = '#7C3AED', animation = 'fade', logo }) => {
  const frame = useCurrent

…

[verkürzt für die Übersetzung]

Hinweise zur Fehlersuche

  • Wenn ffmpeg einen Fehler meldet, überprüfe die Eingabedatei mit ffprobe -v error -show_entries format=filename,format_name -of default=noprint_wrappers=1 <datei>
  • Bei Hardwarebeschleunigungsproblemen stelle sicher, dass macOS auf dem neuesten Stand ist (VideoToolbox erfordert mindestens macOS 10.13)
  • Wenn Remotion-Kompositionen nicht gerendert werden, überprüfe die Ausgabe von npx remotion versions auf Kompatibilität
  • Bei npm install-Fehlern im Remotion-Workspace lösche den Ordner node_modules und die Datei package-lock.json und führe npm install erneut aus

Verwandte Skills