Satori
Vercel 开源的 JavaScript 渲染库,输入 HTML/JSX 与 CSS 输出 SVG,自带布局与字体排版,适合用 Next.js 的团队在服务端批量生成 Open Graph 分享图。
Satori 是一个 JavaScript 库,输入一段 HTML 或 JSX 加 CSS,输出一张 SVG 图片。它自己完成布局计算、字体和排版处理,目标是让渲染结果尽量贴近浏览器里同样的 HTML 和 CSS 长什么样。最常见的用途是给网页生成 Open Graph 分享图、社交卡片这类需要服务端批量出图的场景。
怎么用
在 Node.js 里引入后调用 satori(),传入元素和配置(宽高、字体数组),拿回 SVG 字符串。字体需要自己以 Buffer 或 ArrayBuffer 形式提供,比如用 fs 读本地字体文件或用 fetch 拉取。要 PNG 的话再接一步 Sharp,把 SVG 转成位图。
写法上支持 JSX,但只接受纯的、无状态的元素:可以用一部分 HTML 元素和自定义 React 组件,useState、useEffect 这类 React API 不支持。没有 JSX 转译环境时,也可以直接传带 type、props.children、props.style 的类 React 元素对象。项目还提供一个实验性的内置 JSX 运行时,不装 React 也能用。
适合谁
需要程序化生成分享图的前端或全栈开发者,尤其是用 Next.js 的团队,官方文档里有对应的图片生成示例。仓库里还带一个 playground 目录,可以对照着试效果。
费用与限制
代码以 MPL-2.0 许可开源,仓库在 GitHub 上,star 数约 14.2k。它只负责输出 SVG,不直接出 PNG,位图转换要另配 Sharp;支持的 HTML 元素和 CSS 属性是子集,不是完整浏览器渲染。仓库当前有 104 个 open issue、59 个待合并 PR,说明部分边界情况仍在处理中。