로봇 메타 태그, data-nosnippet 및 X-Robots-Tag 사양

개요

이 문서에서는 페이지 및 텍스트 수준 설정을 사용하여 Google 검색결과에 나오는 콘텐츠를 어떻게 제어할 수 있는지 설명합니다. 사용자는 HTML 페이지나 HTTP 헤더에 메타 태그를 삽입하여 페이지 수준 설정을 지정할 수 있습니다. 페이지 내 HTML 요소에 data- nosnippet 속성을 사용하여 텍스트 수준 설정을 지정할 수 있습니다.

로봇 메타 태그 사용

로봇 메타 태그를 사용하면 개별 페이지의 색인이 생성되는 방식과 Google 검색결과에서 페이지가 사용자에게 게재되는 방식을 제어하는 자세한 페이지별 접근방식을 활용할 수 있습니다. 다음과 같이 로봇 메타 태그를 페이지의 <head> 섹션에 삽입합니다.

<!DOCTYPE html>
<html><head>
<meta name="robots" content="noindex" />
(…)
</head>
<body>(…)</body>
</html>

위 예에서 로봇 메타 태그는 검색엔진에 해당 페이지를 검색결과로 표시하지 않도록 지시합니다. name 속성의 값(robots)은 명령어가 모든 크롤러에 적용됨을 지정합니다. 특정 크롤러를 지정하려면 name 속성의 robots 값을 지정하는 크롤러의 이름으로 바꿉니다. 또한 특정 크롤러는 user-agent로 알려져 있습니다. 즉, 크롤러는 user-agent를 사용하여 페이지를 요청합니다. Google의 표준 웹 크롤러에는 user-agent 이름(Googlebot)이 있습니다. Googlebot만 페이지의 색인을 생성하지 못하게 하려면 다음과 같이 태그를 업데이트하세요.

<meta name="googlebot" content="noindex" />

이제 이 태그는 검색결과에 이 페이지를 표시하지 않도록 Google에 지시합니다. namecontent 속성은 대소문자를 구분하지 않습니다.

검색엔진에서는 속성 또는 목적별로 다른 크롤러를 사용할 수 있습니다. Google 크롤러의 전체 목록을 참조하세요. 예를 들어 Google 웹 검색결과에는 페이지를 표시하되 Google 뉴스에는 표시하지 않으려면 다음 메타 태그를 사용합니다.

<meta name="googlebot-news" content="noindex" />

여러 개의 크롤러를 개별적으로 지정하려면 다음과 같이 로봇 메타 태그를 여러 개 사용합니다.

<meta name="googlebot" content="noindex">
<meta name="googlebot-news" content="nosnippet">

X-Robots-Tag HTTP 헤더 사용

X-Robots-Tag는 지정한 URL에 대한 HTTP 헤더 응답의 요소로 사용될 수 있습니다. 로봇 메타 태그에서 사용 가능한 명령어는 X-Robots-Tag로도 지정될 수 있습니다. 다음은 페이지의 색인을 생성하지 않도록 크롤러에 지시하는 X-Robots-Tag가 있는 HTTP 응답의 예입니다.

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
(…)
X-Robots-Tag: noindex
(…)

여러 X-Robots-Tag 헤더를 HTTP 응답에 결합하거나 쉼표로 구분된 명령어 목록을 지정할 수 있습니다. 다음은 noarchive X-Robots-Tagunavailable_after X-Robots-Tag가 결합되어 있는 HTTP 헤더 응답의 예입니다.

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
(…)
X-Robots-Tag: noarchive
X-Robots-Tag: unavailable_after: 25 Jun 2010 15:00:00 PST
(…)

X-Robots-Tag는 명령어 앞에 user-agent를 지정할 수도 있습니다. 예를 들어 다음 X-Robots-Tag HTTP 헤더 집합은 다양한 검색엔진에 대해 조건에 따라 페이지를 검색결과에 표시하는 데 사용될 수 있습니다.

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
(…)
X-Robots-Tag: googlebot: nofollow
X-Robots-Tag: otherbot: noindex, nofollow
(…)

user-agent가 없이 지정된 명령어는 모든 크롤러에 적용됩니다. HTTP 헤더, 사용자 에이전트 이름과 지정된 값은 대소문자를 구분하지 않습니다.

유효한 색인 생성 및 게재 명령어

다음 명령어를 사용하면 로봇 메타 태그와 X-Robots-Tag로 색인 생성 및 스니펫 게재를 제어할 수 있습니다. 검색결과의 스니펫은 사용자 검색어에 대한 문서의 관련성을 보여 주는 데 사용되는 텍스트를 간단히 추출한 것입니다. 다음 표에서 Google에서 유효한 모든 명령어 및 그 의미를 확인하세요. 각 값은 특정 명령어를 나타냅니다. 여러 개의 명령어를 쉼표로 구분된 목록으로 결합할 수 있습니다. 이러한 명령어는 대소문자를 구분하지 않습니다.

명령어

all

색인 생성이나 게재에 대한 제한이 없습니다. 이 명령어는 기본값이므로 명시적으로 표시해도 아무 효과가 없습니다.

noindex

검색결과에 이 페이지를 표시하지 않습니다.

nofollow

이 페이지의 링크를 따라가지 않습니다.

none

noindex, nofollow와 같습니다.

noarchive

검색결과에 저장된 페이지 링크를 표시하지 않습니다.

nosnippet

이 페이지에 대한 검색결과에 텍스트 스니펫 또는 동영상 미리보기를 표시하지 않습니다. 정적 미리보기 이미지(사용 가능한 경우)는 사용자 환경 개선을 위해 생긴 경우 계속 표시될 수 있습니다. 이는 모든 형태의 검색결과에 적용됩니다(Google 웹 검색, Google 이미지, 디스커버).

max-snippet:[number]

이 검색결과의 텍스트 스니펫에 최대 [number]자(영문 기준)를 사용합니다. 참고로, URL은 검색결과 페이지 내에서 여러 개의 검색결과로 표시될 수 있습니다. 이는 이미지 또는 동영상 미리보기에 영향을 주지 않으며 Google 웹 검색, Google 이미지, 디스커버, 어시스턴트 등 모든 형태의 검색결과에 적용됩니다. 그러나 이 제한은 게시자가 콘텐츠 사용 권한을 별도로 부여한 경우에는 적용되지 않습니다. 예를 들어 게시자가 콘텐츠를 구조화된 인페이지 데이터의 형태로 제공하거나 Google과 라이선스 계약을 체결한 경우 더 구체적으로 사용이 허용된 작업은 이 설정으로 인한 제약을 받지 않습니다. 이 명령어는 파싱 가능한 [number]가 지정되지 않으면 무시됩니다.

특수 값:

  • 0: 표시할 스니펫이 없습니다. nosnippet과 같습니다.
  • -1: Google에서 사용자가 콘텐츠를 발견하고 사용자를 사이트로 유도하는 데 가장 효과적인 스니펫 길이를 선택합니다.

예:


<meta name="robots" content="max-snippet:20">

max-image-preview:[setting]

검색결과에 이 페이지가 표시될 때 사용할 미리보기 이미지의 최대 크기를 설정합니다.

허용되는 setting 값은 다음과 같습니다.

  • none: 표시할 미리보기 이미지가 없습니다.
  • standard: 기본 미리보기 이미지가 표시될 수 있습니다.
  • large: 표시 영역 너비까지 미리보기 이미지가 더 크게 표시될 수 있습니다.

이는 Google 웹 검색, Google 이미지, 디스커버, 어시스턴트 등 모든 형태의 검색결과에 적용됩니다. 그러나 이 제한은 게시자가 콘텐츠 사용 권한을 별도로 부여한 경우에는 적용되지 않습니다. 예를 들어 게시자가 콘텐츠를 구조화된 인페이지 데이터 형태로 제공하거나(예: 기사의 AMP 및 표준 버전) Google과 라이선스 계약을 체결한 경우 더 구체적으로 사용이 허용된 작업은 이 설정으로 인한 제약을 받지 않습니다.

Google 검색이나 디스커버에서 기사의 AMP 페이지 및 표준 버전이 표시될 때 Google에서 더 큰 미리보기 이미지를 사용하는 것을 원치 않는 게시자는 max-image-preview 값을 standard 또는 none으로 지정해야 합니다.

예:


<meta name="robots" content="max-image-preview:standard">

max-video-preview:[number]

검색결과에서 이 페이지의 동영상에 관한 동영상 스니펫에 최대 [number]초를 사용합니다.

기타 지원되는 값:

  • 0: 최대 미리보기 이미지 설정에 따라 정적 이미지만 사용할 수 있습니다.
  • -1: 제한이 없습니다.

이는 Google 웹 검색, Google 이미지, Google 비디오, 디스커버, 어시스턴트 등 모든 형태의 검색결과에 적용됩니다. 이 명령어는 파싱 가능한 [number]가 지정되지 않으면 무시됩니다.

예:


<meta name="robots" content="max-video-preview:-1">

notranslate

검색결과에 페이지의 번역을 제공하지 않습니다.

noimageindex

이 페이지의 이미지에 대한 색인을 생성하지 않습니다.

unavailable_after: [date/time]

지정된 날짜/시간 이후에 검색결과에 이 페이지를 표시하지 않습니다. 날짜/시간은 RFC 822, RFC 850, ISO 8601 등 널리 사용되는 형식으로 표현해야 합니다. 유효한 [date/time]을 지정하지 않으면 명령어가 무시됩니다. 기본적으로 콘텐츠의 만료일은 없습니다.

예:


<meta name="robots" content="unavailable_after: 2020-09-21">

결합된 색인 생성 및 게재 명령어 처리

로봇 메타 태그 명령어를 쉼표로 결합하여 여러 명령어가 포함된 지침을 만들 수 있습니다. 다음은 웹 크롤러가 페이지의 색인을 생성하지 않으며 페이지의 모든 링크를 크롤링하지 않도록 지시하는 로봇 메타 태그의 예입니다.

<meta name="robots" content="noindex, nofollow">

다음은 텍스트 스니펫을 20자로 제한하고 큰 미리보기 이미지를 허용하는 예입니다.

<meta name="robots" content="max-snippet:20, max-image-preview:large">

여러 크롤러가 다른 명령어와 함께 지정된 경우 검색엔진은 부정 명령어를 모두 사용합니다. 예:

<meta name="robots" content="nofollow">
<meta name="googlebot" content="noindex">

이러한 메타 태그를 포함하는 페이지는 Googlebot이 크롤링할 때 noindex, nofollow 명령어가 있는 것으로 해석됩니다.

data-nosnippet HTML 속성 사용

HTML 페이지의 텍스트 중에서 스니펫으로 사용하지 않을 텍스트를 지정할 수 있습니다. 이 작업은 span, divsection 요소에 data-nosnippet 속성을 사용해 HTML 요소 수준에서 할 수 있습니다. data-nosnippet부울 속성으로 간주되며 값의 존재 여부에 상관없이 유효합니다. 인식 정확도를 높이려면 HTML 섹션이 유효한 HTML이어야 하며 모든 태그가 제대로 닫혀 있어야 합니다.

예:

<p>This text can be shown in a snippet
 <span data-nosnippet>and this part would not be shown</span>.</p>

<div data-nosnippet>not in snippet</div>
<div data-nosnippet="true">also not in snippet</div>

<div data-nosnippet>some text</html>
<!-- unclosed "div" will include all content afterwards -->

<mytag data-nosnippet>some text</mytag>
<!-- NOT VALID: not a span, div, or section -->

일반적으로 Google은 페이지 색인 생성을 위해 페이지를 렌더링하지만 렌더링이 보장되지는 않습니다. 이 때문에 렌더링 전후에 모두 data-nosnippet 추출이 발생할 수 있습니다. 렌더링에서 비롯되는 불확실성을 피하기 위해 자바스크립트를 통해 기존 노드의 data-nosnippet 속성을 추가하거나 삭제하면 안 됩니다. 자바스크립트를 통해 DOM 요소를 추가할 때 페이지의 DOM에 요소를 처음 추가하는 경우 필요에 따라 data-nosnippet 속성을 추가합니다. 맞춤 요소를 사용하는 경우 data- nosnippet을 사용해야 하면 div, span 또는 section 요소를 사용하여 래핑하거나 렌더링합니다.

구조화된 데이터 사용

로봇 메타 태그는 Google이 검색결과로 표시하기 위해 웹 페이지에서 자동으로 추출하는 콘텐츠의 양을 지정합니다. 하지만 대다수 게시자가 특정 정보의 검색 표시를 위해 schema.org 구조화된 데이터도 사용합니다. 로봇 메타 태그 제한은 구조화된 데이터를 사용하는 데 영향을 미치지 않지만 다른 광고 소재 작업에서 지정된 구조화된 데이터의 article.descriptiondescription 값에는 예외적으로 영향을 미칩니다. description 값에 따라 미리보기의 최대 길이를 지정하려면 max-snippet 로봇 메타 태그를 사용하세요. 예를 들어 텍스트 미리보기가 제한되는 경우에도 페이지에 표시된 구조화된 데이터 recipe는 레시피 캐러셀에 포함될 수 있습니다. max-snippet을 사용하면 텍스트 미리보기의 길이를 제한할 수 있지만, 이 정보가 구조화된 데이터를 사용해 리치 결과용으로 제공되는 경우 이 로봇 메타 태그는 적용되지 않습니다.

웹페이지의 구조화된 데이터 사용 방식을 관리하려면 구조화된 데이터 유형과 값 자체를 수정하면 됩니다. 정보를 추가 또는 삭제하면 원하는 데이터만 제공할 수 있습니다. 또한 data-nosnippet 요소 내에서 선언될 경우 구조화된 데이터는 검색결과에 사용 가능한 상태로 남아 있습니다.

X-Robots-Tag의 실제 구현

사이트의 웹 서버 소프트웨어의 구성 파일을 통해 X-Robots-Tag를 사이트의 HTTP 응답에 추가할 수 있습니다. 예를 들어 Apache 기반 웹 서버에서는 .htaccess 파일과 httpd.conf 파일을 사용할 수 있습니다. X-Robots-Tag를 HTTP 응답과 함께 사용하는 경우 좋은 점은 사이트에 전체적으로 적용되는 크롤링 명령어를 지정할 수 있다는 것입니다. 정규 표현식이 지원되어 매우 유연하게 명령어를 지정할 수 있습니다.

예를 들어 전체 사이트에서 모든 .PDF 파일의 HTTP 응답에 noindex, nofollow X-Robots-Tag를 추가하려면, 다음 스니펫을 Apache에서는 사이트의 루트 .htaccess 파일이나 httpd.conf 파일에 추가하고 NGINX에서는 사이트의 .conf 파일에 추가하세요.

Apache:

<Files ~ "\.pdf$">
  Header set X-Robots-Tag "noindex, nofollow"
</Files>

NGINX:

location ~* \.pdf$ {
  add_header X-Robots-Tag "noindex, nofollow";
}

HTML에 로봇 메타 태그를 사용할 수 없는 이미지 파일처럼 HTML이 아닌 파일에는 X-Robots-Tag를 사용할 수 있습니다. 다음은 전체 사이트에서 이미지 파일(.png, .jpeg, .jpg, .gif)에 대해 noindex X-Robots-Tag 명령어를 추가하는 예입니다.

Apache:

<Files ~ "\.(png|jpe?g|gif)$">
  Header set X-Robots-Tag "noindex"
</Files>

NGINX:

location ~* \.(png|jpe?g|gif)$ {
  add_header X-Robots-Tag "noindex";
}

크롤링과 색인 생성/게재 명령어 결합

로봇 메타 태그와 X-Robots-Tag HTTP 헤더는 URL이 크롤링될 때 발견됩니다. robots.txt 파일을 통해 페이지 크롤링이 금지된 경우 색인 생성 또는 게재 명령어에 대한 정보는 찾을 수 없으므로 무시됩니다. 색인 생성 또는 게재 명령어를 따라야 하는 경우 해당 명령어가 포함된 URL의 크롤링을 금지하면 안 됩니다.