예제
KO

자동 OG 이미지

Hwaro는 프론트 매터에 커스텀 image가 없는 모든 페이지에 1200x630 Open Graph 미리보기 이미지를 자동 생성합니다. 생성된 경로가 page.image로 설정되므로 og:image 메타 태그가 자동으로 이를 사용합니다 — 템플릿을 고칠 필요가 없습니다.

자동 OG 이미지 페이지의 자동 생성 OG 이미지 이 페이지의 자동 생성 OG 이미지 (style = "terminal").

빠른 시작

[og.auto_image]
enabled = true
style = "terminal"
accent_color = "#2ee66b"
logo = "static/logo.png"

설정

타입 기본값 설명
enabled bool false 자동 OG 이미지 생성 여부
style string "default" 구성 프리셋 — 스타일 프리셋 참고
background string "#171310" 배경색(hex)
text_color string "#f4ede4" 제목과 설명의 텍스트 색
accent_color string "#ec7a66" 룰, 브랜드 마크, 색 블록에 쓰는 액센트 색
secondary_color string 투톤 스타일(split, brutalist, bauhaus, …)의 두 번째 색. 생략하면 accent_color에서 자동 파생
font_size int 48 제목 폰트 크기(px). 더 큰 값을 지정하지 않으면 각 스타일이 자체 스케일로 자동 확대
logo string 이미지에 삽입할 로고 파일 경로 (예: static/logo.png)
logo_position string "bottom-left" bottom-left, bottom-right, top-left, top-right
show_title bool true 사이트 이름 표시 (하단 브랜드 행, 또는 스타일별 자리 — 아이브로, 키커, 창 제목 표시줄)
output_dir string "og-images" 생성 이미지를 담을 디렉터리
format string "png" "png" 또는 "svg". 소셜 플랫폼은 SVG og:image를 렌더링하지 않으므로 PNG가 기본값
font_path string PNG 출력용 커스텀 .ttf/.otf. 폰트 체인의 맨 앞에 오고, 없는 글리프는 번들 폰트로 대체
background_image string 텍스트 뒤에 합성할 배경 사진
overlay_opacity float 0.45 background 색이 사진을 덮는 정도 (0.0 = 사진 그대로, 1.0 = 사진 가림)
text_panel float 0.0 0.0–0.6. 복잡한 배경에서 가독성을 높이는 텍스트 뒤 소프트 패널
pattern_opacity float 0.35 패턴 스타일(dots, grid, …)의 최대 알파. 각 패턴은 이 값을 정점으로 내부에서 점차 옅어짐
pattern_scale float 1.0 패턴 스타일의 배율 (최소 0.1)
accent_bars bool false 패턴 스타일에 클래식한 얇은 상/하단 액센트 바 추가
lazy_generate bool false hwaro serve에서 일괄 생성을 건너뛰고 첫 요청 때 렌더링. 대규모 사이트에 권장. hwaro build에는 영향 없음

제목은 Space Grotesk, 설명은 Space Grotesk Medium, terminal 스타일은 JetBrains Mono로 렌더링됩니다 — 모두 바이너리에 번들되어 있어 PNG 출력이 어떤 머신에서든 동일합니다. 제목에 필요하면 CJK를 지원하는 시스템 폰트가 체인에 자동으로 추가되고, 그 밖의 모든 경우는 DejaVu Sans Bold가 받쳐 줍니다.

스타일 프리셋

style 옵션이 구성 전체를 결정합니다. 아래 미리보기를 클릭하면 확대됩니다.

Signature — 그 자체로 완결된 구성:

스타일 설명
terminal 신호등 버튼, $ 프롬프트, 블록 커서가 있는 코드 에디터 창. 개발 블로그와 문서용
bauhaus 액센트/보조/파생 색으로 구성한 평면 기하학 아트 포스터 도형
halftone 오른쪽 가장자리에서 번져 들어오는 인쇄풍 하프톤 도트 필드

Modern — 생성된 배경 위의 타이포그래피 중심 구성:

스타일 설명
editorial 잡지 표지풍: 헤어라인 룰, 대문자 사이트명 키커, 세로 액센트 룰. 무난하고 조화로운 기본 선택지
artistic 필름 그레인을 더한 메시 그라디언트 색 필드. 완성도 높은 풍부한 느낌
hero 스포트라이트 글로우, 제목 첫 단어의 거대한 고스트 에코, 포스터 타이포그래피
surreal 오로라 구체와 흐르는 리본 밴드에 그레인을 더한 구성
monument 극단적 미니멀리즘 — 거대한 타이포, 넓은 여백, 제목 위 액센트 룰, 오른쪽 아래 브랜드 행
framed 초대장 카드: 중립 색 헤어라인 프레임에 액센트 코너 브래킷과 가운데 정렬 타이포

Geometric — 대담한 평면 색 블로킹:

스타일 설명
split 왼쪽 대각선 투톤 색 블록, 오른쪽 제목
band 제목을 뚫어낸 전체 폭 색 밴드와 그 위를 받치는 얇은 룰 — 잡지 표지 스타일
brutalist 강한 오프셋 그림자와 거대한 타이포가 있는 두꺼운 프레임 패널

Patterns — 초점이 있는 구성 (각 패턴은 pattern_opacity를 정점으로 내부에서 점차 옅어짐):

스타일 설명
default 머스트헤드: 상단의 대문자 사이트명 아이브로, 낮은 코너 글로우, 은은한 비네트
minimal 타이포만 — 제목 뒤의 액센트 마침표가 전부
dots 오른쪽 위 모서리에서 번져 들어오는 엇갈린 하프톤 도트
grid 초점 크로스헤어와 레지스트레이션 마크가 있는 가는 청사진 그리드
diagonal 오른쪽 아래 모서리의 45° 스트라이프 쐐기와 빗변의 액센트 룰
gradient 코너 글로우, 비네트, 그레인이 있는 액센트 톤 듀오톤 워시
waves 아래 가장자리에 겹겹이 쌓인 물결 밴드

미리보기

terminal 스타일 terminal
terminal 스타일

terminal — 프롬프트와 커서가 있는 코드 에디터 창

bauhaus 스타일 bauhaus
bauhaus 스타일

bauhaus — 평면 기하학 아트 포스터 도형

halftone 스타일 halftone
halftone 스타일

halftone — 인쇄풍 하프톤 도트 페이드

editorial 스타일 editorial
editorial 스타일

editorial — 잡지 표지풍: 룰, 키커, 세로 액센트 룰

artistic 스타일 artistic
artistic 스타일

artistic — 필름 그레인을 더한 메시 그라디언트 색 필드

hero 스타일 hero
hero 스타일

hero — 고스트 타이포 에코가 있는 스포트라이트 글로우

surreal 스타일 surreal
surreal 스타일

surreal — 오로라 구체와 흐르는 리본

monument 스타일 monument
monument 스타일

monument — 제목 위 액센트 룰과 거대한 타이포

framed 스타일 framed
framed 스타일

framed — 액센트 코너 브래킷이 있는 헤어라인 프레임

split 스타일 split
split 스타일

split — 대각선 투톤 색 블록

band 스타일 band
band 스타일

band — 뚫어낸 제목 뒤의 잡지풍 색 밴드

brutalist 스타일 brutalist
brutalist 스타일

brutalist — 강한 오프셋 그림자가 있는 두꺼운 프레임 패널

default 스타일 default
default 스타일

default — 머스트헤드: 아이브로, 코너 글로우, 비네트

minimal 스타일 minimal
minimal 스타일

minimal — 타이포와 액센트 마침표만

dots 스타일 dots
dots 스타일

dots — 오른쪽 위에서 번져 들어오는 하프톤 도트

grid 스타일 grid
grid 스타일

grid — 초점 크로스헤어가 있는 청사진 그리드

diagonal 스타일 diagonal
diagonal 스타일

diagonal — 액센트 빗변 룰이 있는 스트라이프 쐐기

gradient 스타일 gradient
gradient 스타일

gradient — 글로우, 비네트, 그레인이 있는 듀오톤 워시

waves 스타일 waves
waves 스타일

waves — 아래 가장자리에 겹겹이 쌓인 물결 밴드

배경 이미지

사진을 텍스트 뒤에 합성합니다:

[og.auto_image]
enabled = true
style = "editorial"
background_image = "static/og-bg.jpg"
overlay_opacity = 0.55

렌더링 순서는 배경색 → 사진 → 색 오버레이 → 스타일 구성 → 텍스트/로고입니다. overlay_opacity는 배경색이 사진을 얼마나 덮을지 결정합니다. 자체 배경을 생성하는 스타일(artistic, hero, surreal)은 사진이 설정되면 배경 생성을 건너뛰어 사진이 그대로 드러납니다.

미리보기

아래 예시는 overlay_opacity만 다릅니다 (같은 사진, style = "editorial", 검정에 가까운 background). 클릭하면 확대됩니다.

오버레이가 낮은 배경 이미지 overlay_opacity = 0.3
오버레이가 낮은 배경 이미지

overlay_opacity = 0.3 — 사진이 선명하게 유지됨

오버레이가 중간인 배경 이미지 overlay_opacity = 0.55
오버레이가 중간인 배경 이미지

overlay_opacity = 0.55 — 사진과 텍스트의 균형

오버레이가 높은 배경 이미지 overlay_opacity = 0.8
오버레이가 높은 배경 이미지

overlay_opacity = 0.8 — 사진은 어둡게, 텍스트가 도드라짐

출력 포맷

PNG가 기본값입니다 — stb_truetype과 stb_image_write로 자체 렌더링하므로 외부 도구가 필요 없습니다. 시스템 폰트는 자동 감지되며(macOS는 Helvetica/Arial, Linux는 DejaVu/Liberation/Noto), 최후 수단으로 번들된 DejaVu Sans Bold를 사용합니다.

CJK 문자가 들어간 제목에는 CJK를 지원하는 font_path(예: Noto Sans CJK)가 필요합니다 — 번들 폰트는 라틴 문자만 지원합니다.

의존성 없는 SVG 출력이 필요하면 format = "svg"로 설정합니다. 다만 소셜 플랫폼은 일반적으로 SVG og:image를 렌더링하지 않습니다.

증분 생성

Hwaro는 생성 이미지 옆에 .og_manifest.json을 저장하고 입력이 바뀌지 않은 페이지를 건너뜁니다. 빌드 간에 출력 디렉터리를 유지하면(예: --cache 모드) 증분 생성이 자동으로 동작합니다 — hahwul/hwaro GitHub Action은 이를 알아서 처리합니다.

변경 재생성 대상
페이지 제목, 설명, URL 해당 페이지만
OG 설정, 또는 로고/배경 이미지의 파일 내용 전체 페이지
디스크에 이미지 파일이 없음 해당 페이지만

개발 서버 속도 개선

OG 생성은 대규모 사이트에서 가장 비용이 큰 빌드 단계 중 하나입니다. 두 가지 방법이 있습니다:

동작

출력

/posts/hello-world/ 페이지는 public/og-images/posts-hello-world.png와 다음 태그를 만듭니다:

<meta property="og:image" content="https://example.com/og-images/posts-hello-world.png">

특정 페이지에 커스텀 이미지를 쓰려면 프론트 매터에 image를 설정합니다:

+++
title = "My Post"
image = "/images/custom-og.png"
+++

함께 보기