reelapi
by bitgate
README.md
# reelsdk-mcp
Let your coding agent edit video: TikTok-style captions, photo slideshows with voiceover, AI-generated shorts and any ffmpeg command, rendered in the cloud and saved straight into your project. No ffmpeg, whisper or GPU on your machine.
```text
> add TikTok captions to ./clip.mp4
> turn the 8 photos in ./trip into a 30 s slideshow with a voiceover and ./song.mp3 underneath
> make a 45 s short about the Mary Celeste in the dark-documentary style
> crop ./demo.mp4 to 9:16 for Reels
```
The agent calls a tool, local files are uploaded, the job runs on [reelsdk](https://reelsdk.com), and the finished files land in `./reelsdk-output`.
## Setup
You need Node 20+ and a reelsdk API key (`rsdk_live_...`).
### Claude Code
```bash
claude mcp add reelsdk --env REELSDK_KEY=rsdk_live_xxx -- npx -y github:bitgate/reelsdk-mcp
```
Add `--scope project` to share it with your team through `.mcp.json`.
### Cursor
`.cursor/mcp.json` in your project (or `~/.cursor/mcp.json` for every project):
```json
{
"mcpServers": {
"reelsdk": {
"command": "npx",
"args": ["-y", "github:bitgate/reelsdk-mcp"],
"env": { "REELSDK_KEY": "rsdk_live_xxx" }
}
}
}
```
### Claude Desktop
Settings → Developer → Edit Config (`claude_desktop_config.json`). Desktop has no project folder, so pass absolute paths and pick where results go:
```json
{
"mcpServers": {
"reelsdk": {
"command": "npx",
"args": ["-y", "github:bitgate/reelsdk-mcp"],
"env": { "REELSDK_KEY": "rsdk_live_xxx", "REELSDK_OUTPUT_DIR": "~/Movies/reelsdk" }
}
}
}
```
### VS Code
`.vscode/mcp.json` (asks for the key once and stores it encrypted):
```json
{
"inputs": [{ "type": "promptString", "id": "reelsdk-key", "description": "reelsdk API key", "password": true }],
"servers": {
"reelsdk": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:bitgate/reelsdk-mcp"],
"env": { "REELSDK_KEY": "${input:reelsdk-key}" }
}
}
}
```
### Windsurf
Settings → Cascade → MCP Servers → View raw config, then add the same `mcpServers` entry as Cursor.
## Tools
| Tool | What it does | Typical time |
| --- | --- | --- |
| `add_captions` | Burns animated word-by-word captions into a video (presets `bold`, `karaoke`, `minimal`, or your own font, position, colors and words per line). Also returns `.srt`, `.vtt`, `.ass` and a word-timed transcript. | 15-60 s |
| `make_slideshow` | Images to mp4 with transitions, Ken Burns motion, text-to-speech or recorded voiceover, background music ducked under the voice, and captions. | 15-90 s |
| `make_short` | Topic or script in, finished short out: AI script, AI images, voiceover, captions and music, plus a poster frame and a ready-to-post caption. | 1-2 min |
| `run_ffmpeg` | Any ffmpeg command: crop, trim, resize, convert, compress, GIFs, extract audio, concatenate. | seconds to minutes |
| `get_job` | Keeps waiting on a job that outlived the tool call and saves its files when it's done. | up to `REELSDK_WAIT_S` |
| `upload_file` | Uploads a local file (max 100 MB) and returns a public URL valid for 7 days. Rarely needed: the other tools upload local paths themselves. | upload time |
Every media argument takes a local path (absolute or relative to the project) or a public http(s) URL. Results are never overwritten (`clip-captioned-2.mp4`), and subtitle files go into `reelsdk-output/captions/` so players don't stack them on top of the burned-in captions.
Tools wait up to `REELSDK_WAIT_S` seconds, sending progress updates if your client shows them. A job that takes longer comes back as a `job_id`, and the agent calls `get_job` to pick it up.
## Configuration
| Variable | Default | |
| --- | --- | --- |
| `REELSDK_KEY` | | Required. Your `rsdk_live_...` key. |
| `REELSDK_OUTPUT_DIR` | `reelsdk-output` | Where results are saved. Relative paths resolve against the project root. |
| `REELSDK_WAIT_S` | `50` | Seconds a tool waits for its job before handing back a `job_id` (0-300). Keep it under your client's tool timeout. |
| `REELSDK_BASE_URL` | `https://api.reelsdk.com` | API endpoint. |
The project root is `CLAUDE_PROJECT_DIR` when Claude Code sets it, else the client's first workspace root, else the directory the server was started in.
## Limits
Local files up to 100 MB (pass a public URL for bigger inputs, up to 500 MB). Up to 15 minutes of media and 10 minutes of processing per job.
## Development
```bash
npm ci
npm test # unit + tool tests against a fake API
npm run typecheck
npm run bundle # rebuilds dist/index.js, which is committed
```
`dist/` is committed so `npx github:bitgate/reelsdk-mcp` starts without a build step. See [AGENTS.md](AGENTS.md).
## License
MIT
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues