AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP unreviewed MIT Self-run

Oh My Cassette

mcp-cassette-editor-oh-my-cassette · by Cassette-Editor

你的随身 AI 剪辑搭档 | Pocket AI co-editor for video montage — AI video editing plugin & MCP server for Claude Code, Codex, Hermes & OpenCode

— No reviews yet
0 installs
26 views
0.0% view→install

Install

$ agentstack add mcp-cassette-editor-oh-my-cassette

Open-source listing, not yet scanned by AgentStack. Follow the source repository for install instructions.

Security review

⚠ Flagged

1 finding(s); flagged for manual review. · v0.1.0 How review works →

  • • Prompt-injection patterns
  • • Secret / credential exfiltration
  • • Dangerous shell & filesystem operations
  • • Untrusted network calls
  • • Known-malicious package signatures
  • high Pipes remote content directly into a shell (remote code execution).

What it can access

  • ● Network access Used
  • ✓ Filesystem access No
  • ✓ Shell / process execution No
  • ● Environment & secrets Used
  • ✓ Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Reliability & compatibility

— Not yet reviewed
0 installs to date
— no reviews yet
● 2mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Oh My Cassette? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Oh My Cassette: Pocket AI Co-editor for Video Montage

简体中文 | English

Arm Codex, Claude, or Hermes with Cassette's amazing video editing power. Add a friend, chat your video into shape.

🎥 Overview

Oh My Cassette is an open-source AI video editing plugin and local MCP server for Claude Code, Codex, Hermes Agent, and OpenCode. It turns natural-language chat into finished montage videos on Cassette — beat-synced cuts, auto-matched music, subtitles, transitions, and picture-in-picture — with minimal token overhead.

Just send your videos or audio files and chat with your agent from anywhere on your phone. Your agent will work with Cassette to understand your intent, organize your media, plan the edit, and turn your materials into a ready-to-share video with powerful montage capabilities.

We believe everyone carries a film of their own. Oh My Cassette helps you capture sparks of inspiration, shape scattered moments into a story, and turn raw clips into montage videos without wrestling with timelines or editing tools.

Be the director of your own story, effortlessly.

📱 Capture Anywhere Send clips, audio, and ideas to your AI editing friend anytime, anywhere.

💬 Chat-to-Edit Describe the video you want in natural language instead of wrestling with timelines.

🎵 Smart Music Matching Automatically match music to the mood, rhythm, and story of your footage.

🌌 Montage Storytelling Organize scattered moments into rhythmic, emotional, and memorable video stories.

✨ Advanced Editing Ability Support title captions, picture-in-picture, beat sync, hard cuts, transitions, motion graphics, and stylized edits.

✅ Ready to Share Preview, refine, and export polished videos ready to post on social platforms.

🖥️ How it works

Upload your clips, describe the video you want, and the agent edits it.

| Time | What happens | | --- | --- | | 0:00 | The brief — the same prompt as the Travel Vlog case below, typed into Claude Code | | 0:05 | 14 files upload to Cassette; every clip is analyzed for scene content | | 0:13 | The agent edits on its own — shot selection, titles, picture-in-picture, beat-synced cuts | | 0:16 | The timeline comes back as a readable digest, with a clickable preview link | | 0:25 | One cmd+click opens the real contact sheet — one frame per clip, zero render | | 0:30 | Nothing renders until you say so; the export runs on your go | | 0:36 | The finished cut lands in the project folder |

The cut it produced

Both clips are compressed hard to keep this page light, so the terminal text and the footage look softer here than they do on your machine. Prompt to rendered file took about 13 minutes of real time, sped up above.

🎬 Case Videos

Every case below was edited end-to-end by an AI agent through Oh My Cassette, from the exact prompt shown — real inputs, real processing times, and the output is what the agent delivered.

Daily Moments Vlog

🎞️ Input: 15 video clips · 1 audio track ⏱️ Processing Time: 10 mins

Prompt Edit to the provided audio with beat-synced cuts. Pick the best shots from all video materials and match them to the lyrics and rhythm. Change shots whenever the lyrics change, keep a travel-like and everyday emotional progression, add centered lyric subtitles to each matching shot, and make the whole edit rhythmically synced. Healing Daily Feel-good Lifestyle

Travel Vlog

🎞️ Input: 13 video clips · 1 audio track ⏱️ Processing Time: 15 mins

Prompt Edit a 30-second travel vlog using all materials with a clear viewing flow. Add the title subtitle "KOTA KINABALU" at the beginning and end. Include the vlog shooting time, overlay the character video onto similar scenic shots as a picture-in-picture effect, keep the rhythm light and memorable, and use hard cuts plus music beat sync for a fresh vacation feeling. Travel Vlog Beat Sync PiP

Cinematic Mood Short

🎞️ Input: 15 video clips · 1 audio track ⏱️ Processing Time: 17 mins

Prompt Use my materials to edit a lyric-driven emotional short of around 40 seconds. Start with empty scenic shots to build the mood, then intercut solitary character moments, memories, and emotional close-ups. Alternate character shots with atmospheric shots, advance with lyric subtitles on the beat, arrange subtitle words in varied sizes, and end with a quiet pause shot. Music MV Cinematic

Cooking Tutorial

🎞️ Input: 12 video clips · 1 audio track ⏱️ Processing Time: 8 mins

Prompt Use these materials to edit a cooking video for stir-fried pork with green peppers. Keep the steps smooth, preserve the cooking sounds, and add simple subtitles. The subtitles can be generated based on the visuals to help viewers understand each step. Keep the style clean and natural without covering the ingredients. Food Tutorial Explainer

Commercial

🎞️ Input: 15 video clips · 15 sound effects · 1 audio track ⏱️ Processing Time: 13 mins

Prompt Use these materials to edit a 15-second product commercial. Start with opening the bottle cap, add bubbles, water splashes, ice cubes, and product details in the middle, and end with the full product and brand. Keep it refreshing, thirst-quenching, and ad-like. Product Short Commercial

Game Highlight Video

🎞️ Input: 5 video clips · 1 audio track ⏱️ Processing Time: 5 mins

Prompt Use my game footage to edit a 20-30 second martial arts combat short. Give it an ink-painting visual style and a tense, solemn atmosphere. Create the cinematic feeling of entering the battlefield alone and fighting through the encirclement. Game Highlight Beat Sync

★ More cases are on the way. Star the project to follow along.

🏄 Try without installation

We host a public web demo so you can try the Oh My Cassette workflow from a desktop or mobile browser without installing Codex, Claude, or Hermes locally:

TRY NOW!

> [!WARNING] > The public demo is for illustration and evaluation only. It is intentionally unauthenticated, so do not upload sensitive, private, confidential, illegal, copyrighted, regulated, or otherwise restricted content. > > Uploaded files, prompts, generated outputs, job state, and troubleshooting metadata may be processed by this demo server, Cassette, DeepSeek, and third-party music/search providers used by the BGM flow. Treat anything you upload as visible to the demo operator and external services involved in the workflow. > > The demo may be reset, rate-limited, unavailable, or changed at any time. We do not guarantee data retention, deletion timing, confidentiality, fitness for production use, output quality, copyright compliance of generated/editing results, or uninterrupted service. You are responsible for the content you upload and for reviewing any generated output before sharing it. > > Browser refreshes, tab closes, or navigation away from the web demo start a new web session and best-effort cleanup the previous web session's temporary uploads, chat history, and finished job files. > > By default, the demo uses the server-side DeepSeek configuration when available. You can open Settings in the web UI and provide your own DeepSeek API key for testing. Your key is sent only with requests to this demo server and is not written to this repository or server-side disk by the web app, but it still transits the public demo server; use a key you can rotate and monitor.

Deploy Web Demo Locally

The web demo is a single FastAPI service that keeps the existing Cassette gateway flow but replaces the chat surface with a browser UI. It stores runtime uploads, jobs, exports, screenshots, and outbox data under CASSETTE_ASSET_ROOT instead of the repository.

  1. Clone the repository and create a dedicated web environment:
git clone https://github.com/Cassette-Editor/oh-my-cassette.git
cd oh-my-cassette

python3 -m venv .venv-web
. .venv-web/bin/activate
pip install -U pip
pip install -r requirements-web.txt
python -m playwright install chromium
  1. Configure Cassette and DeepSeek runtime settings as process environment variables. The web demo does not require Hermes Agent or ~/.hermes/.env.
cp deploy/oh-my-cassette-web.env.example ./oh-my-cassette-web.env
$EDITOR ./oh-my-cassette-web.env

At minimum, set:

CASSETTE_URL=https://sg.trycassette.online/agent
CASSETTE_AUTH_EMAIL=you@example.com
CASSETTE_AUTH_PASSWORD='your-cassette-password'
CASSETTE_ASSET_ROOT=$HOME/.oh-my-cassette/cassette
CASSETTE_BROWSER_TIMEOUT_SEC=1800

DEEPSEEK_API_KEY='your_deepseek_api_key'
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-v4-flash
OMC_WEB_HOST=0.0.0.0
OMC_WEB_PORT=8080
OMC_WEB_LOG_DIR=./web_demo/logs

If you load the file with . ./oh-my-cassette-web.env, quote any value that contains shell-special characters, spaces, or #. The systemd EnvironmentFile format also accepts quoted values. Cassette upload/analysis waits inherit CASSETTE_BROWSER_TIMEOUT_SEC by default. Set CASSETTE_UPLOAD_TIMEOUT_SEC only when you need a different upload timeout; 0 means wait forever.

Load the variables before starting the service:

set -a
. ./oh-my-cassette-web.env
set +a

If you do not want to put a DeepSeek key on the server, leave DEEPSEEK_API_KEY empty and enter a temporary key from the web UI Settings panel. That browser-provided key is attached to API requests for that session and is not persisted by the web app.

Web demo service logs are separate from Hermes Agent / OhMyCassette plugin logs. By default they are written to ./web_demo/logs/web_demo.log relative to the service working directory, or to $OMC_WEB_LOG_DIR/web_demo.log when OMC_WEB_LOG_DIR is set. Cassette job records for the web demo are also separate when CASSETTE_ASSET_ROOT is set as above: raw job JSON lives in $CASSETTE_ASSET_ROOT/jobs/cassette_*.json, and the web UI exposes a per-job Log link for jobs owned by the current browser session.

  1. Build the browser UI (Vite + React → web_demo/frontend/dist). Requires Node.js + npm at build time only:
./web_demo/build_frontend.sh
  1. Start the web demo:
. .venv-web/bin/activate
python -m web_demo.server

> The server serves the built web_demo/frontend/dist. If it has not been built yet, / returns a clear 503 telling you to run the build. Re-run web_demo/build_frontend.sh after pulling changes under web_demo/frontend.

Open http://127.0.0.1:8080/ for local testing, or http://:8080/ from another device if the host firewall/security group allows inbound TCP 8080.

  1. Optional systemd deployment:
sudo cp deploy/oh-my-cassette-web.service.example /etc/systemd/system/oh-my-cassette-web.service
sudo cp deploy/oh-my-cassette-web.env.example /etc/oh-my-cassette-web.env
sudo $EDITOR /etc/oh-my-cassette-web.env
sudo systemctl daemon-reload
sudo systemctl enable --now oh-my-cassette-web
sudo systemctl status oh-my-cassette-web
journalctl -u oh-my-cassette-web -f

Before enabling the service, edit /etc/systemd/system/oh-my-cassette-web.service if your repository or virtualenv path differs from the example. journalctl shows uvicorn stdout/access logs; Web demo business logs still go to $OMC_WEB_LOG_DIR/web_demo.log.

  1. Smoke test:
curl -fsS http://127.0.0.1:8080/ -o /dev/null
python3 -m compileall -q web_demo tools.py notifier.py browser.py
tail -f ./web_demo/logs/web_demo.log

Then open the browser UI, upload a small video, send an edit request, and watch the job card/events until the export download appears.

🚀 Quick Start

Before You Start 🎬

Oh My Cassette connects Codex, Claude, or Hermes to the Cassette Agent. You need:

  • Codex, Claude Code, or a working Hermes Agent installation.
  • A Cassette account.
  • For Hermes only, a configured gateway such as QQ or Telegram.

> [!TIP] > Apply for a Cassette account here: Cassette Sign Up

If you plan to use Hermes and it is not installed yet:

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

If the Hermes Agent gateway is not configured yet:

hermes gateway setup

Oh My Cassette currently supports QQ and Telegram gateways.

Requirements

  • macOS, Linux, or Windows for the local MCP plugin (Codex, Claude Code, or OpenCode). The Hermes Agent gateway path is macOS/Linux only.
  • Codex, Claude Code, or OpenCode for the local MCP plugin, or Hermes Agent with its gateway configured.
  • Python 3.11–3.13.
  • ffmpeg, required for Hermes gateway normalization and optional API export thumbnails.

Install system tools:

# macOS
brew install uv ffmpeg
# Debian/Ubuntu Linux
sudo apt-get update
sudo apt-get install -y ffmpeg
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
winget install Python.Python.3.13
winget install Gyan.FFmpeg

Install

Codex

codex plugin marketplace add https://github.com/Cassette-Editor/oh-my-cassette.git
codex plugin add oh-my-cassette@cassette-editor

Start a new Codex task after installation so plugin discovery runs again. The plugin contributes the host-neutral cassette-video-edit skill and a local MCP process named cassette.

Claude Code

claude plugin marketplace add Cassette-Editor/oh-my-cassette
claude plugin install oh-my-cassette@cassette-editor

Restart Claude Code after installation. You can verify the installation with:

claude plugin details oh-my-cassette@cassette-editor

OpenCode

OpenCode has no plugin marketplace for MCP servers, so add the server and skill from a checkout. Clone the repository, then point OpenCode at the launcher from your project's opencode.json (a copy is committed at the repo root):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cassette": {
      "type": "local",
      "command": ["python3", "/absolute/path/to/oh-my-cassette/scripts/run_local_mcp.py"],
      "enabled": true,
      "environment": { "CASSETTE_MCP_HOST": "opencode" }
    }
  }
}

OpenCode discovers the host-neutral cassette-video-edit skill from the repository's .agents/skills/ directory, or copy it to ~/.config/opencode/skills/cassette-video-edit/ for global use. On Windows, use "python" instead of "python3" in command.

Any other MCP host

The runtime is host-neutral, so any client that launches a local stdio MCP server can use it. Point the client at scripts/run_local_mcp.py (run with python3, or python on Windows) and set CASSETTE_RUNTIME_ADAPTER=mcp. The server ships full workflow guidance in its MCP instructions, and every tool returns a typed phase/next_action so a host without the packaged skill can still drive the flow. For the best experience, also install the cassette-video-edit skill (or equivalent system prompt) so the guided-choice and review steps are followed.

Hermes

Install through the Hermes plugin manager (recommended):

hermes plugins install Cassette-Editor/oh-my-cassette

The Hermes installer prompts for your Cassette account email and password and saves them to ~/.hermes/.env. Then run the setup finisher — it installs Playwright Chromium into the Hermes Python environment, detects ffmpeg/ffprobe, and lets you pick the Cassette region — and enable the plugin:

python3 ~/.hermes/plugins/cassette/scripts/install_plugin.py --setup-only
hermes plugins

…

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [Cassette-Editor](https://github.com/Cassette-Editor)
- **Source:** [Cassette-Editor/oh-my-cassette](https://github.com/Cassette-Editor/oh-my-cassette)
- **License:** MIT
- **Homepage:** http://43.134.224.156:8080/

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.