/video-edit
Raw-Clips rein, fertiges Reel raus. Der Nutzer öffnet nie einen Editor: Er prüft eine Handy-Kopie und gibt Anmerkungen; jeder Durchlauf ist ein ~2-minütiges Neu-Rendering.
Vor dem Bauen lesen: references/looks.md (die drei Looks, exakte Werte), references/layout.md (Safe Zone, Platzierung, Formel für Worte hinter dem Kopf), references/gotchas.md (jede Falle, die bereits einmal aufgetreten ist). Lies references/overlays.md, wenn das Skript eine animierte Einblendung verlangt.
Funktioniert auf macOS, Linux und Windows. setup.py erkennt die Maschine zu Beginn jedes Laufs, und jeder Befehl unten stammt von diesem Rekord – also raten Sie nie über Pfade oder Shells: Siehe „Diese Maschine“ direkt nach Schritt 0.
Schritt 0: Ersteinrichtung (einmalig)
SK ist der Ordner dieser Fähigkeit (der Ordner, der diese SKILL.md enthält), als vollständiger Pfad. Normalerweise ~/.claude/skills/video-edit; unter Windows ist das C:/Users/<name>/.claude/skills/video-edit.
Suche nach SK/config.json.
Falls vorhanden: Lade es (Name, Instagram-Handle, Standard-Look, Ordner), führe das Setup-Skript genau wie in Schritt 3 unten aus (ein paar Sekunden: es prüft nur und repariert die Umgebung nach einem Update), lies „Diese Maschine“, und gehe zu Schritt 1, sobald es READY ausgibt.
Falls nicht vorhanden:
- Sage: „Willkommen bei /video-edit! Lass uns dich einrichten. Das dauert etwa 2 Minuten und passiert nur einmal.“
- Frage in einer Nachricht:
- Deinen Namen (wird in deinem Instagram-Profil-Insert verwendet)
- Deinen Instagram-Handle (für dein Profil-Insert und um deine Reels für den Orbit-Effekt zu ziehen)
- Standard-Look: bold (kinetische Worte hinter deinem Kopf), cool girl (warm, gelbe Serifen kursiv, deine Reels um dich herum orbitierend) oder cool dude (dunkel-editorial, gesperrte Versalien + Serifen). Biete „bold“ an, wenn der Nutzer unsicher ist.
- Wo deine Rohclips normalerweise landen (Standard:
~/Downloads) und wo Projekte leben sollen (Standard:~/reel-edits)
- Führe das Setup-Skript mit dem Python aus, das die Maschine hat. Probiere diese in der Reihenfolge aus, bis eines STATUS-Zeilen ausgibt:
python3 "SK/scripts/setup.py", dannpython "SK/scripts/setup.py", dannpy -3 "SK/scripts/setup.py". (Unter Windows istpython3oft ein Microsoft-Store-Stub, der „Python wurde nicht gefunden“ ausgibt: probiere einfach das nächste.) Keines funktioniert: Python fehlt. Gib die Lösung für ihr System und stoppe (Windows:winget install --id Python.Python.3.12 -e, Mac:brew install python, Linux:sudo apt install python3 python3-venv). Dann lies die STATUS-Zeilen:- ffmpeg / node / python venv FEHLT: Die Zeile endet mit der genauen Lösung für DIESE Maschine (winget unter Windows, brew unter Mac, apt unter Linux). Gib sie dem Nutzer und stoppe, bis das Skript READY ausgibt.
- Windows: Der Nutzer fügt die winget-Zeilen in sein eigenes PowerShell-Fenster ein (winget fordert ihn beim ersten Mal zur Zustimmung auf), schließt dann Claude Code vollständig und öffnet es erneut, sonst werden die neuen Programme nicht gefunden.
- Das Skript lädt die 6 Soundeffekte selbst herunter. Falls es sie immer noch als FEHLT meldet (offline), ist das optional: Das Reel hat dann einfach keine SFX, bis sie hinzugefügt werden.
- Optional, Apify (zieht Reels und Profilstatistiken automatisch): Versuche einen einfachen Apify-MCP-Aufruf. Falls nicht verbunden, sage, dass es optional ist und wie man es hinzufügt:
- Erstelle einen kostenlosen Account unter https://apify.com und kopiere den API-Token aus Einstellungen > API & Integrations.
- Füge in einem Terminal diese eine Zeile mit dem Token anstelle von YOUR_TOKEN ein:
claude mcp add apify -e APIFY_TOKEN=YOUR_TOKEN -- npx -y @apify/actors-mcp-server(Achtung: Claude Code speichert den Token im Klartext in~/.claude.json; halte diese Datei privat.) - Öffne Claude erneut und führe /video-edit erneut aus. Ohne Apify bittet die Fähigkeit den Nutzer, seine Reel-Dateien stattdessen in das Projekt zu legen.
- Speichere
SK/config.json(niemals Geheimnisse):{"name": "...", "instagram": "handle-ohne-@", "defaultLook": "bold", "clipsDir": "~/Downloads", "projectsDir": "~/reel-edits", "setupComplete": true, "setupDate": "YYYY-MM-DD"} - Sage: „Einrichtung abgeschlossen! Führe jetzt /video-edit aus …“ und fahre fort.
Diese Maschine (bei jedem Lauf lesen)
Lies SK/.platform.json, geschrieben von setup.py. Es enthält das Betriebssystem (os: macos, linux oder windows), die CPU und die exakten Befehle für diesen Computer:
PY= seinpython-Wert: das eigene Python der Fähigkeit (.venv/bin/pythonunter Mac und Linux,.venv/Scripts/python.exeunter Windows). Führe JEDES Python-Skript dieser Fähigkeit damit aus, niemals ein reinespython3.HF=PY "SK/scripts/hf.py": startet die festgepinnten HyperFrames (npx --yes [email protected] ...) mit dem richtigen Node auf jedem Betriebssystem. Keinnvm use, keinenpx.cmd-Probleme.cutout:CoreML(Apple Silicon) oderCPU(Windows, Linux, Intel Macs: keine GPU-Unterstützung, daher ist der Cutout-Schritt der langsame; sage das, führe es im Hintergrund aus und baue weiter).
setup.py überschreibt diese Datei bei jedem Lauf (Schritt 0), also ist sie immer aktuell. Datei fehlt, oder PY existiert nicht mehr: Die Einrichtung wurde nicht ausgeführt oder hat READY nicht erreicht; führe sie wie in Schritt 0.3 aus und befolge die Lösung.
Ein Befehlsstil, der in zsh, bash, Git Bash und PowerShell funktioniert:
- Vollständige Pfade in doppelten Anführungszeichen mit Schrägstrichen (auch unter Windows in Ordnung):
"PY" "SK/scripts/ingest.py" "<project>". - In PowerShell (Windows ohne Git für Windows, oder wenn das PowerShell-Tool das verfügbare ist) setze
&davor:& "PY" "SK/scripts/ingest.py" "<project>". - Ein Befehl pro Aufruf. Kein
&&, keinVAR=1 command, kein~innerhalb von Argumenten, keinsource, keinzsh. ffmpegundffprobesind auf jedem Betriebssystem im PATH (Setup prüft das), daher sind einmalige ffmpeg-Befehle überall gleich.
Harte Regeln
- Alles innerhalb der Reels-Safe-Zone: oben 220, unten 450 (nichts unter y 1470), Seiten 35, rechts 100 ab y 1155.
- Bedecke niemals das Gesicht mit Text oder Karten. Worte hinter dem Kopf zeigen mindestens ~70 % jedes Buchstabens.
- Bildunterschriften geben wieder, was tatsächlich gesagt wurde: Korrigiere Whisper-Fehlinterpretationen von Namen und Schlüsselwörtern („Claude“ wird oft zu „cloud“/„claws“, „skill“ zu „scale“). Keine Gedankenstriche im Bildschirmtext.
- Soundeffekte subtil (Vorlage
SFX_GAIN = 0.75der Grundlautstärken), niemals lauter als die Stimme. - Andere Ersteller auf dem Bildschirm nennen (@handle), wann immer ihre Reels erscheinen. Echte Zahlen auf dem eigenen Profil des Nutzers; alles andere (Kommentatoren, Chatverlauf) ist ein generischer Platzhalter, niemals eine reale Person, niemals ein erfundener Beweis.
- Beweise Schnitte aus dem endgültigen Render, nicht aus Schnappschüssen.
- Lösche niemals die Dateien des Nutzers. Originale werden gelesen, niemals verändert.
Arbeitsablauf
1. Aufnahme
- Clips: die vom Nutzer benannten Dateien, sonst die neuesten Videodateien in
clipsDir. Erstelle<projectsDir>/<kurz-slug>/. (~in config.json ist das Home-Verzeichnis des Nutzers, unter WindowsC:/Users/<name>. Die Skripte der Fähigkeit erweitern es.) - Referenzlinks (IG-Reels, Pinterest-Pins) für einen Stil: Lade sie herunter und betrachte Frames, bevor du etwas entwirfst (siehe overlays.md für die Abrufmethode).
2. Import
PY SK/scripts/ingest.py <project> <clips oder ordner> [--newest 5]
Sieh dir work/sheets.jpg (Aufbauten und Winkel) an und lies transcript.txt (Zeilen pro Clip, Wörter mit Zeiten, Sprachkarte).
3. Takes auswählen -> <project>/edl.json
- Baue das Skript aus den Takes wieder auf: Personen wiederholen eine Zeile, bis sie sitzt. Verwende den LETZTEN vollständigen sauberen Take, es sei denn, der Nutzer sagt etwas anderes („Der bessere Teil beginnt bei 0:47“ bedeutet einen durchgehenden Take ab dort).
- Ein-/Ausstiegspunkte aus der Sprachkarte: Start ~0,05-0,07s vor dem ersten Wort, Ende am Stillstandsbeginn nach dem letzten Wort. Entferne tote Luft zwischen Abschnitten; bestätige kurze Pausen mit
silencedetectvor dem Trimmen (Whisper kann ein führendes Wort an einem Schnitt erfinden). - Zwei Segmente hintereinander aus demselben Winkel: zoome eines herein (Zoom 1,3–1,9 aus dem 4K-Original, cx/cy auf der Brust).
- Unsichere Wörter (Schlüsselwort, CTA-Auslöser): Transkribiere diesen Ausschnitt erneut mit
medium.enund einer Eingabeaufforderung, die die Namen enthält. - Format:
[{"id": "hook", "clip": "c1", "in": 12,66, "out": 15,72, "zoom": 1.0, "cx": 0.5, "cy": 0.5, "line": "..."}] - Poste die EDL dem Nutzer als kurze Tabelle (Zeile, Clip, Look pro Abschnitt) und fahre fort; warte nicht.
4. Zusammenbauen, transkribieren, ausschneiden
PY SK/scripts/assemble.py <project> # aroll.mp4 sauber 30fps CFR + segments.json mit exakten Frames
PY SK/scripts/transcribe_cut.py <project> "<namen und schlüsselwörter im skript>"
PY SK/scripts/cutout.py <project> # im Hintergrund ausführen; stellt sicher, dass cutout-Frames == aroll-Frames
PY SK/scripts/headpos.py <project> # nach dem Ausschneiden: Kopf-/Körperposition pro Segment
Ein Cutout nach dem anderen (ca. 1,5 GB RAM). Es gibt alle 30 Sekunden eine Fortschrittszeile aus.
5. Einblendungen parallel (sobald die EDL feststeht)
Für jede animierte Einblendung, die das Skript erfordert (eine App auf dem Bildschirm, das Profil-Follow beim CTA, ein Datei-Scroll), starte einen Unter-Agenten im Hintergrund mit der Kurzvorlage in references/overlays.md: feste Größe, feste Dauer, Beats an die Wortzeiten gebunden, transparenter webm-Ausgang. Baue währenddessen den Hauptschnitt weiter.
6. Bauen
Kopiere SK/assets/template/ in das Projekt (build.py, hyperframes.json, package.json, assets/fonts, assets/sfx), passe dann build.py an. Es ist der fertige Bau eines echten Reels: Behalte die Mechanik, schreibe den Inhalt um (sein Docstring listet auf, was was ist).
- Welcher Look wo:
defaultLookfür das gesamte Reel; eine Zeile, die einen Look nennt, schaltet dessen Abschnitt um. - Orbit und Profilraster verwenden die eigenen Reels des Nutzers (overlays.md: Apify-Post-Scraper mit seinem Handle oder Dateien, die er in
assets/reels/ablegt). - Iteriere vom Projektordner aus:
HF lint(0 Fehler), dannPY build.py --safe, dannHF snapshot --at <10-20 momente> --no-end --describe false. Lies die Kontaktabzüge, korrigiere Layout, Lesbarkeit und Safe Zone. (HFwählt den richtigen Node selbst aus, also gibt es keinnvm use.) Ein build.py, das von einer älteren Version dieser Fähigkeit kopiert wurde, ignoriert--safe: Wenn die rote Führung in den Schnappschüssen fehlt, baue dieses Projekt auf die alte Weise,SAFE=1 "PY" build.py(solche Projekte existieren nur auf Mac und Linux).
7. Rendern und Qualitätssicherung
PY build.py # ohne --safe
HF render -o renders/<slug>-vN.mp4 --quality high # ~1,5-2 min für ein 25s Reel auf Apple Silicon
PY SK/scripts/check_cuts.py <project> renders/<slug>-vN.mp4 --phone
Sieh dir work/cut_check.jpg an: Jeder Nach-Schnitt-Frame zeigt die neue Aufnahme sauber an. Prüfe Audio-Peaks (volumedetect, max etwa -2 bis -5 dB) und die Stille an Abschnittsübergängen.
8. Ausliefern
Sende oder verweise auf die Handy-Kopie (720p) und das Render in voller Qualität. Berichte in einfachen Worten, was sich geändert hat und was die Entscheidung des Nutzers erfordert. Behalte jede Version in renders/; sichere assets/ + segments.json in work/vN/, bevor du neu zusammenbaust.
Vorgaben aus echtem Feedback (nicht neu verhandeln)
- Ändere die Gradierung und die Bildunterschriften, um einen Look zu erzeugen; ersetze den Hintergrund nicht durch einen KI-generierten Raum.
- Kein Filmkorn. Dunkel ist in Ordnung, aber halte das Subjekt beleuchtet und die Haut davor, rot zu werden.
- Einleitende Bildunterschriften zentriert vor dem Sprecher sind besser lesbar als Zeilen, die an den linken Rand geheftet sind.
- Worte hinter dem Kopf sind das Markenzeichen, aber nur, wenn sie lesbar sind.
Erstellt von @tenfoldmarc. Folge mir für tägliche KI-Automatisierungs-Builds, echte Systeme, keine Theorie.