Skip to main content
Glama

splicedeck

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

AIエージェントが駆動する、あなたのマシン上で動作するビデオエディタです。

ワンコールで、テンプレートにカットを適用します:モーショングラフィックス、オーバーレイ、キャプション、そしてカットに合わせるビートグリッド。ソースを1回パスすることで、クリーンな長尺マスターと縦型クリップの両方を生成します。また、クライアント、チャンネル、番組ごとの編集の好みを記憶するので、次回の編集は前回の終わったところから始まります。

ドラッグ&ドロップのタイムラインも、アカウント作成も必要ありません。何もアップロードされません。


ステータス:パイプラインはエンドツーエンドで動作し、メモリはカットに到達します

ソースは今日、納品ファイルになります。リファレンスマシン(Windows 11, Python 3.13, ffmpeg 8.1.2)で実際の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 は約4分で1425 passed, 2 skippedを報告します。31の動詞がCLIに到達し、そのうち18がMCPサーバーに到達します。どちらも1つのテーブルから生成されるため、互いに乖離することはありません。

1つの主要機能はまだ動作しません。引用によるカットは、現在どのマニフェストも取得できない音声バイナリを必要とします。これを計画に組み込む前に、動作しないものをお読みください。


インストール

Python 3.12以上と、PATH上にffmpeg 8.xが必要です。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コマンド、環境変数、およびAIエージェントに貼り付けて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 として拒否されます。

パーティーは、人間が手動で、意図的に作成します。casebook/parties/<name>/ が存在するまで、draftUNKNOWN_PARTY を拒否します。

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 は、カットシートを名前付きテンプレートに適用します。オーバーレイを配置し、エージェントがカットに使用するビートグリッドを書き込み、使用したテンプレートをシートに記録します。

現在4つが出荷されています:

テンプレート

説明

clean-master

落ち着いたトーキングヘッドのマスター。1つのローワーサードとビートグリッドなし

quick-beat

高速カットの縦型:3つのビートスロット、それぞれに脈動するアクセント

bold-run

プロモルック:2つのビートスロットの周りにフルブリードのイントロとアウトロカード

bare-mark

画面上の1つの小さなマークのみ、他には何もなし

テンプレートのオーバーレイは、オプションのモーションティアがインストールされているとアニメーションし、そうでない場合は静止画にフォールバックします。6つのアニメーション合成が scenes/ に出荷されており、このプロジェクトのために書かれ、同じライセンスで提供されています。

スロットは強制されます。verify は、未入力のスロットがあるシートを拒否し、スロットの許容範囲外にカットが着地した場合は、最も近い有効なエッジを送信可能な呼び出しとして返して SLOT_TOO_TIGHT を拒否します。これにより、エージェントは見えないリズムを打つことができます。

独自のテンプレートを作成することもできます。spd compose --kind template は、手書きのテンプレートまたは要素カードを検証して書き込みます。これは意図的にCLIのみです:MCPサーバーは templates/ に書き込むことができません。docs/templates.md §4 でその理由を説明しており、見落としとして扱っていません。

なぜメモリなのか

編集とは、何千もの小さな判断の連続であり、そのほとんどは繰り返されます。パンチラインの後にどれだけ間を置くか。この話者のフィラーはノイズか個性か。キャプションは、手を伸ばしたスマートフォンでどのくらいの大きさが必要か。ステートレスなツールでは、毎回そのコンテキストを再提供する必要があり、それが「AI編集」がしばしば技術的には正しいがトーンが間違ったものを生み出す理由です。

ここでは、一度行った決定が記録され、再利用されます:

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

その記録は、レビュー可能なテキストとしてリポジトリに保存されます。差分を読んだり、行を編集して誤ったエントリを修正したり、編集を悪化させた変更を git revert したりできます。これは動作の変更ログであり、バージョン管理する他のすべてのものと同じ場所に保持されます。

2つのルールが信頼性を確保します:

  • 永続的なものはモデルによって書き込まれません。レコードは、人間が行ったことを記述します:レンダリングを出荷して保持した、カットが削除した瞬間を復元した。エージェントは何が起こったかを指し示すことはできますが、記憶される内容を構成することはできません。

  • すべての書き込みは人間のゲートを通過します。設定は静かに学習されることはありません。

このループは今日動作します。spd setshipkeeprestorediscard は、パーティーのハッシュチェーン台帳に行為を追加し、それぞれから提案をステージングします。検証できないチェーンに行為を追加することはできません。spd review はその後、盲目的に値を尋ね、境界と出荷されたカットは表示しますが、数値は表示しません。一致する回答は封印されたケースと再生成された findings.lock.txt になります。次の draft はそれに対して解決します:ブックマークは設定を開き、ケースブックは人間が確定したものを上書きし、シートはどのロックを読み取ったかを記録します。

ローカルファースト、かつ完全

APIキーやクラウドアカウントなしの新しいクローンで、自分のマシン上で完成した納品ファイルが生成されます。それがベースラインであり、劣化モードではありません。

クラウドサービスは、難しい音声やダイアライゼーションのためのホスト型音声認識APIなど、実際に役立つ場合にオンにできますが、必須になることはなく、納品物がクラウドサービスに依存することもありません。ffmpegは子プロセスとして作業を行います。ベンダリングもリンクもされません。

また、プロジェクトはハードウェアについて推測しません。エンコーダーのサポートは、機能リストを読むのではなく、テストエンコードによって証明されます。なぜなら、機能リストは嘘をつくからです。開発マシンでは ffmpeg -encoders が実行時に失敗するNVIDIAエンコーダーを宣伝する一方、実際に動作するIntelのエンコーダーはどのガイドでも言及されません。

動作するもの

  • 1回の分析パス、2つの成果物。 文字起こしと分析はソースごとに1回実行されます。長尺マスターと縦型クリップは両方とも同じ結果を読み取ります。

  • フレーム精度のカット、オーディオドリフトなし。 オーディオはマルチプレクサまでPCMのままで、1回だけエンコードされます。納品されたサンプルは、Pythonで45および120の結合を介して構築された参照アセンブリとバイト単位で同一です。測定済みであり、主張ではありません。

  • テンプレートとモーションをワンコールで、エージェントがカットに使用するビートグリッドと、モーションティアがない場合の静止フォールバックを備えています。

  • 読みやすいキャプション。 サイズとコントラストの下限はレンダラーによって強制され、プラットフォーム自身のインターフェースの下に配置されるテキストは描画されるのではなく拒否されます。グリフは純粋なstdlibのTrueTypeパーサーによってシェーピングおよびラスタライズされるため、インプリントはバイト単位で再現可能であり、ゴールデンとしてコミットされます。

  • 不確実性を認める縦型フレーミング。 被写体を確信を持って追跡できない場合、自動フレーミングを拒否し、その理由を述べます。確信を持って間違ったクロップは、正直な拒否よりも悪い結果を招きます。なぜなら、問題なく見えるクロップを誰もレビューしないからです。

  • 法的に問題ない権利。 音楽、効果、ストック映像には、出所と利用条件の記録が付随します。いずれかのアセットにそれが欠けている場合、納品は実行を拒否します。

  • 独自の修正を伴う型付き拒否。 拒否には、retry_with(送信可能な呼び出しのリスト)が付属します。102のコードがあり、それぞれに構築サイトと、到達可能であることを証明するテストがあります。

動作しないもの

ステータスセクションがこれを省略すると、前のセクションが無価値だった理由になるため、明確に述べます。

動作しない機能

理由

ブロックする機能

引用によるカット

splicedeck/listen/fetchable.toml は、両方のダウンロードエントリを解決しないホストに、プレースホルダーの全ゼロダイジェストで固定しています。手動で配置する方法を含め、音声バイナリを取得するルートはありません。

hearquote、音声からのキャプション

モデルによる被写体追跡

検出器は固定も出荷もされていません(docs/framing.md F5)。境界は決まっています—CLI子プロセスであり、インポートされた拡張機能ではありません—しかし、どのバイナリがそれを埋めるかは未定です。

モデルティアでの watch --subject largest

MCPホストからのキャンセル

stdioループはシングルスレッドであるため、tools/call 中に何も到着できません。

MCP経由の cancel。CLIとCtrl-Cは影響を受けません。

CHANGELOG.md にも同じリストが記載されており、両者は同期することを意図しています。

モデルティアの下の2つのティアは動作します。subject: "centre" は幾何学的で何も必要としません。SPD_SIGHT_LOCATOR=reduce は、重みのないロケーターを選択し、純粋なstdlib Python(numpyやコンパイル済み拡張機能なし)で時間的中央値背景差分によって被写体を見つけます。

リファレンスマスターの顔検出器と比較したところ、そのロケーターの中央値はフレーム幅の0.1%以内で一致しました。同じフッテージで、その後確信度0.26を報告し、パスをまったく適合させませんでした。なぜなら、静的な背景に対してほとんど動かない話者は、背景差分が保持するものを何も残さないからです。どちらも正しい答えです:計算は健全であり、重みなしティアの正直な限界は、中心に置かれた推測ではなく穴です(docs/framing.md §7)。動く被写体があるフッテージは問題なく追跡します。

操作方法

MCPサーバーとスキルを通じて、任意のMCP対応アシスタントが使用でき、まったく同じ動詞を公開するCLIも備えています。両方の表面は splicedeck/surface/verbs.py から生成され、python -m checks.golden --check はそれらが乖離した場合にビルドを失敗させます。

サーバーは5つのプロトコルリビジョン(2024-11-05 から 2026-07-28)に対応し、initialize ハンドシェイクと server/discover の両方に応答します。

障害は型付けされています。拒否には、エージェントが解釈する散文ではなく、すぐに送信可能な呼び出しとして独自の修正が含まれているため、回復は1ターンで完了します。

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

スキル

4つのスキルがエージェントに動詞の順序、動詞間のトラップ、および拒否を次の正しい呼び出しに変換する方法を教えます。これらは .claude/skills/ にあり、クローンはインストールなしでそれらを取得します。

スキル

発動条件

cutting-a-deliverable

ソースを配信ファイルに変換するとき

cutting-vertical-clips

9:16のクリップを切り出し、被写体をフレーム内に収めるとき

recovering-from-a-refusal

ok: false、または spd コマンドが終了コード1で終了したとき

contributing-to-splicedeck

このコードベースを編集するとき、または2つのドキュメントが矛盾するとき

このリポジトリはClaude Codeプラグインであり、独自のマーケットプレイスでもあります。

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

または、skills CLIがサポートする任意のエージェント(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

テンプレート、スロット、および applycompose の機能

docs/casebook.md

メモリの保存、解決、ゲート方法

docs/security.md

脅威モデル、およびメモリが攻撃対象領域である理由

docs/bookmarks.md

スタイル、およびそれらが点である軸

docs/agent-surface.md

動詞テーブルと拒否カタログ

docs/roadmap.md

機能領域、およびそれぞれが証明すべきこと

エージェント内の永続メモリは、単なる機能ではなくセキュリティ面です。攻撃者がそこに書き込めるものは、それを植え付けた会話よりも長く存続します。1つのドキュメントを読むなら、docs/security.md を読んでください。

非目標

複数のソースからフィルムをアセンブルすること。ビデオや音楽を生成すること。タイムラインGUI。リアルタイムコラボレーション。ホスト型サービス。どの瞬間がクリップになるかを自動的に選択すること(候補を提示し、人間の入力を待つため)。

要件

Python 3.12以降、および PATH 上のffmpeg 8.x。デフォルトのパスではコンパイル済みPython拡張は使用されないため、ビルドステップや最初にインストールするプラットフォームランタイムはありません。Windows、macOS、Linux。CIはUbuntuとWindowsをカバーし、macOSはマシンによるテストは行われていません。

モーションティアにはさらにNodeと scenes/ 内での npm install が必要です。これはオプションであり、これがない場合の配信は静止インプリントにフォールバックします。

コントリビューション

問題や設計批評は歓迎します。CONTRIBUTING.md が正面玄関です:セットアップ、実行するチェック、動詞や拒否コードの追加方法、およびメリットに関係なくプルリクエストが却下される事項。最初に AGENTS.md をお読みください。12の厳格なルールは重要な役割を果たしており、それらを破る変更はその理由だけで却下されます。

参加することにより、行動規範 に同意したものとみなされます。

セキュリティ

脆弱性については公開Issueを開かないでください。SECURITY.md に報告方法と対象範囲が記載されています。

ライセンス

Apache-2.0。Copyright 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