Communitygithub.com

Reel bearbeiten

Bearbeitet die Reels des Benutzers (vertikale Videos, in denen er zur Kamera spricht, für Instagram) mit dem genehmigten Workflow: lokale Transkription mit Whisper, Entfernen von Stille/Füllwörtern/wiederholten Aufnahmen, Haken in Großbuchstaben, Überschriften mit animierten Grafiken alle 2–3 s, echte Markenlogos, einzeilige Untertitel, kalibrierte Soundeffekte, Stimme auf -14 LUFS und Rendering mit HyperFrames. Verwende dies immer, wenn darum gebeten wird, einen Reel, einen CapCut-Clip oder ein vertikales Video des Benutzers zu bearbeiten, zu schneiden, zu untertiteln oder „bereit zu machen“, auch wenn …

Was ist Reel bearbeiten?

Dieser Skill definiert einen vollständigen, genehmigten Workflow zur Bearbeitung von Instagram-Reels des Benutzers, die mit der Kamera aufgenommen wurden. Er beginnt mit einer lokalen Transkription mittels Whisper, identifiziert und entfernt Füllwörter, wiederholte Takes und Stille, und erstellt einen präzisen Schnitt. Anschließend wird eine HyperFrames-Composition erstellt, die animierte Grafiken, echte Logos von erwähnten Marken/Produkten (aus Simple Icons), einzeilige Untertitel und kalibrierte Soundeffekte enthält. Der Skill umfasst Qualitätssicherungsschritte wie Bild-für-Bild-Kontrollen, einen auditiven Check der Soundeffekte (Zielpegel relativ zur Stimme) und eine endgültige Audio-Normalisierung auf -14 LUFS. Schließlich wird der Reel als MP4 exportiert, ein Cover-Bild generiert, und der Arbeitsordner wird nach der Freigabe bereinigt. Der Skill unterstützt drei Hauptstile (Tarjeta, Frases, Cine), die über das `reel.json` ausgewählt werden, und ermöglicht optionale Bewegungsgrafiken (Motion-Blöcke), die Automatisierung, Zahlen oder Belohnungen visuell darstellen. Die Bedienung erfolgt vollständig über die Kommandozeile unter macOS.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Alexandrevnc/editar-reel/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht Reel bearbeiten?

Dies ist der bereits genehmigte Workflow mit dem WhatsApp-Reel (references/ejemplo-whatsapp.reel.json). Das Ziel ist, dass der nächste Reel genauso rauskommt, ohne dass ich es noch einmal erklären muss: gleicher Stil, gleiche Kriterien, gleiche Überprüfungen. Sprich mit ihm auf Deutsch und ohne unnötige Fachsprache.

Vor allem: Profil und Installation

Lies ~/.claude/skills/editar-reel/perfil.json (Name des Benutzers, seine Marke, das Schlusslogo und wo er die Clips speichert). Nenne ihn beim Namen und verwende seinen Clip-Ordner in Schritt 1. Wenn perfil.json nicht existiert oder ein Werkzeug aus der Umgebung fehlt, ist es das erste Mal auf diesem Mac: Folge INSTALAR.md (alles installieren und Profil erstellen), bevor du etwas bearbeitest.

Umgebung (wird von install.sh eingerichtet, siehe INSTALAR.md)

  • HyperFrames CLI: ~/.npm-global/bin/hyperframes (Telemetrie deaktiviert). Exportiere immer PATH="$HOME/.npm-global/bin:$PATH" HYPERFRAMES_NO_TELEMETRY=1 HYPERFRAMES_SKIP_SKILLS=1; die Shell von Claude lädt ~/.zshrc nicht.
  • faster-whisper: ~/.venvs/whisper/bin/python (mit av<16; die neue PyAV-Version zerstört faster-whisper).
  • FFmpeg in /opt/homebrew/bin. python3 des Systems (3.9) reicht für die Skripte ohne numpy.
  • Soundeffekt-Bibliothek: ~/Movies/Reels/_sfx/. Die 13 Originale (whoosh_1/2, pop_1/2, tick, ding, message, counter, typing, clock, slide, hit, riser) klingen nur mit den Grafiken; Stil „Apple-Sounds“: kurz, sauber, weich. Es gibt ~45 weitere (Impacts, Whooshes, Registrierkasse, Klicks, iPhone…) für die manuelle Verwendung: Katalog und wann man welchen verwendet in references/sfx.md.
  • Skripte dieses Skills: SK=~/.claude/skills/editar-reel/scripts.
  • Schlusslogo: das aus perfil.json (cierre). Das von vinagre.tech, vektorisiert, liegt in assets/vinagre-tech/; das einer anderen Marke wird in assets/marca/ gespeichert (siehe INSTALAR.md).

Stile

Der Benutzer bestellt Reels nach Stil („bearbeite es mit Stil 2“). Wenn er nichts sagt, verwende Stil 1. Alle teilen den untenstehenden Workflow (transkribieren, schneiden, QA, Sounds, Master); Schritt 5–6 ändert sich. Alle enden mit dem Schlusslogo seiner Marke (das aus perfil.json; 1,6 s, weißer Hintergrund, scripts/outro.py): das Video endet nie abrupt. Es erscheint standardmäßig (außer "cierre": null im Profil); "outro": null in reel.json entfernt es, "outro": {"bg": "#000"} ändert es.

StilWas es istSkriptReferenz
1 · TarjetaÜberschrift mit Grafik in dunkler Karte oben alle 2–3 s + kleiner, einzeiliger Untertitel unten.build.pyreferences/ejemplo-whatsapp.reel.json
2 · FrasesGroßer Satz unten in weiß (was kommt, durchscheinend), Schlüsselwort in einer Pille, Inline- und schwebende Symbole, wenige weiße Karten und Vollbild-Grafikebenen.build_frases.pyreferences/estilo-frases.md
3 · CineHorizontales Clip im 16:9-Kinofenster auf Schwarz (freie Streifen), warmer Farbton, langsamer Zoom, kleine Untertitel in Kleinbuchstaben auf beiden Seiten des Gesichts, letztes Wort groß in Großbuchstaben. Für nahe oder emotionale Videos.cut_cine.py + build_cine.pyreferences/estilo-cine.md

Bewegung v2 (genehmigt am 02.11.2026, Standard in Stil 1): Regeln aus references/motion-reglas.md (Überschriften drehen sich, Zahlen drehen sich Ziffer für Ziffer, Grafiken kommen vollständig an). Reels, die vorher erstellt wurden, haben "anim": 1 in ihrer reel.json, damit eine Nachbearbeitung ihre bereits genehmigte Bewegung nicht ändert.

Die Stile 1 und 2 können zusätzlich Motion-Bildschirme im Vollbild haben (Mac-Terminal, Punktegitter mit einer Zahl, Kartenorbit), in "motion" von reel.json: lies references/motion.md, um zu wissen, wann und wie.

Wenn der Benutzer Änderungen an einem Stil wünscht und diese genehmigt, speichere sie im Skript und der Karte dieses Stils. Wenn er etwas Neues möchte, erstelle einen neuen Stil (4, 5…) anstatt einen genehmigten zu ändern. Mache ihm zuerst eine ~10 s Probe ("sample_end" in reel.json, Stile 2 und 3), bevor du den gesamten Reel zusammenstellst.

Struktur jedes Reels

~/Movies/Reels/<kurzname>/
  reel.json            die Eigenschaften dieses Reels (schreibst du; Format in references/reel-json.md)
  work/                Transkriptionen, Schnitte, QA-Bilder, Zwischenrender
  proyecto/            HyperFrames-Projekt (generiertes index.html + assets/)
  reel-<name>.mp4      die Lieferdatei
  portada-<name>.jpg   das Cover für Instagram (Schritt 8b)

Ablauf

1. Clip finden

Liegt normalerweise im Ordner clips von perfil.json (standardmäßig ~/Movies/CapCut/) oder in dessen Unterordnern. Wenn es mehr als einen Kandidaten gibt und nicht klar ist, welcher es ist, frage mit Optionen (Name, Dauer, Datum); den falschen zu bearbeiten kostet viel Zeit. Überprüfe mit ffprobe Auflösung, fps und Dauer.

2. Transkribieren

mkdir -p ~/Movies/Reels/<n>/work
~/.venvs/whisper/bin/python -I $SK/transcribe.py "<clip>" ~/Movies/Reels/<n>/work medium de

Erstellt src.words.json (Wörter mit Zeitstempeln), fillers.txt (Durchlauf, der Whisper zwingt, „ähm“, „hmm“, „also“ zu schreiben; normalerweise überspringt er sie) und silences.json. Lese alle drei.

3. Entscheiden, was entfernt wird (dein Kriterium)

  • Wiederholte Aufnahmen: Wenn er einen Satz wiederholt oder anfängt und abbricht, behalte die letzte Aufnahme und entferne die vorherigen.
  • Füllwörter: diejenigen, die in fillers.txt erscheinen und nicht in der sauberen.
  • Stille: Muss nicht markiert werden; cut.py entfernt ≥0,2 s und lässt 0,07 s Luft auf jeder Seite. Notiere die Bereiche (ursprüngliche Zeit) in remove von reel.json, zusammen mit source. Wenn es nichts gibt, "remove": [] und sag es ihm („es gab keine Füllwörter oder wiederholten Aufnahmen“, falls zutreffend: du hast es überprüft, nimm es nicht an).
cd ~/Movies/Reels/<n> && hyperframes init proyecto --example blank --resolution portrait --non-interactive
python3 -I $SK/cut.py ~/Movies/Reels/<n>

Erstellt das HyperFrames-Projekt (vor dem Schneiden: init benötigt, dass der Ordner proyecto nicht existiert) und schneidet dann, extrahiert 1080×1920 bei 30 fps und bringt die Stimme auf -14 LUFS in proyecto/assets/cut_norm.mp4; die Wörter mit neuen Zeitstempeln landen in work/cut.words.json.

4. Bildausschnitt prüfen

Extrahiere einen Streifen von Einzelbildern (ffmpeg -i proyecto/assets/cut_norm.mp4 -vf "fps=1/5,scale=270:-1,tile=6x1" -frames:v 1 work/contact.png) und lokalisiere das Gesicht: Im Referenz-Reel ging es von ~520 bis ~1160 px vertikal, mit freier Wand rechts. Die Überschrift geht über den Kopf (Karte von 170 bis 430 px), die Untertitel über das T-Shirt unterhalb des Ansteckmikrofons, das Intro-Logo an der Wand neben dem Kopf. Wenn dieser Clip einen anderen Bildausschnitt hat, passe layout und die Position von logos in reel.json an.

5. Inhalt in reel.json schreiben

Lies references/reel-json.md und references/graficos.md. Was festgelegt ist:

  • Haken (0–2 s): zwei große Zeilen in GROSSBUCHSTABEN, gelbe Kästchen mit schwarzem Text. Eine Frage oder Aussage, die den im Video aufgeworfenen Schmerzpunkt zusammenfasst, kein wörtlicher Satz. Sichtbar ab dem ersten Bild.
  • Überschriften: 2–5 Wörter, wechseln alle 2–3 s, fassen zusammen, was in diesem Abschnitt gesagt wird, jede mit ihrer animierten Grafik.
  • Logos: jedes Mal, wenn er ein Werkzeug oder eine Marke nennt, sein echtes Logo (Simple Icons; wenn nicht vorhanden, das offizielle SVG aus seinem Presskit in proyecto/assets/logos/<slug>.svg). Niemals ein erfundenes oder ungefähres Logo.
  • Untertitel: klein, einzeilig, unten, aktives Wort in der Akzentfarbe. Korrigiere in fixes die Fehler von Whisper, die du siehst (Eigennamen, „eine Leute“ → „ein Agent“ usw.).
  • Motion-Bildschirme (optional, einer oder zwei pro Reel): wenn er sagt, dass er Claude etwas bittet oder Schritte einer Automatisierung erklärt → terminal; wenn er eine Zahl nennt → dots; wenn er berechnet, was man pro Jahr gewinnt oder verliert → months; „schau, was ich alles zusammengestellt habe“ → orbit; ihm schreiben Kunden oder er bekommt Nachrichten → notify; er nennt eine Einnahmen- oder Ergebniszahl → chart. Sie sind erwünscht: Sie geben dem Video eine Verschnaufpause (biete einen an, wenn es keinen gibt). Siehe references/motion.md. Schlage sie nur vor, wenn sie das Gesagte widerspiegeln; bei Zweifeln frage ihn.
  • Letzter Aufruf: wenn er bittet, ein Wort zu schreiben, oder die Marke nennt, letzter Block mit "graphic": "logo" und einem ding in sfx_extra genau in dem Moment, in dem er dieses Wort sagt.
  • Wörtliche Sounds (optional): wenn er etwas mit einem eigenen Sound sagt (Geld → cash, Handy fallen lassen → iphone_lock, eine Nachricht schreiben → phone_typing), füge es in sfx_extra zu diesem Wort hinzu. Lese references/sfx.md; höchstens einer oder zwei pro 10 s, und Memes nur, wenn er sie verlangt.

6. Sounds vorbereiten und Composition generieren

python3 -I $SK/prep_sfx.py ~/Movies/Reels/_sfx ~/Movies/Reels/<n>/proyecto/assets/sfx
python3 -I $SK/build.py ~/Movies/Reels/<n>
cd ~/Movies/Reels/<n>/proyecto && hyperframes lint

prep_sfx entfernt die anfängliche Stille jedes Sounds (sonst ertönt er verspätet zur Animation), schneidet lange mit Ausblendung zurecht und normalisiert sie auf -3 dBFS Spitze. Der Riser wird so zugeschnitten, dass er an seinem Höhepunkt endet (0,2–2,0 s der aktuellen Datei); wenn sich die Datei ändert, schaue auf ihre Hüllkurve und passe SPEC an. In lint sind erwartet und werden ignoriert: nested_structure_needs_subcomposition und timeline_track_too_dense. Jeder Fehler oder eine andere Warnung wird behoben.

7. Qualitätssicherung der Einzelbilder (vor dem Rendern, immer)

Extrahiere ein Bild von jedem Block, in der Mitte des Blocks, wenn die Animation bereits beendet ist:

hyperframes snapshot --at <haken≈1.0>,<jeder Block: start+1.3>,... --no-end --describe false -o ../qa

Setze sie auf ein Blatt (ffmpeg -pattern_type glob -i 'qa/frame-*.png' -vf "scale=360:-1,tile=6x2" ...), schau sie an und vergrößere die verdächtigen Bereiche (Ausschnitte in Originalgröße der Karte und der Untertitel). Suche und behebe:

  • abgeschnittener oder aus der Karte ragender Text / ein einzelnes Wort in einer Zeile;
  • etwas über dem Gesicht (in jedem Block, auch mit dem Zoom von 1,08 der Schnitte);
  • wenig Kontrast (heller Text auf weißer Wand → benötigt dunklen Hintergrund);
  • Untertitel, die das Ansteckmikrofon oder das T-Shirt-Logo auf hässliche Weise verdecken;
  • eine Grafik, die nicht verständlich ist oder komisch aussieht (passierte mit dem ersten head: wurde neu gemacht). Wiederhole den Snapshot nach jeder Korrektur. Hände, die vor den Untertiteln vorbeigehen, sind unvermeidbar; kein Fehler.

Mit dem Gold vergleichen. references/oro/ hat das Blatt mit 12 Bildern der genehmigten Reels jedes Stils (estilo1-whatsapp, estilo1-18k, estilo2-fras, estilo3-reto40). Nach dem Rendern (Schritt 8) extrahiere das des neuen Reels mit python3 -I $SK/hoja.py <reel>.mp4 work/hoja.png, lege es neben das seines Stils und antworte: Welches der beiden ist leerer, flacher oder hat kleinere Grafiken? Wenn es das neue ist, wird das zuerst behoben. Wenn der Benutzer einen Reel genehmigt, der besser aussieht als das Gold seines Stils, füge sein Blatt zu references/oro/ hinzu.

8. Rendern, Audio prüfen und masterisieren

hyperframes render --fps 30 -o ../work/render_mix.mp4
~/.venvs/whisper/bin/python -I $SK/measure_sfx.py ~/Movies/Reels/<n> ~/Movies/Reels/<n>/work/render_mix.mp4
python3 -I $SK/master.py ~/Movies/Reels/<n>/work/render_mix.mp4 ~/Movies/Reels/<n>/reel-<n>.mp4
  • measure_sfx sagt, wie laut jeder Effekt im Vergleich zur Stimme ist. Ziel: Schlag -6 dB, Ding -8, Message ≈-8, Pop/Whoosh/Slide -11 bis -13, Tick -14, Uhr/Zähler/Riser -16, Tippen -18 bis -20. Wenn einer um >2 dB abweicht (z. B. weil sich eine Datei in _sfx geändert hat), korrigiere es mit sfx_vol und rendere erneut. Dass ein Effekt lauter als die Stimme ist, ist der schwerwiegende Fehler: Er übertönt, was gesagt wird.
  • master.py bringt den Reel auf -14 LUFS (Spitze -1,5 dB), indem es das Video unverändert kopiert. Das ist nötig, weil der Mischer von HyperFrames die Mischung um ~1,8 dB senkt und sie auf ~-16 LUFS belässt.
  • Überprüfe die Lieferdatei: 1080×1920, 30 fps, erwartete Dauer, -14 LUFS.

8b. Cover

python3 -I $SK/cover.py ~/Movies/Reels/<n>

Sauberes Bild aus dem Video mit dem Haken in gelben Kästchen, zentriert im Bereich, den Instagram im Profilraster (3:4) zeigt, damit im Feed lesbar ist, worum es in jedem Video geht. Hinterlässt portada-<n>.jpg und work/portada-feed.png (wie es zugeschnitten aussieht). Geht mit dem Titel in der Mitte (entschieden am 02.11.2026, auch wenn es einen Teil des Gesichts verdeckt; im Video bleibt der Haken oben, über dem Kopf). Schau es dir an: Das Bild ("cover": {"at"}) muss ein gutes Gesicht zeigen und nichts abgeschnitten haben. "cover": {"y"} oder python3 -I $SK/cover.py <reel> 560 nur, wenn eine andere Höhe gewünscht wird. Der Benutzer lädt es beim Veröffentlichen hoch unter „Cover bearbeiten → aus der Galerie hinzufügen“.

9. Liefern

Sage ihm, wo die .mp4 und das Cover sind, und fasse in wenigen Zeilen zusammen: wie viel geschnitten wurde (von X s auf Y s und was entfernt wurde), den Haken, die Überschriften (oder die repräsentativsten), welche Logos vorkommen, welche Untertitel-Korrekturen du gemacht hast und was du bei der Qualitätssicherung behoben hast. Wenn etwas eine diskutable Entscheidung von dir ist (z. B. der Haken ist eine Zusammenfassung, kein wörtlicher Satz), sage es ihm und biete an, es zu ändern.

10. Aufräumen (nur wenn der Benutzer den Reel für gut befindet)

Jeder Reel hinterlässt ~150 MB an Zwischendateien und die Festplatte ist normalerweise knapp. Wenn er bestätigt, dass der Reel gut ist (nicht vorher: während er Anpassungen macht, brauchst du sie), verschiebe in den Papierkorb (~/.Trash/reel-<n>-intermedios-<datum>/, niemals rm: so kann er sie wiederherstellen) alles Regenerierbare: work/*.mp4, work/*.mov, work/*.png, qa/, verworfene Versionen des Reels, alle assets/*.mp4, die index.html nicht mehr verwendet, und die assets/sfx/*.wav, die index.html nicht nennt (prep_sfx kopiert die gesamte Bibliothek, ~15 MB; wenn eine Nachbearbeitung einen anderen Sound benötigt, wird es erneut ausgeführt). Behalte reel.json, work/*.json, proyecto/ (mit assets/cut_norm.mp4 und sfx/) und die endgültige .mp4: damit kann ohne erneutes Schneiden nachbearbeitet werden. Sage ihm, wie viel das Verschobene wiegt und dass es beim Leeren des Papierkorbs frei wird. Wenn cut_norm.mp4 bei der Nachbearbeitung fehlt, regeneriert cut.py es aus dem Originalclip (falls noch in CapCut).

Musik

Füge keine Musik in das Video ein. Der Benutzer fügt die Musik beim Veröffentlichen hinzu.

(gekürzt für die Übersetzung)

Verwandte Skills