Video-Editor
Ein Skill, drei Teile. Lies diese Datei, dann die Engine-Regeln und das passende Preset, bevor du Footage anfasst.
| Teil | Lesen | Inhalt |
|---|---|---|
| Engine | engine/ENGINE.md, engine/helpers/ | Transkription (Scribe), takes_packed.md, die EDL, render.py, grade.py, timeline_view.py, die 12 harten Regeln, die Schleife: Fragen → Bestätigen → Ausführen → Selbstbewertung. Adaptiert von browser-use/video-use (MIT). |
| Instagram-Preset | presets/instagram/PRESET.md | Hochkant 1080x1920: Safe-Zones, Reel-Timing, Caption-Stile (scripts/ig-captions.py), Schriftarten (assets/fonts/), Farbkorrektur-Regeln, kostenlose Sound-Regeln |
| YouTube-Preset | presets/youtube/PRESET.md | 16:9 / 4K: die Schnittphase (Papierschnitt, straffen, feinen, Kanten prüfen, tote Luft entfernen), der HyperFrames Composer und seine ~40-Format-Bibliothek, Kamera, Ton, B-Roll, Tella, Montage, Prüfung. Adaptiert vom WeAreNoCode youtube-edit-Kit; optional, nicht im Paket (presets/youtube/README.md). Falls PRESET.md fehlt, werden die eigenen Schnittregeln der Engine verwendet. |
| Geteilt | shared/ | luts/ (Cine_TealOrange, Cine_Film, Cine_Moody, AppleLog_to_Rec709, AppleLog_Cine_*; make_luts.py erstellt sie neu), sfx/ (Soundeffekte, -3 dBFS, manifest.json), music/ (Tracks), tools/ (build-manifest.py, Schnittwerkzeuge), img/ |
Skripte zuerst: Wenn der Nutzer noch kein Skript hat oder nach Hooks, Ideen oder einem Caption fragt, verwende den script-writer-Skill; dessen Skripte enden mit Editor-Notizen, die dieser Skill ausführt.
Welches Preset
| Anfrage | Verwenden |
|---|---|
| Instagram, Reel, Story, TikTok, Shorts, vertikales Footage oder keine Plattform mit vertikalem Footage genannt | Instagram-Preset (es leiht sich die Schnittphase, Formate, Kamera und Ton vom YouTube-Preset; es sagt wo) |
| YouTube, ein Hook, Langform, 16:9 / 4K, ein Tella-Tutorial, Zusammenbau von Abschnitten | YouTube-Preset |
| Alles andere (Montage, Reise, Interview, allgemeiner 16:9-Schnitt) | Engine alleine, plus shared/ Looks und Sounds; Preset-Regeln ausleihen, wo sie passen |
| Eine Bildschirmaufzeichnung zum Hervorheben | das Preset für die Plattform, auf der es veröffentlicht wird: Zoom auf den Bereich, Rest abdunkeln oder unscharf machen, Kästchen oder Unterstreichung beim Wort, Klick- und Tippgeräusche, private Daten unkenntlich gemacht; in einem Reel liegt die Aufzeichnung in einem Telefon- oder Browserrahmen oder wird auf den relevanten Teil zugeschnitten |
Nicht sicher? Einmal fragen: „Ist das für Instagram oder YouTube?“
Pfade (in jedem Befehl verwenden)
VE=~/.claude/skills/video-editor; VU="$VE/engine"; VU_PY="$VE/.venv/bin/python"
IG="$VE/presets/instagram"; YT="$VE/presets/youtube"; SK="$YT"; SHARED="$VE/shared"
Alle Ausgaben gehen in <footage folder>/edit/ (Harte Regel 12 der Engine); niemals in $VE schreiben, außer wenn bewusst eine Regel, ein LUT oder eine gemeinsame Ressource gespeichert wird.
Harte Regeln, die alles durchziehen
- Transkription kostet Geld (Scribe-Credits). Nur transkribieren, wenn der Nutzer Footage übergeben und einen Schnitt angefragt hat. Transkripte werden pro Dateistamm zwischengespeichert; das gecachte JSON eines flachen Schnitts löschen, nachdem der Schnitt neu gemacht wurde.
- Strategie vor Ausführung: Material beschreiben, Plan vorschlagen (Preset, Caption-Stil, Look, Musik, Länge), auf Zustimmung warten.
- Untertitel und Captions kommen zuletzt, nach allen Overlays.
- Einmal pro Video farbkorrigieren, pro Segment während des Exports; Hautfarbe schützen; Vorher-/Nachher-Bild prüfen.
- Rendering-Datei verifizieren (Frames an jedem Schnitt, Lautstärke -14 LUFS, Dauer) vor dem Zeigen.
- Python-Helfer laufen mit
$VU_PY; das systemweitepython3hat kein numpy.
Schnittarten
shared/references/cuts.md: die 10 Schnitte (Schnitt, Jump, Match, J, L, Fade, Dissolve, Schnitt auf Aktion, Cross-Cutting, Smash) mit wann welcher verwendet wird und welches Werkzeug ihn macht (shared/tools/). Beide Presets und der Film-Skill verwenden sie.
Bewegungsgrafiken
shared/references/motion-graphics.md: die 7 Qualitätsregeln, gegen die jede Animation geprüft wird, woher Referenzen kommen, die Lernschleife (Referenz → Zahlen → Vorlage → Notizen → gespeichert), und der Vorlagen-Tracker. Vor dem Erstellen einer Animation lesen; vor dem händischen Bauen eines Effekts das HyperFrames-Register durchsuchen.
Rendering-Stufen (immer, jedes Video)
- Vorschau-Rendering mit 720p (schnell; das sieht der Nutzer und gibt Feedback):
Engine
render.py … --draft(720x1280 / 1280x720), HyperFramesrender … --quality draftauf einer Kopie der Komposition bei 720 Breite oder mit-o review.mp4und dannscale=720:-2; Captions mitig-captions.py --width 720 --height 1280. Die Selbstbewertung läuft auf dieser Datei. - Final mit 4K erst nach Freigabe durch den Nutzer (kein offenes Feedback mehr):
Engine
render.py … --uhd(2160x3840 vertikal / 3840x2160 quer, CRF 18), HyperFramesrender … --resolution portrait-4k --quality high(oderlandscape-4k; die 1080x1920 Komposition rendert mit 2x DPR, also sind Text und Grafiken wirklich scharf), Captionsig-captions.py --width 2160 --height 3840(gleiches Layout, skaliert), Musik/Lautstärke-Master wie üblich (-14 LUFS). Verifizieren:ffprobezeigt 2160x3840, BT.709-Tags, Dauer stimmt mit Vorschau überein. - Beide nebeneinander ausliefern:
<project>-4k.mp4(das Master, für Upload / YouTube / Archiv) und<project>-1080.mp4(eine hochbitratige 1080x1920-Kopie, ~20 Mb/s, erstellt aus dem 4K-Master mitscale=1080:-2:flags=lanczos). Dem Nutzer ehrlich sagen: Instagram spielt Reels mit bis zu 1080x1920 ab und kodiert jeden Upload neu, daher hilft 4K, indem es dem Encoder die sauberste Quelle gibt (und behält YouTube/TikTok/zukünftige Wiederverwendung in voller Qualität), nicht indem es 4K zeigt; Instagram > Einstellungen > Medienqualität > „In höchster Qualität hochladen“ aktivieren. In 1080p aufgenommenes Footage wird im 4K-Master hochskaliert (keine neuen Details); das sagen, wenn es der Fall ist. Eine Anmerkung nach dem Final erfordert erneut eine 720p-Vorschau, dann 4K.
Maschinen-Setup (install.sh im Repo-Root erledigt das meiste)
| Werkzeug | Status | Prüfung |
|---|---|---|
| ffmpeg vollständiger Build (libass, zscale, lut3d) | ffmpeg-full über ffmpeg verlinkt | `ffmpeg -filters |
| Python-Umgebung | $VE/.venv (requests, numpy, pillow, librosa, matplotlib) | cd $VE && uv sync |
| ElevenLabs-Schlüssel | $VU/.env (Modus 600) | curl -s -o /dev/null -w '%{http_code}' -H "xi-api-key: $(sed -n 's/^ELEVENLABS_API_KEY=//p' $VU/.env)" https://api.elevenlabs.io/v1/user → 200 |
| Node + HyperFrames CLI | Node 26, hyperframes global | hyperframes doctor |
| HyperFrames-Agent-Skills | von der CLI als eigene Skills installiert (hyperframes, hyperframes-core, -animation, -keyframes, -registry, media-use, ...) | hyperframes skills check; für den Kompositionsvertrag lesen |
| auto-editor, yt-dlp, Chrome | installiert | auto-editor --version, yt-dlp --version |
| YouTube-Preset-Tests (falls installiert) | alle bestanden | cd $YT/scripts && $VU_PY -m unittest tests |
So bleibt es deins
- „Speichere dies im Skill“: Notiz als eine klare Regel schreiben, wo sie hingehört: Nur Instagram → Instagram-Preset; nur YouTube → YouTube-Preset; beide → den gemeinsamen Abschnitt des YouTube-Presets (das Instagram-Preset verweist dorthin) oder in diese Datei, wenn es um Routing oder Setup geht. Eine Regel ersetzen, wenn eine neue ihr widerspricht; niemals beide behalten.
- Neuer Look:
LOOKSinshared/luts/make_luts.pybearbeiten, mit$VU_PYausführen, eine Zeile zur Farbtabelle des Instagram-Presets hinzufügen. Neuer Caption-Stil: eine Zeile in der Caption-Tabelle + ein Eintrag inSTYLESinig-captions.py. - Engine-Updates: das Upstream-Repository https://github.com/browser-use/video-use klonen (irgendwo,
git pull) unddiff -r <clone>/helpers $VU/helpersvergleichen und Änderungen von Hand übernehmen; die Engine-Kopie hat lokale Pfadanpassungen nur inENGINE.md.