SEO 관련 문제 해결 과정들

SEO (Search Engine Optimization) 문제 해결을 위한 글입니다.

2021.02.02.

hexo-generator-seo-friendly-sitemap 을 이용하여 sitemap.xmlrss2.xml 을 자동 생성/갱신하고, 이를 Google Search Console에 올려둠.
블로그 Sitemap 확인

2021.02.03.

구글에 검색을 하면 본 블로그가 뜬다는 것을 확인함

  • site 옵션 사용 (site:yxxshin.github.io)
  • 특정 검색어 입력 (Baekjoon 9184 등)

그러나, 다음의 문제들이 발견됨

발생한 SEO 문제들

일부 검색 결과의 블로그 제목 뒤에 Baekjoon 9184 (신나는 함수 실행)이 붙어서 나옴

블로그 제목 오류 문제

  • 해결해야 할 문제 1순위. 그러나 왜 나타나는지, 나타나는 기준이 뭔지 5시간 뒤졌는데 찾지 못함.
  • [02/03 23:00] 일단 빡쳐서 Baekjoon 9184 글을 내려버림. 원래 있는 글 제목이였음.
  • [02/03 23:40] Baekjoon Cover와 Thumbnail이 Rendering 될 때 <img alt = "Baekjoon 9184 (신나는 함수 실행)"> 으로 들어가는 것을 확인함. 여기서 발생한 문제일까? (저 게시물을 쓸 때 처음으로 Thumbnail, Cover 만들어 넣음)
    • 예전 게시물들 중에서도 이 문제가 발생하므로, 만약 이게 맞다면 RECENTS의 Thumbnail에서 발생한 문제
    • 그럼 뜨고 안뜨고의 기준은? Sitemap.xml의 구글봇 업데이트 날짜 기준인가?
    • [02/04 19:00] 찾아보니까 아님 섞여있음. 안 뜨는 게시물들이 평균 02/01 20:10 경에 업로드 되었다(저장된 페이지의 날짜)는 점이 억지로 찾아낸 공통점인데 말도 안 된다. 뭔 차이가 있는걸까. 그나저나 다음 업데이트는 도대체 언제 되는것인가
  • [02/03 02:00] Sitemap.xml 파일의 자동 갱신/업로드는 매우 잘 이루어지고 있었음. 다만 이 결과가 구글 검색창에 반영되기까지는 최소 하루 정도의 시간이 필요한 것 같음 (Google Bot이 다녀와야 하기 때문 - robots.txt 관련)
  • [02/04 17:00] 블로그 기본 주소의 이름이 다음과 같이 뜨는 것을 발견.
    기본 블로그 제목 오류

Baekjoon 문제 풀이의 미리보기에서 1 2 3 4 .. 의 숫자가 보이는 경우가 존재

문제 풀이 미리보기 오류

  • 내가 봐도 눌러서 들어오고 싶지 않다는 느낌이 든다. 고쳐야 하는 문제.
  • [02/03 01:20] 숫자가 필자 코드의 줄 번호 임을 확인함. 어떤 기준으로 뜨고 안뜨는지는 모르겠음.
  • [02/04 16:00] 우선 모든 Baekjoon 글의 앞 부분에 공통적으로 두 줄의 문장을 추가함. (미리보기 개선 + “백준 0000”으로 검색했을 때에도 내 블로그를 띄우기 위함). Deploy는 해 놓았지만 아직 구글 서버에 적용은 되지 않은 상황

2021.02.04.

Google Search Console에서 정상적인 통계를 내기 위해서는 아직 조금 더 기다려야 하는 것 같다. 도대체 언제까지 ㅋㅋ 하
Google Search Console

2021.02.05.

02/05일에 Google에 새로 반영이 된 것을 확인하였다!! 믿고 있었다구
Google에 반영된 모습

그리고 사실, 별 뭐 건드리지도 않았던 것 같은데 최근에 등록된 게시물들은 모두 정상적으로 뜬다.
정상적으로 뜨는 모습

개인적으로는 버그였나 싶다.. 바꾼 게 사실상 하나도 없기 때문이다.
물론 개발을 하다 보면 상식 밖의 일들이 밥 먹듯이 일어나지만 …
덕분에 굳이 알 필요가 있을까? 싶었던 SEO의 자세한 원리를 뜯어볼 수 있었다.

하지만 아직 고칠 사항들은 남아있다!

검색 문제

이름도 뭐라 해야 될지 모르겠다. 나도 까먹을 것 같아서 정리하고 있다.
글로 정리할까 말까 고민을 굉장히 많이 했는데 정리하는 것은 탁월한 판단이었다..

우선, 한글 “백준”의 키워드로도 유입 되도록 하기 위해 모든 Baekjoon 글의 앞 부분에 공통적으로 문장을 추가하였고, 이것이 잘 뜨는 것을 확인하였다.
백준 키워드로 검색이 잘 되는 모습

여기서 끝났으면 참 좋았을 텐데, “백준”으로는 뜨지 않고 “baekjoon”으로만 뜨는 애들이 있다.
baekjoon 키워드로 검색한 경우

보면, 기존의 모습과 똑같이 깨져 있고 타고 가보면 02/01에 저장된 상태로 구글에 적용되어 있다.
얘넨 역시나 한글로 치면 죽어도 안 뜬다.
뜨지 않는 백준 1956

생각하는 경우의 수는 다음과 같다

  • 아직 Google Bot이 적용하지 못함 (더 기다려야 함)
  • 계속하여 바뀌는 이전 게시물들의 Sitemap 버그 (인식이 안 됨)

두 경우 다 현재 발생하고 있는 ‘무작위성’과 잘 어울리기 때문에..
사실 이와 비슷한 가장 충격적인 사실은 블로그 제목이 Baekjoon 9184로 뜬다는 점이다

잃어버린 블로그 이름

얘는 01/31일자의 저장된 페이지를 보여준다.
이 뒤로 블로그 주소 자체는 건든 게 없으니, sitemap도 바뀐게 없어 업데이트가 되고 있지 않는 듯 하다.
해결책으로는, Sitemap 초기화를 시켜주는 방법인데.. 사실 이게 초기화가 되는지도 모르겠다. Sitemap 파일을 내려도 크롤링은 이미 들어갔으니 말이다.

Google Search Console 통계

드디어! 거의 일주일 만에 Google Search Console에서 확인을 할 수 있게 되었다.
확인해 보니, 57개가 유효하고 19개가 제외되었다고 한다. 도대체 왜?
잃어버린 19개의 글

우선은 다음과 같이 개별 URL에 대하여 재크롤링 요청을 하였다. Google 공식 문서 에서도 소수의 문서는 재크롤링 요청, 다수의 문서는 sitemap 업데이트를 통해 하라고 했다. 19개 정도면 거뜬히 노가다 할 수 있다.

재크롤링 요청 보내기

필요한 문서들은 모두 재크롤링 요청을 보내놓았다.
[02/05 19:00] 사실, 업데이트를 하는 것이 중요한 게 아니라 “어떤 검색 결과”를 타고 왔냐가 중요한 것 같다. 어떻게 이 구글 검색창에 뜨느냐에 따라 옛날에 저장된 페이지가 뜨기도, 최신 버전의 페이지가 뜨기도 한다 (미리보기로) 이 측면에서 생각하면 한방 싹 초기화를 시키는 게 깔끔하긴 한데.. 이게 오늘 밤의 목표가 될 것 같다

백준 사이트 이기기

백준 사이트보다 먼저 검색되기
지옥의 9184번 문제와의 사투를 벌이는 과정에서 내가 크롤링 요청을 너무 많이 보냈나보다. 필터 없이 검색해도 백준 본 사이트보다 내 블로그가 먼저 뜬다 ㅋㅋㅋ
9184번 글을 아예 서버에서 내렸었는데, 이거 보고 다시 올려놨다.

URL 삭제

Google Search Console에서 캐시된 URL 삭제 항목을 발견하여 시험삼아 게시물 두 개를 지워놨다. Google 공식 문서

캐시된 URL 삭제

제출된 삭제 요청

삭제 전 뜨던 게시물 모습 1

삭제 전 뜨던 게시물 모습 2

이놈 처리 결과를 지켜보면 될 것 같다. 만약 이전의 자료들이 전부 사라지고 재크롤링된다면 아예 블로그 주소 삭제 요청을 해버려서 위에 언급했던 초기화가 가능할 수도 ..?

2021.02.06.

다음과 같이 저장된 ‘캐시’ 내용이 모두 사라졌다.
캐시된 URL 삭제가 된 모습

이 경우 URL은 달려 있는데 (누르면 잘 뜸), 미리보기나 저장된 페이지가 아예 안 뜬다!
다음번 크롤링 때 올바르게 적용이 되는지 확인해 보면 되겠다.

추가로, 블로그 제목은 그냥 최근 글을 따라가는 것 같다.
최근 글 제목이 먹어버린 블로그 제목

이건 고칠 수 있을지 모르겠다,, 사실 다른 방법으로 검색하면 아래와 같이 뜨기 때문이다.
올바르게 뜨는 블로그 제목


2022.04.11 NEW PROBLEM

군 입대를 하여, 자대에 잘 도착하고, 적응도 어느 정도 하여 싸지방에서 개인적인 공부들을 건드리기 시작할 때 쯔음 … 치명적인 하나의 문제를 알게 되었다.

Desilo 를 Google에 검색하였을 때, 내 블로그의 인턴 게시물이 첫 페이지에 노출된다!

블로그 검색 결과

SEO가 잘 작동한다는 것은 좋은 소식이나, 사실 게시물을 작성하기 전부터 내 인턴 글은 의도치 않은 구글 검색에 노출되는 것은 원하지 않았다. 예를 들어 Desilo 회사에 대하여 알아보기 위해 검색했는데, 내 블로그 게시물이 검색 결과에 노출된다 하자. 나쁜 말을 쓴 것은 아니다만, 어쨌든 회사의 사람들과 합의를 하거나 검사를 받고 올린 글은 아니지 않은가. (Desilo에 관한 인터뷰를 본인에게 직접 요청한 사람도 있었다. 이 사람도 이러한 경로로 나에게 찾아오지 않았을까?)

이를 의식하여 블로그 post의 front-matter 부분에 sitemap: false를 추가하여 블로그 sitemap에 자동 등록되는 것을 방지, 결과적으로 Google-bot도 이 페이지 정보를 얻어내지 못하여 (크롤링 실패) 검색 결과에 등장하지 않는 그림을 생각하였다.

허나 문제는, sitemap: false를 추가하기 전에 이미 블로그를 한 번 서버에 업로드를 하였고, 초기의 sitemap 버전에 인턴 글들이 모두 실렸으며, Google-bot이 초기 sitemap을 통해 이미 크롤링을 다 해버렸으며, 따라서 그 이후에 sitemap에서 페이지를 삭제한 것은 전혀 유효하지 않았다.

그래서 시도한 첫 번째 방법은 meta tag를 이용한 방법이었다. Google 공식 문서를 참고하였는데, 이 문서의 추천 방안은 다음과 같았다:

robots.txt에서 없애는 것은 의미가 없으며 페이지의 <head> 섹션에 다음의 메타 태그를 추가하라:

1
<meta name="robots" content="noindex">

이 기능 자체는 Hexo에 있는 기본적인 기능은 아니었기에, 블로그의 config 파일을 조금 손볼 필요가 있었다. 구글링(Hexo와 비슷하게 동작하는 다른 블로그들을 많이 참조하였다)과 소스코드 뜯어보기를 통해, layout의 head.jsx 파일에서 각 post의 <head> 섹션을 생성한다는 것을 알게 되었다. 내가 원하는 페이지에만 위의 메타 태그를 추가해야 했기에, post 마다 front-matter로 조절하는 것이 가장 쉽겠다고 판단하여 head.jsx 파일을 수정하여 noindex: true를 front-matter에 추가하면 위 메타 태그가 삽입되도록 하는 데에 성공하였다. (참고: Git Commit)

원하는 방향으로 모두 잘 작동하였다. 원하는 두 페이지에만 noindex 메타 태그가 삽입되었으며, HTML 파일이 생성되는 본인의 Github 이나 Chrome의 F12 DevTools(Elements)를 통해 이를 확인할 수 있었다. 허나, sitemap의 update가 이루어졌음에도 검색 결과에서 본인의 블로그가 삭제되지 않았다. 대 실패였다. 이 방법 역시 이미 한 번 크롤링된 문서를 다시 내려버릴 순 없는 것 같았다. (어찌 보면 당연한 결과이기도 하다)

결국 최후의 방법을 선택하게 되었다:

  1. 같은 글을 주소가 바뀌도록 재업로드 한다. 실제로 주소에 년/월/일 이 포함되므로, 작성한 날짜만 바꾸면 된다.
  2. 기존 글을 삭제한다.
  3. 기존 글은 이제 없는 페이지이므로 (404 Error), 구글에 삭제 요청을 직접 보낸다. 구글링 결과, Google Search Console Settings 에서 삭제된 콘텐츠를 Google 검색에서 삭제할 수 있었다.

결과는 성공이었다! 이틀 정도 기다리니 Google Search Console Settings에서 보낸 삭제 요청이 승인됨을 확인할 수 있었고, 이제 더 이상 Google에 Desilo를 검색했을 때 본인의 블로그 인턴 정리글이 나타나지 않았다.

Google Search Console Settings 승인 결과

Author

Yeonsang Shin

Posted on

2021-02-03

Updated on

2022-12-19

Licensed under

Comments