영상을 불러오지 못했습니다

Jekyll 블로그를 Google Search Console에 연결하는 방법

2094 단어
10 분
Jekyll 블로그를 Google Search Console에 연결하는 방법

Jekyll과 Chirpy로 만든 블로그를 Google Search Console의 URL-prefix 속성에 추가하고 HTML meta tag로 소유권을 확인하는 과정을 정리한다.

소유권 확인은 검색 노출 완료와 다르다. Search Console을 사용할 권한을 증명할 뿐이며, Google이 URL을 발견하고 크롤링하고 색인한 다음 검색 결과에 보여 주는 과정은 각각 별개다. sitemap 제출과 색인 생성 요청도 다음 단계를 보장하지 않는다.

다음 단계 보장 없음

요청일 뿐

소유권 확인

Search Console 접근 권한

sitemap 제출·URL 검사

발견과 재크롤 힌트

Googlebot 크롤링

색인 여부 판단

질의별 검색 노출·순위

다음 단계 보장 없음

요청일 뿐

소유권 확인

Search Console 접근 권한

sitemap 제출·URL 검사

발견과 재크롤 힌트

Googlebot 크롤링

색인 여부 판단

질의별 검색 노출·순위

먼저 공개 상태 확인하기#

Search Console은 잘못된 배포를 고쳐 주지 않는다. 실제 공개 URL에서 다음을 먼저 확인한다.

점검 항목정상 상태흔한 실패
HTTP 응답공개할 페이지가 로그인 없이 200 OK잘못된 GitHub Pages 경로로 404, redirect loop, 인증 필요
robots meta색인할 페이지가 index, followtheme이나 frontmatter가 의도치 않게 noindex
robots.txtGooglebot이 필요한 HTML·CSS·JS를 읽을 수 있음필요한 페이지나 리소스를 차단
canonical실제 공개 URL과 일치하는 absolute self-canonicallocalhost, 잘못된 domain·base path·trailing slash
sitemap공개할 canonical URL을 포함404, redirect, 중복 URL을 함께 제출
HTTPS와 host 일관성내부 링크·canonical·sitemap이 같은 HTTPS host를 사용custom domain과 github.io 주소가 섞임
본문 접근성핵심 정보가 처음 받은 HTML 또는 렌더링 가능한 페이지에 들어 있음상호작용 뒤에만 핵심 내용을 표시

robots.txt는 크롤링 제어 파일이다. 검색 결과에서 확실히 제외하려면 crawler가 페이지를 읽을 수 있는 상태에서 noindex를 사용한다.

URL-prefix 속성 만들기#

  1. Google Search Console에 로그인한다.
  2. 속성 추가 → URL 접두어를 선택한다.
  3. 블로그의 최종 공개 주소를 입력한다.
https://example.github.io/

httphttps, www 유무, subdomain, path가 다르면 다른 URL-prefix 범위다. GitHub project site라면 /repository-name/까지 실제 배포 주소와 일치시킨다.

DNS를 직접 관리하는 custom domain이라면 Domain 속성과 DNS TXT 확인을 사용할 수도 있다. github.io 주소처럼 host의 DNS를 관리할 수 없다면 URL-prefix와 HTML tag 또는 HTML file 방식이 알맞다.

HTML tag로 소유권 확인하기#

1. meta tag의 content 값 복사#

소유권 확인 창에서 HTML 태그를 선택하면 다음 형태의 meta tag를 받는다.

<meta name="google-site-verification" content="SEARCH_CONSOLE에서_받은_값" />

전체 tag가 아니라 content 속성의 값만 복사한다. verification token은 공개 HTML에 들어가는 값이지만, 다른 계정 정보나 화면 전체를 함께 공유할 필요는 없다.

2. Jekyll 설정에 token 추가#

이 글에서 사용한 Chirpy 설정은 _config.ymlgoogle_site_verification 값을 <head>의 meta tag로 출력한다.

_config.yml
google_site_verification: 'SEARCH_CONSOLE에서_받은_값'

theme마다 설정 이름이 다를 수 있으므로, 사용 중인 layout이 최종 HTML에 다음 tag를 만드는지 확인한다.

<meta name="google-site-verification" content="SEARCH_CONSOLE에서_받은_값" />

3. 배포 후 페이지 소스 확인#

설정을 push하고 GitHub Pages 배포가 끝날 때까지 기다린다. 그다음 블로그 홈페이지의 페이지 소스 보기에서 google-site-verification을 검색한다.

로컬 파일이나 브라우저 extension이 바꾼 DOM이 아니라, Google이 접근할 공개 URL의 <head>에 tag가 있어야 한다. URL-prefix가 redirect된다면 최종 도착 페이지에서도 tag를 읽을 수 있어야 한다.

4. Search Console에서 확인#

배포된 tag를 확인한 뒤 소유권 확인 창의 확인을 누른다. 확인에 성공한 뒤에도 meta tag를 지우지 않는다. Google이 token을 다시 확인할 수 있기 때문이다.

canonical과 sitemap 점검하기#

Jekyll의 공개 URL은 _config.ymlurl, baseurl, permalink 설정에 영향을 받는다.

url: 'https://example.github.io'
baseurl: ''

GitHub user site는 보통 root /를 사용한다. https://example.github.io/repository/ 형태의 project site라면 baseurl과 내부 링크가 project 경로를 포함해야 한다.

Chirpy와 jekyll-sitemap을 사용하는 사이트라면 배포 뒤 다음 URL을 직접 연다.

https://example.github.io/robots.txt
https://example.github.io/sitemap.xml

아래 항목을 확인한다.

  • 두 URL이 200 OK로 열리는가?
  • sitemap 안의 host와 path가 실제 공개 URL과 일치하는가?
  • 각 URL이 공개 페이지로 열리고 올바른 canonical을 갖는가?
  • localhost나 이전 domain, 잘못된 base path가 남아 있지 않은가?
  • robots.txt가 색인할 페이지를 막지 않는가?

Search Console의 Sitemaps 화면에는 sitemap.xml을 제출한다. sitemap은 Google에 URL 목록을 알려 주는 힌트이며 다운로드, 크롤링, 색인을 보장하지 않는다.

URL Inspection으로 글 확인하기#

새 글을 배포한 다음 Search Console 상단의 URL 검사에 canonical URL을 입력한다.

  1. Google이 알고 있는 색인 상태를 확인한다.
  2. user-declared canonical과 Google-selected canonical이 같은지 본다.
  3. 실제 URL 테스트로 검사 도구가 페이지에 접근할 수 있는지 확인한다.
  4. 중요한 새 페이지나 크게 바꾼 페이지라면 색인 생성 요청을 한 번 사용한다.

실제 URL 테스트 성공은 접근 가능하다는 뜻일 뿐, 중복 선택과 content quality를 포함한 모든 색인 조건을 통과했다는 뜻은 아니다. 같은 URL을 반복 제출한다고 더 빨라지는 것도 아니다. URL이 많다면 하나씩 요청하지 말고 sitemap을 사용한다.

검색 노출 확인하기#

site:example.github.io 검색 결과 개수만으로 전체 색인 상태를 판단하지 않는다. Search Console의 각 report가 답하는 질문을 구분한다.

질문Search Console 화면확인할 값
Google이 sitemap을 읽었는가?Sitemapsfetch 상태, 마지막 읽기, 발견한 URL 수
특정 URL이 색인됐는가?URL Inspectionindex 상태, crawl 시각, user/Google canonical
전체 URL의 색인 추세는 어떤가?Page indexingindexed/not indexed 이유와 추세
실제 검색 결과에 나타났는가?Performance → Search resultsimpressions, clicks, CTR, query, page, country, device
방문 뒤 사용자는 무엇을 했는가?Google Analytics 등 별도 도구session과 site 내부 행동. Search Console의 역할이 아님

새 속성은 report data가 쌓이는 데 시간이 걸릴 수 있다. Search Console report의 수치와 site: 결과가 다르다고 바로 색인 장애로 결론 내리지 않는다.

문제별 진단표#

증상먼저 확인할 것
HTML tag 확인 실패정확한 URL-prefix, 공개 <head>, 200 응답, redirect 최종 페이지, token 오타, 배포 완료 여부
sitemap을 가져오지 못함absolute URL, 200 응답, XML 문법, robots, 잘못된 base path, 이전 domain
Crawled - currently not indexed중복·얇은 내용·canonical·soft 404·내부 링크
Discovered - currently not indexedserver 안정성, 내부 링크, sitemap 상태
Google canonical이 다른 URLredirect, 내부 링크, canonical, sitemap 등 신호 불일치
색인됐지만 impression이 없음실제 검색 수요, query 의도, 제목·본문의 관련성, 경쟁도

체크리스트#

  • 공개 URL이 로그인 없이 200으로 열리는가?
  • 색인할 페이지가 index, follow이고 robots.txt에 막히지 않았는가?
  • canonical, 내부 링크, sitemap의 protocol·host·path가 일치하는가?
  • GitHub user site와 project site의 base path 차이를 반영했는가?
  • 관리하는 주소에 맞춰 URL-prefix 또는 Domain 속성을 선택했는가?
  • verification meta tag를 확인 뒤에도 유지하는가?
  • sitemap을 제출하고 fetch 상태를 확인했는가?
  • 중요한 URL만 실제 URL 테스트와 색인 생성 요청을 사용했는가?
  • Page indexing과 Performance를 구분해 측정하는가?

소유권 확인만으로 끝나지 않는다. 실제 검색 상태를 관리하려면 crawl 가능한 페이지, 일관된 canonical, 올바른 sitemap과 robots 정책, URL Inspection과 Page indexing report를 함께 봐야 한다. 검색 결과에 실제로 나타났는지는 Performance의 impression과 query로 확인한다.

참고 자료#

글 공유하기

이 글이 도움이 되셨다면 다른 사람과 공유해 주세요!

Jekyll 블로그를 Google Search Console에 연결하는 방법
https://hon454.github.io/posts/make-jekyll-blog-searchable-on-google/
작성자
Jihoon Jeon
게시일
2023-01-21
라이선스
CC BY-NC-SA 4.0
무작위 게시글무작위

댓글

Profile Image of the Author
Jihoon Jeon
안녕하세요! 서브컬처와 자전거를 사랑하는 개발자 전지훈입니다.
공지사항
제 블로그에 오신 것을 환영합니다! 예시 공지입니다.
카테고리
태그
최신 일상
사이트 통계
게시글
46
카테고리
10
태그
139
총 단어 수
103,271
운영 일수
0
최근 활동
0일 전
사이트 정보
빌드 플랫폼
GitHub Actions
블로그 버전
Firefly v6.16.3
라이선스
CC BY-NC-SA 4.0