본문으로 건너뛰기

SEO 최적화 작업 프로세스 정리

·5 min read

배포가 끝난 서비스에 SEO 작업이 붙었다. 한 번에 끝나는 작업이 아니라 검색 플랫폼 등록, 마크업, 사이트맵까지 흩어져 있어서 빠뜨리는 항목이 자주 나왔다. 이번 작업을 정리하면서 다음에 같은 흐름을 다시 탈 때 빠뜨릴 단계가 없도록 체크리스트로 묶어뒀다.

큰 흐름은 세 단계로 나뉜다

작업을 시작하면서 가장 먼저 한 일은 단계 구분이었다. 검색 엔진에 사이트 자체를 알리는 단계, 페이지가 잘 색인되도록 다듬는 단계, 그리고 색인 결과의 가시성을 관리하는 단계로 나눴다.

flowchart LR
    A[검색 플랫폼 등록] --> B[SEO 최적화]
    B --> C[사이트맵 등록 및 색인 관리]

크롤링을 요청할 검색 플랫폼부터 등록했다

색인을 원하는 검색 엔진의 웹마스터 도구에 사이트를 먼저 등록해야 했다. 등록이 끝나야 사이트맵을 제출하거나 색인 상태를 확인할 수 있다.

  • 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을 지정해 시그널을 한 곳으로 모아야 한다.