Skip to main content
Glama

splicedeck

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

Видеоредактор, которым управляет ИИ-агент, работающий на вашем компьютере.

Один вызов накладывает разрез в шаблон: моушн-графика, оверлеи, субтитры и сетку битов, по которой резать. Один проход по исходнику даёт вам как чистый длинный мастер, так и вертикальные клипы. И он запоминает, как каждый клиент, канал или шоу предпочитает резать, так что следующий монтаж начинается там, где закончился предыдущий.

Нет временной шкалы, которую нужно перетаскивать, и нет учётной записи, которую нужно создавать. Ничего не загружается.


Статус: конвейер работает «от начала до конца», и память достигает разреза

Исходник превращается в готовый файл уже сегодня. Замерено на эталонной машине (Windows 11, Python 3.13, ffmpeg 8.1.2) на реальном .mov объёмом 223 МБ:

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 сообщает 1425 пройдено, 2 пропущено примерно за четыре минуты. Тридцать один глагол достигает CLI, и восемнадцать из них достигают сервера MCP, оба сгенерированы из одной таблицы, поэтому не могут разойтись.

Одна ключевая функция не работает. Разрезка по цитированию требует бинарного файла распознавания речи, который в настоящее время невозможно получить ни из одного манифеста. Прочитайте Что не работает, прежде чем планировать с его использованием.


Установка

Вам понадобится Python 3.12 или новее и ffmpeg 8.x в вашем PATH. splicedeck не устанавливает и не включает ffmpeg, и docs/first-run.md §4 объясняет, почему это сделано намеренно.

Скрипт установки спрашивает, куда поместить рабочую область, предлагает установить ffmpeg после показа точной команды, создаёт всё необходимое и записывает конфигурацию MCP:

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

Прочитайте его, прежде чем запускать. Однострочник curl | bash был бы плохой рекламой для проекта, чей README во многом посвящён модели угроз.

Если вы предпочитаете сделать это вручную или хотите тесты:

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

Пока нет на PyPI. Релиза нет, поэтому uv tool install splicedeck выдаст 404 до тех пор, пока не будет опубликован первый тег. До тех пор используйте скрипт, клон или uv tool install "git+https://github.com/ihuzaifashoukat/splicedeck.git".

docs/install.md содержит все маршруты, команды ffmpeg для каждой платформы, переменные окружения и подсказку, которую можно вставить в ИИ-агента, чтобы он установил и настроил splicedeck для вас.

Попробуйте

Корень рабочей области — это любой каталог, в котором вы работаете, а spd init создаёт его:

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 никогда не перезаписывает. Повторный запуск после редактирования профиля заполняет то, чего не хватает, и оставляет ваши правки нетронутыми. Записываемые файлы побайтово идентичны тем, что поставляются с этим репозиторием, и python -m checks.starter --check обеспечивает это.

Затем поместите ваши материалы в media/ и режьте:

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

Исходники должны находиться внутри рабочей области. Путь с буквой диска в нём отвергается PATH_OUTSIDE_WORKSPACE до того, как что-либо будет прочитано.

Сторона создаётся человеком, вручную, намеренно. draft отвергает UNKNOWN_PARTY до тех пор, пока не будет существовать casebook/parties/<name>/.

Чтобы управлять им из помощника, поддерживающего MCP, зарегистрируйте сервер:

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

cwd должен быть рабочей областью, потому что корень рабочей области является рабочим каталогом, и ничто другое его не обнаруживает. python -m splicedeck.surface.mcp --tools выводит сгенерированный список инструментов и завершает работу, что позволяет отличить сломанный сервер от сломанной конфигурации хоста. docs/mcp.md — это полное руководство.

Шаблоны: внешний вид одним вызовом

apply накладывает именованный шаблон на лист разреза. Он размещает оверлеи, записывает сетку битов, по которой затем режет агент, и отмечает на листе, какой шаблон использован.

Четыре шаблона поставляются сегодня:

Шаблон

Что это такое

clean-master

Спокойный мастер с говорящей головой, содержащий одну нижнюю треть и без сетки битов

quick-beat

Быстро нарезанный вертикальный: три слота битов с пульсирующим акцентом на каждом

bold-run

Промо-стиль: полные вступительные и заключительные карточки вокруг двух слотов битов

bare-mark

Одна маленькая метка на экране и ничего больше

Оверлеи шаблона анимируются, когда установлен дополнительный уровень моушн-графики, и возвращаются к статическому отпечатку, когда его нет. В scenes/ поставляется шесть анимированных композиций, написанных для этого проекта и лицензированных вместе с ним.

Слоты обязательны. verify отказывается пропускать лист с незаполненным слотом, а разрез, попадающий за пределы допуска слота, отвергается SLOT_TOO_TIGHT с указанием ближайших допустимых границ в виде готовых к отправке вызовов. Это позволяет агенту попадать в ритм, который он не видит.

Вы можете написать свои собственные. spd compose --kind template проверяет и записывает шаблон или карточку элемента, созданные вручную. Он намеренно доступен только через CLI: сервер MCP не может писать в templates/, и docs/templates.md §4 объясняет логику, а не рассматривает это как недосмотр.

Зачем нужна память

Монтаж — это тысяча мелких суждений, и почти все они повторяются. Как долго держать после кульминации. Является ли заполнитель этого диктора шумом или индивидуальностью. Насколько большими должны быть субтитры на телефоне на расстоянии вытянутой руки. Инструмент без состояния заставляет вас заново предоставлять этот контекст каждый сеанс, вот почему «ИИ-монтаж» так часто даёт технически правильный, но тонально неверный результат.

Здесь решение, принятое один раз, записывается и используется повторно:

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

Эта запись хранится в вашем репозитории как проверяемый текст. Вы можете прочитать diff, исправить неправильную запись, отредактировав строку, и выполнить git revert изменения, которое ухудшило монтаж. Это журнал изменений поведения, хранящийся в том же месте, что и всё остальное, что вы версионируете.

Два правила поддерживают его надёжность:

  • Ничто долговечное не записывается моделью. Запись описывает то, что сделал человек: отправил рендер и сохранил его, восстановил момент, который был удалён при разрезе. Агент может указать на произошедшее; он не может составить то, что запоминается.

  • Каждая запись проходит через человеческий шлюз. Никакие предпочтения не усваиваются незаметно.

Этот цикл работает сегодня. spd set, ship, keep, restore и discard добавляют действия в хэш-цепочку журнала стороны и формируют предложение на основе каждого из них; действие не может быть добавлено в цепочку, которая не проверяется. Затем spd review запрашивает значение вслепую, показывая границы и отправленный разрез, но никогда не число, и совпадающий ответ становится запечатанным делом и регенерированным findings.lock.txt. Следующий draft разрешается по нему: закладка открывает настройки, книга дел переопределяет те, которые установил человек, и лист записывает, какую блокировку он прочитал.

Локально в первую очередь и полноценно

Свежий клон без ключей API и без облачной учётной записи создаёт готовый доставленный файл на вашем собственном компьютере. Это базовая линия, а не ухудшенный режим.

Облачные сервисы могут быть включены там, где они действительно помогают, например, в виде облачного API распознавания речи для сложного аудио или диаризации, но ничто не становится обязательным, и ни один результат не зависит от такого сервиса. ffmpeg выполняет работу как дочерний процесс. Он никогда не вендоризируется и не связывается.

Проект также отказывается гадать о вашем оборудовании. Поддержка кодеков проверяется тестовым кодированием, а не чтением списка функций, потому что списки функций лгут. На машине разработки ffmpeg -encoders рекламирует кодировщик NVIDIA, который выходит из строя во время выполнения, в то время как Intel, который действительно работает, не упоминается ни в одном руководстве.

Что работает

  • Один проход анализа, два результата. Транскрипция и анализ выполняются один раз для каждого исходника. Длинный мастер и вертикальные клипы читают одни и те же результаты.

  • Покадровая разрезка без дрейфа аудио. Аудио остаётся в PCM до мультиплексирования и кодируется один раз. Доставленные сэмплы побайтово идентичны эталонной сборке, построенной на Python за 45 и 120 соединений. Измерено, а не утверждается.

  • Шаблоны и моушн за один вызов с сеткой битов, по которой режет агент, и статическим запасным вариантом, когда уровень моушн отсутствует.

  • Субтитры, которые остаются читаемыми. Минимальные значения размера и контрастности обеспечиваются рендерером, и текст, который попал бы под собственный интерфейс платформы, отвергается, а не рисуется. Глифы формируются и растеризуются парсером TrueType из чистой стандартной библиотеки, поэтому отпечатки побайтово воспроизводимы и сохраняются как эталонные.

  • Вертикальное кадрирование, которое признаёт неопределённость. Когда объект не может быть уверенно отслежен, он отказывается от автоматического кадрирования и объясняет причину. Уверенно неправильный кадр хуже честного отказа, потому что никто не проверяет тот, который выглядел нормально.

  • Права, которые выдерживают проверку. Музыка, эффекты и стоковые материалы несут запись о том, откуда они взялись и какие условия разрешают. Доставка отказывается выполняться, если у какого-либо актива нет такой записи.

  • Типизированные отказы, которые несут собственное исправление. Отказ приходит с retry_with, списком готовых к отправке вызовов. Существует 102 кода, каждый с местом создания и тестом, доказывающим, что он достижим.

Что не работает

Сказано прямо, потому что раздел о статусе, который это опускает, является причиной, по которой предыдущий был бесполезен.

Не работает

Почему

Блокирует

Разрезка по цитированию

splicedeck/listen/fetchable.toml фиксирует обе записи загрузки на хосте, который не разрешается, с заполнителями из всех нулевых дайджестов. Нет маршрута для получения бинарного файла распознавания речи, включая ручное размещение.

hear, quote, субтитры из речи

Отслеживание объекта моделью

Ни один детектор не зафиксирован и не поставляется (docs/framing.md F5). Граница установлена — дочерний процесс CLI, никогда не импортируемое расширение — но какой бинарный файл её заполняет, не определено.

watch --subject largest на уровне модели

Отмена из хоста MCP

Цикл stdio однопоточный, поэтому ничто не может прибыть во время tools/call.

cancel через MCP. CLI и Ctrl-C не затрагиваются.

CHANGELOG.md содержит тот же список, и они должны оставаться синхронизированными.

Два уровня ниже модели работают. subject: "centre" является геометрическим и ничего не требует. SPD_SIGHT_LOCATOR=reduce выбирает локатор без весов, который находит объект вычитанием фона по временной медиане в чистом Python из стандартной библиотеки, без numpy и без скомпилированных расширений.

Проверенный на детекторе лиц на эталонном мастере, этот локатор показал медианное согласие в пределах 0,1% от ширины кадра. На тех же кадрах он затем сообщил достоверность 0,26 и не подобрал никакой траектории, потому что диктор, который почти не двигается на статическом фоне, не даёт фоновому вычитанию за что-то зацепиться. Оба ответа правильны: арифметика верна, и честный предел уровня без весов — это дыра, а не центрированное предположение (docs/framing.md §7). Материалы с движущимся объектом отслеживаются нормально.

Как вы им управляете

Через сервер MCP и навыки, так что любой помощник, поддерживающий MCP, может его использовать, плюс CLI, предоставляющий те же глаголы. Оба интерфейса генерируются из splicedeck/surface/verbs.py, и python -m checks.golden --check завершает сборку ошибкой, если они расходятся.

Сервер поддерживает пять версий протокола: с 2024-11-05 по 2026-07-28, и отвечает как на рукопожатие initialize, так и на server/discover.

Сбои типизированы. Отказ несёт собственное исправление в виде готовых к отправке вызовов, а не текста, который агент должен интерпретировать, так что восстановление занимает один такт:

{"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"}}]}

Навыки

Четыре навыка обучают агента порядку глаголов, ловушкам между глаголами и тому, как превратить отказ в следующий правильный вызов. Они находятся в .claude/skills/, и клон подхватывает их без какой-либо установки.

Навык

Срабатывает, когда

cutting-a-deliverable

Превращение источника в доставленный файл

cutting-vertical-clips

Вырезание клипа 9:16 с сохранением объекта в кадре

recovering-from-a-refusal

Любой ok: false или выход команды spd с кодом 1

contributing-to-splicedeck

Редактирование этой кодовой базы или когда два документа расходятся

Этот репозиторий также является плагином Claude Code и собственным магазином:

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

Или установите навыки в любого из агентов, поддерживаемых CLI skills, включая Codex, Cursor, OpenCode, Antigravity, Cline, Gemini CLI, Zed и Windsurf:

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

Оба пути поставляют только навыки. Они не регистрируют MCP-сервер, потому что серверу требуется абсолютный путь интерпретатора и cwd, которые не может знать ни плагин, ни установщик навыков. install.sh записывает это за вас, а docs/mcp.md содержит это вручную.

Каждая другая среда выполнения агента читает AGENTS.md.

Дизайн

Спецификация пишется до кода, намеренно.

Документ

Что он определяет

AGENTS.md

Контракт, по которому работают каждый контрибьютор и агент

docs/architecture.md

Карта: среды выполнения, пакеты, потоки данных

docs/first-run.md

От клона до доставленного файла и ловушки Windows

docs/install.md

Каждый путь установки и подсказка для AI-агента

docs/mcp.md

Управление splicedeck из ассистента

docs/cut-sheet.md

Основной артефакт: с целочисленным временем, диффабельный, человекочитаемый

docs/templates.md

Шаблоны, слоты и что делают apply и compose

docs/casebook.md

Как память хранится, разрешается и контролируется

docs/security.md

Модель угроз и почему память является поверхностью атаки

docs/bookmarks.md

Стили и оси, в которых они являются точками

docs/agent-surface.md

Таблица глаголов и каталог отказов

docs/roadmap.md

Области функций и что каждая должна доказать

Постоянная память в агенте — это поверхность безопасности, а не просто функция. Всё, что злоумышленник может в неё записать, переживает разговор, который это посадил. Если вы прочтёте один документ, прочитайте docs/security.md.

Нецели

  • Сборка фильма из множества источников.

  • Генерация видео или музыки.

  • Графический интерфейс временной шкалы.

  • Совместная работа в реальном времени.

  • Размещённый сервис.

  • Автоматический выбор моментов, которые становятся клипами, поскольку он предлагает кандидатов и ждёт человека.

Требования

Python 3.12 или новее, и ffmpeg 8.x в вашем PATH. Ни одно скомпилированное расширение Python не используется по умолчанию, поэтому нет этапа сборки и не нужно сначала устанавливать среду выполнения платформы. Windows, macOS и Linux; CI охватывает Ubuntu и Windows, а macOS не тестируется автоматически.

Уровень движения дополнительно требует Node и npm install внутри scenes/. Это опционально, и доставка без него возвращается к статическим отпечаткам.

Участие

Приветствуются вопросы и критика дизайна. CONTRIBUTING.md — это входная дверь: настройка, проверки для запуска, как добавить глагол или код отказа, а также вещи, которые приводят к отклонению пул-реквеста независимо от достоинств. Сначала прочитайте AGENTS.md. Двенадцать жёстких правил являются несущими, и изменение, нарушающее одно из них, отклоняется только на этом основании.

Участвуя, вы соглашаетесь с Кодексом поведения.

Безопасность

Пожалуйста, не открывайте публичный вопрос об уязвимости. SECURITY.md содержит путь для сообщения и что входит в область действия.

Лицензия

Apache-2.0. Авторские права 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