페이지에 titlemeta description을 분명하게 넣었는데도, 실제 Google 검색 결과에서는 전혀 다른 문구가 보일 때가 있습니다. 제목은 H1처럼 바뀌어 있고, 설명은 메타태그 대신 본문 한 문장이 잘려서 나오고, 어떤 경우에는 사이트 이름이나 카테고리 문구가 붙어서 의도보다 어색해 보이기도 합니다. 이때 가장 먼저 해야 할 일은 “Google이 이상하게 바꿨다”라고 보기보다, Google이 왜 다른 신호를 더 적합하다고 판단했는지를 거꾸로 추적하는 것입니다.

Google Search Central 문서를 보면 답이 꽤 명확합니다. 검색 결과의 제목인 title link는 <title> 하나만으로 결정되지 않습니다. Google은 <title>, 페이지의 주 시각 제목, <h1>, og:title, 눈에 띄는 다른 텍스트, 내부 및 외부 링크의 앵커 텍스트까지 여러 신호를 함께 봅니다. snippet도 마찬가지입니다. Google은 기본적으로 페이지 내용에서 snippet을 만들고, 필요하다고 판단할 때만 <meta name="description">을 사용합니다. 즉 메타태그를 “반드시 그대로 노출되는 복사본”이라고 생각하면 계속 헷갈리게 됩니다.

그래서 이 글에서는 검색 결과의 title과 description이 어긋날 때, 제가 실제로 어떤 순서로 문제를 좁혀가는지 정리해보겠습니다.

검색/신뢰메타데이터

meta title과 description이 검색 결과에 이상하게 나올 때 수정법

검색 결과의 제목과 설명이 내가 넣은 메타데이터와 다르게 보일 때 무엇부터 점검해야 하는지 정리합니다. Google이 title link와 snippet을 어떻게 다시 구성하는지, Next.js에서 어떤 부분을 맞춰야 하는지 실제 흐름대로 설명합니다.

핵심 1

먼저 결론: title 문제와 description 문제는 분리해서 봐야 한다

핵심 2

검색 결과 제목은 <title>만으로 결정되지 않는다는 점부터 받아들인다

핵심 3

title이 이상할 때는 가장 먼저 <title>, H1, 페이지 상단 텍스트가 서로 같은 이야기를 하는지 본다

메타데이터검색/신뢰meta title description fixes
title link와 snippet이 의도와 다를 때 title, H1, 본문, canonical, 메타 설명, 내부 링크를 순서대로 확인하는 흐름

먼저 결론: title 문제와 description 문제는 분리해서 봐야 한다

두 현상은 비슷해 보이지만 원인이 다릅니다.

  • title link가 달라지는 이유
    • <title>이 비어 있거나 반쯤 비어 있음
    • <title>이 페이지 내용과 안 맞음
    • 여러 큰 제목이 섞여 있어 main title이 불분명함
    • 언어나 문자 체계가 페이지 본문과 안 맞음
    • boilerplate가 너무 많음
  • description/snippet이 달라지는 이유
    • Google이 본문에서 더 적절한 문장을 찾았음
    • meta description이 페이지마다 비슷함
    • meta description이 실제 페이지 내용을 잘 요약하지 못함
    • 검색어 맥락상 본문 일부가 더 관련 있다고 판단됨

titledescription은 한 번에 “메타태그 문제”로 묶지 말고 따로 봐야 합니다.

1. 검색 결과 제목은 <title>만으로 결정되지 않는다는 점부터 받아들인다

Google의 title link 문서는 제목 생성이 완전히 자동이며, 페이지 콘텐츠와 외부 참조를 함께 고려한다고 설명합니다. 공식 문서에 나온 title link의 주요 신호는 아래와 같습니다.

  • <title> 요소
  • 페이지에 보이는 주 시각 제목
  • <h1> 같은 heading 요소
  • og:title
  • 스타일상 크게 강조된 텍스트
  • 페이지의 다른 텍스트
  • 페이지 내부 링크 앵커
  • 외부에서 이 페이지를 가리키는 링크 텍스트

이 말은 아주 중요합니다. 검색 결과 제목이 내가 넣은 <title>과 다르다고 해서, 곧바로 <title>만 고치면 해결된다고 볼 수 없다는 뜻입니다. 페이지 본문, 카드 제목, H1, OG 제목, 심지어 다른 페이지에서 이 글을 부르는 방식까지 함께 봐야 합니다.

2. title이 이상할 때는 가장 먼저 <title>, H1, 페이지 상단 텍스트가 서로 같은 이야기를 하는지 본다

Google은 <title>이 페이지 내용을 제대로 반영하지 못하거나, obsolete 하거나, inaccurate 하거나, half-empty 하면 다른 소스에서 title link를 만들 수 있다고 설명합니다. 문서에 나온 대표 사례도 아주 실무적입니다.

  • <title>| Site Name</title> 같은 반쯤 빈 title
  • 2020이라고 적혀 있는데 실제 본문 상단은 2021인 오래된 title
  • 페이지는 포괄적인데 title은 지나치게 길거나 엉뚱한 표현을 씀

그래서 제가 가장 먼저 보는 건 이 세 가지입니다.

  1. 브라우저 탭의 제목
  2. 페이지 첫 화면의 실제 H1
  3. 검색 결과에 나온 제목

이 셋이 서로 너무 다르면 Google이 <title> 대신 다른 신호를 썼을 가능성이 높습니다.

예를 들면 이런 식입니다.

<title>meta title과 description이 검색 결과에서 어긋날 때 수정법 | Signal Ledger</title>
<h1>meta title과 description이 검색 결과에 이상하게 나올 때 수정법</h1>

이 정도 차이는 자연스럽습니다. 하지만 <title>은 “SEO 팁 모음 | 블로그”인데 H1은 “meta title과 description이 검색 결과에 이상하게 나올 때 수정법”이라면, Google 입장에서는 H1 쪽이 페이지를 더 잘 설명한다고 볼 수 있습니다.

3. 중복 boilerplate가 많으면 Google이 title을 다시 만들기 쉽다

Google 문서는 반복되거나 boilerplate가 많은 title을 피하라고 분명히 말합니다. 같은 사이트 안의 여러 페이지가 거의 같은 제목을 공유하면, 검색 결과에서 서로 구분이 안 되기 때문입니다.

예를 들어 이런 패턴은 좋지 않습니다.

<title>검색 최적화 블로그 | Signal Ledger</title>
<title>검색 최적화 블로그 | Signal Ledger</title>
<title>검색 최적화 블로그 | Signal Ledger</title>

반면 아래는 훨씬 낫습니다.

<title>Search Console 등록 직후 체크리스트 | Signal Ledger</title>
<title>새 글이 색인되지 않을 때 점검 순서 | Signal Ledger</title>
<title>meta title과 description이 어긋날 때 수정법 | Signal Ledger</title>

즉 브랜드명은 짧게 유지하고, 앞부분은 각 페이지의 핵심 차이를 드러내는 편이 좋습니다.

4. 한글 페이지라면 title의 언어와 문자 체계도 맞춰야 한다

Google의 title link 문서는 페이지의 주 콘텐츠 언어와 <title>의 언어 또는 문자 체계가 다르면 다른 title link를 만들 수 있다고 설명합니다. 이건 한국어 기술 블로그에서 특히 중요합니다.

예를 들어 본문은 한국어인데 title만 과하게 영어로 쓰면, Google이 페이지 상단의 한국어 제목이나 다른 신호를 더 적합하다고 볼 수 있습니다. 그래서 저는 한국어 블로그에서는 이렇게 맞추는 편을 추천합니다.

  • 핵심 문장은 한국어
  • 기술 용어는 필요한 범위에서 영어 병기
  • H1, <title>, OG title의 언어 톤을 최대한 맞춤

예:

좋음: meta title과 description이 검색 결과에 이상하게 나올 때 수정법
무리함: How to Fix Search Result Meta Title Description Mismatch for Korean Blog

이건 영어를 쓰지 말라는 뜻이 아니라, 페이지의 가장 큰 제목과 메타데이터가 같은 언어 흐름을 갖도록 맞추라는 의미입니다.

5. description이 다르게 보일 때는 “메타 설명이 무시됐다”보다 “본문 문장이 더 적합했다고 판단됐다”로 먼저 본다

Google의 snippet 문서는 이 부분을 아주 명확하게 설명합니다. snippet은 기본적으로 페이지 콘텐츠에서 생성되고, Google이 더 정확한 설명이라고 판단할 때 meta description을 사용할 수 있습니다. 즉 meta description은 후보 신호이지, 강제 출력값이 아닙니다.

이 말은 곧 이런 뜻입니다.

  • 메타 설명을 잘 써도 Google이 본문 일부를 보여줄 수 있다
  • 검색어에 따라 다른 snippet이 나올 수 있다
  • 메타 설명이 페이지 내용을 충분히 설명하지 못하면 본문으로 대체될 수 있다

그래서 description 문제는 <meta name="description">만 고치지 말고, 페이지 도입부와 첫 단락도 같이 봐야 합니다.

6. description이 어색하면 페이지 첫 문단부터 다시 읽어본다

snippet은 본문에서 만들어질 수 있기 때문에, 저는 검색 결과 설명이 이상할 때 메타 설명보다 먼저 첫 두 단락을 같이 봅니다. 특히 아래 같은 문제가 자주 보입니다.

  • 첫 문장이 너무 장황함
  • 페이지 본문 첫 부분이 주제와 직접 관련이 없음
  • 글의 핵심 질문보다 배경 설명이 길게 먼저 나옴
  • 검색어와 닿는 단어가 첫 화면에 거의 없음

예를 들어 메타 설명이 잘 되어 있어도, 본문 첫 문장이 이런 식이면 snippet이 어색해질 수 있습니다.

이 글은 지난 몇 주 동안 블로그를 운영하면서 느낀 막연한 생각에서 시작되었다...

반면 아래는 snippet 소스로 써도 덜 어색합니다.

검색 결과의 title과 description이 메타태그와 다르게 보일 때는 title, H1, canonical, 본문 첫 문장, 내부 링크를 순서대로 점검해야 합니다.

즉 메타 description을 고치는 것만큼, 글의 첫 문단을 검색 친화적으로 다시 쓰는 것도 중요합니다.

7. description은 페이지마다 고유해야 하고, 집계 페이지와 글 페이지를 다르게 써야 한다

Google의 snippet 문서는 페이지마다 고유한 description을 쓰라고 권장합니다. 같은 설명을 모든 페이지에 반복하는 건 도움이 되지 않기 때문입니다. 특히 블로그에서는 홈, 카테고리, 글 상세의 역할이 다르기 때문에 설명도 달라야 합니다.

제가 보통 나누는 기준은 이렇습니다.

  • 홈: 사이트 전체 정체성
  • 아카이브/카테고리: 해당 묶음의 성격
  • 글 상세: 그 글 하나가 해결하는 질문

예를 들면:

홈 description:
웹사이트 구조, 검색 신뢰, 성능, 작은 도구 제작 경험을 기록하는 독립 기술 출판물입니다.

글 상세 description:
검색 결과의 title과 description이 메타태그와 다르게 보일 때 title, H1, canonical, 본문 문장, Next.js 메타데이터를 어떻게 점검할지 정리합니다.

이렇게 역할을 분리해야 Google이 집계 페이지와 상세 페이지를 헷갈리지 않습니다.

8. canonical이 흔들리면 title과 description 문제처럼 보일 수 있다

Google의 canonical 문서는 같은 페이지에 대해 서로 다른 canonical 신호를 보내지 말라고 하고, 내부 링크도 canonical URL로 일관되게 연결하라고 권장합니다. 이건 title과 description 문제에도 연결됩니다.

왜냐하면 Google이 지금 보고 있는 대표 URL이 내가 생각한 URL이 아닐 수 있기 때문입니다. 예를 들어:

  • www와 non-www 둘 다 열림
  • 쿼리 파라미터 버전이 존재함
  • 다른 경로가 canonical로 선택됨

이 경우 “내가 수정한 메타태그가 왜 안 보이지?”라고 느끼지만, 실제로는 Google이 다른 URL 버전을 대표로 보고 있을 수 있습니다. 그래서 메타데이터 수정이 반영되지 않는다고 느낄 때는 항상 canonical도 같이 봐야 합니다.

curl.exe https://www.example.com/blog/meta-title-description-fixes | Select-String 'rel="canonical"'

이전 글에서 정리한 www, non-www, canonical 정리 글을 같이 보면 이 부분을 더 쉽게 정리할 수 있습니다.

9. Next.js에서는 generateMetadata와 페이지 내용이 같은 방향을 가리켜야 한다

현재 이 레포는 App Router에서 generateMetadata를 사용해 글별 titledescription을 만들고 있습니다. 구조는 대략 이런 흐름입니다.

export async function generateMetadata({
  params,
}: BlogPostPageProps): Promise<Metadata> {
  const { slug } = await params;
  const article = await getPublishedArticleBySlug(slug);

  if (!article) {
    return {};
  }

  return {
    title: article.seoTitle ?? article.title,
    description: article.seoDescription ?? article.summary,
    openGraph: {
      title: article.seoTitle ?? article.title,
      description: article.seoDescription ?? article.summary,
    },
  };
}

이 패턴 자체는 좋습니다. 다만 여기서 자주 생기는 문제는 세 가지입니다.

  • seoTitle은 너무 광고 문구 같고 H1은 너무 담백함
  • summary는 일반 소개문인데 본문은 전혀 다른 문제를 다룸
  • og:titletitle이 완전히 다른 톤이라 Google이 다른 신호를 채택함

그래서 저는 이 셋을 최대한 가깝게 맞춥니다.

  • H1: 독자가 페이지에서 바로 보는 제목
  • SEO title: 검색 결과용으로 조금 더 다듬은 제목
  • summary/meta description: 이 페이지가 해결하는 문제를 한 문장으로 설명

차이는 있어도 되지만, 서로 다른 페이지처럼 느껴질 정도로 벌어지면 안 됩니다.

10. 수정 후에는 “바로 반영 안 돼도 정상”이라는 시간을 고려해야 한다

Google의 title link 문서는 title source를 수정한 뒤 Google이 이를 반영하려면 재크롤링과 재처리가 필요하고, 며칠에서 몇 주가 걸릴 수 있다고 설명합니다. 그래서 수정 직후 검색 결과가 그대로라고 해서 곧바로 실패라고 판단하면 안 됩니다.

제가 보통 보는 순서는 이렇습니다.

  1. HTML 소스에서 <title>과 meta description이 의도대로 나오는지 확인
  2. URL Inspection에서 live test 실행
  3. 필요하면 recrawl 요청
  4. 며칠 뒤 다시 검색 결과 확인

즉 수정은 빠르게 할 수 있어도, 반영 판단은 시간을 두고 해야 합니다.

제가 실제로 쓰는 점검 순서

검색 결과의 title과 description이 이상하면 저는 보통 이렇게 봅니다.

  1. 검색 결과에 보인 문구를 캡처한다
  2. 현재 HTML의 <title>과 meta description을 확인한다
  3. H1과 첫 화면 텍스트가 title과 같은 방향인지 본다
  4. 본문 첫 두 단락이 snippet으로 써도 자연스러운지 읽는다
  5. canonical과 대표 도메인이 맞는지 본다
  6. 내부 링크 앵커가 엉뚱한 표현을 반복하지 않는지 본다
  7. 필요하면 generateMetadataseoTitle, seoDescription, summary를 수정한다
  8. live test 또는 recrawl 요청 후 며칠 기다린다

간단한 확인은 shell로도 가능합니다.

curl.exe https://www.example.com/blog/meta-title-description-fixes | Select-String "<title>"
curl.exe https://www.example.com/blog/meta-title-description-fixes | Select-String 'meta name="description"'
curl.exe https://www.example.com/blog/meta-title-description-fixes | Select-String 'rel="canonical"'

이 정도만 해도 “메타태그 자체가 잘못된 건지”, “Google이 다른 신호를 더 적합하게 본 건지”를 꽤 빨리 구분할 수 있습니다.

마무리

검색 결과의 title과 description이 의도와 다르게 보일 때 가장 중요한 건, 메타태그를 복사본처럼 생각하지 않는 것입니다. Google은 title link를 만들 때 <title>뿐 아니라 H1, 큰 제목, og:title, 링크 텍스트까지 함께 보고, snippet은 기본적으로 본문에서 만들되 필요할 때 meta description을 사용합니다.

그래서 수정도 그 구조에 맞춰야 합니다. title 문제는 <title>, H1, main title, boilerplate, 언어 일치, canonical을 함께 보고, description 문제는 meta description과 함께 본문 첫 문단과 페이지 고유성까지 같이 봐야 합니다. Next.js에서는 generateMetadata만 고치고 끝내지 말고, 실제 페이지 내용과 메타데이터가 같은 질문을 향하도록 맞추는 편이 훨씬 안정적입니다.

Search Console 기본 점검이 아직 익숙하지 않다면 Search Console 등록 직후 체크리스트 글새 글 색인 점검 글을 먼저 보고 오는 흐름도 좋습니다.

참고 문서