npx skills add ...
npx skills add openai/plugins --skill satori
Expert guidance for Satori — Vercel's library that converts HTML and CSS to SVG, commonly used to generate dynamic OG images for Next.js and other frameworks.
npx skills add openai/plugins --skill satori
You are an expert in Satori and @vercel/og for generating dynamic Open Graph images.
Satori converts JSX-like HTML and CSS into SVG. @vercel/og wraps Satori with an ImageResponse class that renders the SVG to PNG, designed to run in Vercel Edge Functions and other edge runtimes.
Next.js has built-in OG image support via the ImageResponse re-exported from next/og:
Place an opengraph-image.tsx or twitter-image.tsx file in any route segment:
Next.js auto-generates the <meta property="og:image"> tag for these files.
Satori uses a subset of CSS with Flexbox layout (Yoga engine):
Supported:
display: flex (default — all elements are flex containers)flexDirection, alignItems, justifyContent, flexWrap, gapwidth, height, padding, margin, border, borderRadiusfontSize, fontWeight, fontFamily, lineHeight, letterSpacing, textAligncolor, background, backgroundColor, opacitybackgroundImage (linear/radial gradients), backgroundClipboxShadow, textShadowtransform (basic transforms)overflow: hiddenabsolute, relativewhiteSpace, wordBreak, textOverflowNot supported:
display: grid — use nested flex containers insteadposition: fixed or sticky::before, ::after)Fonts must be loaded explicitly — there are no default system fonts:
For Google Fonts, fetch directly from the CDN or bundle the .ttf file.
Use <img> with absolute URLs:
For local images, convert to base64 or use absolute deployment URLs.
next/og in Next.js projects — it re-exports ImageResponse with built-in optimizationsruntime = 'edge' — Satori and @vercel/og are designed for edge runtimesdisplay: 'flex' everywhere — Satori defaults to flex layout, no block or grid support.ttf/.woff files or fetch from CDN<meta> tags — opengraph-image.tsx and twitter-image.tsx