검색 엔진이나 포털에 어떤 키워드를 검색했을 때 관련 내 블로그 포스트가 검색되고 싶어하는 상황을 가정하자.


Google 검색에 노출

깃헙과 구글은 독립적인 회사다. 깃헙 페이지로 작성한 글을 구글에서 검색이 되게 하려면 이 둘을 연결지어야 하는데, 그 역할을 하는 것이 sitemap.xmlrobots.txt다.

sitemap.xml

웹크롤링 봇이 크롤링할 수 있는 웹사이트의 접근 가능한 페이지 목록이다. 아래와 같은 기능을 한다. (출처: https://sanghyuk.dev/blog/2/)

  • 웹사이트의 웹페이지를 계층별로 구분지어 웹사이트의 전체 구조를 보여주며, 검색엔진의 크롤링 로봇들이 크롤링 작업에 유용

  • sitemap.xml 파일을 사용하면 사이트 및 콘텐츠 구조를 Google 및 기타 검색엔진에 손쉽게 제출 가능

  • 검색엔진에 크롤링해야하는 URL을 알려줌으로써 색인을 생성하는 방법과 색인을 생성하는 방법을 제어

jekyll theme를 사용해 웹사이트를 만들었다면 ruby 기반으로 만들어진 것이기 때문에 gem install jekyll-sitemap을 실행하여 플러그인을 사용해 sitemap.xml을 생성할 수 있다. 다만 jekyll 기반의 github pages를 만든 것이라면 해당 플러그인을 사용할 수 없어 수동으로 sitemap.xml을 만들어야 한다. jekyll theme 기반의 깃헙 페이지는 대부분 아래와 같이 작성하면 대부분 인식되는 것 같다. 깃헙 repo의 root 경로 (config와 동일한 경로)에 아래의 내용으로 sitemap.xml을 만든다.

---
layout: null
---
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  
</urlset>

sitemap에는 해당 url에 대한 부가적인 정보를 설정할 수 있는 옵션도 제공한다. lastmod, changefreq, priority가 그 옵션인데, lastmod는 마지막으로 수정한 시간, changefreq는 해당 포스트이 변경 주기, priority는 해당 포스트의 우선 순위 정도로만 이해하면 된다. 각 docs의 YAML에 아래와 같이 sitemap 옵션을 추가하면 자동으로 인식한다. YAML은 jekyll theme마다 다르니까 아래 형식을 무조건적으로 복붙하면 에러가 발생할 수 있다.

---
layout: post
title:  "제목"
date:   2016-03-14 12:00:00 
lastmod : 2016-03-15 12:00:00
sitemap :
  changefreq : daily
  priority : 1.0
---

Page build가 되면 [username].github.io/sitemap.xml으로 접속해서 sitemap.xml와 같은 화면이 나오면 성공이다.

robots.txt

웹크롤링 봇이 웹사이트에 방문해서 크롤링할 때 참고하는 정책을 명시해놓은 파일이다. 이 파일에서 위에 기울인 말과 같이 크롤링 할 수 있다는 정책을 표시한다. 보통 아래와 같이 작성해서 sitemap.xml과 같은 경로에 업로드한다.

User-agent: *
Allow: /

Sitemap: http://[uername].github.io/sitemap.xml

Google Search Console

내 블로그 repo에 검색 엔진 등록에 필요한 파일을 다 업로드했다면, 이제 이것들을 제출할 차례다. [Google Search Console]https://developers.google.com/search#?modal_active=none에 접속하여 속성추가 - URL 접두어 - 내 블로그 주소 입력한다. 이 때 html로 인증하는 방식을 선택해서 다운받은 html 파일을 깃헙 페이지 repo에 푸쉬한 뒤 인증된 것을 확인하다. 다음으로 색인 - Sitemaps - 새 사이트맵 추가에 sitemap.xml을 입력해서 제출하면 된다.

sitemap.xml 인식 오류

구글 검색해서 내 사이트가 나오게 하려고 지금 일주일 넘게 시도 중이다. 방법은 robot.txtsitemap.xml을 만들어 Google search console에 등록하면 되는데, 구글에서 sitemap.xml을 인식하지 못해 계속 시도하는 중이다. 지금(2022-01-01) 이 상태다.

유형이나 상태가 각각 알 수 없음, 오류, 가져올 수 없음 등으로 뜨는 것이 처음 며칠 동안은 일반적이라고 했으나 나의 경우는 며칠이 지나도 해결이 안되는 것 같다. 해결 방법을 찾다가 나와 같은 just-the-docs 테마를 쓰는 사람(jjuhey)을 찾았는데, site.posts가 아니라 site.html_pages로 바꿨어야 했다. 또 lastmodchangefreq, priority는 크게 중요하지 않은 것 같다. 저 분이 해결한 방식인 sitemap2.xml을 보면 lastmodchangefreq가 xml에 들어가지만, 이 분의 docs에는 sitemap의 하위 인자로서 저 값이 (모든 문서에) 들어가지는 않는다. lastmod는 거의 모든 문서에 들어가 있는 것 같긴한데 changefreq가 없는데 무슨 소용… 그리고 어차피 null값이면 default 값을 넣게끔 설정이 되어있다. 따라서 이 부분은 문제가 되지 않는 것 같고, 그나마 고친 부분이 있다면 configurl에서 quotation mark를 제거한 것..? 왜냐면 sitemap.xml에서 site.url이 들어가는데 여기에 쌍따옴표가 있으면 제대로 인식이 안되기 때문이다. 이런 부분들을 고쳤는데도 여전히 인식하지 못하는 상황이다.ㅠㅠ 어차피 구글에서 크롤링 봇으로 url을 인식하는데 길게는 몇 달이 걸린다고는 하니… 이쯤해두고 기다려보기로 했다. 만약 몇 달이 지나도 인식이 안됐을 경우,

  • 모든 docs에 sitemap 하위 인자로 lastmod, priority를 넣어보거나
  • sitemap.xml을 for loop로 돌리는게 아니라 https://www.xml-sitemaps.com/에서 직접 sitemap.xml을 따서 제출해보는 방식

을 시도해보자. 아래는 여러 sitemap.xml 주소다.


Naver

Naver와 다음에 등록하려면 RSS feed를 아래와 같이 작성해서 root 디렉토리에 feed.xml 파일을 생성한다.

---
layout: null
---
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>smseo blog</title>
    <description></description>
    <link>https://s-seo.github.io/</link>
    <atom:link href="https://s-seo.github.io/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 07 Dec 2024 02:17:33 +0000</pubDate>
    <lastBuildDate>Sat, 07 Dec 2024 02:17:33 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
  </channel>
</rss>

네이버 웹마스터 도구에 접속해서 깃헙 블로그 주소를 등록하는데 search console과 마찬가지로 사이트 소유 확인을 위해 html을 다운받아 root 경로에 업로드한다. 다음으로 RSS feed를 제출해야 하는데, 요청 - RSS 제출 - [github pages url]/feed.xml을 입력한다. 또한 요청 - 사이트맵 제출 - [github pages url]/sitemap.xml을 입력한다.


Daum

다음 검색 등록에 접속해서 등록 - 블로그 RSS 등록 - 블로그 URL에 깃헙 블로그 url을 입력하면 된다.