Vibedit
README.md
<p align="center">
<img src="brand/logo/vibedit-wordmark-light.svg" alt="Vibedit" height="64">
</p>
<h1 align="center">Vibe your video. Just one prompt.</h1>
<p align="center">
Connect Vibedit to Claude, describe the video you want, get a finished MP4.<br>
Under the hood it is a tiny English language for motion graphics: one line per idea, so your agent writes a whole film in a page.<br>
Free and open source. Everything runs on your machine.
</p>
<p align="center">
<a href="docs/mcp.md">Connect to Claude</a> ·
<a href="docs/getting-started.md">Docs</a> ·
<a href="docs/skills.md">Claude Code skills</a> ·
<a href="examples/">Examples</a>
</p>
<p align="center">
<img src="brand/hero.gif" alt="A Vibedit video rendered from one page of text" width="360">
</p>
## Connect to Claude
Vibedit runs as an MCP server. Add it once, then ask for videos in plain words.
**Claude Code:**
```bash
claude mcp add vibedit -- npx -y @vibedit/cli mcp
```
**Claude Desktop, Cursor and other clients:** run `npx -y @vibedit/cli mcp` as a stdio server. Config snippets are in [docs/mcp.md](docs/mcp.md).
Then just ask:
> Make a 4-second 1080x1920 kinetic-typography reel that says "Don't be perfect. Be authentic. Be bold. Be you." Pure black, a geometric sans, hot pink as the only colour, a snappy camera push on every word, and a white ball that bounces through "Be **bold**."
Claude reads the guide, writes the `.vibedit` file, checks it, looks at a contact sheet, fixes what it sees and renders. The result is [examples/be-you](examples/be-you/); its `prompt.md` has the full prompt. No account, no key, no limits: it all renders on your machine.
Tools: `vibedit_guide`, `vibedit_catalog`, `vibedit_templates`, `vibedit_template`, `vibedit_check`, `vibedit_preview_frame`, `vibedit_contact_sheet`, `vibedit_render`.
## Fewer tokens, more videos
An agent spends its tokens on what it writes. Vibedit makes what it writes short:
| Video | Before | Vibedit |
|---|---|---|
| [Thikra app launch film](examples/thikra-launch/) | 595 lines of HTML/JS, Python score and render scripts | **72 lines** |
| [@goldnews.ai daily and weekly videos](examples/goldnews/) | 656 lines of TypeScript | **47 lines** + a JSON file per video |
| [A 60-second launch film](examples/sixty/) | — | **71 lines** |
Line counts leave out blank lines and comments.
## Examples
| Example | What it shows | Lines |
|---|---|---|
| [be-you](examples/be-you/) | A 4-second kinetic-type reel: camera pushes per word, a glowing orb, gradient bars, a squash-and-stretch ball | 87 |
| [sixty](examples/sixty/) | A full 60-second launch film in one page | 71 |
| [thikra-launch](examples/thikra-launch/) | A real app launch film rebuilt: one shape that never cuts, springs, a cursor, a phone playing the app | 72 |
| [goldnews](examples/goldnews/) | The real daily and weekly videos of [@goldnews.ai](https://www.instagram.com/goldnews.ai/): one template + JSON data | 47 |
| [daralsultan](examples/daralsultan/) | A Bahrain real-estate office's Arabic listing stories: four post styles, one template each, any listing from its JSON | 30–757 |
| [brand-intro](examples/brand-intro/) | The Vibedit brand film: bloom, beam, horizon, mixed type, Arabic | 35 |
| [hello](examples/hello/) | The smallest useful video | 20 |
Every example has a `prompt.md`: the one prompt that produces it through the MCP server.
## Or write it yourself
```bash
npm i -g @vibedit/cli # Node 18+
vibedit doctor # ffmpeg is bundled; Chromium downloads on first render
```
```vibe
video reel
theme vibedit
music pulse
scene hook 3s
bg bloom
kicker "Introducing"
headline "Videos from *code*" enter words
transition whip-left 0.5s sfx whoosh
scene numbers 3.5s
bg horizon
counter 120000 prefix "+" suffix " videos" separator style headline
scene end 3s
logo "vibe*dit*" size 200
button "Try it free" at 1s press 2.2s sfx click
```
```bash
vibedit render hello.vibedit # → hello.mp4 (1080x1920, H.264 + AAC)
```
No positions, no keyframes, no timeline. Elements lay themselves out inside a safe area and enter with good defaults; you override only what you care about. Files use the `.vibedit` extension (the older `.vibe` still works).
## What is in the box
- **Plain English, one line per thing.** `headline "Ship *faster*" enter words`. Errors come with a line number and a suggested fix.
- **Looks designed by default.** Auto layout, safe areas, a type scale, a soft focus reveal, grain and light.
- **30+ elements.** Text, counters, charts, lists, cards, lower thirds, phone and browser mockups, code windows, karaoke captions, icons, toggles, cursors, particles, images and video.
- **Motion.** 99 entrances, 32 loops, 74 transitions, 27 camera moves, springs and `key` lines, and `morph`: one shape that never cuts.
- **Sound.** 22 procedural, royalty-free music beds (including Arabic Hijaz, Khaleeji and Saidi grooves) and 86 sound effects, beat sync with `bpm`, drops.
- **Arabic-first.** Correct shaping, joined letters in every animation, automatic direction, numbers kept intact inside Arabic text, ten bundled Arabic typefaces.
- **Data-driven.** `{{variables}}` in any file, filled from `--data file.json`: one template, a video per row.
- **Stop motion** with one line: `stopmotion 10`.
- **Any size, any format.** Reel, square, portrait, landscape, 4K; MP4, WebM, MOV, GIF.
- **Review tools.** Live preview, single frames and contact sheets, so you (or your agent) can look before rendering.
- **17 templates.** Promo, app demo, UI morph, explainer, data story, kinetic type, logo reveal, quote card, announcement, reel hook, testimonial, before/after, countdown, Arabic promo, stop motion, lower thirds, podcast clip.
## Claude Code skills
```
/plugin marketplace add AhmedAldakheel/vibedit
/plugin install vibedit@vibedit
```
Twelve skills that teach the workflow and the craft: the core `vibedit` skill plus promo, explainer, reels, data story, logo reveal, kinetic type, app demo, Arabic, stop motion, brand kit and a review loop that renders contact sheets and fixes what it sees. See [docs/skills.md](docs/skills.md).
## Commands
```
vibedit new <name> --template promo start from a template
vibedit check video.vibedit validate
vibedit preview video.vibedit live preview in the browser
vibedit sheet video.vibedit contact sheet PNG
vibedit still video.vibedit --at 2.5 one frame
vibedit render video.vibedit MP4 (or -o out.webm / .mov / .gif)
vibedit render t.vibedit --data d.json fill {{variables}} from a JSON file
vibedit list transitions any list of names
vibedit docs full language reference
vibedit mcp MCP server over stdio
```
## Documentation
[Getting started](docs/getting-started.md) · [Your first video](docs/your-first-video.md) · [Syntax](docs/syntax.md) · [Scenes and timing](docs/scenes-and-timing.md) · [Layout](docs/layout.md) · [Text](docs/text-and-typography.md) · [Animation](docs/animation.md) · [Transitions](docs/transitions.md) · [Backgrounds](docs/backgrounds-and-light.md) · [Audio](docs/audio.md) · [Arabic](docs/arabic.md) · [Stop motion](docs/stop-motion.md) · [Rendering](docs/rendering.md) · [MCP](docs/mcp.md) · [FAQ](docs/faq.md)
بالعربية: [البداية](docs/ar/getting-started.md) · [أول فيديو لك](docs/ar/your-first-video.md) · [العربية](docs/ar/arabic.md) · [خادم MCP](docs/ar/mcp.md)
## License
MIT. Bundled fonts keep their own open licences (see [assets/fonts/FONTS.md](assets/fonts/FONTS.md)).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues