image · vercel-labs — скилл для Claude Code: генерация SVG и PNG из JSON
Превращает JSON-спецификации в SVG и PNG через Satori. Пригодится для OG-картинок, социальных карточек и рендера изображений по схемам от ИИ.
npx skills add vercel-labs/json-render --skill image -a claude-codeЧто делает image
Скилл рендерит изображения из JSON-структур с помощью Satori: берёт спецификацию с элементами (Frame, Heading, Text, Box, Row, Column, Image, Divider, Spacer) и отдаёт SVG-строку или PNG-буфер. Frame — обязательный корневой контейнер, внутри располагаются компоненты разметки и контента. Можно добавлять свои компоненты через Zod-схемы.
Для renderToPng нужны данные шрифта (fontData) и пакет @resvg/resvg-js. SVG работает без них. Экспорты разделены: полный пакет @json-render/image, каталог компонентов /catalog, только рендер /render, серверная часть /server (без React и Satori).
Подходит для генерации превью по шаблонам: агент получает структуру, скилл собирает картинку. Спецификация задаёт размеры, цвета, отступы, позиционирование — всё, что Satori умеет в JSX.
Какие задачи решает
- сгенерировать OG-картинку из JSON-схемы
- создать социальную карточку программно
- отрендерить изображение по спецификации от ИИ
- превратить структурированные данные в PNG или SVG
- собрать превью с текстом, фоном и картинками по шаблону
Примеры запросов агенту
- Создай OG-картинку 1200×630 с заголовком «Hello World» на тёмном фоне
- Отрендери JSON-спецификацию в PNG с использованием шрифта Inter
- Собери социальную карточку: заголовок h1, текст описания, логотип справа
Как установить image
1Через Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill image -a claude-code2Вручную: положить файлы
~/.claude/skills/image/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/image/
1Через Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill image -a codex2Вручную: положить файлы
.agents/skills/image/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill image -a cursor2Вручную: положить файлы
.cursor/skills/image/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install vercel-labs/json-render image2Вручную: положить файлы
.github/skills/image/SKILL.md1Через Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill image -a gemini-cli2Командой платформы
gemini skills install https://github.com/vercel-labs/json-render --path skills/imageВручную: положить файлы
.devin/skills/image/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill image -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора20
Весь набор →Другие версии image
Похожие
Вопросы о image
Как установить image в Claude Code?
Выполни npx skills add vercel-labs/json-render --skill image -a claude-code. Скилл появится в ~/.claude/skills/image/SKILL.md.
Что делает скилл image?
Превращает JSON-спецификации в SVG и PNG через Satori. Используется для генерации OG-изображений, социальных карточек и рендера картинок по схемам, которые создаёт ИИ.
Какие компоненты доступны в image?
Стандартные: Frame (корневой контейнер), Box, Row, Column для разметки, Heading, Text, Image для контента, Divider и Spacer для декора. Можно добавлять свои через Zod-схемы.
Исходный текст
SKILL.md · Apache-2.0
---
name: image
description: 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.
---
# @json-render/image
Image renderer that converts JSON specs into SVG and PNG images using Satori.
## Quick Start
```typescript
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
```typescript
import { defineCatalog } from "@json-render/core";
import { schema, standardComponentDefinitions } from "@json-render/image";
export const imageCatalog = defineCatalog(schema, {
components: standardComponentDefinitions,
});
```
## Adding Custom Components
```typescript
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 |
|-----------|----------|-------------|
| `Frame` | Root | Root container. Defines width, height, background. Must be root. |
| `Box` | Layout | Container with padding, margin, border, absolute positioning |
| `Row` | Layout | Horizontal flex layout |
| `Column` | Layout | Vertical flex layout |
| `Heading` | Content | h1-h4 heading text |
| `Text` | Content | Body text with full styling |
| `Image` | Content | Image from URL |
| `Divider` | Decorative | Horizontal line separator |
| `Spacer` | Decorative | Empty vertical space |
## Key Exports
| Export | Purpose |
|--------|---------|
| `renderToSvg` | Render spec to SVG string |
| `renderToPng` | Render spec to PNG buffer (requires `@resvg/resvg-js`) |
| `schema` | Image element schema |
| `standardComponents` | Pre-built component registry |
| `standardComponentDefinitions` | Catalog definitions for AI prompts |
## Sub-path Exports
| Export | Description |
|--------|-------------|
| `@json-render/image` | Full package: schema, components, render functions |
| `@json-render/image/server` | Schema and catalog definitions only (no React/Satori) |
| `@json-render/image/catalog` | Standard component definitions and types |
| `@json-render/image/render` | Render functions only |
© vercel-labs · Apache-2.0 · vercel-labs/json-render