Was macht Editor de video por cliente?
Motor und Workflow für professionelle Videobearbeitung – versteht das Material, schneidet präzise, wendet den Kunden-Look an, prüft und liefert aus. Der Motor hat keinen eigenen Stil: alles Visuelle kommt aus clientes/<CLIENTE>/look.py.
SKILL_DIR = Ordner dieser Skill. Werkzeuge: engine/reel.py, tools/{takes.py, words.py, media.sh}, Vorlagen in templates/, Start-Looks in looks/.
Voraussetzungen (beim ersten Mal prüfen; Fehlendes installieren)
ffmpeg,python3,node/npx· macOS:avconvertundsips(vorinstalliert) für HDR→SDR und HEIC-Fotos.- HyperFrames (Rendering und SFX-Bibliothek):
npx hyperframes skills update general-video(installiert auchmedia-use). - watch (Videos ansehen/transkribieren und Links von Instagram/TikTok/YouTube mit yt-dlp herunterladen): Skill
watchvon github.com/bradautomates/claude-video, lokaler WhisperX-Engine (kostenlos):setup.py --engine localund--backend whisperx. - whisper CLI (Prüffenster):
uv tool install --python 3.12 openai-whisper --with setuptools. - MFA (Wortgenaue Ausrichtung ±20 ms):
brew install --cask miniforge,conda create -n mfa -c conda-forge montreal-forced-aligner -y,conda run -n mfa mfa model download acoustic spanish_mfaund… dictionary spanish_mfa(andere Sprache: entsprechendes Modell).
Ordnerstruktur (Arbeitsbasis, z.B. ~/Documents/VIDEOS/)
clientes/<CLIENTE>/
├── estilo.md Kundenleitfaden (templates/estilo.md) – wird IMMER vor dem Bearbeiten gelesen
├── look.py Der ins Motor-Format übersetzte Stil (aus looks/nativo.py oder looks/datos.py)
├── refs/ Referenzvideos + Frame-Blätter + Analysen
├── marca/ Logo, Farben, Schriftarten, eigene Musik
└── proyectos/<AAAA-MM-DD_nombre>/
├── crudo/ Rohmaterial des Nutzers – NIEMALS ändern oder löschen
├── broll/ Zusätzliche Aufnahmen (optional)
├── guion.md Skript oder Notizen (optional; überschreibt estilo.md für dieses Projekt)
├── trabajo/ media/ (konvertiert), mfa/, gt/, und ein Ordner pro Video mit config.py + takes.json
└── final/ Nur Liefergegenstände: <cliente>_<tema>_v1.mp4 · Korrekturen = v2, v3 ohne die vorherige zu löschen
Der Nutzer erstellt keine Ordner: er sagt "neues Projekt für , das Material liegt in " und hier wird proyectos/<Datum_Name>/ erstellt und das Rohmaterial verschoben (vorher fragen, ob es außerhalb der Basis liegt und nicht verschoben werden soll).
Workflow
0 · Neuer Kunde → Referenzen analysieren und estilo.md schreiben
- Referenzen herunterladen/lesen (Links mit
watch, das yt-dlp verwendet) inrefs/. Ideal ~5. - Für jede Referenz messen: Hook (erste 3 s), Schnitte/min (
ffmpeg -vf "select='gt(scene,0.3)',showinfo"→ zählen), Untertitel (Schriftart oder die nächstbeste kostenlose, Größe, Position, Farbe, Hervorhebungen, Animation), Farbe/Look, Karten und Animationen, Sound (Musik, SFX, Stimme), Bildausschnitt, Struktur, CTA. Frame-Blatt:fps=16/dur,scale=270:480,tile=8x2. estilo.md(Vorlage) schreiben nur mit Mustern, die in ≥ 2 Referenzen vorkamen; Gemessenes von Abgeleitetem trennen; keine fremden Phrasen oder Marken kopieren. Wenn sich Referenzen widersprechen, nach Priorisierung fragen.look.pyvom nächstgelegenen Start-Look aus erstellen und an den Leitfaden anpassen. Leitfaden + Test-Stills zeigen und auf Freigabe warten vor dem Bearbeiten.
1 · Rohmaterial verstehen
estilo.mdundguion.mdlesen. Jede Datei prüfen (ffprobe: Dauer, Rotation,color_transfer).watchauf jedes Rohmaterial mitWATCH_WHISPERX_LANGUAGE=esund--out-dir trabajo/watch: was gesagt wird, welche Takes brauchbar sind, Nachdrehs, was NICHT geschnitten werden soll. Diese Transkription ist die einzige vollständige: sie wird für MFA wiederverwendet.- Mit dem Skript abgleichen: welche Teile des Skripts nicht aufgenommen oder improvisiert wurden → Nutzer informieren.
- Mehrere kurze Clips ohne Stimme (Events): Frame-Blatt pro Clip, nach Thema sortieren und Gruppierungen vorschlagen (ein Video pro Thema + Einzelclips + ein allgemeiner Recap) vor dem Bearbeiten.
2 · Medien vorbereiten
media.sh video <crudo> trabajo/media/<name>.mp4 [vertical|horizontal]– konvertiert HDR (iPhone/DJI) in einem Durchgang zu SDR, Keyframes alle 1 s, 30 fps. Nicht mehrfach neu komprimieren: jeder Durchgang verliert Details.- Fotos:
media.sh foto <foto> trabajo/media/<name>.mp4 2.5. Audio zum Ausrichten:media.sh audio.
3 · Wörter ausrichten (Videos mit Sprache)
corpus/a.wav+corpus/a.txt(Klartext von watch) →conda run -n mfa mfa align --clean <absoluter_Pfad_corpus> spanish_mfa spanish_mfa <absoluter_Pfad_ausgabe>(absolute Pfade, sonst Fehler; ohne--beam).words.py textgrid … words.jsonundwords.py show words.json.- Wörter mit
~(Dauer > 1 s) verstecken Pausen oder Nachdrehs; lange Lücken ohne Text können Nachdrehs sein, die watch nicht transkribiert hat. Mit isoliertem Fenster prüfen: 3–15 s Audio ausschneiden,whisper --model small --language es --word_timestamps True,words.py whisper … <offset>. MFA kann um Sekunden abweichen, wo es Geräusche oder Nachdrehs gab.
4 · Takes auswählen → takes.json → takes.py
- Pro Satz den besten Take (normalerweise den letzten) wählen; Nachdrehs, Fehlstarts, Füllwörter, Regieanweisungen ("dieses soll ein anderes Video werden") und alles, was nicht zum Ziel beiträgt, entfernen. Die maximale Dauer einhalten.
- Spannen nach Start des Wortes:
(Start des 1., Start des letzten + 0.2). Wenn das Ende vor dem Start des letzten Wortes liegt, wird es verschluckt.word_fixkorrigiert Wörter, die MFA falsch platziert hat (mit Zeiten aus dem isolierten Fenster). - Text:
phrases/wordskorrigieren, was der ASR falsch verstanden hat (Namen, Marken: "Claude" nicht "Klaus", "IA" nicht "ella"). python3 $SKILL_DIR/tools/takes.py trabajo/<video>/takes.json trabajo/<video>→ gibt Dauer und finalen Text aus. Gesamten Text lesen: kein letztes Wort eines Abschnitts darf fehlen, und keine abgeschnittenen Wörter dürfen übrig bleiben.
5 · Video zusammenbauen
trabajo/<video>/:config.py(austemplates/config.py),media → ../media(Symlink),media.sh sfx trabajo/<video>,hyperframes.jsonminimal ({"paths": {"assets": "assets"}}).- In
edit(e): Karten/POV/CTA, B-Roll und Sounds an Wörter gebunden (e.word_t(None, "palabra")). Karten an den Rändern: bei Zoom wird das Gesicht breiter. Ein sichtbares Event alle ≤ 3 s (der Motor fügt bei Bedarf Auto-Punches ein). python3 $SKILL_DIR/engine/reel.py trabajo/<video>→npx hyperframes check trabajo/<video>(0 Fehler; Warnungen wie "große Datei / dichter Track / verschachtelt" sind bei diesem Motor normal).
6 · Vor dem Rendern prüfen
npx hyperframes snapshot trabajo/<video> --at <t1,t2,…> --no-end -o <ABSOLUTER_Pfad>an jeder Karte, jedem Hook und CTA. Prüfen: nichts verdeckt das Gesicht, Texte brechen nicht hässlich um, Farben korrekt, Untertitel lesbar.- Stills dem Nutzer zeigen und auf Freigabe warten (außer der Stil ist bereits freigegeben und der Nutzer sagt "rendere").
7 · Rendern und Liefern
npx hyperframes render --quality delivery -o …/raw.mp4innerhalb vontrabajo/<video>→media.sh final raw.mp4 final/<cliente>_<tema>_v1.mp4(−14 LUFS). Nur das soeben erstellteraw.mp4löschen.- Mit
watch --detail transcriptprüfen: vollständiger Text ohne Wiederholungen. Wenn der Anfang "fehlt", die ersten 3 s mit whisper prüfen, bevor eine Schlussfolgerung gezogen wird (die vollständige Transkription lässt manchmal den Beginn aus).
Lektionen (nicht wiederholen)
- HDR ohne Konvertierung wirkt verwaschen; mit
avconverteinmal konvertieren. - In 4K aufnehmen, wenn Zooms geplant sind: 1080p um 13–22 % vergrößert wirkt weich. Den Kunden informieren.
- Ein korrigierter Satz mit mehr Wörtern kann nicht dieselbe Zeit verteilen: Untertitel mit Dauer 0 bleiben hängen.
- Emojis im Bildschirmtext werden nicht immer gerendert: vermeiden.
snapshot -omit relativem Pfad schreibt neben das Projekt: absolute Pfade verwenden.- Dieselbe Datei, die in zwei Videoteilen verwendet wird, benötigt unterschiedliche Schlüssel in
takes.json(eindeutige IDs). - Die SFX-Bibliothek nicht in ein Repository hochladen (Pixabay-Lizenz von media-use): sie wird pro Projekt mit
media.sh sfxkopiert. - Korrekturen des Kunden an einem einzelnen Video (z.B. "keine Sounds im 07") werden in dessen
config.pyvorgenommen (SFX = {"card": None, "broll": None, "cut": None}undsfx: Nonein Karten), nicht durch Bearbeiten derindex.html(geht beim Neubau verloren).