Was macht wecut?
wecut rendert ein JSON-Projekt in ein MP4 (oder GIF) mit dem auf diesem Rechner installierten FFmpeg. Du beschreibst den Schnitt; WeCut erledigt die Videoarbeit. Es ruft niemals einen Netzwerkdienst auf.
Wenn wecut nicht im PATH ist, verwende stattdessen überall npx -y wecut (Node 16+). Wenn WeCut als MCP-Server verbunden ist, sind die gleichen Schritte die Werkzeuge wecut_doctor, wecut_probe, wecut_validate, wecut_preview (gibt die Frames als Bilder zurück), wecut_render, wecut_list, wecut_schema, wecut_example, wecut_analyze (gibt das Frame-Blatt als Bild zurück), wecut_recipe_list, wecut_recipe_show, wecut_recipe_apply und wecut_recipe_from_project; übergib ein Projekt als project (Objekt) oder projectFile (Pfad).
Arbeitsablauf
- Überprüfe den Rechner einmal:
wecut doctor. Wenn es FFmpeg als fehlend meldet, folge demhint(z. B.sudo apt-get install -y ffmpeg). - Lege Medien im Arbeitsverzeichnis ab. Jeder Pfad in einem Projekt ist relativ zu dem Ordner, von dem aus du
wecutausführst (oder--root VERZ). URLs werden abgelehnt: Lade zuerst Dateien herunter. - Betrachte die Medien:
wecut probe media/vortrag.mp4 media/musik.mp3liefert Dauer, Größe, fps und ob es Audio gibt. Verwende diese Zahlen fürfrom/to. - Schreibe
projekt.json(Format siehe unten).wecut example podcast-clipgibt ein vollständiges Beispiel aus;wecut schemagibt das JSON-Schema aus;wecut listzeigt jeden Stil, jede Schriftart, jeden Übergang und jeden Filternamen an. - Validiere:
wecut validate projekt.json. Fehler werden mit einem JSON-Pointer (/clips/0/to) und einemhintzurückgegeben. Korrigiere und wiederhole. - Prüfe vor dem Rendern:
wecut preview projekt.json --at 0.5,3,10schreibt kleine JPG-Frames inout/preview/. Öffne sie und überprüfe Bildausschnitt, Textgröße und Untertitelposition. - Rendere:
wecut render projet.json. Verwende--preset draftfür eine schnelle 540p-Prüfung, die Standardeinstellungfinalfür die endgültige Ausgabe.
Jeder Befehl gibt genau ein JSON-Objekt aus. Exit-Codes: 0 ok, 2 ungültige Eingabe, 3 fehlende Abhängigkeit, 4 Rendern fehlgeschlagen, 5 über einem Limit. Du kannst ein Projekt mit wecut render - über die Pipe einlesen.
Projektformat
{
"wecut": "1",
"output": { "file": "out/clip-01.mp4", "ratio": "9:16", "res": 1080, "fps": 30 },
"clips": [
{ "src": "media/vortrag.mp4", "from": 754.2, "to": 781.0, "focus": { "x": 0.42, "y": 0.5 } },
{ "src": "media/vortrag.mp4", "from": 795.5, "to": 812.0, "zoom": 1.15 }
],
"texts": [
{ "text": "Wie ich meine ersten 10k verdient habe", "start": 0, "end": 3, "style": "hook", "y": 0.2, "in": { "type": "pop" } }
],
"captions": { "words": "media/vortrag.words.json", "src": "media/vortrag.mp4", "style": "karaoke" },
"audio": [ { "src": "media/musik.mp3", "volume": 25, "loop": true, "duck": true, "fadeOut": 1.5 } ]
}
Wichtige Regeln:
- Zwei Zeitachsen. Clip
from/tosind Sekunden der Quelldatei. Alles andere (texts,overlays,audio.at,filters,effects) sind Sekunden des fertigen Videos.wecut validategibt die fertigedurationaus. - Übergänge überlappen sich. Ein
transitionauf Clip N überblendet zu Clip N+1 und verkürzt das Video um seineduration. - Bildausschnitt. Standardmäßig ist
fitcover(ausfüllen und zuschneiden). Lenke den Zuschnitt mitfocus(0..1; x 0.3 behält die linke Seite) undzoom. Verwende"fit": "contain"mit"background": "blur", um den gesamten Frame anzuzeigen. - Positionen sind Bruchteile der Leinwand, 0.5 ist die Mitte. Die Schriftart
sizeist in Pixeln bei 1080p. - Bilder verwenden
duration(Standard 3) und könnenmotionhaben: in, out, left, right, up, down. - Emojis werden nicht im Text gezeichnet. Lege sie in ein PNG und verwende
overlays.
Untertitel
Gib WeCut ein Transkript mit Wortzeitangaben und es erstellt Untertitel:
words: ein.json-,.srt- oder.vtt-Pfad oder ein Inline-Array[{"word": "hallo", "start": 0.1, "end": 0.4}]. OpenAI/Groqverbose_jsonund whisper.cpp JSON werden so gelesen, wie sie sind.src: Setze dies auf das Video, zu dem das Transkript gehört. Dann behält das Transkript die eigenen Zeiten der Quelldatei bei, und WeCut verschiebt jedes Wort auf die Ausgabezeitleiste durch jeden Clip, der aus dieser Datei geschnitten wurde (inklusive Geschwindigkeit). Ohnesrcmüssen die Zeiten bereits Ausgabezeiten sein.style:classic,yellow,box-black,box-white,bold,comic,shadow(jeweils eine Phrase),karaoke,karaoke-green(gesprochenes Wort leuchtet auf),pop(jeweils ein großes Wort).
Wenn du ein Transkript benötigst: wecut doctor meldet local_transcription: true, wenn dieses FFmpeg den Whisper-Filter hat. Verwende andernfalls die Spracherkennung, die du bereits hast, und speichere die Wortzeitangaben als JSON.
Vorlagen: Übernehmen, was funktioniert
Ein Rezept ist die Form eines Schnitts ohne seinen Inhalt: Abschnitte (z. B. ein 5-Sekunden-Hook mit einer Überschriftenkarte, dann der Vortrag), Textfelder, Untertitel- und Musikstil, Effekte. Die Anwendung auf neue Clips, Wörter und Musik ergibt ein Projekt.
- Analysiere ein Video, das funktioniert hat:
wecut analyze media/viral.mp4liefert Einstellungen und Tempo, Schnitte in den ersten 3 s, Blitze, Tempo, Pausen, einen stillen Plattform-Abspan (weglassen) undsheet: einen Frame pro Einstellung in einem einzigen Bild. Sieh dir das Blatt für die Überschriftenkarte, den Textstil, den Bildausschnitt und den Untertitelstil an. - Wähle oder schreibe ein Rezept:
wecut recipe list(integriert: news-headline, news-headline-blur, quote-hook, vlog-phrases, podcast-punch, photo-slideshow, plusrecipes/*.jsondes Arbeitsverzeichnisses).wecut recipe show <name>listet seine Rollen und Textfelder auf. Um eines zu schreiben, folgewecut recipe schema. - Wende es an:
{
"recipe": "news-headline",
"clips": [
{ "src": "media/broll.mp4", "role": "hook" },
{ "src": "media/vortrag.mp4", "from": 120, "to": 165 }
],
"texts": { "label": { "text": "Seitenname" }, "headline": { "text": "Die Behauptung in einem Satz", "emphasis": ["behauptung"] } },
"transcript": "media/vortrag.words.json",
"write": "projekte/clip-01.json"
}
wecut recipe apply --input request.json (oder --input - mit dem JSON auf stdin) prüft alles und speichert das Projekt; dann preview und render es. Clips ohne Rolle speisen body; ein Abschnitt ohne Clips leiht sich den Anfang des nächsten Filmmaterials.
- Speichere dein eigenes:
wecut recipe from-project projekte/clip-01.json --name mein-stil --write recipes/mein-stil.jsonbehält Abschnitte, Übergänge, Textfelder, Untertitelstil, Effekte und die Musik als Standardspur.
Musik: Ein Rezept kann seine eigene Spur enthalten (music.src), die standardmäßig wie der Song in einer CapCut-Vorlage verwendet wird. Übergib "music": "media/song.mp3" (oder ein Video, dessen Ton verwendet wird), um sie zu ersetzen, oder "none". Ein aus einem Fremdvideo übernommener Song kann nach dem Hochladen von der Plattform stummgeschaltet werden; das Hinzufügen eines trendigen Sounds in der App beim Posten vermeidet dies.
Kopiere die Struktur, nicht den Inhalt: Filmmaterial, genaue Wortwahl und Musik anderer Ersteller bleiben deren Eigentum.
Mehrere Clips aus einem langen Video erstellen
wecut probedie Quelle und erstelle ein Transkript mit Wortzeitangaben.- Lies das Transkript und wähle die Momente aus (du entscheidest; WeCut bewertet keine Inhalte).
- Schreibe ein Projekt pro Clip, jedes mit
captions.src, das auf die Quelle verweist, sodass ein Transkript für jeden Clip dient. wecut previeweines davon, passefocusan, dannwecut renderjedes.
Fehlerbehebung
E_RANGE:toliegt hinter dem Ende der Datei. Verwendewecut probefür die tatsächliche Dauer.E_PATH: der Pfad liegt außerhalb des Arbeitsverzeichnisses oder ist eine URL.E_MEDIA: die Datei ist keine lesbare Video-, Bild- oder Audiodatei oder die falsche Art für dieses Feld (Musik inclips, Video inoverlays).E_DEPENDENCY: FFmpeg fehlt, ist älter als 6 oder wurde ohne libass erstellt. Führewecut doctoraus.- Rendern zu langsam:
--preset draft, eine niedrigereoutput.resoder weniger Clips pro Projekt.render_secondsundrealtime_factorim Ergebnis zeigen die Geschwindigkeit auf diesem Rechner. - Um genau zu sehen, was FFmpeg ausführen wird:
wecut render project.json --dry-run.