splicedeck
splicedeck
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 pytestmeldet 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.shirm https://raw.githubusercontent.com/ihuzaifashoukat/splicedeck/main/install.ps1 -OutFile install.ps1
notepad install.ps1; powershell -ExecutionPolicy Bypass -File install.ps1Lesen 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, LinuxNoch 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 blocksinit ü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 c1Quellen 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 |
| Ein ruhiger Talking-Head-Master mit einem unteren Drittel und keinem Taktgitter |
| Ein schneller vertikaler Schnitt: drei Taktschlitze mit einem pulsierenden Akzent auf jedem |
| Ein Promo-Look: randlose Intro- und Outro-Karten um zwei Taktschlitze |
| 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 66Diese 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 |
|
|
Subjektverfolgung durch Modell | Kein Detektor ist festgepinnt oder ausgeliefert ( |
|
Abbrechen von einem MCP-Host | Die stdio-Schleife ist single-threaded, daher kann während eines |
|
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 |
| Umwandeln einer Quelle in eine ausgelieferte Datei |
| Zuschneiden eines 9:16-Clips und Behalten des Motivs im Bild |
| Jedes |
| 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@splicedeckOder 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 firstBeide 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 |
Der Vertrag, unter dem jeder Beitragende und Agent arbeitet | |
Die Karte: Laufzeitumgebungen, Pakete, Datenfluss | |
Vom Klon zur ausgelieferten Datei, und die Windows-Fallen | |
Jeder Installationsweg und ein Prompt für einen KI-Agenten | |
Splicedeck von einem Assistenten aus steuern | |
Das Kernartefakt: ganzzahlig getaktet, diffbar, menschenlesbar | |
Vorlagen, Slots und was | |
Wie Erinnerung gespeichert, aufgelöst und abgeschirmt wird | |
Das Bedrohungsmodell und warum Erinnerung eine Angriffsfläche ist | |
Stile und die Achsen, in denen sie Punkte sind | |
Die Verbtabelle und der Ablehnungskatalog | |
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.
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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