CLI, JavaScript 및 Go API를 제공하는 초고속 JavaScript·TypeScript·JSX·CSS 번들러
vercel/satori
JSX 입력과 자체 레이아웃 엔진을 사용해 HTML과 CSS를 SVG로 변환하는 유용한 라이브러리입니다.
- 스타
- 14,121
- 포크
- 392
- 열린 이슈
- 152
- 마지막 커밋
- 그저께
어떤 프로젝트인가요?
Satori는 JSX 요소 트리나 일반 React 유사 객체에 폰트 데이터와 캔버스 크기를 지정하면 SVG 문자열을 반환합니다. Taffy를 기반으로 Flexbox, Grid, 블록 레이아웃을 처리하는 자체 레이아웃 엔진을 구현하고, 텍스트 셰이핑에는 HarfBuzz를 사용합니다. 따라서 지원하는 HTML과 CSS의 하위 집합에 한해 브라우저 렌더링 결과와 일치하는 출력을 지향합니다.
완전한 브라우저 엔진은 아닙니다. 지원하는 요소와 CSS 속성은 호환성 표에 나와 있으며, 지원하지 않는 속성은 경우에 따라 무시되거나 오류를 발생시킵니다. Satori는 순수하고 상태가 없는 컴포넌트만 허용하므로 useState 같은 React 훅은 사용할 수 없습니다. TTF, OTF, WOFF, WOFF2 형식의 폰트는 명시적으로 제공해야 합니다.
PNG 파일을 만들려면 SVG를 Sharp에 전달하면 됩니다. Sharp는 librsvg를 사용해 SVG를 래스터화합니다. 이 프로젝트는 Vercel의 Open Graph 이미지 생성 엔진으로 사용됩니다.
핵심 기능
- 01JSX 또는 React 유사 객체를 SVG 문자열로 변환
- 02Taffy를 통한 Flexbox, Grid 및 블록 레이아웃
- 03OpenType 기능과 오른쪽에서 왼쪽으로 쓰는 텍스트를 포함한 HarfBuzz 텍스트 셰이핑
- 04TTF, OTF, WOFF, WOFF2 폰트 지원
- 05선택자, @media 및 @container 쿼리를 지원하는 스타일시트
- 06실험적 WebGL 캔버스 및 원근 변환
활용 사례
- 빌드 시점이나 요청 시점에 동적인 Open Graph 이미지와 소셜 카드 이미지 생성
- 서버 사이드 이미지 파이프라인에서 텍스트가 많은 그래픽을 SVG로 렌더링
- SVG 출력을 Sharp에 전달해 PNG 이미지 생성
빠른 시작
- 1
npm에서 satori 패키지를 설치합니다(README 발췌 부분에는 설치 명령이 나와 있지 않습니다).
- 2
Overview 예시처럼 JSX 요소, width, height, fonts를 전달해 satori()를 호출합니다.
사용 전 알아둘 점
- HTML과 CSS는 일부만 지원되며, 출력 결과가 브라우저 렌더링과 정확히 일치하지 않을 수 있습니다.
- MPL-2.0 라이선스가 적용되며, 수정한 파일의 소스 변경 사항을 공유해야 합니다.
토픽
자주 묻는 질문
- satori은(는) 무엇인가요?
- JSX 입력과 자체 레이아웃 엔진을 사용해 HTML과 CSS를 SVG로 변환하는 유용한 라이브러리입니다. Satori는 JSX 요소 트리나 일반 React 유사 객체에 폰트 데이터와 캔버스 크기를 지정하면 SVG 문자열을 반환합니다. Taffy를 기반으로 Flexbox, Grid, 블록 레이아웃을 처리하는 자체 레이아웃 엔진을 구현하고, 텍스트 셰이핑에는 HarfBuzz를 사용합니다. 따라서 지원하는 HTML과 CSS의 하위 집합에 한해 브라우저 렌더링 결과와 일치하는 출력을 지향합니다.
- satori은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- satori은(는) MPL-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- satori은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. satori의 마지막 커밋은 2026년 10월 20일입니다.
- satori은(는) 어디에 사용할 수 있나요?
- 빌드 시점이나 요청 시점에 동적인 Open Graph 이미지와 소셜 카드 이미지 생성 서버 사이드 이미지 파이프라인에서 텍스트가 많은 그래픽을 SVG로 렌더링 SVG 출력을 Sharp에 전달해 PNG 이미지 생성
- satori는 어떻게 설치하나요?
- npm에서 satori 패키지를 설치합니다(README 발췌 부분에는 설치 명령이 나와 있지 않습니다). Overview 예시처럼 JSX 요소, width, height, fonts를 전달해 satori()를 호출합니다.
- satori은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/vercel/satori
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
JavaScript, TypeScript, JSX, JSON, CSS 등을 CLI와 LSP로 포맷하고 린트하는 Rust 기반 웹 프로젝트 툴체인입니다.
Baoyu가 Claude Code, Codex 및 유사한 에이전트를 위해 콘텐츠 제작, 이미지 생성, WeChat·X·Weibo 게시 기능을 제공하는 AI 에이전트 스킬 모음입니다.
AI 이미지 생성, 프레젠테이션, Figma 가져오기를 지원하는 데스크톱 앱으로 제공되는 오픈소스 디자인·크리에이티브 캔버스입니다.
제품 특성을 바탕으로 SVG 로고 시안을 만들고 Gemini 이미지 모델로 쇼케이스 이미지를 생성하는 Claude Code 스킬입니다.
런타임, 번들러, 테스트 러너, 패키지 관리자를 단일 실행 파일에 담은 빠른 올인원 JavaScript 및 TypeScript 툴킷입니다.