Skip to main content
Glama

splicedeck

checks licence: Apache-2.0 Python 3.12+ runtime dependencies: 0

Ein Videobearbeitungsprogramm, das von einem KI-Agenten gesteuert wird und auf Ihrem eigenen Rechner läuft.

Ein einziger Aufruf kleidet einen Schnitt in eine Vorlage: Bewegtgrafiken, Overlays, Untertitel und ein Taktgitter, gegen das geschnitten wird. Ein einziger Durchlauf über eine Quelle liefert sowohl einen bereinigten Langform-Master als auch vertikale Clips. Und es merkt sich, wie jeder Kunde, Kanal oder jede Sendung geschnitten werden möchte, sodass der nächste Schnitt dort beginnt, wo der letzte endete.

Es gibt keine Zeitleiste zum Ziehen und kein Konto zum Erstellen. Es wird nichts hochgeladen.


Status: Die Pipeline läuft Ende-zu-Ende, und der Speicher erreicht den Schnitt

Eine Quelle wird heute zu einer ausgelieferten Datei. Gemessen auf dem Referenzrechner (Windows 11, Python 3.13, ffmpeg 8.1.2) an einer echten 223 MB .mov:

inspect   2.6 s     draft  27 ms     splice  27 ms     verify  42 ms
deliver   157 s  ->  1920×1080 h264 + aac, -23.0 LUFS, decodes clean

python -m pytest meldet 1425 bestanden, 2 übersprungen in etwa vier Minuten. Einunddreißig Verben erreichen die CLI und achtzehn davon erreichen einen MCP-Server, beide aus einer Tabelle generiert, sodass sie nicht auseinanderdriften können.

Eine Hauptfunktion funktioniert noch nicht. Das Schneiden durch Zitieren benötigt eine Sprachbinärdatei, die derzeit kein Manifest beschaffen kann. Lesen Sie Was nicht funktioniert, bevor Sie darauf planen.


Installation

Sie benötigen Python 3.12 oder neuer und ffmpeg 8.x in Ihrem PATH. splicedeck installiert noch bündelt ffmpeg, und docs/first-run.md §4 erklärt, warum das bewusst so ist.

Das Setup-Skript fragt, wohin der Arbeitsbereich geht, bietet an, ffmpeg zu installieren, nachdem es Ihnen den genauen Befehl gezeigt hat, richtet alles ein und schreibt eine MCP-Konfiguration:

curl -fsSLO https://raw.githubusercontent.com/ihuzaifashoukat/splicedeck/main/install.sh
less install.sh && bash install.sh
irm https://raw.githubusercontent.com/ihuzaifashoukat/splicedeck/main/install.ps1 -OutFile install.ps1
notepad install.ps1; powershell -ExecutionPolicy Bypass -File install.ps1

Lesen Sie es, bevor Sie es ausführen. Ein curl | bash-Einzeiler wäre eine schlechte Werbung für ein Projekt, dessen README größtenteils von einem Bedrohungsmodell handelt.

Wenn Sie es lieber selbst machen möchten oder die Tests wollen:

uv tool install splicedeck                    # or: pipx install splicedeck
git clone https://github.com/ihuzaifashoukat/splicedeck.git && cd splicedeck
python -m venv .venv
.venv/Scripts/python -m pip install -e ".[dev]"   # Windows
.venv/bin/python  -m pip install -e ".[dev]"      # macOS, Linux

Noch nicht auf PyPI. Es gibt kein Release, daher wird uv tool install splicedeck einen 404-Fehler liefern, bis der erste Tag gepusht wird. Verwenden Sie bis dahin das Skript, einen Klon oder uv tool install "git+https://github.com/ihuzaifashoukat/splicedeck.git".

docs/install.md enthält alle Wege, die plattformspezifischen ffmpeg-Befehle, die Umgebungsvariablen und eine Eingabeaufforderung, die Sie in einen KI-Agenten einfügen können, damit dieser splicedeck für Sie installiert und einrichtet.

Ausprobieren

Der Arbeitsbereichsstamm ist das Verzeichnis, in dem Sie arbeiten, und spd init richtet einen ein:

mkdir my-edit && cd my-edit
spd init                                      # bookmarks/ casebook/ elements/ ledger/ media/ profiles/ templates/
mkdir -p casebook/parties/demo
spd ready                                     # what is present, and what each gap blocks

init überschreibt nie. Wenn Sie es erneut ausführen, nachdem Sie ein Profil bearbeitet haben, füllt es alles Fehlende auf und lässt Ihre Änderungen in Ruhe. Die geschriebenen Dateien sind byteidentisch mit denen, die dieses Repository ausliefert, und python -m checks.starter --check erzwingt das.

Legen Sie dann Ihr Filmmaterial unter media/ ab und schneiden Sie:

spd inspect --path media/your-file.mov               # mints a source handle
spd draft --party demo --source s1 --bookmark baseline --profile wide-1080
spd apply --sheet c1 --template clean-master         # overlays, motion, beat grid
spd splice --sheet c1 --source a --in_ticks 0 --out_ticks 900000 \
           --source_in_ticks 0 --cause manual
spd verify --sheet c1
spd deliver --sheet c1

Quellen müssen innerhalb des Arbeitsbereichs liegen. Ein Pfad mit einem Laufwerksbuchstaben wird mit PATH_OUTSIDE_WORKSPACE abgelehnt, bevor etwas gelesen wird.

Eine Partei wird von einem Menschen, von Hand, absichtlich erstellt. draft lehnt UNKNOWN_PARTY ab, bis casebook/parties/<name>/ existiert.

Um es von einem MCP-fähigen Assistenten aus zu steuern, registrieren Sie den Server:

{"mcpServers": {"splicedeck": {
  "command": "C:\\src\\splicedeck\\.venv\\Scripts\\python.exe",
  "args": ["-m", "splicedeck.surface.mcp"],
  "cwd": "C:\\src\\splicedeck"}}}

cwd muss der Arbeitsbereich sein, da der Arbeitsbereichsstamm das Arbeitsverzeichnis ist und nichts anderes ihn findet. python -m splicedeck.surface.mcp --tools gibt die generierte Werkzeugliste aus und beendet sich, wodurch Sie einen defekten Server von einer defekten Host-Konfiguration unterscheiden können. docs/mcp.md ist die vollständige Anleitung.

Vorlagen: Das Aussehen in einem Aufruf

apply kleidet einen Schnittplan in eine benannte Vorlage. Es platziert die Overlays, schreibt das Taktgitter, gegen das der Agent dann schneidet, und vermerkt auf dem Plan, welche Vorlage verwendet wurde.

Vier werden heute ausgeliefert:

Vorlage

Was es ist

clean-master

Ein ruhiger Talking-Head-Master mit einem unteren Drittel und keinem Taktgitter

quick-beat

Ein schneller vertikaler Schnitt: drei Taktschlitze mit einem pulsierenden Akzent auf jedem

bold-run

Ein Promo-Look: randlose Intro- und Outro-Karten um zwei Taktschlitze

bare-mark

Eine kleine Markierung auf dem Bildschirm und sonst nichts

Die Overlays einer Vorlage animieren, wenn die optionale Bewegungsebene installiert ist, und fallen auf einen statischen Abdruck zurück, wenn dies nicht der Fall ist. Sechs animierte Kompositionen werden in scenes/ ausgeliefert, die für dieses Projekt geschrieben und mit ihm lizenziert sind.

Schlitze werden erzwungen. verify weigert sich, einen Plan mit einem ungefüllten Schlitz durchzulassen, und ein Schnitt, der außerhalb der Toleranz eines Schlitzes landet, wird mit SLOT_TOO_TIGHT abgelehnt, wobei die nächstgelegenen gültigen Kanten als versandbereite Aufrufe zurückgegeben werden. Dadurch kann ein Agent einen Rhythmus treffen, den er nicht sehen kann.

Sie können Ihre eigenen schreiben. spd compose --kind template validiert und schreibt eine handgeschriebene Vorlage oder Elementkarte. Es ist bewusst nur CLI: Der MCP-Server darf nicht in templates/ schreiben, und docs/templates.md §4 erläutert die Begründung, anstatt es als Versehen zu behandeln.

Warum Speicher

Ein Schnitt besteht aus tausend kleinen Entscheidungen, und fast alle wiederholen sich. Wie lange nach einem Pointenhalter gewartet wird. Ob das Füllwort dieses Sprechers Rauschen oder Persönlichkeit ist. Wie groß Untertitel auf einem Telefon auf Armeslänge sein müssen. Ein zustandsloses Werkzeug zwingt Sie, diesen Kontext in jeder Sitzung neu bereitzustellen, weshalb „KI-Schnitt“ so oft etwas technisch Korrektes und tonal Falsches produziert.

Hier wird eine Entscheidung, die Sie einmal getroffen haben, aufgezeichnet und wiederverwendet:

subtitle.size_px = 74
  when {surface: vertical, frame: 1080x1920}
  set by  a render you shipped and kept, 2026-08-02
  before  66

Diese Aufzeichnung lebt in Ihrem Repository als überprüfbarer Text. Sie können den Diff lesen, einen falschen Eintrag durch Bearbeiten einer Zeile korrigieren und eine Änderung, die die Schnitte verschlechtert hat, mit git revert rückgängig machen. Es ist ein Verhaltensänderungsprotokoll, das am selben Ort aufbewahrt wird wie alles andere, das Sie versionieren.

Zwei Regeln halten es vertrauenswürdig:

  • Nichts Dauerhaftes wird vom Modell geschrieben. Ein Eintrag beschreibt etwas, das ein Mensch getan hat: einen Render ausgeliefert und behalten, einen Moment wiederhergestellt, den der Schnitt entfernt hat. Der Agent kann auf das zeigen, was passiert ist; er kann nicht zusammensetzen, was erinnert wird.

  • Jeder Schreibvorgang durchläuft ein menschliches Tor. Keine Präferenz wird stillschweigend gelernt.

Diese Schleife läuft heute. spd set, ship, keep, restore und discard hängen Aktionen an ein hash-verkettetes Hauptbuch einer Partei an und stellen aus jeder einen Vorschlag bereit; eine Aktion kann nicht an eine Kette angehängt werden, die nicht verifiziert. spd review fragt dann nach dem Wert blind, zeigt die Grenzen und den ausgelieferten Schnitt, aber nie die Zahl, und eine übereinstimmende Antwort wird zu einem versiegelten Fall und einer neu generierten findings.lock.txt. Der nächste draft löst dagegen auf: das Lesezeichen öffnet die Einstellungen, das Fallbuch überschreibt diejenigen, die ein Mensch festgelegt hat, und der Plan vermerkt, welche Sperre er gelesen hat.

Lokal zuerst und vollständig

Ein frischer Klon ohne API-Schlüssel und ohne Cloud-Konto produziert eine fertige, ausgelieferte Datei auf Ihrem eigenen Rechner. Das ist die Basislinie, kein heruntergestufter Modus.

Cloud-Dienste können dort eingeschaltet werden, wo sie wirklich helfen, wie eine gehostete Sprach-API für schwieriges Audio oder Diarisierung, aber nichts wird erforderlich und kein Auslieferungsgegenstand hängt davon ab. ffmpeg erledigt die Arbeit als Kindprozess. Es wird nie vendoriert und nie gelinkt.

Das Projekt weigert sich auch, über Ihre Hardware zu raten. Die Encoder-Unterstützung wird durch Testkodierung nachgewiesen, nicht durch Lesen einer Funktionsliste, da Funktionslisten lügen. Auf dem Entwicklungsrechner bewirbt ffmpeg -encoders einen NVIDIA-Encoder, der zur Laufzeit fehlschlägt, während der Intel-Encoder, der tatsächlich funktioniert, in jeder Anleitung unerwähnt bleibt.

Was funktioniert

  • Ein Analyse-Durchlauf, zwei Auslieferungen. Transkription und Analyse laufen einmal pro Quelle. Der Langform-Master und die vertikalen Clips lesen beide dieselben Ergebnisse.

  • Bildgenaues Schneiden ohne Audio-Drift. Audio bleibt bis zum Mux PCM und wird einmal kodiert. Die ausgelieferten Samples sind byteidentisch mit einer Referenzmontage, die in Python über 45 und 120 Joins erstellt wurde. Gemessen, nicht behauptet.

  • Vorlagen und Bewegung in einem Aufruf, mit einem Taktgitter, gegen das der Agent schneidet, und einem Standbild-Fallback, wenn die Bewegungsebene fehlt.

  • Untertitel, die lesbar bleiben. Größen- und Kontrastuntergrenzen werden vom Renderer durchgesetzt, und Text, der unter der eigenen Oberfläche einer Plattform landen würde, wird abgelehnt, anstatt gezeichnet zu werden. Glyphen werden von einem reinen Stdlib-TrueType-Parser geformt und gerastert, sodass Abdrücke byte-reproduzierbar und als Goldene festgeschrieben sind.

  • Vertikale Rahmung, die Unsicherheit eingesteht. Wenn das Subjekt nicht sicher verfolgt werden kann, lehnt es die automatische Rahmung ab und sagt warum. Ein sicher falscher Zuschnitt ist schlimmer als eine ehrliche Ablehnung, weil niemand den überprüft, der gut aussah.

  • Rechte, die Bestand haben. Musik, Effekte und Stock-Filmmaterial tragen eine Aufzeichnung, woher sie stammen und was die Bedingungen erlauben. Eine Auslieferung weigert sich zu laufen, wenn ein Asset keine hat.

  • Typisierte Ablehnungen, die ihre eigene Korrektur mitbringen. Eine Ablehnung kommt mit retry_with, einer Liste versandbereiter Aufrufe. Es gibt 102 Codes, jeder mit einer Baustelle und einem Test, der beweist, dass er erreichbar ist.

Was nicht funktioniert

Klar gesagt, denn ein Statusabschnitt, der dies auslässt, ist der Grund, warum der letzte wertlos war.

Funktioniert nicht

Warum

Blockiert

Schneiden durch Zitieren

splicedeck/listen/fetchable.toml pinnt beide Download-Einträge auf einen Host, der nicht aufgelöst wird, mit Platzhalter-Null-Digests. Kein Weg erhält die Sprachbinärdatei, auch nicht durch manuelles Platzieren.

hear, quote, Untertitel aus Sprache

Subjektverfolgung durch Modell

Kein Detektor ist festgepinnt oder ausgeliefert (docs/framing.md F5). Die Grenze ist festgelegt – ein CLI-Kindprozess, nie eine importierte Erweiterung – aber welche Binärdatei sie füllt, ist nicht.

watch --subject largest auf der Modellebene

Abbrechen von einem MCP-Host

Die stdio-Schleife ist single-threaded, daher kann während eines tools/call nichts ankommen.

cancel über MCP. Die CLI und Strg-C sind nicht betroffen.

CHANGELOG.md führt dieselbe Liste, und die beiden sollen synchron bleiben.

Zwei Ebenen unter der Modellebene funktionieren. subject: "centre" ist geometrisch und benötigt nichts. SPD_SIGHT_LOCATOR=reduce wählt einen gewichtsfreien Lokalisierer, der das Subjekt durch temporale Median-Hintergrundsubtraktion in reinem Stdlib-Python findet, kein numpy und keine kompilierte Erweiterung irgendwo.

Geprüft gegen einen Gesichtsdetektor auf dem Referenzmaster stimmte der Median dieses Lokalisierers innerhalb von 0,1 % der Bildbreite überein. Auf demselben Filmmaterial meldete er dann eine Sicherheit von 0,26 und passte überhaupt keinen Pfad an, weil ein Sprecher, der sich kaum vor einem statischen Hintergrund bewegt, der Hintergrundsubtraktion nichts zum Festhalten bietet. Beides sind die richtige Antwort: Die Arithmetik ist solide, und die ehrliche Grenze einer gewichtsfreien Ebene ist ein Loch und keine zentrierte Schätzung (docs/framing.md §7). Filmmaterial mit einem sich bewegenden Subjekt wird einwandfrei verfolgt.

Wie Sie es steuern

Über einen MCP-Server und Skills, sodass jeder MCP-fähige Assistent es verwenden kann, plus eine CLI, die genau dieselben Verben bereitstellt. Beide Oberflächen werden aus splicedeck/surface/verbs.py generiert, und python -m checks.golden --check lässt den Build fehlschlagen, wenn sie auseinanderdriften.

Der Server spricht fünf Protokollrevisionen, 2024-11-05 bis 2026-07-28, und antwortet sowohl auf den initialize-Handshake als auch auf server/discover.

Fehler sind typisiert. Eine Ablehnung trägt ihre eigene Korrektur als versandbereite Aufrufe, statt als Prosa, die ein Agent interpretieren muss, sodass die Wiederherstellung einen Zug dauert:

{"ok": false, "verb": "draft", "refused": "BOOKMARK_UNKNOWN",
 "plain": "No bookmark by that name is shipped.",
 "needs_human": false,
 "retry_with": [{"verb": "draft", "args": {"bookmark": "baseline", "party": "demo",
   "profile": "wide-1080", "situation": "default", "source": "s1"}}]}

Skills

Vier Fähigkeiten lehren einem Agenten die Verb-Reihenfolge, die Fallen zwischen Verben und wie man eine Ablehnung in den nächsten korrekten Aufruf verwandelt. Sie befinden sich in .claude/skills/, und ein Klon nimmt sie ohne jegliche Installation auf.

Skill

Wird ausgelöst bei

cutting-a-deliverable

Umwandeln einer Quelle in eine ausgelieferte Datei

cutting-vertical-clips

Zuschneiden eines 9:16-Clips und Behalten des Motivs im Bild

recovering-from-a-refusal

Jedes ok: false, oder ein spd-Befehl, der mit 1 endet

contributing-to-splicedeck

Bearbeiten dieser Codebasis, oder wenn zwei Dokumente widersprechen

Dieses Repository ist auch ein Claude-Code-Plugin und sein eigener Marktplatz:

claude plugin marketplace add ihuzaifashoukat/splicedeck
claude plugin install splicedeck@splicedeck

Oder installiere die Fähigkeiten in jeden der Agenten, die die skills-CLI unterstützt, einschließlich Codex, Cursor, OpenCode, Antigravity, Cline, Gemini CLI, Zed und Windsurf:

npx skills add ihuzaifashoukat/splicedeck            # add --list to look first

Beide Routen liefern nur die Fähigkeiten. Sie registrieren nicht den MCP-Server, denn der Server benötigt einen absoluten Interpreter-Pfad und ein cwd, das weder ein Plugin noch ein Skill-Installer kennen kann. install.sh schreibt das für Sie, und docs/mcp.md hat es manuell.

Jede andere Agenten-Laufzeitumgebung liest AGENTS.md.

Design

Die Spezifikation wird vor dem Code geschrieben, bewusst.

Dokument

Was es festlegt

AGENTS.md

Der Vertrag, unter dem jeder Beitragende und Agent arbeitet

docs/architecture.md

Die Karte: Laufzeitumgebungen, Pakete, Datenfluss

docs/first-run.md

Vom Klon zur ausgelieferten Datei, und die Windows-Fallen

docs/install.md

Jeder Installationsweg und ein Prompt für einen KI-Agenten

docs/mcp.md

Splicedeck von einem Assistenten aus steuern

docs/cut-sheet.md

Das Kernartefakt: ganzzahlig getaktet, diffbar, menschenlesbar

docs/templates.md

Vorlagen, Slots und was apply und compose tun

docs/casebook.md

Wie Erinnerung gespeichert, aufgelöst und abgeschirmt wird

docs/security.md

Das Bedrohungsmodell und warum Erinnerung eine Angriffsfläche ist

docs/bookmarks.md

Stile und die Achsen, in denen sie Punkte sind

docs/agent-surface.md

Die Verbtabelle und der Ablehnungskatalog

docs/roadmap.md

Die Funktionsbereiche und was jeder beweisen muss

Persistente Erinnerung in einem Agenten ist eine Sicherheitsfläche, nicht nur eine Funktion. Alles, was ein Angreifer hineinschreiben kann, überlebt das Gespräch, das es eingepflanzt hat. Wenn Sie ein Dokument lesen, lesen Sie docs/security.md.

Nicht-Ziele

Einen Film aus vielen Quellen zusammensetzen. Video oder Musik generieren. Eine Timeline-GUI. Echtzeit-Zusammenarbeit. Ein gehosteter Dienst. Automatisch auswählen, welche Momente zu Clips werden, da es Kandidaten präsentiert und auf eine Person wartet.

Anforderungen

Python 3.12 oder neuer und ffmpeg 8.x in Ihrem PATH. Es wird keine kompilierte Python-Erweiterung auf einem Standardpfad verwendet, daher gibt es keinen Build-Schritt und keine Plattform-Laufzeitumgebung, die zuerst installiert werden muss. Windows, macOS und Linux; CI deckt Ubuntu und Windows ab, und macOS wird maschinell nicht getestet.

Die Bewegungsebene benötigt zusätzlich Node und ein npm install innerhalb von scenes/. Es ist optional, und eine Lieferung ohne sie fällt auf Standbilder zurück.

Beitragen

Issues und Designkritik sind willkommen. CONTRIBUTING.md ist die Eingangstür: Einrichtung, die auszuführenden Prüfungen, wie man ein Verb oder einen Ablehnungscode hinzufügt, und die Dinge, die einen Pull-Request unabhängig vom Verdienst ablehnen. Lesen Sie zuerst AGENTS.md. Die zwölf harten Regeln sind tragend, und eine Änderung, die eine davon bricht, wird allein aus diesem Grund abgelehnt.

Durch Ihre Teilnahme stimmen Sie der Verhaltensregel zu.

Sicherheit

Bitte eröffnen Sie kein öffentliches Issue für eine Sicherheitslücke. SECURITY.md enthält den Meldeweg und was im Umfang ist.

Lizenz

Apache-2.0. Urheberrecht 2026 Huzaifa Shoukat.

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Agentic video editing on real footage: cut, caption, reframe, score, and export at full quality.

  • A real timeline video editor for AI agents: journaled edits, FFmpeg/MLT rendering, exports

  • Make videos and docs with your AI agent — describe what you need, every output stays editable.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ihuzaifashoukat/splicedeck'

If you have feedback or need assistance with the MCP directory API, please join our Discord server