Edição de cortes (sem API)
Diese Skill vereint alles, was der Kanal beim Schneiden von Cortes gelernt hat: Recherche und Download, Ranking, Drehbuch, Schnitt, Prüfungen und Animation. Jede Regel entstand aus einem Fehler, der bereits online war oder fast online gegangen wäre. Sie läuft in einer Umgebung ganz ohne API:
- Bearbeiten und Rendern: HyperFrames (
npx --yes [email protected] …). - Audio transkribieren und anhören: Lokaler Whisper (whisper.cpp über HyperFrames oder faster-whisper).
- Zeitmessung jedes Wortes: Lokaler Force-Aligner (MMS_FA, torchaudio) und das Audio-Envelope.
Zwei Modi: Vorher entscheiden
| Modus | Wann | Vorlage |
|---|---|---|
| Reels mit echtem Video | Institutionelles Profil oder Marke (z. B. @amigosdobem): Die Person oder Aktion in voller Größe, Schlagzeile, Name und Funktion, Deckbilder, Logo und Untertitel. Wenig oder keine Animation. | assets/modelo_reels/ (siehe LEIA-ME.md) |
| Papier ausgeschnitten | Meinungs-Cortes-Kanal (der von Raul): Die obere Hälfte animiert wie ausgeschnittenes Papier, der Moderator unten und vollflächige Animationsbildschirme. | assets/modelo/ und references/animacao-hyperframes.md |
Im Zweifel fragen, welcher der beiden Modi. Alles, was vor der Animation kommt (Thema, Drehbuch, Schnitt ohne Wortverschlingung, Sprach- und Audioprüfung, Untertitel, Sicherheitsbereich, Finalisierung und Auslieferung) gilt für beide Modi gleichermaßen. Beim Reels mit echtem Video ist Schritt 3 montar_reels.py anstelle der Szenen, und die Regeln für Charakter, Papier und vollflächige Animationsbildschirme gelten nicht.
Goldene Regeln (gelten in jedem Schritt)
- Keine API. Kein OpenAI-Key oder bezahlter Dienst. Der lokale Whisper liefert den TEXT. Die Feintimings kommen vom MMS_FA-Aligner und der echten Pause im Envelope (
scripts/pausas.py). Whisper ist kein Zeitbeweis: Im C29 platzierte large-v3 Wörter bis zu 1,4 s außerhalb der Position, und jeder Fehler führte zu einer falschen Schnittkante. - Genehmigung vor Fortschritt. Drehbuch genehmigt → Bearbeitung → Animation → Vorschau. Nichts wird geplant oder veröffentlicht ohne die „kann geplant werden“-Bestätigung des Kanaleigentümers. Wenn er „mach bis zum Ende“ sagt, werden die Zwischengenehmigungen zu einer einzigen zusammengefasst: der der Vorschau.
- Nie mitten in einem Wort schneiden. Die Schnittkante ist immer ein Energie-Tal unter −40 dB, vor dem NÄCHSTEN Wort. Jede Nahtstelle wird nach dem Zusammenbau nochmal angehört (
scripts/ouvir_emendas.py). - Den ganzen Raul, zentriert, ohne Zoom und nie eingefroren. Das Bild zeigt immer denselben Moment wie das Audio; bei Podcasts bleibt es bei der Person, die gerade argumentiert, und wer spricht, wird bei jedem Schnitt mit 2 Personen markiert. Kopf nie abgeschnitten. Im geteilten Bildschirm der Quelle füllt sein Panel das untere Fenster; keine unscharfen Seiten. Es darf kein Standbild mit Sprache geben. Ein Foto oder Diagramm im Vollbild der Quelle wird unter einen VOLLBILD-Animationsbildschirm gelegt.
- Der Untertitel läuft von Anfang bis Ende mit 1 bis 3 Wörtern, Schimpfwörter werden zensiert (
F**A). - Immer Sicherheitsbereich. Nichts unter der TikTok-Suche, nichts ragt seitlich heraus, nichts unter den Buttons oder dem Post-Text.
scripts/zona_segura.mjsmuss vor jedem Render ✓ ergeben. - Vollbild: 3 Mal mit 5 s oder mehr bei Videos bis 2 Min., 4 Mal bei über 2 Min. Das 1. kommt direkt nach dem Hook.
- Die beste Audiospur (das Opus von YouTube), minimale Rekompression und Ausgabe bei −14 LUFS. Der Soundeffekt liegt immer unter der Sprache.
- Download mit Abstand. Eine Anfrage nach der anderen, nie in Salven, mit Pausen dazwischen (
scripts/baixar.pymacht das bereits). Eine IP, die mit 429 markiert wurde, wird erst nach einer Weile wieder verwendet. Der Clientweb_safari,mwebdient nur zum LISTEN von Videos und Lesen ihrer Daten (Titel, Sprache, Kanal). Mit ihm verschwinden die Untertitel („has no subtitles“ bei jedem Video) und die Auflösung ist falsch (360p), daher werden Untertitel und Medien mit dem Standard-Client geladen. - Nie endgültig löschen. Was rausfliegt, kommt in
_lixeira/, leeren darf nur der Kanaleigentümer. Niemals Passwort oder Token eingeben: Der Login wird immer von der Person selbst durchgeführt.
Installation (einmal pro Maschine)
Der einfachste Weg: Der Befehl aus einem Schritt im README (instalar.ps1 unter Windows, instalar.sh unter Mac) installiert die fehlenden Programme, lädt die Skill herunter und führt scripts/instalar.py aus.
Das Python der Skripte: Wenn die Datei .python im Skill-Ordner existiert, ist jedes python in den Befehlen dieser Skill der darin geschriebene Pfad (z. B. ~/.venv-cortes/bin/python). Der Installer erstellt diese Umgebung, wenn das System-Python pip ablehnt (PEP 668: das von Homebrew unter Mac, das von Debian/Ubuntu).
python scripts/instalar.py (mit Python 3.11+) bereitet die Maschine in einem Durchgang vor. Am Ende sagt es „✓ pronto para editar“ oder listet auf, was fehlt. Es macht fünf Dinge:
- Überprüft Python, ffmpeg und ffprobe, Node 18+ mit npx und Chrome. Was nicht per pip oder npm installiert wird, zeigt es mit Anleitung zur Installation auf Ihrem System an.
- Führt
pip installnur für das Fehlende aus (faster-whisper, torch und torchaudio für CPU, numpy, scipy, soundfile, opencv, yt-dlp). Was bereits installiert ist, wird weder aktualisiert noch herabgesetzt. - Führt
npm install playwright-coreinscripts/aus, von wozona_segura.mjsunderros_js.mjses importieren. - Lädt Whisper large-v3 (~3 GB) und MMS_FA (~1,2 GB) herunter und wärmt
npx --yes [email protected]und das Chrome des Renderers auf. - Führt den Selbsttest aus:
--helpvon 3 Skripten,node --checkder.mjsund das temporäre Bereitstellen vonassets/modelo/.
Es hat drei Optionen:
-
--so-conferir: Nur prüfen, nichts installieren. -
--sem-modelos: Modelle überspringen. -
--modelo-whisper medium: Für schwache Maschinen. Danach--modelo mediumantranscrever_local.pyübergeben. -
Whisper von HyperFrames (optional):
npx --yes [email protected] transcribe <datei> -e whisper -m large-v3 -l pt --json. Es benötigt whisper-cpp, undnpx --yes [email protected] doctorsagt, ob es installiert ist. -
Was Internet braucht (der Rest läuft offline):
- Herunterladen der Quellen (yt-dlp);
- beim 1. Mal die Modelle (Whisper large-v3 und MMS_FA) und das Chrome des Renderers; der Installer lädt alle drei herunter;
- GSAP vom CDN bei jedem Render;
- Google Fonts beim 1. Zusammenbau (danach in
~/.cache/hyperframes/fontsgespeichert).
-
Maschine testen jederzeit:
python scripts/instalar.py --so-conferir.
Projektstruktur
<projekt>/
_fontes/ Heruntergeladene Videos und Audios (<id>_opus.mkv ist die Schnittquelle)
_pesquisa/ Untertitel, Transkriptionen (<id>_palavras.json), Radar und Notizen
_lixeira/ Aussortiertes (Quellen nach Veröffentlichung usw.)
cortes/cNN-slug/ Ein Schnitt: ROTEIRO.md, cortes_gerar.py, cortes.json, pos_cortar.py, _cenas.js, montar.py,
gera_som.py, som.json, capa/, post.json, assets/ (raul.mp4, raul.wav, tempos.json, dados.js),
renders/ (etapa3_bruto.mp4, etapa3.mp4, cNN_previa.mp4, cNN_capa.jpg)
LOG_CORTES.md Ein Eintrag pro Schnitt (Quell-ID, was online ging, was der Eigentümer entschied) und die „Gesammelten Lektionen“;
ohne ihn entnimmt ranking_shorts.py keine bereits verwendete ID.
REGUA.md Die Korrekturen des Eigentümers am Maßstab (vor der Bewertung lesen); RADAR.md wird von nota_viral.py generiert.
Der Workflow eines Schnitts
Vor Beginn die Referenz des Schrittes lesen. Jeder enthält die vollständigen Regeln und das Warum hinter jeder.
| Schritt | Was zu tun | Referenz | Skripte |
|---|---|---|---|
| 0 · Thema | Kandidaten finden, Redebeiträge und Shorts ranken, Maßstabsnote vergeben, per Punktzahl auswählen | references/ranqueamento.md | nota_viral.py, ranking_shorts.py, analise_shorts.py, acha_frase.py |
| 1 · Quelle | Auflisten, Untertitel lesen, beste Spur ohne Sperre herunterladen | references/pesquisa-e-download.md | baixar.py, vtt2txt.py |
| 1 · Drehbuch | Ausschnitt transkribieren, vollständige Argumentation erstellen, zur Freigabe einreichen | references/roteiro.md | transcrever_local.py |
| 2 · Schnitt | Schnittkanten messen, Kamerwechsel finden, schneiden, neu ausrichten, untertiteln | references/corte-e-fala.md | pausas.py, trocas.py, cortar.py, alinhar.py, legendas.py, borrar_regiao.py, reenquadrar.py |
| 2 · Prüfen | Nahtstellen anhören, Bild für Bild betrachten | references/conferencias.md | ouvir_emendas.py, conferir_fins.py, folha_contato.py, travada.py |
| 3 · Animation | Animations-Drehbuch, Szenen, Vollbilder, Sicherheitsbereich | references/animacao-hyperframes.md | assets/modelo/, roteirista.py, marca.py, zona_segura.mjs, erros_js.mjs |
| 3 · Reels mit echtem Video | Schlagzeile, Name und Funktion, Deckbilder, Logo, Markenfarben (anstelle der Animation) | assets/modelo_reels/LEIA-ME.md | montar_reels.py, zona_segura.mjs, erros_js.mjs |
| 3 · Ton | Einsätze beim Wort der Szene, Soundeffekte unter der Sprache | references/audio.md | sonoplastia.py (+ assets/foley/) |
| 4 · Render | Rendern, Mux, Finalisieren, Prüfen und Vorschau senden | references/conferencias.md | finalizar.py, folha_contato.py |
Befehle, in der Reihenfolge (aus dem Ordner cortes/cNN-slug/; $S = Ordner scripts/ dieser Skill)
Beginnen Sie mit dem Kopieren von assets/modelo/ nach cortes/cNN-slug/ (siehe assets/modelo/LEIA-ME.md): Es enthält cortes_gerar.py, pos_cortar.py, montar.py, gera_som.py, das Cover und post.json zum Ausfüllen. Wenn die Skill nicht in ~/.claude/skills/edicao-de-cortes liegt, setzen Sie EDICAO_CORTES=<skill-ordner>.
python $S/pausas.py <quelle> --palavras <woerter.json> <t:vorher:nachher> ... --perfil # jede Kante, vor dem Schreiben
python $S/trocas.py <quelle> --de <s> --ate <s> # Kamerwechsel und Layout-Änderungen im Ausschnitt
python cortes_gerar.py # schreibt cortes.json (Blöcke, Fenster, Ausschnitte, Wechsel)
python $S/cortar.py . # erstellt assets/raul.mp4, raul.wav und tempos.json (Kante bei Sprache)
python pos_cortar.py # TEXT des Drehbuchs, neu ausgerichtet durch MMS_FA (Wort für Wort)
python $S/legendas.py . # assets/dados.js: Untertitel in Blöcken von 1 bis 3 Wörtern
python $S/ouvir_emendas.py . # jede Nahtstelle im lokalen Whisper + Envelope
python $S/conferir_fins.py . # die Kanten jedes Blocks
python $S/folha_contato.py assets/raul.mp4 --cada 2 # den ganzen Raul und die richtige Person in jedem Bild
# (✋2, wenn der Eigentümer fragt: siehe Ende von references/corte-e-fala.md) · hier vor der Animation den Extra-Aufwand erfragen
python $S/roteirista.py batidas . # batidas.md: Sätze, Anker T() mit der richtigen n, Anspielungen auf Personen
python montar.py # index.html (Animation + Raul + Untertitel + Marke)
python gera_som.py && python $S/sonoplastia.py . # Effektspur; am Ende JS und Sicherheitsbereich prüfen
npx --yes [email protected] render . --fps 24 -q standard -w 6 -o renders/etapa3_bruto.mp4
python $S/sonoplastia.py . --mux # verlustfreier Ton auf dem Render-Bild
python $S/finalizar.py . # −14 LUFS, Standbildprüfung, 720p Vorschau
python $S/folha_contato.py renders/etapa3.mp4 --cada 3 # fertiges Video vor dem Senden ansehen
Wie man ausliefert
- Drehbuch: im Format von
references/roteiro.md: Handlungslinie, Blöcke mit vollständigem Text und Szene jedes Blocks, Vollbilder, Cover, Selbstkritik mit Note und am Ende die Liste, was wegfällt. - Vorschau: die 720p-Vorschau und das Cover, mit einer Zusammenfassung des Videos:
- die Vollbilder;
- was geprüft wurde (Sicherheitsbereich, Standbild, Loudness);
- was nach dem 1. Render korrigiert wurde;
- der Post-Text. Danach auf das „kann geplant werden“ warten. Die explizite Aufforderung, es geplant zu lassen („ich will es fertig, perfekt, geplant“) gilt bereits als das „kann geplant werden“ für diese Videos.
- Post-Text (
post.json): nützliche Information mit Nennung des Moderators („Für Raul Sena, …“), bis zu ~430 Zeichen (bei TikTok ging bei ~600 Zeichen der Anfang im Feld bei 3 Versuchen verloren; die mit 421 und 426 kamen an), ohne Gedankenstrich oder spitze Klammern und mit zensierten Schimpfwörtern. Am Ende die Hashtags: die 2 der Marke, 3 bis 5 zum Thema, wie die Leute suchen, und 1 bis 2 allgemeine, ohne Akzente und Leerzeichen. Dertrechoinpost.jsonist der Anfang des Texts: Er findet den Post im Studio. - Drei Netzwerke zur gleichen Zeit: Das „kann geplant werden“ von TikTok gilt für Instagram und Facebook ZUR GLEICHEN ZEIT, ohne erneute Anfrage. Nach der Zeit prüfen, dass der Post in allen drei erschienen ist (bei C80 und C83 schlug Instagram aufgrund eines Kontoblocks fehl).
- Puffer bei TikTok: Ein neuer Account schickt jeden Post zur Überprüfung („Inhalt wird geprüft“, bis zu 12 Std.). Mit 2 Std. oder mehr Puffer planen, niemals weniger als 20 Min. vor der Zeit.
- Visuelle Entscheidung (Layout, Stil, Cover): Optionen als BILD zur Auswahl an den Eigentümer senden.
- Nach Code- oder Tool-Änderungen: Die Zusammenfassung kommt vollständig: was sich geändert hat, warum, was wegfiel und was noch zu tun ist.
Instagram (Reels)
Dasselbe Video dient für Reels und TikTok. Auf Instagram:
- Hochladen des gerenderten Videos (
renders/etapa3.mp4), niemals ein von TikTok heruntergeladenes Video: Instagram verringert die Reichweite von recycelten Videos mit Wasserzeichen. - Der Post-Text akzeptiert bis zu 2.200 Zeichen, aber nur die 1. Zeile erscheint vor dem „mehr“: Sie muss der Hook sein. Hashtags: 3 bis 5 zum Thema plus die der Marke (Instagram empfiehlt wenige und relevante).
- Das Cover erscheint im Profilraster im 3:4-Zuschnitt aus der Mitte: Das Gesicht und die Schlagzeile vollständig darin (das Cover der Vorlage ist bereits so gemacht). In der App unter „Cover bearbeiten“ → „Aus Galerie hinzufügen".
- Der Sicherheitsbereich von
zona_segura.mjs(Suche oben, Buttons rechts, Post-Text unten) gilt für beide. Beim 1. Post einen Screenshot des veröffentlichten Reels bei jedem Vollbild betrachten und, falls die Oberfläche etwas überdeckt, die Grenzen anpassen. - Dauer: 1 bis 2 Min. (Reels akzeptiert bis zu 3 Min.).
- Die Zahlen des Maßstabs und des Gitters (Zeiten, Gewichte, View-Limits) wurden auf TikTok dieses Kanals gemessen: Auf Instagram die Punkteliste mit eigenen Daten neu beginnen.
Anderer Kanal
Die Skill wurde im Cortes-Kanal von Raul Sena geboren und die Beispiele stammen von ihm. Für einen anderen Moderator oder eine andere Marke ersetzen:
- Die Marke:
CONTAund der Avatar in …
Hinweis: Der Originaltext wurde hier aufgrund der Zeichenbegrenzung gekürzt. In der vollständigen Übersetzung würden alle Abschnitte des ursprünglichen SKILL.md enthalten sein.