Describe the slides in JSON
Canvas, fonts, theme, and every image, text, and shape layer are explicit fields. Nothing is guessed.
LumenClip is a JSON-driven carousel rendering engine. Describe every slide once as a spec, fill its image and text slots, and get pixel-exact PNGs ready for TikTok and Instagram.
{
"version": 1,
"canvas": { "preset": "9:16", "background": "#111111" },
"slots": {
"hook": { "type": "text", "required": true },
"photo": { "type": "image", "required": true }
},
"slides": [{
"id": "hook",
"layers": [
{ "id": "bg", "type": "image",
"src": { "slot": "photo" },
"frame": { "inset": 0 }, "fit": "cover" },
{ "id": "title", "type": "text",
"text": "{{hook}}", "style": "hook",
"frame": { "x": "50%", "y": "14%",
"width": "84%", "anchor": "top" } }
]
}]
}One input
A JSON spec is the only thing the renderer reads.
One engine
The preview and the server use the same code.
Up to 35 slides
Enough for a full TikTok photo carousel.
Private by default
Every file is checked against its owner.
Canvas, fonts, theme, and every image, text, and shape layer are explicit fields. Nothing is guessed.
Declare named slots for images, copy, colours, and lists. A list slot repeats slides for variable-length carousels.
Pick uploads, a collection image, a seeded random pick from a collection, or a Pexels or Pinterest result.
21 display, serif, script, and handwritten faces plus Inter, rendered with the real font files on the server.
Absolute, stack, and grid groups with gaps, padding, corner radius, and clipping for collages and lists.
Every error carries a code and a JSON Pointer, so a bad field is easy to find in a pasted spec.
Uploads, collections, and rendered slides live in private storage tied to your account.
Owner-checked files
Every image is served through a route that verifies the signed-in owner.
Guarded remote images
Image URLs in a spec are fetched with private-network blocking and a size cap.
Hashed API keys
Keys are shown once at creation and stored only as a hash.
Read-only history
A render keeps its resolved spec; changing a template never rewrites past output.
No. A spec is the single source of truth for layout. The app gives you a visual way to fill template slots and preview the result, not a canvas to drag things around on.
No. LumenClip renders exactly the text you provide. Bring copy from your own process, a spreadsheet, or an agent.
PNG per slide by default, with optional JPEG or WebP, plus a ZIP of the whole carousel.
Yes. The REST API under /api/v1 validates specs, creates renders, and returns signed slide URLs. Small renders return immediately; larger ones are queued.
Uploads and renders live in private storage and are served only through routes that check you own them. Share links use signed tokens.
Pick a template, drop in your photos and copy, and download the slides in under a minute.
Create accountGet one PNG per slide plus a ZIP, then publish or schedule the carousel to TikTok or Instagram.
Render from scripts with a workspace API key, or let an agent call the same tools over MCP.
Scheduled and published posts sit on one calendar, with in-app reminders before they go out.
The resolved spec is stored with every render, so a historical render always reproduces the same pixels.