Post

[Gitblog] Jekyll 기반 Chirpy 테마 Gitblog 생성 - ③ Google 검색 엔진에 노출시키기

[Gitblog] Jekyll 기반 Chirpy 테마 Gitblog 생성 - ③ Google 검색 엔진에 노출시키기

검색 엔진 노출?

검색 엔진에 내 블로그를 노출시켜, 검색 엔진을 사용하는 사람들과 블로그 내용을 공유해보자.

앞선 작업들을 통해서 우리는 Gitblog를 생성하고 배포했습니다. 하지만 이것만으로는 검색 엔진에서 내 블로그가 쉽게 발견되지 않아, 오랜 시간 동안 나만 볼 수 있는 블로그로 남을 가능성이 높습니다. 검색 엔진이 크롤링을 하며 언젠가는 내 블로그를 찾아낼 수 있겠지만 꽤 오랜 시간을 기다려야 합니다. 내 블로그가 남들에게 노출될 때까지 마냥 기다리는 방법도 있긴 하지만, 빠른 기간 내에 다른 사람들에게 노출시키기 위해서는 Google과 같은 검색 엔진이 크롤링을 잘 할 수 있도록 직접 노출시켜야 합니다. 저는 Google 검색 엔진에 제 블로그를 노출시키고 싶기 때문에 이와 관련된 Google Search Console, sitemap.xml, robots.txt에 대한 설명을 해보도록 하겠습니다.

0

Google Search Console란?

Google Search Console 도움말을 참고하여 작성했습니다.

Google Search ConsoleGoogle에서 무료로 제공하는 서비스로, 사용자가 사이트의 Google 검색결과 인지도를 모니터링하고 관리하며 문제를 해결하도록 도와줍니다.
(Google Search Console 도움말)

Google Search Console의 주요한 기능은 아래와 같습니다.

  • Google에서 사이트를 찾아 크롤링하고 색인할 수 있는지 확인
  • 사이트의 Google 검색 노출 및 클릭 트래픽 데이터 확인
  • 색인 생성 문제 해결 등등

위의 기능들로 Google이 내 사이트를 얼마나 잘 이해하고 있는지를 확인할 수 있습니다. Google은 내 사이트를 이해하기 위해서 주기적으로 웹을 크롤링하며 새로운 페이지나 수정된 페이지를 탐색합니다. 하지만, 그 주기는 며칠에서 몇 주, 심지어 몇 개월까지도 걸릴 수 있습니다.

따라서, Google이 내 블로그를 더 빠르고 정확하게 크롤링할 수 있도록 하기 위해서는 Google Search Console에 도메인을 등록하는 것 뿐만 아니라 sitemap.xml을 함께 등록하는 것이 효과적입니다.

sitemap.xml란?

sitemaps.org를 참고하여 작성했습니다.

Sitemap은 웹마스터가 크롤링에 사용할 수 있는 사이트의 페이지에 대한 정보를 검색 엔진에 알리는 손쉬운 방법입니다.
( sitemaps.org 설명글)

sitemap.xml은 검색 엔진에서 사이트를 보다 지능적으로 크롤링할 수 있도록 각 URL에 대한 추가 메타데이터(마지막 업데이트된 날짜, 변경 빈도 등)와 함께 사이트에 대한 URL을 나열하는 XML 파일입니다.

즉, 추가 메타데이터를 통해 Google이 내 사이트의 구조를 더 잘 이해하고, 새 콘텐츠를 더 빠르게 발견하도록 도와주는 것입니다.

Google Search Console 등록만으로 크롤링 주기가 자동으로 줄지는 않지만, sitemap.xml을 제출하면 Google이 새 글이나 변경사항을 빠르게 감지할 수 있기 때문에 크롤링과 색인 속도는 간접적으로 향상될 수 있습니다.

robots.txt란?

robots.txt를 참고하여 작성했습니다.

robots.txt 파일은 크롤러가 사이트에서 액세스할 수 있는 URL을 검색엔진 크롤러에 알려 줍니다.
(Google 검색 센터 Robots.txt 소개)

robots.txt 파일은 크롤러에게 사이트에 접근할 수 있는 범위를 정해줌으로서 사이트의 크롤러 트래픽을 관리할 수 있습니다. 또한, 크롤러가 몇몇 파일에 접근할 수 없도록 지정할 수 있습니다. 우리는 이 robots.txt 파일에 sitemap.xml의 위치를 명시하여, 크롤러가 사이트 구조를 보다 쉽게 파악하고 URL 리스트에 접근할 수 있도록 도와줄 것입니다.

Google 검색 엔진에 노출시키기

sitemap.xml 생성

LocalRoot에 아래의 코드를 파일명 sitemap.xml로 생성하시면 됩니다.

sitemap.xml의 위치는 꼭 Root일 필요는 없습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
---
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">
		{% for post in site.posts %}
	<url>
		<loc>{{ site.url }}{{ post.url }}</loc>
		{% if post.lastmod == null %}
		<lastmod>{{ post.date | date_to_xmlschema }}</lastmod>
		{% else %}
		<lastmod>{{ post.lastmod | date_to_xmlschema }}</lastmod>
		{% endif %}

		{% if post.sitemap.changefreq == null %}
		<changefreq>weekly</changefreq>
		{% else %}
		<changefreq>{{ post.sitemap.changefreq }}</changefreq>
		{% endif %}

		{% if post.sitemap.priority == null %}
		<priority>0.5</priority>
		{% else %}
		<priority>{{ post.sitemap.priority }}</priority>
		{% endif %}

	</url>
	{% endfor %}
</urlset>

위의 코드는 Gitblog를 사용하시는 분들이 많이 사용하는 sitemap.xml입니다. sitemap.xml 샘플 양식을 크게 벗어나지 않아서 이해하기 쉽습니다.

커스텀을 위해서 <urlset>, <url> 등등 각 태그의 내용을 이해하고 싶으시다면, XML 태그 정의를 참고해 주세요.

위의 코드에서 for문을 통해 <loc>에 어떤 페이지의 URL을 불러오는지 궁금하시다면 Local에서는 http://localhost:4000/sitemap.xml를 주소창에 입력하시거나 업로드한 블로그에서는 https://<username>.github.io/sitemap.xml을 입력하시면 됩니다. 4

robots.txt 생성

우리가 사용하고 있는 chirpy 테마에서는 robots.txt/assets에 위치하고 있습니다. 그대로 가져와서 Root 에 옮겨놓습니다.
chirpy 테마 버전에 따라 /assetsrobots.txt가 없을 수도 있습니다. 만약에 그런 경우라면, Root에 아래의 코드를 파일명 robots.txt로 생성하시면 됩니다.

1
2
3
4
5
6
7
8
9
---
permalink: /robots.txt
# The robots rules
---

User-agent: *
Allow: /

Sitemap: {{ '/sitemap.xml' | absolute_url }}

robots.txt가 겹치게 되면 아래와 같은 오류가 발생할 수 있습니다.  4_1

커스텀을 위해서 User-agent, Allow 등등 각 항목의 내용을 이해하고 싶으시다면, Google 검색 센터 robots.txt 파일 작성 및 제출 방법을 참고해 주세요.

Google Search Console에 블로그 도메인 등록하기

이 포스트는 Chirpy 테마(ver. 7.3.0) 기준으로 작성했습니다. 만약에 다른 테마를 사용하신다면, 3번에서 권장 확인 방법을 따라하시길 바랍니다.

이 포스트는 메타태그를 최대한 다른 사람들에게 노출시키지 않는 방향으로 작성했습니다. 이를 위해서 GitHub ActionsRepository Variables를 사용했습니다.
참고로, 소유권 확인을 위한 메타태그의 노출은 보안상으로 크게 문제 될 것은 없습니다.

만약에, 벌써 메타태그가 기록되어 있는 소스코드를 업로드 하셨다면 [Git] BFG로 Commit log 삭제를 참고하여 Commit log를 삭제해주세요.

  1. 먼저, Google Search Console에 들어가서 아래의 사진처럼 URL 접두어에 블로그 도메인을 입력해줍니다. 1

  2. 이후 아래의 창이 뜨면, 속성으로 이동을 클릭합니다. 2

  3. 권장 확인 방법에 표시한대로 HTML 파일을 root에 다운로드 시켜도 되지만, 저는 HTML 태그를 사용해서 소유권 확인을 해보도록 하겠습니다. 아래의 그림대로 메타태그를 복사합니다. 3

  4. 복사한 메타태그_config.yml에 입력해야 합니다. 하지만, 메타태그를 그대로 _config.yml에 입력하면 추후 GitHub에 업로드하면서 메타태그가 노출됩니다. 이를 방지하기 위해서 GitHub ActionsRepository Variables를 등록해주도록 하겠습니다.
    아래의 그림의 순서대로 Settings>Secrets and variables>Actions>Variables>New repository variable를 클릭합니다. 3_1 이후 아래와 같이 입력하여 메타태그Repository Variables에 등록합니다. 3_2

  5. Repository Variables_config.yml에서 사용할 수 있도록 vars 컨텍스트를 사용합니다. _config.ymlwebmaster_verifications 항목에서 google:${{ vars.GOOGLE_VERIFICATION }}를 아래와 같이 입력합니다.
    1
    2
    3
    4
    5
    6
    7
    8
    
     # Site Verification Settings
     webmaster_verifications:
         google: ${{ vars.GOOGLE_VERIFICATION }}
         bing: # fill in your Bing verification code
         alexa: # fill in your Alexa verification code
         yandex: # fill in your Yandex verification code
         baidu: # fill in your Baidu verification code
         facebook: # fill in your Facebook verification code
    
  6. 이제 원격 GitHubRepository에 등록하기 위해서 add, commit, push하고 3번 과정에서 누르지 않았던 확인 버튼을 눌러서 등록 완료합니다.

sitemap.xml를 Google Search Console에 제출

앞서 말씀드린대로 Google이 내 블로그를 더 빠르고 정확하게 크롤링할 수 있도록 하기 위해서 sitemap.xml을 생성했었는데요. 이를 Google Search Console에 제출하지 않더라도 제대로 작동하지만, 검색 엔진이 이 파일의 존재를 반드시 인식한다고 보장할 수는 없습니다.

보다 확실하게 검색 엔진이 sitemap.xml을 인식할 수 있도록 이와 같은 작업을 시행합니다.

아래의 그림과 같이 Google Search ConsoleSitemaps 항목에 들어가서 새 사이트맵 추가에서 sitemap.xml을 입력하고 제출합니다. 5

결과적으로 아래의 화면처럼 상태가져올 수 없음이 되어 있을 가능성이 매우 높습니다. 6 기다리면 해결되는 경우도 많지만, 해결되지 않는 경우에는 아래의 그림과 같이 URL 검사 도구를 활용하면 된다고 합니다. 7 하지만 저는 이 방법을 사용해도 상태가 바로 바뀌지 않아서 일주일 정도를 기다려볼 예정입니다.

마치며

이번 포스트에는 Google 검색 엔진에 내 블로그를 노출시켜봤습니다. 혼자서 지식을 정리하는 것도 좋지만 시행착오로 습득한 지식은 남들과 공유하고 싶어지는 것 같습니다. 이번 포스트에서 제가 강조하고 싶은 부분은 Google Search Console에 블로그 도메인 등록하기에서 다른 포스트들 보다 보안을 조금 더 신경썼다는 점입니다. 이 포스트가 도움이 되면 좋겠습니다.

This post is licensed under CC BY 4.0 by the author.