CommunityCodierung & Entwicklunggithub.com

1mxffe/editor-reels

Edita em Reel vertical (1080x1920) um vídeo bruto de câmera falada do escritório Gutmann & Silva – transcreve, detecta cortes de silêncio, muletas und repetições, queima legendas estáticas por frase, sobrepõe cards de gráfico wenn hilfreich, und rendert Vorschau oder endgültige Version. Verwende, wenn der Benutzer ein Rohvideo in den Ordner legt und bittet, es in ein Reel zu schneiden („edit this into a reel“, „editar em reel“), oder wenn er „build preview“, „montar preview“, „final“ oder „versão final“ sagt.

Was ist editor-reels?

Dieses Skill für KI-Agenten automatisiert die Erstellung von vertikalen Reel-Videos (1080x1920) aus rohem Kameramaterial des Anwaltsbüros Gutmann & Silva. Es transkribiert das Video, erkennt stille Passagen, Füllwörter und Wiederholungen, erzeugt statische bildschirmfüllende Untertitel pro Satz, und fügt optional Informationskarten ein, die das Verständnis fördern. Die Arbeitsweise ist reversibel: Das Originalvideo bleibt unangetastet, Schnittentscheidungen werden in einer JSON-Datei gespeichert und können nachträglich angepasst werden. Das Skill unterstützt die Erstellung einer Vorschau (540x960) und einer finalen Version (1080x1920) inklusive automatischer Cover-Generierung (entweder über ein Figma-Plugin oder ein Python-Skript). Es ist für Claude Code und andere agentenfähige Entwicklungsumgebungen konzipiert, die Python, FFmpeg und Node.js ausführen können. Die gesamte Konfiguration (Farben, Schriftarten, Markenwerte) wird zentral in `brand/brand.json` definiert.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/1mxffe/editor-reels/tree/HEAD/.claude/skills/editor-reel

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation

Editor de Reel — Gutmann & Silva

Vollständiges Verfahren. Wird vom Repository-Stamm ausgeführt; alles in Python mit python3 -I. Formate und safe zone in references/formatos-reel.md; Regeln für Untertitel in references/legendas.md; Graphik-Karten in references/graficos.md.

Unveränderliche Regeln

  • Der Text stammt vom Büro. Das Büro prüft den Text vor der Aufnahme; dieses Tool prüft keine Anwaltsregeln (OAB). Sprache, Untertitel, Karten und Cover werden so ausgegeben, wie der Benutzer sie genehmigt hat.
  • Statische Untertitel, satzweise. Kein Pop-up, kein Wort-für-Wort-Effekt (nur Einblendung bis zu 150 ms).
  • Schnitte sind reversibel. Das Original entrada.<ext> wird nie verändert; die Schnitte leben in cortes.json und können bearbeitet und erneut angewendet werden.
  • Marke nur von brand/brand.json. Farben, Schriftarten und @-Handles kommen von dort. Erfinde niemals Markenwerte; falls sie fehlen, führe das Interview.

Vorbereitung

Führe python3 -I scripts/doctor.py aus und handle gemäß der letzten Zeile. Die Skripte benötigen Python 3.11 oder neuer (das mitgelieferte Python auf macOS ist 3.9: brew install [email protected]); doctor läuft auf älteren Python-Versionen nur, um darauf hinzuweisen (python >= 3.11).

  • READY: fahre fort.
  • READY WITH LIMITS: es fehlt nur ein optionales Element. Ohne faster_whisper weise darauf hin, dass die automatische Transkription nicht verfügbar ist: fordere pip install -r requirements.txt oder eine fertige transcricao.json an und fahre fort. Ohne das Graphik-Element (Chromium + Playwright) oder ohne node fahre ohne Karten fort und erkläre, wie man es installiert (references/graficos.md). Ohne Pillow oder ohne node wird das automatische Cover (Schritte 9 und 10) nicht ausgeführt: fordere pip install -r requirements.txt / installiere node oder folge dem Figma-Pfad.
  • MISSING: stoppe. Liste die Elemente mit ✘ auf (python, ffmpeg, ffprobe, Speicher) und erkläre, wie man sie installiert; versuche keine Renderings.

Marken-Interview

Nur wenn brand/brand.json fehlt, unvollständig ist oder einen ungültigen Wert enthält (python3 -I scripts/brand.py check brand/brand.json endet mit einem Fehler).

  1. Generiere den Seed nur, wenn brand/brand.json fehlt: python3 -I scripts/brand.py seed brand/brand.json. Er kommt von brand/guia-visual.md (marineblau #001931, Poppins, statische Untertitel). Der Seed ist nur für fehlende Dateien gedacht, niemals über einer vorhandenen Datei (er verweigert sich); wenn die Datei existiert, aber unvollständig oder ungültig ist, korrigiere die vom check angegebenen Schlüssel ohne --force.
  2. Stelle jeweils eine Frage, schlage immer den Seed-Wert vor und warte auf die Antwort, bevor du die nächste Frage stellst: (a) Palette, (b) Schriftarten, (c) Untertitel-Stil, (d) @ der offiziellen Social-Media-Kanäle.
  3. Speichere jede Antwort in brand/brand.json und bestätige mit brand.py check. Die @-Handles haben keinen Seed: erfinde nichts; lasse handles leer, bis der Benutzer sie angibt. Wenn er sie angibt, speichere sie mit: python3 -I scripts/brand.py set-handles brand/brand.json @profil [@profil2].

Ablauf

  1. Erstelle projects/<slug>/ (kurzer Slug des Themas) und kopiere das Video nach projects/<slug>/entrada.<ext>.

  2. python3 -I scripts/transcribe.py projects/<slug>/entrada.<ext> projects/<slug>/transcricao.json Wenn doctor READY WITH LIMITS gemeldet hat (faster-whisper fehlt): installiere mit pip install faster-whisper vor der Transkription oder fordere eine fertige transcricao.json an. Video ohne Audio scheitert hier: fordere eine andere Datei an.

  3. python3 -I scripts/cut.py detect projects/<slug>/transcricao.json projects/<slug>/cortes.json

  4. Zeige dem Benutzer die Liste der Schnitte (ID, Start–Ende, Typ: Stille, Füllwort, Wiederholung) und die insgesamt eingesparte Zeit. Abgelehnter Schnitt: speichere {"cuts_removed": ["c3"]} (abgelehnte IDs) in projects/<slug>/decisions.json und führe aus: python3 -I scripts/review_apply.py apply projects/<slug> projects/<slug>/decisions.json (der Schnitt bleibt in revisao.json erhalten und kann zurückgesetzt werden); bearbeite niemals cortes.json manuell.

  5. Graphiken (optional): Wenn eine Karte hilft, die Rede zu verstehen (Frist, Bedingung, Schritt), schlage maximal 1 pro ~8 s vor und speichere nach Zustimmung des Benutzers projects/<slug>/graficos.json gemäß references/graficos.md (Titel bis zu 60 Zeichen, Text bis zu 140, at auf der geschnittenen Timeline, 1–6 s, Bild aus materiais/ falls vorhanden). Ohne Karte überspringe diesen Schritt.

  6. python3 -I scripts/render.py projects/<slug> preview und gib den Pfad zu projects/<slug>/saida/preview.mp4 (540x960) aus.

  7. Überprüfung: öffne nach dem Preview die Überprüfungsseite in einem Chromium-Browser – auf macOS mit open -a "Google Chrome" review/review.html (das einfache open öffnet möglicherweise Safari, das keinen Zugriff auf den Ordner hat); auf Linux xdg-open review/review.html falls der Standard-Browser Chromium/Chrome ist, sonst google-chrome review/review.html – und bitte den Benutzer, den Ordner projects/<slug>/ auszuwählen. Generiere vorher die Leseansicht: python3 -I scripts/review_apply.py build projects/<slug>. Details in references/revisao.md.

  8. "Überprüfung anwenden" → führe in dieser Reihenfolge aus: python3 -I scripts/review_apply.py apply projects/<slug> projects/<slug>/decisions.json, python3 -I scripts/review_apply.py build projects/<slug> und python3 -I scripts/render.py projects/<slug> preview; teile dem Benutzer mit, auf "Review.json neu laden" zu klicken. Wenn apply fehlschlägt (Exit-Code 1), wurde nichts gespeichert: lies die Nachricht und korrigiere die Entscheidung. Ohne die Seite (Browser ohne Zugriff auf den Ordner und ohne Plan B) führe die Überprüfung im Chat durch und speichere das decisions.json im gleichen Format.

  9. Cover — Rahmen auswählen (nachdem das Preview genehmigt wurde): extrahiere Kandidaten aus dem Originalvideo mit: python3 -I scripts/cover_frames.py video projects/<slug>/entrada.<ext> projects/<slug>/capa (optional --n 3; gibt einen Pfad pro Zeile aus), oder, wenn der Benutzer ein Foto sendet, python3 -I scripts/cover_frames.py photo <foto> projects/<slug>/capa (speichert capa/foto.png). Zeige die Dateien capa/candidato-N.png an und frage, welcher Rahmen das Lächeln zeigt, das er möchte: der Benutzer wählt aus, das Tool trennt nur scharfe und gut verteilte Rahmen und erkennt kein Lächeln. Wenn keiner gefällt, bitte um ein Foto oder führe es erneut mit einem anderen --n aus. Details in references/capa.md.

  10. Cover — komponieren (nachdem der Rahmen ausgewählt wurde). Details in references/capa.md. (a) @-Handle Pflicht: wenn handles in brand/brand.json leer ist, frage einmal nach dem @-Handle und speichere es mit: python3 -I scripts/brand.py set-handles brand/brand.json @profil; erfinde niemals einen. (b) Frage nach dem Aufhänger (maximal 28 Zeichen, z.B. „3 MITOS“), dem Bereich der Klemmmarke (max. 28) und dem Untertitel (max. 90; der Teil nach dem letzten Zeilenumbruch erscheint in hellblau). (c) Figma-Pfad (bevorzugt, wenn der Figma-Connector verfügbar und autorisiert ist): lade das Skill figma-use vor use_figma, dupliziere den Frame 272:2 aus der Datei POSTS-OUTUBRO, ersetze Foto und Texte, füge das @-Handle hinzu und exportiere PNG 1× nach projects/<slug>/capa/capa.png (Schritt-für-Schritt in references/capa.md). (d) Ohne Figma oder wenn der Export fehlschlägt: python3 -I scripts/cover_compose.py projects/<slug>/capa/candidato-N.png brand/brand.json projects/<slug>/capa/capa.png --hook "3 MITOS" --area "ISENÇÃO DE IR" --subtitle "linha branca\nlinha em destaque" (oder capa/foto.png). Exit-Code 1 = nichts gespeichert; lies die Nachricht (fehlendes @-Handle, zu kleines Foto, Aufhänger in mehr als 2 Zeilen, zu langer Text, Ausgabe identisch mit einer Eingabedatei, Chromium fehlt). (e) Zeige das capa.png dem Benutzer an und bitte um Zustimmung; passe es an und generiere es erneut, wenn er darum bittet.

Fehler (Exit-Code 1, in jedem Skript): lies die Meldung, behebe die Ursache (Marke fehlt oder ungültig, keine gesprochenen Passagen in der Transkription, fehlende Datei, ungültige Karte oder fehlender Graphik-Renderer – die Meldung sagt, welche Karte) und wiederhole. Hinterlasse keine unvollständige Datei.

Trigger

  • "build preview" / "montar preview" → python3 -I scripts/render.py projects/<slug> preview.
  • "final" / "versão final" → python3 -I scripts/render.py projects/<slug> final (1080x1920, saida/final.mp4). Nur, nachdem ein Preview ausgeliefert wurde; das "final" des Benutzers gilt als Genehmigung des Previews, also rendere ohne erneute Bestätigung.

Ziellänge

Reel schnell: 12–15 s; vertieft: 30–45 s. Berechne die Länge des bereits geschnittenen Videos (Original minus Gesamtsumme der Schnitte). Wenn es außerhalb der beiden Bereiche liegt, weise darauf hin und schlage vor, was angepasst werden kann (mehr schneiden oder Passagen beibehalten). Blockiere nicht.

Was es noch nicht gibt

Die Überprüfungsseite, der Material-Reiter (Schritte 7 und 8), die Graphik-Karten (Schritt 5) und das Cover (Schritte 9 und 10: Rahmenauswahl, Komposition über Figma oder über scripts/cover_compose.py) existieren bereits. Es gibt keine Veröffentlichung: nichts wird automatisch auf Instagram gepostet. Es gibt keine Lächelerkennung (der Benutzer wählt den Rahmen aus) und nur die Datei Poppins-Bold.ttf befindet sich in assets/fonts/: die Untertitel erscheinen in Poppins Bold, und Karten sowie Cover verwenden dasselbe Gewicht für den gesamten Text (das über Figma erstellte Cover ist dasjenige, das mit der exakten Typografie ausgegeben wird). Für das vollständige Markenbild füge in assets/fonts/ auch Poppins-Regular.ttf, Poppins-SemiBold.ttf und Poppins-ExtraBold.ttf hinzu (SIL-OFL-Lizenz, können in das Repository aufgenommen werden). Video und Untertitel werden nur durch render.py ausgegeben (die anderen Skripte, die Video oder Untertitel aufnehmen, dienen der Fehlersuche).

Verwandte Skills