LeClap
Compose and render video from one JSON template. Deterministic, runs locally, no generative model.
التثبيت
أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: .cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).
@leclap/mcpclaude mcp add leclap -e 'LECLAP_MCP_OUTPUT_DIR=<LECLAP_MCP_OUTPUT_DIR>' -e 'LECLAP_MCP_MEDIA_DIR=<LECLAP_MCP_MEDIA_DIR>' -e 'LECLAP_MCP_RENDER_TIMEOUT_MS=<LECLAP_MCP_RENDER_TIMEOUT_MS>' -e 'LECLAP_MCP_ALLOW_REMOTION=<LECLAP_MCP_ALLOW_REMOTION>' -e 'LECLAP_MCP_REMOTION_ENTRY=<LECLAP_MCP_REMOTION_ENTRY>' -- npx -y @leclap/mcp@0.3.4
{
"mcpServers": {
"leclap": {
"command": "npx",
"args": [
"-y",
"@leclap/mcp@0.3.4"
],
"env": {
"LECLAP_MCP_OUTPUT_DIR": "<LECLAP_MCP_OUTPUT_DIR>",
"LECLAP_MCP_MEDIA_DIR": "<LECLAP_MCP_MEDIA_DIR>",
"LECLAP_MCP_RENDER_TIMEOUT_MS": "<LECLAP_MCP_RENDER_TIMEOUT_MS>",
"LECLAP_MCP_ALLOW_REMOTION": "<LECLAP_MCP_ALLOW_REMOTION>",
"LECLAP_MCP_REMOTION_ENTRY": "<LECLAP_MCP_REMOTION_ENTRY>"
}
}
}
}
متغيرات البيئة
LECLAP_MCP_OUTPUT_DIRDirectory rendered videos are written to. Defaults to ~/.leclap/renders.LECLAP_MCP_MEDIA_DIRAllowlisted directory the server may read source media from. Defaults to ~/.leclap/media.LECLAP_MCP_RENDER_TIMEOUT_MSPer-render timeout in milliseconds. Defaults to 600000.LECLAP_MCP_ALLOW_REMOTIONOpt in to the Remotion clip renderer, which executes local JavaScript. Off by default.LECLAP_MCP_REMOTION_ENTRYPath to a Remotion entry point used by render_remotion_clip when it is enabled.
التوثيق
مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.
المحتويات
LeClap
Your video from one JSON template: camera, effects, music, transitions, rendered on the device. No server, no upload.
Try it · Examples · Comparison · Docs · Showcase
🎥 Demo
Click the frame: the film plays on leclap.dev, with captions.
⏱ Try it in 30 seconds
Node 24.11 or later. FFmpeg is optional: the CLI brings ffmpeg-static along and uses it when there is no
ffmpeg on your PATH.
npx @leclap/cli init hello --no-remotion --no-mcp
cd hello && npm install && npm run render
That writes build/output.mp4: three seconds of "Hello, LeClap" on a navy card, from the
template.json next to it. Edit the JSON, render again.
If the title is missing, the ffmpeg on your PATH was built without drawtext (Homebrew's current build is
one). npx leclap diagnose lists what your FFmpeg can and can't do.
Rather not install anything? Open the same template in the web builder,
where it renders in the tab through WebAssembly. The template travels in the URL fragment, which browsers
don't send to servers. leclap studio template.json prints that link for any template.
🎞 Template in, video out
Three templates from this repo and what they render to. Click a frame to play the render.
| Template | Render | What it shows |
|---|---|---|
footage-edit.json | ||
| 4 KB of JSON | Five recorded clips, five edits: a portrait clip over its own blur, a keyframed pan under a LUT, a speed ramp, a freeze frame, a B-roll cutaway. | |
before-after.json | ||
| a PR review clip | The video an agent attaches to a pull request: the change named, the old behaviour, a wipe to the new one, what to check. | |
effects-tour.json | ||
| ten chapters, one template | Seven minutes of kinetic type, camera moves, transitions, captions, light effects, looks, footage edits, sound and music. |
All 59 samples, with their templates, are on the showcase. Each effect, one frame at a time, in the gallery.
🤔 Why LeClap?
Four ways to get a video out of JavaScript, and when each one is the right call. Claims about the others come from their own docs; a "—" means their docs don't say. The full comparison has the sources and the caveats, ours first.
| LeClap | Remotion | editly | fluent-ffmpeg | |
|---|---|---|---|---|
| What it is | A JSON template compiled to FFmpeg | Videos written as React components | Declarative editing, as a CLI and a Node API | A chainable Node API over the ffmpeg CLI |
| You write | JSON, validated against a schema | React (TypeScript) | A JSON5 spec or CLI flags | Chained method calls |
| Node | ✅ | ✅ also Lambda and Vercel | ✅ needs ffmpeg, ffprobe, headless GL | ✅ needs ffmpeg, ffprobe |
| Browser | ✅ WebAssembly | ✅ WebCodecs, since 4.0.491 | — | — |
| React Native, on-device | ✅ FFmpeg linked into the app | — | — | — |
| Same input, same output | ✅ per platform¹ | ✅ if animations derive from the frame number | — | — |
| Agent tooling | ✅ @leclap/mcp: schema, validate, render | ✅ a system prompt for LLMs writing React | — | — |
| Licence | MIT | Free for individuals, non-profits and for-profit companies up to 3 employees; paid above | MIT | MIT, archived in May 2025 |
| Pick it when | The render happens in an app, or a program writes the video | You think in components, render on servers, or want the ecosystem | You want a slideshow from the terminal | You already use it; its README says it's unmaintained |
¹ Per platform, not across them: Node and the browser encode with libx264, Android with libopenh264, iOS
with h264_videotoolbox, and the on-device build drops boxblur and rewrites eq to lutyuv. Same
composition, different pixels.
Remotion wins more of this than a comparison table usually admits: LeClap vs Remotion spells out where.
📦 Packages
| Package | One line |
|---|---|
ffmpeg-video-composer | The engine: compile() a JSON template on Node, in the browser or in React Native. |
@leclap/cli | The leclap command: init, render, validate, snapshot, verify, studio, diagnose. |
@leclap/mcp | The engine as tools an agent can call: read the schema, validate a template, render it. |
The rest of the monorepo is private: the creative kit (templates, fonts, media), the web builder (React, FFmpeg in WebAssembly), the Expo app (camera to render, on the phone) and the Rust engine that links FFmpeg into it. Working on the repo itself: CONTRIBUTING.md and AGENTS.md.
📚 Read next
- Descriptor reference: every section, transition, look, caption and filter, one page per topic.
- Template configuration and effects: the same reference, in the repo.
- Engine configuration:
ProjectConfig, environment variables, encoders. - Architecture and on-device compilation: how one core runs on three FFmpeg builds.
- One descriptor, three FFmpeg builds: the long version, on the blog.
- Agent-made PR videos and browser agents in the builder.
- Showcase: 50 templates with their renders.
🤝 Contributing & licence
Issues and PRs welcome: start with CONTRIBUTING.md. The code is MIT.
The LeClap name and logo are trademarks of Alexandre Mogère. Fork and reuse the code freely, but give your fork a different name and don't imply endorsement. See TRADEMARK.md.
الأسئلة الشائعة
ما هو LeClap؟
Compose and render video from one JSON template. Deterministic, runs locally, no generative model.
كيف أثبّت LeClap؟
يعمل على جهازك. في Claude Code: claude mcp add leclap -e 'LECLAP_MCP_OUTPUT_DIR=<LECLAP_MCP_OUTPUT_DIR>' -e 'LECLAP_MCP_MEDIA_DIR=<LECLAP_MCP_MEDIA_DIR>' -e 'LECLAP_MCP_RENDER_TIMEOUT_MS=<LECLAP_MCP_RENDER_TIMEOUT_MS>' -e 'LECLAP_MCP_ALLOW_REMOTION=<LECLAP_MCP_ALLOW_REMOTION>' -e 'LECLAP_MCP_REMOTION_ENTRY=<LECLAP_MCP_REMOTION_ENTRY>' -- npx -y @leclap/mcp@0.3.4. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.
هل يحتاج LeClap إلى مفتاح API؟
لا يذكر إدراجه في السجل أي مفتاح أو سر إلزامي. قد تتطلب بعض الميزات حسابًا لدى الخدمة التي يتصل بها.
هل LeClap مفتوح المصدر؟
نعم. شيفرته متاحة على GitHub بترخيص MIT.
من يصون LeClap؟
ينشره heristop. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.
من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.