dreamina-mcp
# SeedFlow MCP — Dreamina (Seedance 2.5) batch video generation for Claude
[](https://lingoflow.pro/seedflow?utm_source=github&utm_medium=badge&utm_campaign=dreamina-mcp)
[](https://www.npmjs.com/package/dreamina-mcp)
[](https://www.npmjs.com/package/dreamina-mcp)
[](LICENSE)
**Dreamina has no public API for its web plans.** This MCP server gives Claude Code and Claude Desktop hands inside Dreamina: batch video generation on **Seedance 2.5**, up to 7 references with roles, first/last frames, 4–30 s timelines, video-to-video edits (edit, extend, upscale, interpolate, soundtrack) and auto-download — on the Dreamina plan you already pay for. No per-second API billing, no API keys.

> *You, in Claude:* «Make a 30-second vertical ad for this bottle, photos in `D:/bottle`, logo at the end.»
> *Claude, through SeedFlow:* `dream_status` → `dream_generate` (timeline with 4 stages, `@Image 1` = the product) → `dream_wait`
> ✓ clips saved to `seedflow-out/BottleAd/`
## How it works
```
Claude Code / Claude Desktop
│ MCP (stdio, JSON-RPC)
▼
dreamina-mcp ── local bridge on 127.0.0.1:8788 ── files → seedflow-out/
▲ HTTP, polled every few seconds
│
SeedFlow Chrome extension ──► Dreamina tab (dreamina.capcut.com)
```
The MCP server (this repo) is pure transport: five tools and a local HTTP bridge, zero dependencies. The **SeedFlow Chrome extension** does the actual work in the Dreamina tab — it types the prompts, sets model / aspect / length / resolution, attaches references and frames, waits for the render and downloads the clips with clean numbered names. On connect, the extension hands the bridge its *director playbook* (Seedance 2.5 prompt formula, 50 cinematic techniques, reference roles, credit prices, scene chaining); `dream_status` passes it to Claude, so Claude behaves like a director, not a typist.
## Quick start
**1. Install the extension** — [SeedFlow — Seedance Automation for Dreamina & Claude MCP](https://lingoflow.pro/seedflow?utm_source=github&utm_medium=readme&utm_campaign=dreamina-mcp) (the Chrome Web Store listing is in review; the product page has the current install link). First 24 hours are free, no key and no card.
**2. Add the MCP server.**
Claude Code:
```bash
claude mcp add seedflow -- npx -y dreamina-mcp
```
> **Windows:** if PowerShell refuses to run `claude.ps1` / `npm.ps1` (script execution policy), call the `.cmd` shims instead: `claude.cmd mcp add seedflow -- npx.cmd -y dreamina-mcp`.
> No npm? The same server runs straight from GitHub: `npx -y github:DanikVR/dreamina-seedance-mcp`.
Claude Desktop — add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"seedflow": { "command": "npx", "args": ["-y", "dreamina-mcp"] }
}
}
```
**3. Open Dreamina** at [dreamina.capcut.com/ai-tool/home?type=video](https://dreamina.capcut.com/ai-tool/home?type=video) and sign in. The extension icon in the Chrome toolbar shows *Claude ✓* when the bridge is connected.
**4. Talk to Claude.** It will ask two or three short questions (goal, platform, materials), propose scenarios on a timeline, name the cost in credits, then shoot:
```
Make a 30-second ad for a thermal mug, vertical. Photos are in D:/mug. Logo at the end.
```
Clips land in `seedflow-out/<folder>/` next to where Claude was started (override with `OF_OUT`; if that directory is not writable the bridge falls back to `~/seedflow-out`).
## Tools
| Tool | What it does |
|---|---|
| `dream_status` | Is the extension connected, is a Dreamina video tab open, what is queued — and `extension.director`, the playbook Claude follows. Call it first. |
| `dream_generate` | Queue one or many clips: prompt, model (Seedance 2.5 / 2.0 Mini draft), aspect, length 4–30 s, resolution, variants, up to 7 references with roles, first/last frames, chaining, expected credits, dry run. Returns `jobId` at once. |
| `dream_wait` | Wait for a job and return the file paths. Polls every 5 s, up to `timeoutSec`. |
| `dream_edit` | Video-to-video on a finished clip: edit by description, extend, creative upscale, 60 fps interpolate, generate soundtrack, regenerate. |
| `dream_cancel` | Drop everything that has not started rendering. |
Full parameter reference: [docs/tools.md](docs/tools.md). The bridge also exposes a plain HTTP API on `127.0.0.1:8788` (`/health`, `/jobs`, `/jobs/:id`, `/cancel`) for scripts that are not MCP clients.
## Seedance 2.5 prompt formula (what the playbook teaches Claude)
One generation is 4–30 seconds. The prompt is a timeline, not a sentence:
```
[Generation Goal] one line: what the clip is.
[Reference roles] @Image 1 defines the hero's face. @Image 2 defines the product. Do not use @Image 3 for style.
[0-5s] … one camera move with an end state …
[5-12s] … next beat …
{Name says in English, calm: 8–15 words} ← spoken lines, 11 languages
【On-screen text in the user's language】
Audio: sounds of visible actions. NO BGM. No subtitles.
```
Aspect, length and resolution are generation parameters, never prompt text. Draft on Seedance 2.0 Mini for 5 s, final on Seedance 2.5. The extension's 50 one-click techniques (dolly zoom, crash zoom, orbit 360°, bullet time, FPV, hero product spin, match cut, whip pan, logo finale and more) are pre-written formulas for exactly these beats.
## Claude skills
`skills/` ships two Claude Code skills that turn Claude into a Dreamina director:
- **seedance-director** — always on when the user wants a video: the 5-step dialogue, Seedance 2.5 facts and credits, the prompt formula, a beat → technique map, the catalog of 50 techniques, the edit rules (lock-then-modify) and the three sound layers.
- **ad-video** — one line of brief → storyboard → reference roles → English prompts → `dream_generate` / `dream_wait`.
Copy them into your project's `.claude/skills/` (or `~/.claude/skills/` for all projects). The skill bodies are currently in Russian; Claude reads them fine, an English edition is on the roadmap.
## What the extension adds
50 one-click cinematic techniques in 10 groups, references with roles (hero, product, background, style), first/last frames and scene chaining so the hero stays the same person from clip to clip, three sound layers, a credit calculator before every run, a manual Studio panel and an in-panel chat assistant for people who don't use Claude — plus a translated Dreamina interface for languages Dreamina doesn't ship (Russian, Arabic, Hindi). Details, screenshots and pricing: [lingoflow.pro/seedflow](https://lingoflow.pro/seedflow?utm_source=github&utm_medium=readme&utm_campaign=dreamina-mcp).
## Security
- The bridge listens on `127.0.0.1` only. To reach it from another machine (Tailscale etc.) set `OF_HOST` and `OF_PORT`; then every request must carry the token from `~/.seedflow-token` (`x-seedflow-token` header).
- Only `chrome-extension://` origins may call the bridge; everything else gets 403.
- Nothing leaves your machine except what the extension itself sends to Dreamina. Prompts and clips stay on disk. The extension talks to lingoflow.pro only to validate its licence key.
- The extension presses the same buttons you would, with pauses between runs. Your own account, your own plan: no captcha bypass, no private API, no multi-accounting, no watermark removal.
## Requirements
- Node.js 20 or newer.
- Chrome 116+ with the SeedFlow extension.
- A Dreamina account with credits (Seedance 2.5 access).
- Claude Code or Claude Desktop.
## FAQ
**Does it work without the extension?** No. The MCP server is transport; generation happens inside your Dreamina tab through the extension.
**Is the extension free?** The first 24 hours after install are free without a key. Then a free week with a card, then a yearly or a one-time licence. Pricing lives on [the product page](https://lingoflow.pro/seedflow?utm_source=github&utm_medium=readme&utm_campaign=dreamina-mcp#pricing).
**Why not the Seedance API?** The API bills per second of video; Dreamina plans bill in credits that come out several times cheaper for the same clip, and the plan is what most Dreamina users already have. The comparison is on the product page.
**Can I run the bridge on one machine and Claude on another?** Yes — `OF_HOST=0.0.0.0 OF_PORT=8788 npx -y dreamina-mcp` on the machine with Chrome, then point the extension's bridge URL (extension settings) to it and pass the token.
**Where do the files go?** `seedflow-out/` in the current working directory, or `OF_OUT=/path`.
## Links
- Product page and pricing: **[lingoflow.pro/seedflow](https://lingoflow.pro/seedflow?utm_source=github&utm_medium=readme&utm_campaign=dreamina-mcp)**
- Questions, support, ideas: **[t.me/GuruAppSheet](https://t.me/GuruAppSheet)**
- Sister project for Google Flow (Veo 3 / Omni 1.1): [OmniFlow MCP](https://github.com/DanikVR/omniflow-veo-mcp) · [lingoflow.pro/omniflow](https://lingoflow.pro/omniflow?utm_source=github&utm_medium=readme&utm_campaign=dreamina-mcp)
Русская версия: [README.ru.md](README.ru.md) · 中文版: [README.zh-CN.md](README.zh-CN.md)
## Sources & thanks
The prompt formula and the techniques inside the extension and the skills were distilled from the official Seedance 2.5 guide, public Dreamina prompting guides and open community repositories, then verified on live generations. If you recognise your work and want a credit line here, open an issue — it will be added.
## License
MIT © DanikVR. The SeedFlow Chrome extension is a separate, licensed product.
TDQS
Scored across 5 tools
Each tool maps to a distinct lifecycle stage: status (pre-flight check), generate (new job), edit (modify existing video), wait (poll result), cancel (drop queued jobs). Generate vs edit is clearly delineated by 'new' vs 'already finished video', so an agent can select correctly.
All five tools use the same dream_verb snake_case pattern (dream_status, dream_generate, dream_edit, dream_wait, dream_cancel). Fully predictable and consistent.
Five tools is well-scoped for a generation bridge: the workflow of check-state, submit, edit, wait, and cancel is compact with no redundant entries. Every tool earns its place.
The core async lifecycle (status → generate/edit → wait → cancel) is fully covered, including polling semantics. Minor gaps: no way to list/history past jobs or query an arbitrary job by id outside of wait, but these are workable arounds rather than dead ends.