Was macht derush?
Automatischer Jump-Cut-Schnitt von gesprochenen Aufnahmen. Macht NUR den Schnitt und den Export: keine Untertitel. Dieses Skill enthält die untenstehende Rubrik zur Rücknahmeerkennung; die Skripte (fillers, prune, cut) befinden sich im Repository.
Die Videos liegen in $DERUSH_OUT_ROOT/<STEM>/ (Standard ~/Movies/Derush, siehe derush config show).
Eine reine Audiodatei (m4a, mp3, wav, aiff, caf) durchläuft dieselbe Kette: Der Schnitt wird als <STEM>.derush.m4a ausgegeben, der Export als <STEM>.export.m4a (-14 LUFS); fcpxml, Logos und Look existieren dafür nicht.
Die drei Befehle
derush prep "<video>" # legt die Quelle in $DERUSH_OUT_ROOT/<STEM>/ ab, Audio, Stille, Transkription (qwen),
# Alignment, Ähms, Lücken, Lückenkontrolle. ~1,5x der Dauer
derush words <STEM> # wortweise Transkription mit Zeitgrenzen: Schritt 6 liest darauf
derush studio # ALLES im Browser: Rohvideo ablegen, derush, Schnitt per Text,
# vorgeschlagener dichter Schnitt, Rendering. Sprache in einer Lücke = behalten, ausblendbar
derush edit <STEM> # textbasierter Schnitt: lokale Seite, Wörter durchstreichen (Entf), ein
# Ähm/Stille nachholen (Eingabe), Bestätigen → retraction_cuts.json + restore.json
# „Dichten Schnitt vorschlagen": Claude schlägt Schnitte vor (Wiederholungen,
# Abschweifungen, Neuansätze), in orange, nichts wird ohne Ihr OK geschnitten
derush render <STEM> # Fusion + Erhalt + Schnitt + Ne Transkription der Ausgabe + cuts.md
derush logos <STEM> # optional: logos.json → <STEM>.logos.mp4, Export verwendet es, falls vorhanden
derush fcpxml <STEM> # <STEM>.fcpxml, wird auch von render geschrieben: Timeline in Resolve, Clips auf der
# gesamten Quelle, ein gezogener Rand zeigt, was geschnitten wurde
derush export <STEM> # <STEM>.reel.mp4: 1080x1920, 30 fps, -14 LUFS, postfertig
Logos (derush logos): $DERUSH_OUT_ROOT/<STEM>/logos.json = {"cues":[{"logo":"canva","t":14.27}]}, t gelesen
aus derush words (SOURCE-Zeitpunkt, konvertiert durch keep.json). Dateien in $DERUSH_OUT_ROOT/_logos/src/<logo>.svg|png
(freigestellt, transparenter Hintergrund; ohne Datei Textkarte). Weiße Karte mit abgerundeten Ecken, 30 % Breite, oben
LINKS standardmäßig (Facecam: Das Gesicht nimmt das obere Drittel zentriert ein), 2 s, Einblendung 0,2 s; eine schnell
gesagte Liste ordnet die Karten nebeneinander an. Kontrolle: Ein Bild pro Cue extrahieren und ANSCHAUEN. IMG_4596 (2026-10-11):
Canva ×2, Microsoft 365, Gamma, Higgsfield („Xfield" im Transkript: Ihn nach den Namen fragen, whisper
kennt die Hälfte nicht).
derush = bin/derush des Repositorys. Optionen für prep: --lang de,
--noise -40 (leise Stimme), --min 0.3 --pad 0.08 (enger), --min 0.8 --pad 0.2 (ruhiger).
Zwei Videos: Die preps nacheinander im Hintergrund starten, währenddessen die words lesen.
Was geschnitten wird, und wer entscheidet
| Ebene | Signal | Wer entscheidet |
|---|---|---|
| Stille | Wellenform, silencedetect (nicht die Whisper-Lücken, zu grob) | Skript |
| (Voraussetzung) echte Wortgrenzen | CTC-Forced-Alignment auf dem Audio (align_words.py) | Skript |
| von Whisper erkannte Ähms / Hms / Heins, Stottern „ich ich", „und und" | Wort-Zeitstempel (detect_fillers.py) | Skript |
| NICHT transkribierte Ähms / Mmhs (die Mehrheit) | nicht-stille Lücke zwischen 2 Wörtern (gap_fillers.py) | Skript |
| Fehlstarts, wiederholter Satz, „nein warte", abgebrochenes Wort, Anweisungen an die Kamera | Lesen des Transkripts | DU, Schritt 6 |
Erstes Gebot des Skills: Ein falscher Schnitt, der echten Inhalt entfernt, ist der schlimmste
Fehler. Im Zweifel behalten, und es in cuts.md vermerken („absichtlich behalten").
Schritt 6, der einzige manuelle: die Fehlstarts
Lies derush words <STEM> (Wort@Start-Ende, ? = interpolierte Grenze, nicht aligniert) und schreibe
$DERUSH_OUT_ROOT/<STEM>/retraction_cuts.json = {"retraction_cuts":[{start,end,cue_text,rationale}]}.
Rubrik: „THE RETRACTION-DETECTION RUBRIC" weiter unten in dieser Datei, mit diesen Fällen spontaner
Sprache:
- Fehlstart „ich werde... wir werden sehen": Schneide „ich werde" bis zum Beginn des Neustarts.
- Neuformuliertes Wort „das ist ein Ding, ein Werkzeug, das": Schneide nur das erste, wenn das zweite es ERSETZT (nicht wenn es präzisiert).
- Komplett neu angesetzter Satz, auch nach einem Exkurs: Schneide den gesamten ersten Versuch.
- Regieanweisungen an die Kamera („das nehmen wir raus", „nicht in mein Mikro, nein", „das lassen wir drin"): Das sind Anweisungen, kein Inhalt. Wende sie an und schneide sie dann. IMG_4566: Die letzten 40 Sekunden waren 3 Fehlstarts und 2 Anweisungen.
- Nicht schneiden: betonte Wiederholung („immer, immer"), Aufzählung, „eigentlich" im Sinne von Hinzufügung, ausdrucksvolle Pause, komische Selbstkorrektur („XXI. und XXII. Jahrhundert. Nein, des XXI.").
- Grenzen, gelesen in
words:start= Mitte zwischen dem Ende des letzten behaltenen Wortes und dem Beginn des ersten verworfenen Wortes;end= Beginn des ersten behaltenen Wortes − 0,04 s. Um bis zum Ende zu schneiden:end= Dauer des Videos.
Bei einem langen Transkript (> 1000 Wörter) die Lektüre an einen Unter-Agenten delegieren, der das JSON
zurückgibt, dann seine Grenzen gegen words prüfen.
Vor dem Rendern prüfen (neu ableiten, nicht erkennen)
render führt die mechanischen Kontrollen durch und schreibt cuts.md. Was DU prüfst:
- Der Diff-Bereich von
cuts.md(Quelltranskript → Ausgabe). Jedesdeletemuss ein gewünschter Schnitt sein. Ein seltsamesreplace/insert(„das das das") ist oft eine Whisper- Schleife: Transkribiere die Region einzeln neu, bevor du den Schnitt beanstandest. - Eine als SPRACHE IN DER LÜCKE markierte Lücke von
gap_check(Ende vonprep): Höre das Fenster ab. Wenn es ein Fehlstart ist, ist der Schnitt gut. Wenn es Inhalt ist, entferne diese Lücke aus_work/gap_cuts.jsonvorrender. - Ein zitiertes Ähm, ein Mmh ist INHALT. „die Stille, die Mmhs", „vor allem die Ähms": Das Wort ist das Objekt des Satzes, es bleibt. Nach „die", „der", „ein", „auf die" vor einem Ähm/Mmh/Hm: Höre ab und entferne die Lücke, die es abdeckt. Behandle „auf die" niemals als Fehlstart: Der Satz endet auf dem Ähm. (2026-10-27, A001_10272011_C008.)
- Transkription: Standardmäßig Qwen3-ASR seit 2026-11-04 (
transcribe_qwen.py,DERUSH_ASR=whisperzur Rückkehr; qwen fehlt oder ausgefallen → whisper, wird im Log gemeldet). Qwen schreibt Stottern und Fehlstarts, die whisper verschmilzt (C010: „Dinge Dinge", „ich hätte nicht meine, ich hätte nicht meine, alle meine"), daher erscheinen sie inderush wordsund inderush edit. Es schreibt auch nicht mehr die Ähms:gap_fillers.pybleibt. Schwächer bei Eigennamen („claudito" → „claudio"). - Fehlstart von whisper verschmolzen: whisper kann einen zweimal gesagten Satz nur einmal transkribieren. IMG_4543: „ich gebe dir... ich werde geben" transkribiert als „ich werde geben". Ein Satz, der an einer Nahtstelle in der Ausgabe holprig klingt = Transkribiere die Quelle wortweise an dieser Stelle.
- Abkürzungen, Domainnamen, Ziffern: CTC aligniert Buchstaben, die buchstabiert werden, schlecht.
IMG_4549: Die Lücke vor „SI" (SpaceX SI) enthielt das „Es". Jede Lücke, die eine Abkürzung oder einen
.comberührt: Transkribiere das Fenster und schneide es beim geringsten Zweifel nicht. Token mit Ziffern („5h", „J3") sind interpoliert, niemals aligniert. - Sync:
cuts.mdgibt die A/V-Abweichung an. Bei mehr als 40 ms: anschauen. - Fülle die Zeile „Betreff" in
cuts.mdaus.
THE RETRACTION-DETECTION RUBRIC
Du (der aufrufende Agent) liest derush words <STEM> und schreibst dieses JSON in
$DERUSH_OUT_ROOT/<STEM>/retraction_cuts.json, die Datei, die derush render liest:
Vertrag der Detektor-Ausgabe
{
"retraction_cuts": [
{
"start": 6.4,
"end": 9.8,
"cue_text": "Vergiss es",
"rationale": "Reparandum 'wird jedes Mal ausgeführt, wenn der Benutzer eine Datei öffnet' + Cue 'Vergiss es'; Reparatur 'es wird eigentlich beim Session-Start ausgeführt' wird behalten."
}
]
}
start= wo der verworfene Gedanke (Reparandum) beginnt. SEMANTISCHES Urteil; es kann mitten im Satz liegen. Lies die genaue Zeit von den Wort- Zeitstempeln vonderush wordsab (siehe „Grenzen verankern" unten). Zeiten sind in Sekunden des QUELLVIDEOS.end= Ende des Rücknahme-Cues (Interregnum). Das Reparandum + Cue werden BEIDE entfernt; die Reparatur, die FOLGT, wird BEHALTEN. In der Praxis liegtendan der Grenze, wo die korrigierte Äußerung beginnt.- Leere Liste
{"retraction_cuts": []}wenn keine echte Rücknahme. Täuscher und Themenwechsel erzeugen KEINEN Schnitt.
Das Selbstreparatur-Modell (Levelt / Clark & Wasow)
[REPARANDUM] [INTERREGNUM/CUE] [REPARATUR]
verworfener der Cue Ersatz
SCHNEIDEN SCHNEIDEN BEHALTEN
Der Schnitt = Reparandum + Cue. Die Reparatur bleibt erhalten.
Positivtest (schneiden) : ALLE müssen zutreffen
- Der Sprecher entwertet vorherigen Inhalt (verneint, löscht oder bewertet ihn als falsch/unkohärent), UND
- Er ersetzt oder verwirft ihn: Eine korrigierte Version folgt, oder der Gedanke wird aufgegeben, UND
- Es gibt ein tatsächliches Reparandum im Transkript, das entfernt werden kann (ein Cue ohne vorhergehende zu widerrufende Sprache → KEIN Schnitt; siehe Randfall unten).
Negativtests (NICHT schneiden) : jeder einzelne verwirft den Kandidaten
Diese ähneln oberflächlich Cues, sind aber keine Rücknahmen:
- Zeitlich qualifizierter Themenwechsel : „vergiss das Budget für einen Moment/für jetzt", „vergiss das Budget zwei Sekunden". Der Zusatz „für einen Moment/für jetzt" (oft plus eine spätere Verschiebung wie „wir behandeln es nächste Woche") bedeutet, dass der vorherige Inhalt noch GÜLTIG ist, nur zurückgestellt. KEIN Schnitt.
- Hinzufügende Steigerung : „eigentlich ist es noch besser", „nein warte, es ist noch mächtiger". „eigentlich"/„nein" hier VERSTÄRKEN die vorherige Behauptung; sie bleibt bestehen. KEIN Schnitt.
- Bestätigung : „nein, genau das ist es", „eigentlich, das ist ein guter Punkt". Das „nein"/„eigentlich" verstärkt Zustimmung, keine Korrektur. KEIN Schnitt.
- Prozessuale Pause : „warte, ich zeige es dir" / „wait, let me show you". Die Sprache pausiert für eine Demonstration; nichts wird zurückgenommen. KEIN Schnitt.
- Nuance-/Bereichsverfeinerung : „es ist subtiler als das", „na ja, es ist ein bisschen komplizierter". Die vorherige Behauptung wird qualifiziert/erweitert, nicht verworfen. KEIN Schnitt.
- Themenabschluss : „kurz gesagt, es ist kompliziert", „so oder so". Beendet eine Kette, ohne sie zu entwerten. KEIN Schnitt. („kurz gesagt" ist mehrdeutig: Nur ein Schnitt, wenn es von einem tatsächlichen Verwerfen gefolgt wird, wie „kurz gesagt, egal welche Kriterien".)
Wie weit zurück beginnt das Reparandum?
Die Startgrenze ist ein semantisches Urteil:
- Frage, was der Sprecher ersetzt. Das Reparandum beginnt dort, wo der verworfene Gedanke erstmals von der korrekten Ersetzung abwich.
- Neustart-Marker („ich wiederhole", „lass mich von vorne anfangen", „nein warte ich beginne neu") → weiteres Reparandum: zurück zum Beginn des wiederholten Abschnitts.
- Korrektur-Drehpunkte („nein eigentlich", „eigentlich nein", „warte nein") → enges Reparandum: nur das unmittelbar vorhergehende Prädikat/die unmittelbar vorhergehende Klausel.
- Regel der natürlichen Themengrenze : nie über ein anderes Subjekt hinaus schneiden. Eine gültige gemeinsame Themeneinführung, auf die sowohl die falsche als auch die korrekte Version aufbauen, wird BEHALTEN (z. B. eine Einleitung „für das Sound-Installationsprojekt..." bleibt; nur die falsche technische Behauptung danach wird geschnitten).
- SETUP- vs. AUSFÜHRUNGSTest (behalte die letzte noch zutreffende Behauptung). Wenn eine
Setup-/Einleitungs-BEHAUPTUNG wahr bleibt und nur eine folgende AUSFÜHRUNG, AUFZÄHLUNG, LISTE
oder ein DETAIL verworfen wird, beginnt das Reparandum bei der Ausführung, nicht
beim Setup. Die entscheidende Frage ist: „Verneint der Sprecher DIESE Klausel, oder nur
das, was danach kam?" Wenn die Klausel nach der Reparatur noch wahr ist, BEHALTE sie;
beginne den Schnitt bei der ersten Klausel, die die Reparatur ungültig macht.
- „Es verwendet vier Kriterien: A, B, C, D. Egal, vergiss die Kriterien: Worauf es ankommt, ist X." → das Setup „es verwendet vier Kriterien" ist immer noch WAHR (es verwendet Kriterien); nur die Aufzählung „A, B, C, D" wird fallen gelassen. Der Schnitt beginnt bei der Aufzählung, NICHT bei „es verwendet vier Kriterien". Das Behalten des Setups ist zwingend: es zu schneiden ist ein falscher Schnitt von echtem Inhalt.
- Kontrast: Wenn der Sprecher das Setup selbst verneint („es verwendet vier Kriterien… eigentlich nein, es verwendet keine, es ist eine flache Regel"), dann IST das Setup das Reparandum und der Schnitt beginnt dort. Lies, was die Reparatur ersetzt.
- Minimalschnitt / Konservatismus : Wenn du dir unsicher bist, wie weit zurück, bevorzuge den ENGEREN Schnitt. Eine leicht ungenaue vorherige Klausel zu lassen, ist weitaus besser, als einen korrekten Satz zu schneiden.
- Mehrsatz-Reparanda: Wenn der verworfene Gedanke mehrere Sätze oder Zeilen von
derush wordsumfasst, deckt der Schnitt alle ab. - Grenzen verankern: Verwende die Wort-Zeitstempel, niemals Arithmetik.
derush words <STEM>gibt jedes Wort alsWort@Start-Endeaus (?nach einem Wort = die Grenze ist interpoliert, nicht auf den Ton aligniert; behandle sie als weniger exakt). Verankere an diesen:start= die Mitte der Lücke zwischen dem ENDE des letzten Wortes, das du behältst, und dem START des ersten verworfenen Wortes.end= der START des ersten Wortes, das du behältst (der Reparaturkopf) minus 0,04 s. Das Reparandum und der Cue werden geschnitten, der Reparaturkopf wird nie berührt. Um bis zum Ende des Videos zu schneiden,end= die Dauer des Videos.- Cue und Reparaturkopf im selben Satz (getrennt durch „aber", „es ist", „das ist", ein Komma, einen Gedankenstrich): Beende den Schnitt beim letzten Wort des Cues, nicht später. Verwende die ERSTE Interpunktion, die auf den Cue folgt, niemals ein späteres Komma innerhalb der Reparaturklausel. Wenn der Cue ein abschließendes Komma trägt („nein warte,", „vergiss es,"), sind die Wörter danach Reparatur und werden BEHALTEN.
- Reparandum am Ende einer Zeile und der Cue am Anfang der nächsten: Beende den Schnitt am Ende des Reparandums, anstatt vorzugreifen, um auch den Cue zu erwischen. Ein kurzer übrig gebliebener Cue („nein warte") ist harmlos; den Reparaturkopf zu essen ist die Todsünde.
- Interpolierte Grenzen (
?): Runde EINWÄRTS (siehe unten).
…
[gekürzt für die Übersetzung]