GatsbyJS에서 Open Graph 및 Twitter Card 설정하기 (SNS 미리보기 최적화)
GatsbyJS에서 Open Graph 및 Twitter Card 설정하기 (SNS 미리보기 최적화)
웹사이트를 공유할 때 미리보기 이미지, 제목, 설명이 제대로 표시되지 않는다면 클릭률(CTR)이 감소할 수 있습니다.
이번 글에서는 Gatsby에서 Open Graph(OG) 및 Twitter Card를 설정하여 SNS에서 공유할 때 최적화하는 방법을 설명하겠습니다. 🚀
1. Open Graph & Twitter Card란?
✅ Open Graph(OG)와 Twitter Card의 역할 비교
메타 태그 설명 사용 플랫폼
Open Graph (OG) | Facebook, LinkedIn 등에서 미리보기 콘텐츠를 표시 | Facebook, LinkedIn, Discord, Slack |
Twitter Card | 트위터에서 공유할 때 미리보기 생성 | |
meta 태그 | 검색 엔진 최적화를 위한 기본 메타 데이터 | Google, Bing |
🚀 이제 Open Graph와 Twitter Card를 Gatsby에서 적용하는 방법을 살펴보겠습니다.
2. gatsby-plugin-react-helmet 설치 및 설정
✅ React Helmet 플러그인 설치
npm install gatsby-plugin-react-helmet react-helmet
✅ gatsby-config.js에서 플러그인 활성화
module.exports = {
plugins: [`gatsby-plugin-react-helmet`],
};
🚀 이제 Gatsby에서 react-helmet을 활용하여 메타 태그를 추가할 수 있습니다!
3. SEO 컴포넌트 생성 및 Open Graph 추가
SNS에서 공유될 때 자동으로 메타 태그를 추가하려면 SEO 컴포넌트를 생성하여 동적으로 Open Graph 및 Twitter Card 정보를 설정해야 합니다.
✅ SEO 컴포넌트 생성 (src/components/SEO.js)
import React from "react";
import { Helmet } from "react-helmet";
import { useStaticQuery, graphql } from "gatsby";
const SEO = ({ title, description, image, url }) => {
const { site } = useStaticQuery(graphql`
query {
site {
siteMetadata {
siteUrl
title
description
}
}
}
`);
const metaTitle = title || site.siteMetadata.title;
const metaDescription = description || site.siteMetadata.description;
const metaImage = image ? `${site.siteMetadata.siteUrl}${image}` : `${site.siteMetadata.siteUrl}/default-og-image.jpg`;
const metaUrl = url || site.siteMetadata.siteUrl;
return (
<Helmet>
{/* 기본 메타 태그 */}
<title>{metaTitle}</title>
<meta name="description" content={metaDescription} />
{/* Open Graph 태그 */}
<meta property="og:title" content={metaTitle} />
<meta property="og:description" content={metaDescription} />
<meta property="og:image" content={metaImage} />
<meta property="og:url" content={metaUrl} />
<meta property="og:type" content="website" />
{/* Twitter Card 태그 */}
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={metaTitle} />
<meta name="twitter:description" content={metaDescription} />
<meta name="twitter:image" content={metaImage} />
</Helmet>
);
};
export default SEO;
✅ 설명
- useStaticQuery()를 사용하여 siteMetadata에서 기본값을 가져옴
- title, description, image, url이 없으면 기본값을 사용하도록 설정
- og:image, twitter:image를 사용하여 미리보기 이미지 설정
🚀 이제 SEO 컴포넌트를 블로그 페이지에 추가하여 적용할 수 있습니다!
4. 블로그 페이지에 SEO 컴포넌트 적용하기
이제 블로그 글 페이지에서 SEO 컴포넌트를 추가하여 Open Graph 및 Twitter Card를 설정하겠습니다.
📌 src/templates/blog-template.js 수정
import React from "react";
import { graphql } from "gatsby";
import SEO from "../components/SEO";
const BlogTemplate = ({ data }) => {
const post = data.markdownRemark;
const postUrl = `/blog/${post.frontmatter.slug}`;
const postImage = post.frontmatter.image || "/default-og-image.jpg";
return (
<main>
<SEO
title={post.frontmatter.title}
description={post.excerpt}
image={postImage}
url={postUrl}
/>
<h1>{post.frontmatter.title}</h1>
<p>{post.frontmatter.date}</p>
<div dangerouslySetInnerHTML={{ __html: post.html }} />
</main>
);
};
export const query = graphql`
query ($slug: String!) {
markdownRemark(frontmatter: { slug: { eq: $slug } }) {
frontmatter {
title
date
slug
image
}
excerpt
html
}
}
`;
export default BlogTemplate;
🚀 이제 블로그 글이 SNS에서 공유될 때 자동으로 Open Graph 미리보기가 생성됩니다!
5. 메타 태그가 정상적으로 적용되었는지 테스트하기
✅ Open Graph 테스트 (Facebook, LinkedIn, Discord 등)
- Facebook Sharing Debugger 접속
- 블로그 글 URL 입력 후 "디버그" 버튼 클릭
- Open Graph 태그가 정상적으로 적용되었는지 확인
✅ Twitter Card 테스트
- Twitter Card Validator 접속
- 블로그 글 URL 입력 후 "Preview Card" 클릭
- Twitter에서 미리보기 카드가 정상적으로 표시되는지 확인
🚀 이제 SNS에서 공유할 때 미리보기 이미지와 제목이 올바르게 표시됩니다!
6. Open Graph 및 Twitter Card 최적화 (고급 설정)
SNS 미리보기를 더 최적화하려면 OG 이미지 크기 및 메타 태그 최적화를 고려해야 합니다.
✅ 추천 Open Graph 이미지 크기
- Facebook & LinkedIn: 1200 x 630px
- Twitter (summary_large_image): 1200 x 675px
- Discord & Slack: 1024 x 512px
📌 OG 이미지 최적화 팁
- 이미지 용량 최적화 → PNG 대신 WebP 사용
- 브랜드 로고 포함 → 공유 시 브랜드 인지도 향상
- 텍스트 포함 → 블로그 제목을 강조하는 디자인
7. 결론
이번 글에서는 GatsbyJS에서 Open Graph 및 Twitter Card를 설정하여 SNS 미리보기를 최적화하는 방법을 배웠습니다.
✔ gatsby-plugin-react-helmet을 활용하여 SEO 메타 태그 추가
✔ Open Graph 태그 설정하여 Facebook, LinkedIn, Discord에서 최적화
✔ Twitter Card 태그 설정하여 트위터 공유 최적화
✔ SNS에서 미리보기 이미지가 제대로 표시되는지 테스트하는 방법 소개
🚀 다음 글에서는 GatsbyJS에서 웹사이트 성능을 최적화하는 방법을 다루겠습니다!
💡 Did you know?
SNS에서 웹사이트를 공유할 때 Open Graph와 Twitter Card가 없으면 기본 텍스트만 표시됩니다. SEO뿐만 아니라 SNS 최적화도 중요합니다! 🚀