[verdict][generated prompt][source: orshot.com]
Can I vibecode Orshot?
// buildable in a weekend, but real gaps stay open
The render itself is not the moat. Headless Chromium plus a Handlebars template gets you a PNG or a PDF from JSON in an afternoon, and for one team rendering its own OG images that really is the whole job. What does not fall out of a weekend is everything around the render: a visual editor non engineers can use, one design that re solves cleanly into a story, a square, and an OG card, workflows that fire on a schedule or a webhook against Sheets and Airtable, publishing into 15 plus social platforms, and a render farm that stays warm and predictable under burst. Build it if you own the templates and the volume is small. Keep paying if the people making the creatives do not write HTML.
confidence: high
what it is: Template driven image, video, and PDF generation you call from an API, a workflow, or an AI agent
Buildability index · an editorial game
- Price from 39 $ · usage-based weight: plus 3
- Time weekend to multi-day weight: plus 2
- Category automation no weight
- Moat integrations · execution quality · infrastructure scale weight: minus 4
- Confidence high weight: plus 1
- What you lose 8 items weight: minus 3
- Site orshot.com (si apre in una nuova scheda) no weight
They cancel out. This is where it comes down to how much the subscription annoys you.
Gioco editoriale: il verdetto dice se un agente può, l’indice se conviene.
// free tier: 30 render credits and 50 AI credits, no card required, enough to evaluate but not to run anything recurring.
What you build
Fill an HTML template with JSON, render it in headless Chromium at a fixed viewport, return PNG or PDF over HTTP, and batch a CSV through the same path.
what you need
- headless Chromium (Playwright or Puppeteer)
- a template language and a place to store templates
- a warm browser pool and a render queue
- font and brand asset handling
- object storage plus a CDN for delivery
- a host that tolerates burst traffic
A clean kinda. The first render is easy and the hundred thousandth one on a schedule, in six formats, published to five platforms, is a product.
The prompt
A weekend with a coding agent. The gaps that stay are right below, under “what you lose”.
Build me a local templated image and PDF render service to replace an image generation API. Requirements:
- Node 22 with Express in a single server.js, plus Playwright driving Chromium.
No build step, no framework, no database.
- A template is a folder at templates/<name>/ holding index.html with Handlebars
placeholders, style.css, and meta.json with width, height, and defaults.
- Ship 3 starters: an OG card at 1200x630, an Instagram square at 1080x1080, and
a one page invoice that renders to PDF.
- POST /render {template, modifications, format} returns PNG, JPEG, or PDF.
Fill the template, set the viewport from meta.json, screenshot the page.
PDFs go through page.pdf() instead.
- GET /render/<template>.png?headline=...&image=... does the same thing from
query params so the URL can be dropped straight into an img tag.
- POST /batch accepts a CSV or a JSON array, renders every row into out/ with a
concurrency of 4, and returns a manifest of paths.
- A brand.json with 4 colors and 2 local font files, injected into every template
as CSS custom properties so a rebrand is one file edit.
- Keep one browser instance warm and reuse pages. Launching Chromium per request
is the thing that makes the naive version unusable.
- Cache by a hash of template plus modifications into .cache/ and serve hits from
disk before touching the browser.
- Fonts load from ./fonts via @font-face with file:// URLs, and the renderer waits
on document.fonts.ready so text never screenshots mid swap.
- Out of scope: a visual editor, video, social publishing, and multi tenant auth.
I write templates in HTML by hand and that is the trade I am making.
- README: how to add a template, how fonts resolve, and the Docker line that
installs the Chromium system dependencies. Prompt generated from the data on this page, not reviewed by hand yet. In English on purpose — it is the language coding agents work best in.
What you lose
- visual studio editor for non developers
- 2,000 plus prebuilt templates
- one design auto resized to every social format
- scheduled and webhook driven workflows
- publishing to social platforms
- MCP and agent integrations
- white label embedded editor
- workspaces, audit logs, and team access
Why people still pay
Because the person who needs the graphic is usually not the person who can maintain a Chromium pool, and the value shows up when marketing edits a template without filing a ticket.
moat: Integrations Execution quality Infrastructure scale what a moat is
editor polish for non developers, workflow and publishing integrations, warm render infrastructure
Free alternatives
Not in the mood to build it? These already exist, they are free or open source, and we checked them one by one.
Rejected (4) — and why
- Templated Free (si apre in una nuova scheda) — The obvious like for like swap, but the free offer is 50 one time credits rather than a recurring free tier, so it runs out and stops.
- Satori and @vercel/og (si apre in una nuova scheda) — A rendering library, not a finished product. It draws the picture and leaves you the template store, the queue, the caching, and the delivery.
- Penpot (si apre in una nuova scheda) — Recommended every time open source design comes up, but it is a design tool with no render API; there is nothing for a workflow to call.
- Canva Bulk Create (si apre in una nuova scheda) — CSV to designs is the right shape, but it sits behind Canva Pro, so the free tier does not actually do the job.
Who has already built it
Starting from here is still vibecoding: the prompt is for when you want it exactly your way.
- Bannerbear (opens in a new tab) — The API first image generation category opener; proof the template plus API shape is a real product and not a script (alive)
- Satori (opens in a new tab) — Vercel's HTML and CSS to SVG renderer, the engine behind most homegrown OG image endpoints (alive)
Do you agree?
The vote balance
Ancora nessun voto: il tuo è il primo.
Nessun voto ancora — il primo pesa.