구조화된 데이터로 SEO 끌어올리기

minami·2025년 11월 22일
post-thumbnail

지금 회사에서 운영중인 서비스는 도메인 특성상 SEO가 중요하다. 그래서 올해 상반기에도 메타데이터를 대대적으로 손보거나, 구조화된 데이터를 추가하기도 하는 등 SEO를 개선하려고 여러 가지를 시도했었다.
아무래도 국내 서비스이다 보니 네이버 검색이 잘 되면 더 좋긴 하지만, 그쪽은 자사 서비스 노출이 더 우선시 되니까(^^) 아무래도 구글 검색에 더 초점을 맞춰서 진행이 될 수밖에 없었고, 실제로 구글 검색 유입 데이터 지표도 훨씬 좋았다. 그리고 SEO 개선을 시도할수록 지표가 개선되는 것도 구글이 훨씬 눈에 잘 보였다. 지금은 네이버 쪽도 많이 올라오긴 했는데 여전히 구글이 훨씬 낫다. 구글 짱! 글로벌 대기업 짱!
그래서 이번에는 구글을 위주로 SEO를 개선할 때 메타데이터만큼이나 중요하게 생각해볼 만한 구조화된 데이터에 대해서 정리를 해보려고 한다.

구조화된 데이터란?

구조화된 데이터(Structured Data)는 검색엔진이 콘텐츠의 의미를 정확하게 이해할 수 있도록 콘텐츠 정보를 표준화된 형식으로 제공하는 데이터다. 대표적으로 Schema.org 문법을 기반으로 JSON-LD, Microdata, RDFa 등의 방식으로 작성할 수 있다. 그 중에서도 구글에서는 JSON-LD 사용을 권장한다.

기본 JSON-LD 구조 예시

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "팝가",
  "url": "https://popga.co.kr"
}
</script>

이 구조화된 데이터가 중요한 이유는, 검색엔진 최적화(SEO) 기본 가이드Google 검색의 구조화된 데이터 마크업 소개를 보면 구조화된 데이터를 웹사이트에 추가하는 것이 SEO에 도움이 된다고 하기 때문이다.
구글의 검색 최적화 관련 문서에 명확하게 구조화된 데이터가 메타데이터보다 낫다거나 검색엔진 최적화에 효율적이라는 말은 없지만, 검색엔진이 콘텐츠의 의미를 정확하게 파악하는 데 구조화된 데이터가 큰 도움을 준다거나 구조화된 데이터를 추가하면 사용자에게 더욱 눈길을 끄는 검색결과를 제공하여 웹사이트와 더 많이 상호작용하도록 유도할 수 있으며, 이를 리치 결과라고 합니다. 같은 말을 보면 구조화된 데이터를 추가하면 구글 SEO에 훨씬 도움이 된다는 걸 알 수 있다.
그러니까 구글의 검색 결과에 노출이 잘 되려면 메타데이터만으로는 한계가 있는 것이다.

또한, 구조화된 데이터는 네이버 검색 엔진에서도 참고하는 중요한 데이터이다. 네이버 웹마스터 가이드 - 구조화된 데이터 마크업에도 네이버는 구조화된 데이터를 활용해 콘텐츠 특성에 맞는 검색 결과를 구성하여 제공합니다. 구조화된 데이터는 특정 콘텐츠의 정보를 콘텐츠의 유형에 맞는 세부 속성으로 구조화하여 웹 페이지에 추가한 데이터입니다. 네이버 검색로봇은 이 정보를 자동 수집해 콘텐츠 특성에 맞게 정보를 구성하고 검색 반영에 활용합니다.라는 문구가 있다.

실제 서비스에 적용한 스키마 타입 예시

우리 회사 서비스에는 현재 루트 페이지와 각 콘텐츠 형식에 따라 각각 적절한 Schema.org 타입을 선택하여 작성한 구조화된 데이터를 적용해뒀다.

루트 페이지에는 서비스에 대한 정보와 회사 정보 같은 것을 적용하기 위해서 WebSite, Organization, SiteNavigationElement를 적용했다.
그리고 각 콘텐츠 상세 페이지에는 콘텐츠 형식에 따라 Event와 BlogPosting 타입이 적용되어 있는데, 최근에는 Event 타입이 적용된 콘텐츠의 형식이 또 살짝 나뉘어지는 바람에 다른 타입을 추가하여 개선할 예정이다. SEO 개선 작업은 끝이 없는 듯...^_T

1. WebSite, Organization, SiteNavigationElement (루트 홈페이지)

검색엔진의 로봇이 가장 먼저 방문하는 루트 페이지에는 사이트의 정체성과 내비게이션 구조를 명시하는 것이 좋다. 그래서 다음 세 가지 타입을 함께 사용했다.

아래 예시는 각 타입별로 나눠둔 예시이기 때문에 내가 우리 서비스에 적용한 것처럼 여러 타입을 한 번에 적용하려면 JSON LD 하나에 합쳐서 작성하면 된다.
만약 모르겠으면 GPT나 제미나이나 커서 등 각자 사용중이신 AI 친구에게 물어보도록 하자.

WebSite 예시

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "서비스 명",
  "url": "서비스 홈페이지 링크",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "서비스 내 검색페이지 링크?q={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}
</script>

Organization 예시

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "회사명",
  "url": "회사 홈페이지 링크",
  "logo": "회사 홈페이지 로고"
}
</script>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "SiteNavigationElement",
      "name": "메뉴 이름1",
      "url": "메뉴 링크1"
    },
    {
      "@type": "SiteNavigationElement",
      "name": "메뉴 이름2",
      "url": "메뉴 링크2"
    }
  ]
}
</script>

2. Event

Event 타입은 콘서트나 뮤지컬 같은 공연, 지역 축제 같은 이벤트를 표현할 때 사용할 수 있다. 우리 서비스에서 이벤트 타입을 사용한 건 도메인 특성 상 날짜, 장소, 운영시간 등 이벤트 속성을 쓰는 게 정보를 명확하게 표현할 수 있기 때문이었다.

이벤트 타입에서 사용되는 날짜 속성에는 반드시 yyyy-MM-dd 형식을 써야 한다.

Event 예시

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "이벤트 명",
  "startDate": "2025-11-20 (이벤트 시작 날짜)",
  "endDate": "2025-12-03 (이벤트 종료 날짜)",
  "location": {
    "@type": "Place",
    "name": "장소 이름",
    "address": "장소의 주소"
  }
}
</script>

3. BlogPosting

BlogPosting 타입은 이름 그대로 블로그 포스트에 적합해서 보통은 블로그에 많이 사용된다. 우리 서비스가 블로그 서비스는 아니긴 하지만, 서비스 내 콘텐츠 중에 칼럼이나 정보 콘텐츠 성격이 강한 콘텐츠가 있었기 때문에 BlogPosting 타입을 적용했다.

여기에서도 datePublisheddateModified 같이 날짜가 들어가는 속성에는 yyyy-MM-dd 형식으로 작성이 되어야 한다.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "콘텐츠 제목",
  "datePublished": "2025-02-10 (콘텐츠 작성 날짜)",
  "dateModified": "2025-02-11 (콘텐츠 수정 날짜)",
  "author": {
    "@type": "Person",
    "name": "작성자 이름"
  },
  "image": "콘텐츠 대표 이미지 링크주소"
}
</script>

마무리

사실, 구글과 네이버 모두 구조화된 데이터가 반드시 검색결과에 백프로 반영되어 잘 노출이 된다고 보장하지는 않는다. 구조화된 데이터를 단순히 적용하기만 한다고 해서 데이터가 최적화되어 있지도 않은데 검색 유입 지표가 개선될 리가 없다는 뜻이다.
하지만 콘텐츠 내용과 잘 맞는 적절한 타입을 골라서 필요한 데이터를 정확한 문법으로 작성만 잘 해두면 SEO에 도움이 되는 것은 명백하다. 당장 우리 서비스만 해도 메타데이터만 적용했던 6월 중순이전에 비해 구조화된 데이터까지 적용한 6월 하순 이후에 검색 유입이 70% 이상 늘었을 만큼 효과를 보았다. 물론, 이걸로 끝은 아니다. 우리 서비스도 계속 발전하하는 중이고 검색 포털의 검색 최적화 방침도 계속 바뀌니까 최적화 작업은 계속 해야 하는 일이다. 우리 서비스만 해도 그간 새로 추가된 기능도 많고 화면 UI도 많이 바꼈다. 그래서 최근에 또 한 번 메타데이터를 바꿨고, 구조화된 데이터를 좀 더 개선해야 할 것 같아서 작업을 하는 중이기도 하다. 일이 끝나지 않는다...ㅎ...

그러니까 SEO 개선을 고민하고 있다면 메타데이터 점검은 필수이고, 구조화된 데이터까지 잘만 적용하면 금상첨화일 것이라는 말씀. 다들 검색 유입 지표에 고통 그만 받자구요..

profile
함께 나아가는 개발자💪

0개의 댓글