본문으로 건너뛰기

사이트맵이란?

image

정의

사이트맵(Sitemap)은 웹사이트의 모든 페이지를 정리하여 나열한 파일로, 검색엔진에게 사이트의 구조를 알려주는 역할을 합니다. 마치 건물의 설계도나 지도처럼, 사이트맵은 검색엔진 크롤러가 웹사이트를 효율적으로 탐색하고 인덱싱할 수 있도록 도와줍니다.

사이트맵에는 두 가지 주요 유형이 있습니다. 첫 번째는 XML 사이트맵으로, 주로 검색엔진을 위해 만들어지며 사람이 읽기보다는 기계가 읽기 쉬운 형식입니다. 두 번째는 HTML 사이트맵으로, 웹사이트 방문자가 사이트의 전체 구조를 한눈에 파악할 수 있도록 만든 페이지입니다. SEO 관점에서는 XML 사이트맵이 더 중요하며, 일반적으로 'sitemap.xml'이라는 파일명으로 웹사이트의 루트 디렉토리에 위치합니다.

사이트맵은 특히 새로운 웹사이트, 페이지 수가 많은 대규모 사이트, 내부 링크가 잘 연결되지 않은 사이트, 외부 링크가 적은 사이트에서 매우 유용합니다. 검색엔진이 모든 페이지를 자연스럽게 발견하기 어려운 경우, 사이트맵을 통해 명시적으로 페이지의 존재를 알릴 수 있습니다.

특징

  • 검색엔진 크롤링 효율성 향상: 사이트맵은 검색엔진 봇이 웹사이트의 모든 중요한 페이지를 빠르고 정확하게 찾을 수 있도록 돕습니다.
  • 새로운 콘텐츠의 빠른 인덱싱: 사이트맵에 새 페이지를 추가하고 검색엔진에 알리면, 일반적인 크롤링보다 훨씬 빠르게 인덱싱될 수 있습니다.
  • 페이지 메타데이터 제공: 각 URL의 최종 수정일, 업데이트 빈도, 중요도 등의 추가 정보를 제공할 수 있습니다.
  • 다양한 콘텐츠 유형 지원: 일반 웹페이지뿐만 아니라 이미지, 비디오, 뉴스 등 특수한 콘텐츠 유형을 위한 전문 사이트맵도 존재합니다.
  • 자동 생성 및 업데이트 가능: 대부분의 CMS(WordPress, Shopify 등)는 사이트맵을 자동으로 생성하고 업데이트하는 기능을 제공합니다.

활용 방법

사이트맵을 효과적으로 만들고 활용하는 방법은 다음과 같습니다.

1단계: 사이트맵 생성 웹사이트의 규모와 기술 스택에 따라 여러 방법으로 사이트맵을 생성할 수 있습니다. WordPress 같은 CMS를 사용한다면 Yoast SEO 같은 플러그인이 자동으로 사이트맵을 생성해줍니다. 정적 사이트나 커스텀 웹사이트라면 온라인 사이트맵 생성기를 사용하거나, 프로그래밍 언어를 이용해 직접 생성할 수 있습니다.

2단계: 사이트맵 최적화 사이트맵에는 검색엔진에 인덱싱되기를 원하는 페이지만 포함시켜야 합니다. 중복 콘텐츠, 리디렉션되는 페이지, noindex 태그가 있는 페이지, 에러 페이지 등은 제외해야 합니다. 또한 하나의 사이트맵 파일은 최대 50,000개의 URL과 50MB 크기를 초과할 수 없으므로, 큰 사이트는 여러 사이트맵으로 분할하고 사이트맵 인덱스 파일로 관리해야 합니다.

3단계: robots.txt에 사이트맵 위치 명시 robots.txt 파일에 사이트맵의 위치를 명시하면, 검색엔진이 사이트맵을 쉽게 찾을 수 있습니다. 파일 맨 아래에 "Sitemap: https://yoursite.com/sitemap.xml" 형식으로 추가합니다.

4단계: Google Search Console에 제출 Google Search Console에 로그인하여 '사이트맵' 섹션에서 사이트맵 URL을 제출합니다. 이를 통해 구글이 사이트맵을 즉시 인식하고 크롤링을 시작할 수 있습니다.

5단계: 다른 검색엔진에도 제출 Bing Webmaster Tools, Naver Search Advisor 등 다른 검색엔진의 웹마스터 도구에도 사이트맵을 제출하는 것이 좋습니다.

6단계: 정기적인 업데이트 및 모니터링 사이트맵은 웹사이트의 변경사항을 반영하여 정기적으로 업데이트되어야 합니다. Google Search Console에서 사이트맵의 상태를 확인하고, 오류가 있다면 즉시 수정해야 합니다.

예시

예시 1: 기본 XML 사이트맵 구조

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://zero-coke.com/</loc>
<lastmod>2024-03-23</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://zero-coke.com/blog/what-is-seo</loc>
<lastmod>2024-03-20</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://zero-coke.com/blog/what-is-backlink</loc>
<lastmod>2024-03-22</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>

이 예시는 가장 기본적인 XML 사이트맵 구조입니다. 각 URL에 대해 위치(loc), 최종 수정일(lastmod), 변경 빈도(changefreq), 우선순위(priority)를 지정할 수 있습니다.

예시 2: 사이트맵 인덱스 파일 대규모 사이트의 경우 여러 사이트맵을 관리하기 위한 인덱스 파일이 필요합니다:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://zero-coke.com/sitemap-pages.xml</loc>
<lastmod>2024-03-23</lastmod>
</sitemap>
<sitemap>
<loc>https://zero-coke.com/sitemap-blog.xml</loc>
<lastmod>2024-03-23</lastmod>
</sitemap>
<sitemap>
<loc>https://zero-coke.com/sitemap-images.xml</loc>
<lastmod>2024-03-22</lastmod>
</sitemap>
</sitemapindex>

예시 3: 이미지 사이트맵 이미지 검색 최적화를 위한 전용 사이트맵:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://zero-coke.com/blog/seo-guide</loc>
<image:image>
<image:loc>https://zero-coke.com/img/seo-infographic.png</image:loc>
<image:title>SEO 최적화 인포그래픽</image:title>
<image:caption>초보자를 위한 SEO 가이드</image:caption>
</image:image>
</url>
</urlset>

예시 4: Node.js를 이용한 동적 사이트맵 생성

const { SitemapStream, streamToPromise } = require('sitemap');
const { createWriteStream } = require('fs');

async function generateSitemap() {
const sitemap = new SitemapStream({
hostname: 'https://zero-coke.com'
});

const writeStream = createWriteStream('./public/sitemap.xml');
sitemap.pipe(writeStream);

// 홈페이지 추가
sitemap.write({
url: '/',
changefreq: 'daily',
priority: 1.0
});

// 블로그 포스트 추가
const posts = await getBlogPosts(); // 데이터베이스에서 가져오기
posts.forEach(post => {
sitemap.write({
url: `/blog/${post.slug}`,
lastmod: post.updatedAt,
changefreq: 'weekly',
priority: 0.8
});
});

sitemap.end();
await streamToPromise(sitemap);
console.log('사이트맵이 성공적으로 생성되었습니다.');
}

generateSitemap();

장단점

장점

  • 검색엔진 발견성 향상: 사이트맵을 제공하면 검색엔진이 웹사이트의 모든 중요한 페이지를 누락없이 발견할 수 있습니다. 특히 내부 링크 구조가 복잡하거나 새로운 사이트의 경우 매우 유용합니다.

  • 인덱싱 속도 개선: 새로운 콘텐츠를 게시하거나 기존 콘텐츠를 업데이트할 때, 사이트맵을 통해 검색엔진에 즉시 알릴 수 있어 인덱싱 시간을 크게 단축시킵니다.

  • 추가 메타데이터 제공: URL의 중요도, 업데이트 빈도, 최종 수정일 등의 정보를 검색엔진에 전달하여 크롤링 우선순위를 조정할 수 있습니다. 이는 크롤 예산이 제한된 대규모 사이트에서 특히 중요합니다.

단점

  • 유지보수 필요: 웹사이트가 자주 변경되는 경우, 사이트맵도 지속적으로 업데이트해야 합니다. 자동화되지 않으면 이는 추가적인 작업 부담이 될 수 있습니다.

  • 순위 보장 안함: 사이트맵이 있다고 해서 검색 순위가 자동으로 올라가는 것은 아닙니다. 사이트맵은 단지 크롤링과 인덱싱을 돕는 도구일 뿐이며, 실제 순위는 콘텐츠 품질, 백링크 등 다른 요소들에 의해 결정됩니다.

  • 잘못된 설정 시 역효과: 사이트맵에 404 에러 페이지, 중복 콘텐츠, 리디렉션 페이지 등이 포함되어 있으면 검색엔진에 혼란을 주고 크롤 예산을 낭비하게 됩니다. 따라서 정확한 설정과 정기적인 점검이 필수적입니다.

FAQ

Q: 사이트맵이 없으면 검색엔진에 노출되지 않나요? A: 아니요, 사이트맵이 없어도 검색엔진은 내부 링크를 따라가며 페이지를 발견하고 인덱싱할 수 있습니다. 다만 사이트맵이 있으면 이 과정이 훨씬 효율적이고 빠르게 진행됩니다. 특히 신규 사이트나 내부 링크 구조가 복잡한 사이트에서는 사이트맵이 매우 중요합니다.

Q: 사이트맵의 priority와 changefreq 값이 검색 순위에 영향을 주나요? A: 구글은 공식적으로 priority 값을 무시한다고 밝혔으며, changefreq도 참고만 할 뿐 크게 중요하지 않습니다. 이 값들은 상대적인 힌트일 뿐이며, 검색엔진은 자체적인 알고리즘으로 크롤링 우선순위를 결정합니다. 오히려 lastmod(최종 수정일)이 더 유용한 정보입니다.

Q: 사이트맵은 얼마나 자주 업데이트해야 하나요? A: 웹사이트의 업데이트 빈도에 따라 다릅니다. 매일 새 콘텐츠를 게시하는 뉴스 사이트라면 실시간으로 업데이트되어야 하고, 월 1-2회 업데이트되는 소규모 비즈니스 사이트라면 그에 맞춰 업데이트하면 됩니다. 대부분의 CMS는 페이지가 추가되거나 수정될 때 자동으로 사이트맵을 업데이트합니다.

Q: HTML 사이트맵도 만들어야 하나요? A: HTML 사이트맵은 SEO에 직접적인 영향은 크지 않지만, 사용자 경험 측면에서 유용할 수 있습니다. 특히 복잡한 구조의 대규모 웹사이트에서 방문자가 원하는 페이지를 빠르게 찾을 수 있도록 도와줍니다. 리소스가 허락한다면 XML 사이트맵과 함께 HTML 사이트맵도 제공하는 것이 좋습니다.