Json-render image
Image renderer for json-render that turns JSON specs into SVG and PNG images via Satori. Use when working with @json-render/image, generating OG images from JSON, creating social cards, or rendering AI-generated image specs.
install
source · Clone the upstream repo
git clone https://github.com/vercel-labs/json-render
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/vercel-labs/json-render "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/image" ~/.claude/skills/vercel-labs-json-render-image && rm -rf "$T"
manifest:
skills/image/SKILL.mdsource content
@json-render/image
Image renderer that converts JSON specs into SVG and PNG images using Satori.
Quick Start
import { renderToPng } from "@json-render/image/render"; import type { Spec } from "@json-render/core"; const spec: Spec = { root: "frame", elements: { frame: { type: "Frame", props: { width: 1200, height: 630, backgroundColor: "#1a1a2e" }, children: ["heading"], }, heading: { type: "Heading", props: { text: "Hello World", level: "h1", color: "#ffffff" }, children: [], }, }, }; const png = await renderToPng(spec, { fonts: [{ name: "Inter", data: fontData, weight: 400, style: "normal" }], });
Using Standard Components
import { defineCatalog } from "@json-render/core"; import { schema, standardComponentDefinitions } from "@json-render/image"; export const imageCatalog = defineCatalog(schema, { components: standardComponentDefinitions, });
Adding Custom Components
import { z } from "zod"; const catalog = defineCatalog(schema, { components: { ...standardComponentDefinitions, Badge: { props: z.object({ label: z.string(), color: z.string().nullable() }), slots: [], description: "A colored badge label", }, }, });
Standard Components
| Component | Category | Description |
|---|---|---|
| Root | Root container. Defines width, height, background. Must be root. |
| Layout | Container with padding, margin, border, absolute positioning |
| Layout | Horizontal flex layout |
| Layout | Vertical flex layout |
| Content | h1-h4 heading text |
| Content | Body text with full styling |
| Content | Image from URL |
| Decorative | Horizontal line separator |
| Decorative | Empty vertical space |
Key Exports
| Export | Purpose |
|---|---|
| Render spec to SVG string |
| Render spec to PNG buffer (requires ) |
| Image element schema |
| Pre-built component registry |
| Catalog definitions for AI prompts |
Sub-path Exports
| Export | Description |
|---|---|
| Full package: schema, components, render functions |
| Schema and catalog definitions only (no React/Satori) |
| Standard component definitions and types |
| Render functions only |