개발 slecs

Search Console 등록을 위한 사이트맵과 크롤러 정책 파일 추가

목차

SEO 기초 작업으로 sitemap.tsrobots.ts 두 파일을 새로 추가했다. Google Search Console 등록을 위한 선행 조건이라 더 이상 미룰 수 없었던 작업.

왜 지금이었나

서비스를 어느 정도 만들어놓고 나면 SEO는 항상 "나중에 하지 뭐" 리스트에 들어가기 쉽다. 기능이 우선이고, 배포가 우선이고, 버그 수정이 우선이다. 그런데 Search Console 등록을 미루면 미룰수록 인덱싱 시작 시점도 그만큼 늦어진다. 구글 봇이 페이지를 크롤링하고 인덱싱하기까지 걸리는 시간을 감안하면 사실 "나중에"는 꽤 큰 손해다.

이번에 sitemap.tsrobots.ts를 추가한 건 Search Console에 사이트맵 URL을 제출하기 위한 최소 요건을 갖추기 위해서였다. 두 파일 모두 Next.js App Router 방식으로 작성했고, 정적 파일을 직접 올리는 게 아니라 TypeScript 파일로 라우트를 생성하는 방식이다.

두 파일이 각각 하는 일

파일 라우트 역할
src/app/sitemap.ts /sitemap.xml 크롤러에게 페이지 목록과 우선순위 제공
src/app/robots.ts /robots.txt 크롤러 접근 허용/차단 정책 정의

robots.ts는 구조가 단순하다. 어떤 User-Agent를 허용하고, 어떤 경로를 막을지, 사이트맵 위치는 어디인지 정도를 반환하면 된다.

// src/app/robots.ts
import { MetadataRoute } from 'next'

export default function robots(): MetadataRoute.Robots {
  return {
    rules: {
      userAgent: '*',
      allow: '/',
      disallow: ['/admin/', '/api/'],
    },
    sitemap: 'https://example.com/sitemap.xml',
  }
}

sitemap.ts는 조금 더 신경 써야 할 부분이 있다. 정적인 페이지는 그냥 배열로 넣으면 되는데, 동적 라우트(예: 블로그 포스트, 상품 페이지 등)가 있으면 그쪽에서 데이터를 fetch해서 URL을 동적으로 생성해야 한다.

// src/app/sitemap.ts
import { MetadataRoute } from 'next'

export default function sitemap(): MetadataRoute.Sitemap {
  return [
    {
      url: 'https://example.com',
      lastModified: new Date(),
      changeFrequency: 'daily',
      priority: 1,
    },
    {
      url: 'https://example.com/about',
      lastModified: new Date(),
      changeFrequency: 'monthly',
      priority: 0.8,
    },
  ]
}

놓치기 쉬운 부분들

이 작업이 단순해 보여도 실제로 팀에서 처음 세팅할 때 자주 빠뜨리는 지점들이 있다.

  • disallow 경로 관리: /api/, /admin/ 같이 외부에 노출되면 안 되는 경로는 명시적으로 막아야 한다. 기본값을 믿지 말 것.
  • lastModified 정확도: 그냥 new Date()를 넣으면 빌드 시점 기준으로 찍힌다. 콘텐츠가 자주 바뀌는 페이지라면 실제 수정일을 DB나 CMS에서 가져와야 의미가 있다.
  • priority 남발 금지: 모든 페이지에 priority: 1을 넣으면 구글이 사실상 무시한다. 홈 → 주요 랜딩 → 상세 페이지 순으로 실제 중요도를 반영해야 한다.
  • Search Console 제출 타이밍: 파일 배포 후 실제 URL(/sitemap.xml, /robots.txt)이 정상 응답하는지 먼저 브라우저로 확인하고 나서 Search Console에 제출하는 게 순서다. 제출 먼저 하고 오류 뜨면 괜히 시간 낭비다.

작업 이후

두 파일 추가 자체는 크지 않은 작업이지만, 이게 빠져 있으면 Search Console 자체를 제대로 쓸 수가 없다. 인덱싱 커버리지 리포트도, 크롤링 통계도 다 사이트맵 기반이다. 작업 규모 대비 선행 효과가 큰 편이라 우선순위를 올려서 처리한 게 맞는 판단이었다고 본다.

다음엔 동적 라우트 페이지들도 사이트맵에 포함시키는 작업이 남아 있다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.