Skip to main content
Glama
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)).