Communitygithub.com

aion88/derush

Automatisches Jump-Cut-Montage-Tool für gesprochene Videos: Entfernt Stille, Füllwörter (ähm, hmm), Stottern, Fehlstarts und wiederholte Sätze. Ausgabe: bereinigtes MP4, exportfertige Datei und Schnittbericht. Unterstützt Deutsch und Englisch.

Was ist derush?

Derush ist ein KI-gestütztes Skill für Claude Code, das gesprochene Video- und Audioaufnahmen automatisch bearbeitet, indem es unnötige Elemente wie Stille, Füllwörter, Stottern, Fehlstarts und wiederholte Phrasen entfernt. Es erzeugt ein sauber geschnittenes MP4, eine exportfertige Datei (1080x1920, 30 fps, -14 LUFS) und einen detaillierten Schnittbericht. Der Workflow besteht aus mehreren Befehlen: 'prep' bereitet die Quelldatei vor (Audioextraktion, Transkription, Stille- und Füllworterkennung), 'edit' ermöglicht eine textbasierte Feinanpassung des Schnitts, 'render' führt die endgültige Montage durch, und 'export' erstellt das postfertige Video. Die Skill unterstützt auch die Einbindung von Logos und die Erstellung von Final-Cut-Pro-XML-Dateien für die weitere Bearbeitung in professionellen Schnittprogrammen. Die zentrale Philosophie ist konservativ: Im Zweifel wird Inhalt behalten, um keine wichtigen Aussagen zu verlieren. Besonders hervorzuheben ist die automatisierte Erkennung von Füllwörtern (sowohl transkribierte als auch nicht transkribierte mittels Lückenanalyse) und die Option zur manuellen Fehlstart-Erkennung in Schritt 6, bei der der Benutzer anhand der Worttranskription entscheidet, welche Abschnitte entfernt werden sollen.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aion88/derush/tree/HEAD/skill

In Ihrer bevorzugten KI fragen

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

Dokumentation

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

EbeneSignalWer entscheidet
StilleWellenform, silencedetect (nicht die Whisper-Lücken, zu grob)Skript
(Voraussetzung) echte WortgrenzenCTC-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 KameraLesen des TranskriptsDU, 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). Jedes delete muss ein gewünschter Schnitt sein. Ein seltsames replace/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 von prep): 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.json vor render.
  • 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=whisper zur 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 in derush words und in derush edit. Es schreibt auch nicht mehr die Ähms: gap_fillers.py bleibt. 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 .com berührt: Transkribiere das Fenster und schneide es beim geringsten Zweifel nicht. Token mit Ziffern („5h", „J3") sind interpoliert, niemals aligniert.
  • Sync: cuts.md gibt die A/V-Abweichung an. Bei mehr als 40 ms: anschauen.
  • Fülle die Zeile „Betreff" in cuts.md aus.

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 von derush words ab (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 liegt end an 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

  1. Der Sprecher entwertet vorherigen Inhalt (verneint, löscht oder bewertet ihn als falsch/unkohärent), UND
  2. Er ersetzt oder verwirft ihn: Eine korrigierte Version folgt, oder der Gedanke wird aufgegeben, UND
  3. 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 words umfasst, deckt der Schnitt alle ab.
  • Grenzen verankern: Verwende die Wort-Zeitstempel, niemals Arithmetik. derush words <STEM> gibt jedes Wort als Wort@Start-Ende aus (? nach einem Wort = die Grenze ist interpoliert, nicht auf den Ton aligniert; behandle sie als weniger exakt). Verankere an diesen:
    1. start = die Mitte der Lücke zwischen dem ENDE des letzten Wortes, das du behältst, und dem START des ersten verworfenen Wortes.
    2. 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.
    3. 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.
    4. 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.
    5. Interpolierte Grenzen (?): Runde EINWÄRTS (siehe unten).

…

[gekürzt für die Übersetzung]

Verwandte Skills