예제
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"
+++

함께 보기