#04
AEO 입문 시리즈
AEO 입문: AI에게 읽히는 기술 | ④ sitemap.xml

sitemap.xml | AI 봇에게 사이트 지도를 건네는 법

skimar 2026. 04. 28 3 min read

이 글은 "AEO 입문: AI에게 읽히는 기술" 시리즈의 네 번째 글입니다.

1편에서는 크롤링과 인덱싱의 차이를, 2편에서는 봇이 HTML을 어떤 순서로 읽는지를, 3편에서는 봇이 사이트에 도착했을 때 가장 먼저 확인하는 파일인 robots.txt를 다뤘습니다.
이번 글에서는 봇에게 "우리 사이트의 지도"를 건네는 파일, sitemap.xml에 대해 알아봅니다.

sitemap.xml이란?

3편에서 다뤘던 robots.txt가 "여기는 오지 마"라면, sitemap.xml은 "여기 꼭 와봐"입니다. 크롤링해야 할 페이지 목록을 봇에게 명시적으로 알려주는 파일이죠.

봇의 동선을 다시 떠올려보면 이렇습니다. 봇이 사이트에 도착하면 가장 먼저 robots.txt를 읽습니다. 그 파일 마지막 줄에 Sitemap: https://도메인/sitemap.xml이 적혀 있으면, 봇은 그 주소로 이동해서 사이트맵에 나열된 URL들을 크롤링 대기열에 넣습니다.

봇이 보는 사이트 지도 다이어그램

기본 구조

sitemap.xml의 가장 기본적인 형태를 보겠습니다.

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-04-20</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/product/sample-product/123</loc>
    <lastmod>2026-04-18</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>

각 태그의 의미를 정리하면 이렇습니다.

  • <loc> — 페이지 URL. 유일한 필수 태그입니다.
  • <lastmod> — 마지막 수정일. 봇이 "지난번 크롤링 이후에 바뀌었나?" 판단하는 데 활용합니다.
  • <changefreq> — 변경 빈도 힌트(daily, weekly, monthly 등). 참고로 Google은 이 값을 무시한다고 공식 발표했습니다.
  • <priority> — 사이트 내 상대적 중요도(0.0~1.0). 이것도 Google은 무시합니다. 다른 검색엔진에서 참고하는 정도입니다.

결론적으로 실질적으로 중요한 태그는 <loc><lastmod> 두 개입니다.

커머스에서 사이트맵이 중요한 이유

상품이 500개인 쇼핑몰을 생각해봅시다. 봇이 메인 → 카테고리 → 상품 순서로 링크를 따라가면서 크롤링하는데, 모든 상품이 카테고리에서 2~3번 클릭 안에 도달 가능한 건 아닙니다. 신상품이 등록됐는데 아직 카테고리에 제대로 연결되지 않았거나, 품절 상품이 목록에서 빠져있으면 봇이 아예 발견하지 못합니다.

사이트맵은 이런 "고립된 페이지"도 봇에게 직접 알려주는 역할을 합니다. 신상품을 등록하면 사이트맵에 자동으로 추가되어야 봇이 빠르게 크롤링할 수 있죠.

봇이 보는 사이트 지도 다이어그램

사이트맵 분리 전략 — 사이트맵 인덱스

상품이 많아지면 사이트맵 하나에 전부 넣는 건 비효율적입니다. 이럴 때 사이트맵 인덱스 파일로 분리할 수 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap-products.xml</loc>
    <lastmod>2026-04-20</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-categories.xml</loc>
    <lastmod>2026-04-15</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-blog.xml</loc>
    <lastmod>2026-04-22</lastmod>
  </sitemap>
</sitemapindex>

상품, 카테고리, 블로그를 별도 사이트맵으로 관리하면, 상품만 업데이트됐을 때 sitemap-products.xmllastmod만 바뀌므로 봇이 효율적으로 크롤링할 수 있습니다. 참고로 사이트맵 하나당 URL 50,000개, 파일 크기 50MB가 한도입니다.

사이트맵에 넣으면 안 되는 페이지

사이트맵에는 인덱싱되길 원하는 페이지만 넣어야 합니다. robots.txt에서 Disallow한 페이지나 noindex 처리한 페이지를 사이트맵에 넣으면 봇에게 모순된 신호를 보내는 겁니다.

넣으면 안 되는 것들:

  • 로그인, 회원가입, 장바구니, 결제 페이지
  • 내부 검색 결과 페이지
  • 파라미터 변형 URL (canonical이 아닌 URL)
  • 리다이렉트되는 URL
  • 404 에러 페이지

검색엔진에 사이트맵 제출하기

사이트맵을 만들었으면 검색엔진에 직접 알려줘야 합니다.

Google Search Console: 관리자 → 색인 생성 → Sitemaps → URL 입력 후 제출합니다. 제출 후 상태가 "성공"인지, 발견된 URL 수가 예상과 맞는지 확인하세요. 상품이 500개인데 발견된 URL이 50개면 사이트맵에 누락이 있는 겁니다.

네이버 서치어드바이저: 웹마스터 도구 → 요청 → 사이트맵 제출. 네이버도 동일하게 sitemap.xml URL을 입력하면 됩니다. 한국 커머스는 Google과 네이버 양쪽에 모두 제출하는 것이 기본입니다.

참고로 robots.txt에 Sitemap:을 적어두지 않아도 GSC나 서치어드바이저에 이미 제출했다면 봇은 사이트맵을 알고 있습니다. 하지만 적어두는 게 무조건 낫습니다. Bing이나 AI 크롤러 등 별도로 제출하지 않은 검색엔진도 robots.txt를 통해 사이트맵을 자동 발견할 수 있기 때문입니다.

봇이 보는 사이트 지도 다이어그램

카페24 사이트맵, 자동 생성의 함정

카페24는 sitemap.xml을 자동 생성해줍니다. https://쇼핑몰주소/sitemap.xml로 접근하면 확인 가능합니다. 편리하죠. 그런데 문제는 자동 생성되는 사이트맵의 품질입니다.

확인해야 할 것들:

  • 전체 상품이 다 포함되어 있는지 (상품 수와 URL 수 비교)
  • 품절/숨김 처리된 상품이 빠져있는지
  • lastmod가 실제 수정일을 반영하는지 (전부 같은 날짜면 의미 없음)
  • 파라미터 변형 URL이 섞여 들어가 있지 않은지

실전 사례: 브랜드 A의 사이트맵 분석

실제로 카페24 기반 쇼핑몰 브랜드 A의 사이트맵을 열어봤습니다. 총 URL 수는 약 147개. 이 URL들을 유형별로 분류하니 흥미로운 결과가 나왔습니다.

페이지 유형URL 수비고
상품 리뷰 게시판54페이지네이션 53페이지 포함
1:1 문의 게시판24개인정보 포함 가능
상품 Q&A 게시판12페이지네이션 11페이지
상품 상세10중복 파라미터 URL 존재
마이페이지/내부검색/회원/장바구니9제거 필요
기타 (FAQ, 이벤트, 공지 등)38
게시판 페이지네이션(리뷰 53개 + Q&A 11개 + 1:1문의 22개)이 총 86개. 전체 사이트맵의 70% 이상이 게시판 목록 페이지네이션으로 채워져 있었습니다. 정작 중요한 상품 상세 페이지 URL은 10개뿐이었죠.

사이트맵의 목적이 "우리 사이트에서 중요한 페이지는 이겁니다"라고 봇에게 안내하는 것인데, 이 상태면 봇에게 "우리 사이트에서 가장 중요한 건 리뷰 게시판 53페이지입니다"라고 알려주고 있는 셈입니다.

봇이 보는 사이트 지도 다이어그램

페이지네이션 URL과 개별 리뷰, 헷갈리는 차이

여기서 한 가지 구분해야 할 것이 있습니다.

/board/list.php?page=2&bdId=goodsreview — 이건 리뷰 목록 페이지입니다. 리뷰 제목이 10~20개 나열되어 있을 뿐, 2페이지나 3페이지나 구조는 동일하고 표시되는 제목만 다릅니다. 봇이 이 목록 페이지를 긁어가봤자 "리뷰 제목 나열"밖에 얻을 수 없습니다.

AI가 실제로 리뷰 내용을 읽으려면 개별 리뷰 상세 페이지(/board/view.php?bdId=goodsreview&sno=157 같은 URL)가 필요합니다. 여기에 실제 리뷰 본문이 들어있기 때문이죠.

그런데 브랜드 A의 사이트맵에는 리뷰 목록 페이지네이션은 53개나 들어있으면서, 개별 리뷰 상세 URL은 하나도 없었습니다. AI가 리뷰를 읽게 하고 싶다면 정반대여야 합니다.

다만 현실적으로 카페24의 리뷰 게시판은 개별 리뷰마다 독립 URL이 없는 경우도 많습니다. 상품 상세 페이지 안에 리뷰가 AJAX로 로딩되는 구조라면, 리뷰 내용이 봇에게 아예 보이지 않을 수도 있습니다. 이런 경우 사이트맵보다 상품 상세 페이지에 리뷰 텍스트가 HTML로 포함되어 있는지, 그리고 Review 구조화 데이터(JSON-LD)가 들어가 있는지가 훨씬 중요합니다. 구조화 데이터는 이 시리즈의 다음 주제에서 본격적으로 다루게 됩니다.

AEO 관점에서 사이트맵의 위치

사이트맵은 SEO 인프라의 기본 중 기본이지만, AEO 관점에서의 직접적 중요도는 높지 않습니다.

이유는 간단합니다. 사이트맵의 역할은 "이 페이지가 존재하니 크롤링해라"인데, AI 크롤러가 페이지를 발견하는 것과 AI가 그 페이지를 답변에 인용하는 것은 완전히 다른 문제이기 때문입니다. 발견은 전제 조건일 뿐이고, 인용되려면 콘텐츠 품질, 구조화 데이터, E-E-A-T 신호 같은 요소가 훨씬 결정적입니다.

AEO 중요도 순서로 정리하면 이렇습니다.

  • 직접 영향 (높음) — 구조화 데이터(JSON-LD), 콘텐츠 품질과 텍스트 구조, h1/시맨틱 태그, E-E-A-T 신호
  • 간접 영향 (중간) — canonical, meta description, 내부 링크 구조
  • 기반 인프라 (낮음) — robots.txt, sitemap.xml, 크롤링 속도

사이트맵이 없거나 엉망이면 크롤링 자체가 안 되니까 문제지만, 기본만 갖춰져 있으면 AEO 성과를 좌우하는 요소는 아닙니다.

진단 체크리스트 — 5분 진단 세트

이전 편에서 쌓아온 진단 항목에 sitemap.xml이 추가되었습니다. 어떤 사이트에 가더라도 아래 다섯 가지를 확인하면 기본적인 기술 SEO 상태를 빠르게 파악할 수 있습니다.

// 1. h1 확인
document.querySelectorAll('h1')

// 2. meta description 확인
document.querySelector('meta[name="description"]')?.content

// 3. canonical 확인
document.querySelector('link[rel="canonical"]')?.href

// 4. robots.txt 확인
// → https://도메인/robots.txt 직접 접근

// 5. sitemap.xml 확인
// → https://도메인/sitemap.xml 직접 접근
//   - URL 수가 실제 상품/페이지 수와 맞는지
//   - GSC/서치어드바이저에 제출되어 있는지