# @suaveplan/sitemap - Sitemap generation and parsing: sitemap.xml, sitemap index, image sitemaps, video sitemaps per sitemaps.org protocol ## Summary Sitemap generation and parsing for the sitemaps.org XML protocol. Produces valid `sitemap.xml`, sitemap index documents, and parses existing sitemaps. Supports Google image and video extensions as well as hreflang alternate links. ## Documentation tree - [builder](./src/core/builder/sitemap-builder.md) — _(no submodules)_ - [sitemap-builder](./src/core/builder/sitemap-builder.md) — _(no submodules)_ - [index-builder](./src/core/index-builder/index-builder.md) — _(no submodules)_ - [index-builder](./src/core/index-builder/index-builder.md) — _(no submodules)_ - [parser](./src/core/parser/sitemap-parser.md) — _(no submodules)_ - [sitemap-parser](./src/core/parser/sitemap-parser.md) — _(no submodules)_ - [errors](./src/errors/sitemap-error.md) — _(no submodules)_ - [sitemap-error](./src/errors/sitemap-error.md) — _(no submodules)_ - [schemas](./src/schemas/sitemap.schema.md) — _(no submodules)_ - [sitemap.schema](./src/schemas/sitemap.schema.md) — _(no submodules)_ - [utils](./src/utils/url-utils.md) — _(no submodules)_ - [url-utils](./src/utils/url-utils.md) — _(no submodules)_ - [sitemap-builder](./src/core/builder/sitemap-builder.md) — _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — _(no submodules)_- [parser](./src/core/parser/sitemap-parser.md) — _(no submodules)_- [sitemap-parser](./src/core/parser/sitemap-parser.md) — _(no submodules)_- [errors](./src/errors/sitemap-error.md) — _(no submodules)_- [sitemap-error](./src/errors/sitemap-error.md) — _(no submodules)_- [schemas](./src/schemas/sitemap.schema.md) — _(no submodules)_- [sitemap.schema](./src/schemas/sitemap.schema.md) — _(no submodules)_- [utils](./src/utils/url-utils.md) — _(no submodules)_- [url-utils](./src/utils/url-utils.md) — _(no submodules)_- [sitemap-builder](./src/core/builder/sitemap-builder.md) — _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — _(no submodules)_- [parser](./src/core/parser/sitemap-parser.md) — _(no submodules)_- [sitemap-parser](./src/core/parser/sitemap-parser.md) — _(no submodules)_- [errors](./src/errors/sitemap-error.md) — _(no submodules)_- [sitemap-error](./src/errors/sitemap-error.md) — _(no submodules)_- [schemas](./src/schemas/sitemap.schema.md) — _(no submodules)_- [sitemap.schema](./src/schemas/sitemap.schema.md) — _(no submodules)_- [utils](./src/utils/url-utils.md) — _(no submodules)_- [url-utils](./src/utils/url-utils.md) — _(no submodules)_- [sitemap-builder](./src/core/builder/sitemap-builder.md) — _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — _(no submodules)_- [parser](./src/core/parser/sitemap-parser.md) — _(no submodules)_- [sitemap-parser](./src/core/parser/sitemap-parser.md) — _(no submodules)_- [errors](./src/errors/sitemap-error.md) — _(no submodules)_- [sitemap-error](./src/errors/sitemap-error.md) — _(no submodules)_- [schemas](./src/schemas/sitemap.schema.md) — _(no submodules)_- [sitemap.schema](./src/schemas/sitemap.schema.md) — _(no submodules)_- [utils](./src/utils/url-utils.md) — _(no submodules)_- [url-utils](./src/utils/url-utils.md) — _(no submodules)_- [sitemap-builder](./src/core/builder/sitemap-builder.md) — _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — _(no submodules)_ - [index-builder](./src/core/index-builder/index-builder.md) — _(no submodules)_- [parser](./src/core/parser/sitemap-parser.md) — _(no submodules)_ - [sitemap-parser](./src/core/parser/sitemap-parser.md) — _(no submodules)_- [errors](./src/errors/sitemap-error.md) — _(no submodules)_ - [sitemap-error](./src/errors/sitemap-error.md) — _(no submodules)_- [schemas](./src/schemas/sitemap.schema.md) — _(no submodules)_ - [sitemap.schema](./src/schemas/sitemap.schema.md) — _(no submodules)_- [utils](./src/utils/url-utils.md) — _(no submodules)_ - [url-utils](./src/utils/url-utils.md) — _(no submodules)_ ## Installation ```bash bun add @suaveplan/sitemap ``` ## Packages | Module | Purpose | |--------|---------| | [sitemap-builder](src/core/builder/sitemap-builder.md) | Fluent builder for `` sitemap documents | | [index-builder](src/core/index-builder/index-builder.md) | Fluent builder for `` documents | | [sitemap-parser](src/core/parser/sitemap-parser.md) | Parse sitemap and sitemap index XML strings | | [url-utils](src/utils/url-utils.md) | URL validation, normalisation, XML escaping | | [sitemap.schema](src/schemas/sitemap.schema.md) | Zod schemas for all wire-format types | | [sitemap-error](src/errors/sitemap-error.md) | Error codes and `SitemapError` class | ## Quick Start ```ts import { createSitemap, createSitemapIndex, parseSitemap } from "@suaveplan/sitemap"; // Build a sitemap const xml = createSitemap({ pretty: true }) .add({ loc: "https://example.com/", changefreq: "weekly", priority: 1.0 }) .add({ loc: "https://example.com/about", lastmod: "2024-01-15" }) .build(); // Build a sitemap index const indexXml = createSitemapIndex({ pretty: true }) .add("https://example.com/sitemap-blog.xml", "2024-06-01") .add("https://example.com/sitemap-products.xml") .build(); // Parse an existing sitemap const urls = parseSitemap(xml); console.log(urls[0].loc); // "https://example.com/" ``` ## Subpath Exports ```ts import { SitemapBuilder, createSitemap } from "@suaveplan/sitemap/builder"; import { SitemapIndexBuilder, createSitemapIndex } from "@suaveplan/sitemap/index-builder"; import { parseSitemap, parseSitemapIndex } from "@suaveplan/sitemap/parser"; import { SitemapError, SITEMAP_CODES } from "@suaveplan/sitemap/errors"; ```