알아두면 좋은 내용
Open Graph(OG) — 한 줄 요약
Open Graph는 2010년 Facebook이 만든 메타데이터 규약으로, URL이 공유될 때 어떤 카드로 표시될지를 페이지 작성자가 직접 지정할 수 있게 합니다. 카카오톡·Facebook·LinkedIn·Slack·Discord는 모두 OG 태그를 읽고, X(Twitter)만 자체 twitter:* 태그를 먼저 참조합니다(없으면 OG로 대체). Open Graph 명세(ogp.me)가 필수로 정한 속성은 og:title·og:type·og:image·og:url 네 가지입니다.
- og:title — 카드 헤드라인 (필수)
- og:type — website·article·video.movie 등 (필수 — 이 도구의 코드 생성은 값이 없으면 website로 채움)
- og:image — 카드 썸네일 (필수, 1200×630 권장)
- og:url — 이 페이지의 대표(canonical) URL (필수)
- og:description — 카드 본문 한두 문장 (선택이지만 권장)
- og:site_name — 사이트 이름, 플랫폼에 따라 카드에 출처로 표시 (선택)
- og:locale — 언어_지역 형식, 기본값 en_US이므로 한국어 페이지는 ko_KR (선택)
이 도구의 검증은 명세 필수 여부보다 실제 카드 표시를 기준으로 합니다. 제목·이미지가 없으면 오류, og:title·og:image 없이 <title>이나 twitter:image로 대신 표시되는 경우는 경고로 알리고, 제목은 60자·설명은 160자를 넘으면 잘릴 수 있다고 표시합니다. 이 글자 수 기준은 플랫폼이 공개한 값이 아니라 카드 폭에서 흔히 잘리는 길이를 잡은 실무 기준입니다.
카카오톡 OG 가이드 — 가장 까다로움
한국에서 가장 중요한 공유 채널이면서, 캐시 때문에 수정이 바로 반영되지 않아 가장 자주 문의가 생기는 곳이 카카오톡입니다. 다음 규칙을 알고 있으면 대부분의 문제를 피할 수 있습니다.
이미지 비율
2:1 (800×400)
채팅방 미리보기는 800×400으로 리사이즈·크롭됩니다(카카오 데브톡 답변 기준). 1200×630 원본이면 상하가 조금 잘림.
이미지 용량
5MB 미만 권장
jpg·png·webp. X 카드 이미지 한도(5MB)에 맞추면 여러 플랫폼에 공통으로 안전.
캐시
기간 비공개
한 번 수집되면 일정 기간 유지 — 수정 후에는 캐시 초기화 도구로 삭제.
이미지 주소
절대 URL
og:image는 https://로 시작하는 전체 주소로. 상대 경로는 해석에 실패할 수 있음.
문자 인코딩
UTF-8
한글 깨짐 방지 — 문서와 Content-Type에 charset 명시.
리다이렉트
최종 URL 공유
단축 URL·여러 단계 리다이렉트보다 최종 주소를 직접 공유하는 편이 안전.
플랫폼별 카드 차이 한눈에
같은 태그를 넣어도 플랫폼마다 이미지 비율, 캐시 기간, 수정 반영 방법이 다릅니다. 캐시 기간은 각 플랫폼 공식 문서에 적힌 값만 적었고, 공개되지 않은 곳은 비공개로 표시했습니다.
| 플랫폼 | 이미지 비율 | 캐시 | 수정 반영·특이사항 |
|---|---|---|---|
| 카카오톡 | 2:1 (800×400으로 리사이즈·크롭) | 일정 기간 (비공개) | OG 캐시 초기화 도구로 즉시 삭제 |
| 1.91:1 | 첫 공유 때 수집·캐시 | Sharing Debugger로 다시 스크랩 · 이미지 최소 200×200, 8MB 이하 | |
| X (Twitter) | 큰 카드 2:1 · summary 1:1 | 약 7일 | twitter:card 필수 · Twitterbot은 robots.txt 준수 |
| 1.91:1 | 약 7일 | Post Inspector로 다시 수집 | |
| Slack | — | 약 30분 | Slackbot-LinkExpanding이 OG·Twitter Card·oEmbed 태그를 읽음 |
1200×630 안전 영역 — 제목 텍스트, 어디까지 잘리나
1200×630 한 장으로 통일해도 플랫폼마다 표시 비율이 달라 가장자리가 잘립니다. X는 카드 비율에 맞춰 이미지를 잘라 표시하고, Facebook은 “1.91:1에 가깝게 유지해야 피드에서 크롭 없이 전체가 표시된다”고 공식 문서에 명시합니다. 1200×630 원본이 각 비율에서 잃는 픽셀을 계산하면 이렇습니다(중앙 크롭 기준 — 크롭 위치는 앱 버전에 따라 달라질 수 있으니 중앙 배치가 안전).
| 표시 비율 | 대표 사례 | 잘리는 픽셀 | 살아남는 영역 |
|---|---|---|---|
| 1.91:1 | Facebook·LinkedIn 큰 카드 | 상하 각 약 1px | 중앙 1200×628 |
| 2:1 | X 큰 카드·카카오톡 기본형(800×400) | 상하 각 15px | 중앙 1200×600 |
| 1:1 | X summary·리스트형 작은 썸네일 | 좌우 각 285px | 중앙 630×630 |
상하 15px 크롭은 여유가 있지만, 진짜 위험은 정사각 썸네일 — 좌우 폭의 절반 가까이가 사라집니다. 제목 텍스트·로고는 중앙 80% 영역(가로 960×세로 504px) 안에 두고, 정사각 크롭까지 버텨야 한다면 핵심 요소를 중앙 630px 폭 안에 배치하세요. Facebook 공식 기준으로 이미지는 최소 200×200px 이상이어야 하고, 600×315px 이상이어야 큰 이미지 카드로 표시되며, 파일 용량은 8MB를 넘을 수 없습니다.
프레임워크별 삽입 위치 — 순수 HTML·Next.js·워드프레스
검증이 끝났으면 실제 코드에 넣을 차례. 순수 HTML이라면 <head> 안에 명세 필수 4개(og:title·og:type·og:image·og:url)에 og:description·twitter:card를 더한 아래 6줄이 최소 세트입니다 — 이 도구의 코드 생성 결과와 같은 골격이에요.
<meta property="og:title" content="글 제목" /> <meta property="og:description" content="한 줄 설명" /> <meta property="og:image" content="https://example.com/og.png" /> <meta property="og:url" content="https://example.com/page" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary_large_image" />
OG 태그는 property 속성, 트위터 태그는 name 속성을 쓰는 것이 각 명세의 표기입니다. 이 도구의 HTML 분석은 두 속성을 모두 읽지만, 일부 크롤러는 한쪽만 읽으므로 명세대로 적는 편이 안전합니다.
Next.js(App Router)는 메타태그를 직접 쓰지 않고 page.tsx의 metadata 객체로 선언합니다. 같은 라우트 폴더에 opengraph-image.png(또는 ImageResponse를 반환하는 opengraph-image.tsx)를 두면 og:image 태그가 자동 생성됩니다. 아래처럼 이미지에 상대 경로를 쓰려면 루트 layout에 metadataBase를 지정해야 절대 URL로 바뀌어 출력됩니다.
// app/blog/[slug]/page.tsx
export const metadata = {
openGraph: {
title: '글 제목',
description: '한 줄 설명',
url: 'https://example.com/blog/1',
siteName: '사이트 이름',
images: [{ url: '/og.png', width: 1200, height: 630 }],
type: 'article',
},
twitter: { card: 'summary_large_image' },
}- 워드프레스 + Yoast SEO — 글 편집 화면의 Yoast SEO 박스에서 소셜(Social) 탭을 열면 게시물별 OG 이미지·제목·설명을 지정할 수 있고, 여기 입력한 이미지가 대표 이미지보다 우선 적용됩니다.
- 워드프레스 + Rank Math — 메타박스의 Social 탭에서 Facebook용·X용 이미지를 따로 설정하고, X 카드 타입(summary / summary_large_image)도 선택합니다.
- 어느 쪽이든 발행 후 이 도구에 URL을 넣어 실제 출력을 확인하고, 수정했다면 카카오·Facebook 캐시를 초기화하세요.
자주 묻는 질문
메타태그를 수정했는데 카카오톡 카드가 그대로예요.
?v=2 같은 쿼리를 붙여 새 주소로 공유합니다.og:image는 어느 크기·비율이 가장 안전한가요?
https://example.com/og.png 같은 절대 URL을 쓰세요 — Open Graph 명세의 값은 URL이며, 상대 경로는 크롤러가 해석하지 못할 수 있습니다.URL 입력 모드에서 "페이지를 불러올 수 없다"고 나옵니다.
<head> 부분을 복사해 넣으면 같은 방식으로 분석합니다. 이때 자바스크립트로 나중에 삽입되는 메타태그는 페이지 소스에 없고, 자바스크립트를 실행하지 않는 대부분의 SNS 크롤러도 그 태그를 보지 못합니다 — 메타태그는 서버가 보내는 HTML에 들어 있어야 합니다.twitter:card는 꼭 따로 넣어야 하나요?
twitter:* 태그를 먼저 읽고, title·description·image가 없으면 og:*로 대신합니다. 하지만 카드 종류를 정하는 twitter:card는 대체값이 없는 필수 태그라 빠지면 카드가 표시되지 않을 수 있습니다. <meta name="twitter:card" content="summary_large_image"> 한 줄은 넣어 두세요. summary_large_image는 큰 이미지 카드, summary는 작은 정사각 썸네일 카드입니다.og:image에 동적 이미지(서버에서 생성)를 써도 되나요?
opengraph-image.tsx(ImageResponse), Vercel OG, Cloudflare Workers 등으로 글마다 제목이 들어간 이미지를 만드는 방식이 흔합니다. 다만 SNS 크롤러는 응답을 오래 기다리지 않으므로 이미지 생성은 빠르게 끝나야 하고, 한 번 만든 이미지는 Cache-Control로 캐시해 두는 것이 좋습니다. 이미지 URL이 배포마다 바뀌면 플랫폼 캐시와 어긋나므로 주소는 안정적으로 유지하세요.같은 페이지를 SNS별로 다르게 보이게 할 수 있나요?
og:*를 공통값으로 두고 twitter:title·twitter:description·twitter:image를 따로 지정하면 X에서만 다른 카드가 표시됩니다. 카카오톡·Facebook·LinkedIn은 모두 og:*를 읽으므로 이들 사이에서는 같은 값을 공유합니다. 워드프레스의 Yoast·Rank Math는 이 구분을 게시물별 Social 탭에서 설정하게 해 줍니다.검색엔진(SEO)에는 OG 태그가 영향을 미치나요?
<title>과 meta description, 본문 내용을 바탕으로 만들어지고, OG 태그는 SNS 공유 카드를 위한 것입니다. 다만 공유 카드가 잘 보이면 공유 링크의 클릭이 늘어 간접적으로 방문이 늘 수 있으므로, 두 종류의 태그를 모두 채워 두는 것이 좋습니다.검색에서 막아 둔 페이지도 공유 카드가 보이나요?
noindex 메타 태그는 검색 색인만 막으므로 공유 카드와는 무관합니다. 하지만 robots.txt는 다릅니다 — X의 크롤러(Twitterbot)는 robots.txt를 따르므로 사이트 전체를 Disallow로 막아 두면 X 카드가 만들어지지 않습니다. 크롤러마다 robots.txt 준수 여부가 달라서, 검색만 막으려면 robots.txt보다 noindex를 쓰는 편이 공유 카드에 안전합니다.참고 자료
- Open Graph 프로토콜(새 창)ogp.me
- Meta 공유 이미지 가이드(새 창)developers.facebook.com
- 카카오 공유 디버거(새 창)developers.kakao.com
- X Cards 문서(새 창)developer.x.com
- LinkedIn 공유 도움말(새 창)linkedin.com
- Slack 링크 미리보기 봇(새 창)api.slack.com
- 계산 기준
- 태그 해석·검증 규칙 = Open Graph 프로토콜 + 플랫폼 공식 개발자 문서 기준
- 오류 제보
- 결과가 다르면 contact@youtil.kr로 입력 조건을 알려 주세요. 평일 기준 1~3일 안에 답변합니다.