SEO 최적화 작업 프로세스 정리
·5 min read
배포가 끝난 서비스에 SEO 작업이 붙었다. 한 번에 끝나는 작업이 아니라 검색 플랫폼 등록, 마크업, 사이트맵까지 흩어져 있어서 빠뜨리는 항목이 자주 나왔다. 이번 작업을 정리하면서 다음에 같은 흐름을 다시 탈 때 빠뜨릴 단계가 없도록 체크리스트로 묶어뒀다.
큰 흐름은 세 단계로 나뉜다
작업을 시작하면서 가장 먼저 한 일은 단계 구분이었다. 검색 엔진에 사이트 자체를 알리는 단계, 페이지가 잘 색인되도록 다듬는 단계, 그리고 색인 결과의 가시성을 관리하는 단계로 나눴다.
크롤링을 요청할 검색 플랫폼부터 등록했다
색인을 원하는 검색 엔진의 웹마스터 도구에 사이트를 먼저 등록해야 했다. 등록이 끝나야 사이트맵을 제출하거나 색인 상태를 확인할 수 있다.
- Google Search Console 등록
- Naver Search Advisor 등록
- 필요 시 Bing Webmaster Tools, Daum 검색 등록도 가능
국내 트래픽 비중에 따라 Naver는 거의 항상 같이 등록했다.
SEO 최적화에서 챙긴 것들
페이지 자체가 검색 엔진에 잘 잡히도록 다듬는 단계. 항목이 가장 많고, 빠뜨리기 쉬워서 체크리스트로 묶었다.
robots.txt로 크롤링할 페이지 범위를 제한한다. 검색 결과 노출 자체를 막아야 하는 페이지는noindex로 따로 처리한다.- SSR(Server Side Rendering, 서버에서 완성된 HTML을 내려주는 렌더링 방식)을 적용해 검색 엔진이 JS 렌더링을 기다리지 않고 콘텐츠를 색인할 수 있게 했다.
- 각 페이지별 메타데이터를 추가한다.
title,description,og:image,og:title등. - 구조화된 데이터(Schema Markup, JSON-LD 등으로 페이지 의미를 검색 엔진에 명시하는 마크업)를 추가해 페이지 종류와 관계를 명시했다.
- 정적 페이지와 동적 라우트 페이지 양쪽 모두를 사이트맵에 포함하고 검색 콘솔에 등록했다.
- URL은 고유 ID 기반으로 유지했다.
nickname처럼 사용자가 바꿀 수 있는 값은 URL 쿼리에서 빼야 같은 콘텐츠가 여러 URL로 흩어지지 않는다.
검색 노출 순위에 영향을 주는 포인트
작업하면서 따로 정리해둔 메모. 단순히 항목을 채우는 것과 "왜 챙기는지"는 다른 얘기였다.
title은 검색 결과 링크 텍스트로 노출되고,description은 스니펫에 쓰인다. 두 값을 페이지 성격에 맞게 따로 써야 클릭률에 영향을 준다.- 구조화된 데이터로 페이지의 종류와 관계성을 검색 엔진에 명시할 수 있다. 일반 메타태그만으로는 표현이 안 되는 정보가 여기서 전달된다.
- URL path는 사람과 크롤러 둘 다 읽기 좋게 간결하고 의미 있게 둔다. URL 자체의 랭킹 영향력은 작지만, 가독성과 중복 URL 방지에 도움이 됐다.
- 쿼리 변형으로 같은 콘텐츠가 여러 URL에 노출되면 검색 시그널이 분산된다.
canonical태그로 대표 URL을 지정해 시그널을 한 곳으로 모아야 한다.