대규모 OG 이미지
대규모 OG 이미지 생성은 대규모 사이트의 모든 페이지(수천 개의 블로그 게시물, 제품 또는 문서 페이지)에 대해 고유하고 정확한 소셜 미리보기를 자동으로 생성하는 것을 의미합니다. FastOG는 각 이미지를 요청 시 렌더링(1회 렌더링)하며, Cloudflare는 동일한 URL을 영구적으로 캐싱하므로 규모가 커져도 비용이나 설정 시간이 증가하지 않습니다.
규모 있는 고유 이미지 생성의 문제점
수천 개의 1200×630 크기를 수동으로 제작하는 것은 현실적으로 불가능합니다. 대부분의 팀은 사이트 전체에 하나의 일반화된 카드만 사용하는 방식으로 대체하지만, 이는 기회 손실입니다. 실제 제목이 포함된 페이지별 카드는 더 많은 공유와 클릭을 유도하기 때문입니다. 해결책은 결정론적 온디맨드 렌더링입니다. 이미지는 렌더링 시점의 페이지 데이터로부터 파생됩니다.
FastOG가 확장 가능한 이유
핵심 아이디어는 콘텐츠 서명된 캐시된 URL입니다:
- 페이지 제목과 렌더링 시점의 필드들로 URL에 서명합니다 (콘텐츠의 순수 함수).
- 크롤러가 URL을 한 번 가져오면, FastOG가 PNG를 렌더링(1회 렌더링)하고 에지에서 캐시합니다.
- 동일한 URL의 모든 후속 요청은 캐시에서 제공됩니다 — 즉시 처리되며 카운트되지 않습니다.
따라서 10,000개의 고유 페이지는 한 번에 10,000회 렌더링으로 카운트되며, 무제한 공유는 이후에는 비용이 들지 않습니다.
배치 / 체계적인 롤아웃
전체 사이트에 og:image를 롤아웃하려면 빌드 시점이나 게시 시점에서 모든 페이지의 URL을 생성하세요:
// Static generation — generateMetadata per route
export async function generateStaticParams() {
return posts.map((p) => ({ slug: p.slug }));
}
export function generateMetadata({ params }) {
const post = posts.find((p) => p.slug === params.slug);
return {
openGraph: {
images: [generateOgImageUrl({
template: "blog",
title: post.title,
subtitle: post.excerpt,
author: post.author,
})],
},
};
}
규모 확장을 저렴하게 유지하는 패턴
| 패턴 | 도움이 되는 이유 |
|---|---|
| 빌드/렌더링 시점에 서명 | 결정론적 URL → 공유 캐싱 |
| 콘텐츠 유형별로 템플릿 재사용 | 일관된 브랜드, fewer 디자인 결정 |
| 동일한 URL 캐싱 | 반복 공유는 카운트되지 않음 |
| 게시 시점에 생성, 매 요청마다 생성하지 않음 | 첫 번째 공유 시 콜드 렌더링 방지 |
자주 묻는 질문
1,000페이지 또는 10,000페이지의 비용은 얼마인가요?
고유한 이미지당 1회 렌더링이 필요합니다. 10,000개의 고유 페이지는 1회 렌더링에 10,000개의 렌더링을 의미하며, 무제한 재공유는 무료입니다. Dynamic API 요금제는 요금제 페이지를 참조하세요.
콘텐츠가 자주 변경되는 페이지는 어떻게 되나요?
콘텐츠가 변경될 때마다 새로운 URL과 새로운 렌더링(할당량 1회 사용)이 생성됩니다. 변경되지 않는 페이지는 캐시에 유지됩니다.
정적 빌드 중 OG 이미지를 생성할 수 있나요?
네 — 많은 팀이 빌드/게시 시점(SSG)에 이미지 URL을 생성하고 저장하여, 첫 번째 공유 시 콜드 렌더링이 발생하지 않도록 합니다.