npm sitemap
Node.js용 Sitemap 생성 라이브러리
sitemap은 Node.js 환경에서 sitemap.xml 파일을 생성하기 위한 라이브러리이자 CLI 도구다.
스트림 기반으로 동작하며, 대량의 URL을 효율적으로 처리하도록 설계되어 있다.
단일 sitemap 생성은 물론, URL 개수가 많은 경우 여러 sitemap 파일을 분할 생성하고
이를 연결하는 sitemap index까지 함께 생성할 수 있다.
스트림 기반 Sitemap 생성
sitemap은 Node.js 스트림을 기반으로 동작한다.
URL 목록을 한 번에 메모리에 적재하지 않고,
입력되는 URL을 순차적으로 sitemap XML로 변환해 출력한다.
이 방식은 다음과 같은 특징을 가진다.
- 대량 URL 처리에 적합
- 입력 소스에 제한이 없음 (배열, 파일, 네트워크 스트림 등)
- XML 결과를 문자열, 파일, 다른 스트림으로 자유롭게 전달 가능
기본 사용 방식
sitemap 생성은 다음 흐름으로 이루어진다.
- Sitemap 전체 설정을 포함한
SitemapStream생성 - URL 항목을 스트림에 전달
- XML 결과를 스트림 또는 문자열로 출력
import { SitemapStream, streamToPromise } from 'sitemap'
import { Readable } from 'stream'
const links = [
{ url: '/page-1/', changefreq: 'daily', priority: 0.3 }
]
const stream = new SitemapStream({ hostname: 'https://example.com' })
const xml = await streamToPromise(
Readable.from(links).pipe(stream)
)
xml.toString()
SitemapStream 옵션
Sitemap 전체에 공통으로 적용되는 설정이다.
-
hostname
사이트의 기본 도메인
상대 경로 URL 앞에 자동으로 결합된다. -
xslUrl
sitemap XML에 적용할 XSL 스타일시트 URL -
lastmodDateOnly
lastmod값을 날짜(YYYY-MM-DD)만 출력할지 여부 -
xmlns
sitemap XML 네임스페이스 설정
이미지, 비디오, 뉴스 sitemap 확장 사용 여부를 제어한다.
Sitemap Item 옵션 (URL 단위)
각 URL 항목에 적용되는 필드들이다.
검색엔진에 제공되는 정보는 힌트(hint) 역할을 하며, 강제 규칙은 아니다.
기본 필드
-
url
페이지 경로 또는 전체 URL -
lastmod
마지막 수정 날짜 -
changefreq
변경 빈도 힌트
(always,hourly,daily,weekly,monthly,yearly,never) -
priority
중요도 힌트 (0.0 ~ 1.0)
이미지 Sitemap 확장
이미지 중심 콘텐츠를 위한 sitemap 확장을 지원한다.
- 이미지 URL
- 이미지 제목 및 설명
- 위치 정보
- 라이선스 정보
비디오 Sitemap 확장
비디오 콘텐츠에 대한 sitemap 확장을 지원한다.
- 썸네일 이미지 URL
- 비디오 제목
- 비디오 설명
- 비디오 플레이어 URL
Google News Sitemap 확장
뉴스 콘텐츠를 위한 Google News sitemap 필드를 지원한다.
- 발행 정보
- 발행 날짜
- 기사 제목
- 키워드
다국어 페이지 (hreflang)
다국어 사이트를 위한 hreflang 링크 정의를 지원한다.
- 언어 코드
- 해당 언어에 대응되는 페이지 URL
검색엔진이 언어별 페이지 관계를 올바르게 인식하도록 돕는다.
여러 Sitemap 파일과 Sitemap Index
하나의 sitemap 파일에는 최대 50,000개의 URL만 포함할 수 있다.
이를 초과하는 경우 여러 sitemap 파일과 sitemap index 구성이 필요하다.
sitemap은 다음 기능을 제공한다.
- sitemap 파일 자동 분할
- 분할된 sitemap을 연결하는 sitemap index 생성
CLI 지원
sitemap은 CLI도 함께 제공한다.
npx sitemap < listofurls.txt
텍스트 파일이나 기존 sitemap을 기반으로 sitemap 생성, 파싱, 검증 작업을 수행할 수 있다.
요약
sitemap은 Node.js 환경을 위한 sitemap 생성 라이브러리다- 스트림 기반 구조로 대량 URL 처리에 적합하다
- 기본 sitemap과 이미지·비디오·뉴스 확장을 지원한다
- 다국어 페이지와 sitemap index 생성을 지원한다
- 라이브러리와 CLI를 모두 제공한다