
Oh My Cassette
io.github.Cassette-Editor由 GitHub 账号 Cassette-Editor 发布v0.6.0更新于 Oct 29, 2026
Video editing through the Cassette agent: import media, edit by chat turn, read the timeline, export
发布方自己的服务:Cassette Game Finder
概览
把编程助手接到 Cassette 视频剪辑代理的本地桥接服务,可导入素材、用对话剪辑并导出 MP4。
- 可以做什么
- 导入本地视频、音频和图片:工作区内的文件先用 ffmpeg 转码,再上传到 Cassette 服务。
- 按对话剪辑:把一句话交给 Cassette 代理,返回新的剪辑版本和编辑器链接。
- 查看与修改时间线:提问、查看方案、撤销,并反复调整剪辑。
- 导出成片,下载到本机的 cassette-exports 目录。
- 服务不可达或令牌被拒时,报告桥接状态。
- 适用场景
- 适合已经在用 Cassette 剪视频、又想从 Claude Code、Codex、OpenCode 或 Hermes 里驱动它的人,例如用一段文字需求加几次修改,从一堆素材里剪出短片。
- 运行要求
- 本地 stdio 进程,通过 uvx(需 uv 0.5 以上,自动解析 Python 3.11 以上)或 pipx 运行。需要一个受邀的 Cassette 账号并用 login 命令登录,以及可访问、实现 contract v1 的 Cassette MCP 服务。导入视频需要 ffmpeg 和 ffprobe。可选覆盖项包括 CASSETTE_MCP_URL、CASSETTE_AUTH_TOKEN、CASSETTE_WORKSPACE、CASSETTE_ALLOWED_ROOTS 和 CASSETTE_DOWNLOAD_DIR。
安装
在 SourceWeft 中
- 打开 控制台中的 Oh My Cassette,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Oh My Cassette
Edit video by talking to the Cassette agent from Claude Code, Codex, OpenCode or Hermes.
A small MCP bridge on PyPI. The editing tools come from the Cassette MCP service, so they stay current without a plugin update.
One Claude Code session, typed as you see it. Five 4K travel films (10½ minutes of footage) and a song go in, a
four-sentence brief and a one-line revision go to the Cassette agent word for word, and a 30-second 1080p MP4 lands in
cassette-exports/. Waits are fast-forwarded: in real time the import took 4½ minutes, the first cut 9½, the revision
3½ and the export 1.
Cut a 30-second teaser for Turkey from these five films, on the beat of Pamgaea.mp3. Open on a hot-air balloon lighting up at dawn in Cappadocia, travel from the ancient ruins to the sea, name each place when it first appears, and end on the misty lake with the title TURKEY.
The ruins part drags. Keep only the two best Ephesus shots, and put the camel right after the balloons.
[Frames of the teaser it made: the balloon at dawn, the camel, two Ephesus shots, the Datça coast, the misty lake with the title TURKEY]
Watch the teaser it made (MP4, 30 s, with sound). Footage and music credits are below.
Install in 30 seconds
You need uv (it fetches Python and the package on first start) and ffmpeg to import video.
OpenCode and any other MCP host: see Install below. Run uvx oh-my-cassette==0.6.0 login and complete the
email-code sign-in in your browser. Then restart your agent if it cannot refresh its tool list, and say:
Start a new Cassette project and import the clips in ./footage, then cut a 30-second travel video with a title at the start.
Upgrading from 0.4
0.5 is a rewrite. The 0.4 plugin carried its own editing runtime, music search and Hermes gateway; 0.5 is a thin bridge to the Cassette MCP service, and the tools your agent sees are the service's.
- Sign in again with
uvx oh-my-cassette==0.6.0 login. 0.4 passwords and tokens are not used. - Tools are new. Projects, editing turns, questions, plans, undo, media, analysis and export come from the service,
with their own descriptions; the 0.4 tool names (
cassette_run_job,cassette_ingest_media,cassette_match_bgm, …) are gone. Reinstall the plugin, or point your host config atuvx oh-my-cassette==0.6.0. - Projects live in your Cassette account, the same ones you open on the web or in Cassette for Mac, and the editor link each answer carries opens the project you are working on. 0.4 sessions do not carry over.
- Hermes is a plain MCP host now; remove the 0.4 gateway plugin.
Projects and retention
A project the bridge starts is a cloud project that Cassette deletes, with its media, after three idle days; every use
pushes that back, and each answer says when it is due (retention_expires_at). Exported files are already on your
machine in cassette-exports/ and stay there. A project made in Cassette for Mac is kept, and the bridge can open, edit
and export it while that Mac is online, but its media are imported in the app.
Overview
Oh My Cassette connects your coding agent to the Cassette editing agent. It is a local stdio MCP server
that relays to the Cassette MCP service (CASSETTE_MCP_URL), which in turn calls the Cassette backend:
- The tools are the service's. Whatever it lists (projects, editing turns, questions, undo, export) is what your agent sees, with the service's own descriptions and workflow instructions. When Cassette changes, the tools change with it; the plugin does not need a release.
- The bridge adds only what needs your machine. Local files named in a call are prepared and
uploaded first (only from the workspace, media types only): video is transcoded with ffmpeg into the
renditions the service declares, and audio or images it does not take as they are get converted.
Each file uploads while the next one is prepared, in parts, four transfers at a time; a file whose
upload was interrupted picks up its earlier import when you import it again.
Exported files are downloaded into
cassette-exports/. The workspace identity travels with each call so the service can remember a project per directory. - Long work never times out the host. Every call waits a bounded time; slow local preparation
answers
preparingand keeps going in the background, and the next identical call picks it up. - It survives deploys. It reconnects on its own, sends a call that names its request again when
the connection drops or the service turns it away, resumes interrupted downloads, reports
bridge.*errors with aretryableflag (andretry_after_secondswhen the service said when), and, while the service is unreachable or refuses the token, lists a singlecassette_bridge_statustool that says why.
The rules between the plugin and the service are defined in
src/oh_my_cassette/contract.py; oh-my-cassette check verifies a
service against them.
Requirements
- An invited Cassette account and a Cassette MCP service that implements contract v1. Check it with
uvx oh-my-cassette==0.6.0 check --url <endpoint>. While the service is unreachable or refuses the token, onlycassette_bridge_statusis listed. - uv 0.5 or newer.
uvx oh-my-cassette==0.6.0resolves Python 3.11 or newer by itself. - ffmpeg (with ffprobe) to import video:
brew install ffmpeg,sudo apt install ffmpegorwinget install ffmpeg. Video is transcoded on your machine before it uploads. A build withzscalealso tone-maps HDR footage properly.
Which formats a tool accepts, and how files are prepared before upload, is declared by the service (video, audio and image types at most).
Configuration
Sign in once with oh-my-cassette login, using the Cassette account of your projects: the browser asks for the emailed code and your consent. One sign-in reaches every project of the account, whether it was made on the web or in Cassette for Mac. A project whose media lie on a Mac opens in the app on that Mac; reading its pictures or sound and exporting it need that Mac online, and its media are imported there. Login, status and logout use your operating-system keyring; no token needs to be copied. Environment variables below are optional overrides.
Install
Claude Code
Plugin (recommended): the two commands at the top. The plugin uses the connection saved by oh-my-cassette login and starts uvx oh-my-cassette==0.6.0 with a 10-minute tool timeout.
Project scope without the plugin: copy .mcp.json into your project, or run:
The skill lives in skills/cassette-video-edit/SKILL.md and ships with the plugin.
Codex
Plugin: the two commands at the top (.codex-plugin/plugin.json declares the server inline with tool_timeout_sec: 600 and passes the CASSETTE_* variables through from your shell). Or add the server directly:
OpenCode
Add to opencode.json (project or ~/.config/opencode/opencode.json):
Then copy the skill so OpenCode loads it:
OpenCode has no MCP elicitation, which is fine: the editing agent's questions come back as ordinary tool results, and the service's tools say how to answer them.
Hermes
Set mcp_servers.cassette.timeout: 600 in ~/.hermes/config.yaml so a call's bounded waits fit. Hermes is a plain MCP host here: the 0.4 gateway/plugin layer is gone.
Any other MCP host
Command uvx, args ["oh-my-cassette==0.6.0"], stdio transport, a tool timeout of 10 minutes, and the environment variables above. No uv? pipx run oh-my-cassette==0.6.0 works too.
How a turn looks
The editor link comes from the service: open it in a browser to watch the run live and take over by hand.
Check a service
Prints one line per check (transport and token, contract declaration, instructions, tool schemas,
local-file and prepare declarations, and with --upload a real upload round trip; --arguments
are the file tool's other arguments for it) and exits 1 on any failure. --json gives
machine-readable output for the service's CI. The service must speak MCP 2026-07-28; one that only
answers the handshake-era initialize fails the transport check, and the bridge refuses it with
bridge.protocol_unsupported.
Update
Bump the pin in your host config (oh-my-cassette==<new version>) or reinstall the plugin; uvx fetches the new wheel on next start. Releases: CHANGELOG.md.
Development
tests/reference_remote.py is an executable reference service for the contract;
RELEASING.md has the PyPI release flow.
Credits
The demo footage is by yasin ilcebay, licensed CC BY 3.0, from Wikimedia Commons: Aizanoi Temple of Zeus, Cappadocia, Datça, Ephesus and Gölcük Lake. The teaser trims and reorders it, and adds place names, a title and music.
The music is "Pamgaea" by Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 4.0
https://creativecommons.org/licenses/by/4.0/
The teaser uses an excerpt of it.
License
The code is MIT. Oh My Cassette is the client; the Cassette service has its own terms.
The demo recording (assets/demo-claude-code.gif), the teaser frames (assets/turkey-teaser.jpg)
and the teaser video attached to the release contain the works credited above. They are not covered
by the MIT license and remain under their own licenses (CC BY 3.0 for the footage, CC BY 4.0 for
the music).
MCP registry: mcp-name: io.github.Cassette-Editor/oh-my-cassette
来源:README.md,提交 fd19f89
工具
0版本历史
4- v0.6.0最新Oct 29, 2026
- v0.5.1Oct 21, 2026
- v0.5.0Oct 21, 2026
- v0.4.19Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分