<?xml version="1.0" encoding="UTF-8"?>
<!-- A sitemap INDEX, not a sitemap. The three files it points at are regenerated nightly by
     livekick.seo.tasks.generate_sitemap into s3://livekick-sitemap/sitemaps/ and served at
     /sitemaps/* through CloudFront E35OT3DLLOIP9S.

     NO DOUBLE HYPHEN ANYWHERE IN THIS COMMENT. XML 1.0 section 2.5 forbids the two-hyphen
     sequence inside a comment, and a conforming parser rejects the whole document. This file
     carried one from 2026-10-26 until 2026-10-27 and was served, HTTP 200, unparseable, so the
     index named no sitemaps at all to anything that actually parses XML. The house style of
     setting a clause off with two hyphens is correct everywhere else in this repo and is illegal
     here; use a comma, a semicolon or parentheses instead.

     This file is committed rather than generated, on purpose: the set of filenames changes
     essentially never, so generating it nightly would buy nothing and would need a second write
     path into the web bucket. It ships through the same dist-root mechanism as robots.txt
     (#1490) and is invalidated on deploy.

     It previously held five hand-written static URLs. Those are now covered by the nightly
     static-pages.xml below, so nothing is lost.

     recordings.xml was REMOVED 2026-10-26 (GI #422). It was submitting 2,453 individual dated
     recordings (95% of the whole sitemap) and Google was deduplicating them: "Duplicate, Google
     chose different canonical than user" went from 0 to ~120 in three days, every example an
     /en/ondemand/ date-form URL. The cause is recurring classes. The same class on different
     dates produces pages with IDENTICAL title, description and h1 and about 125 words each
     (measured: dianne-bondy slow-your-roll 2020-09-08 vs 2020-09-22, and jeffrey-williams
     happy-spine 2022-03-12 vs 2022-08-24). Those 2,453 URLs returned 9 clicks and 226 impressions
     in 28 days, and 8 of the 9 clicks went to a URL form this sitemap does not even submit.
     Series pages replace them later, introduced a chunk at a time.

     courses.xml was REMOVED 2026-10-27 (GI #422), on Yarden's instruction: "Courses you can
     remove, we don't support courses at the moment. We're going to rebuild it later in the future
     as series, but right now courses can be removed." A product decision, not a cleanup: the 30
     pages it submitted are alive and render (645 words and one h1 on /p/rhythmflow). All 30 were
     locale-less at /p/{slug}, and GSC returned 0 clicks and 0 impressions for a ~/p/ filter,
     measured 2026-10-27. Expected back as series pages. The orphaned S3 object is left in place,
     exactly as recordings.xml is; both get an empty urlset in a separate change.

     dj.xml was REMOVED 2026-10-27 (GI #422), on Yarden's ruling, same treatment as courses. It
     submitted 9 URLs, all locale-less at /dj/{slug}, which after the courses removal made it the
     last locale-less surface in this sitemap. GSC, page filter containing /dj/, 2026-07-26 to
     2026-10-25: 0 clicks, 49 impressions, average position 15.4. Zero clicks over a quarter.

     47 of those 49 impressions went to /en/dj/{slug} URLs carrying a utm query string, and only
     2 to the /dj/{slug} form this index submitted. The utm parameters are our own: the homepage
     DJ components attach them to the internal routerLink, so Google indexed the tagged variants.
     The DJ pages stay live for members; they stop being submitted and serve noindex, follow.

     Runbook: ops/runbooks/CLOUDFRONT_SITEMAP_BEHAVIOUR.md -->
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap><loc>https://www.livekick.com/sitemaps/static-pages.xml</loc></sitemap>
  <sitemap><loc>https://www.livekick.com/sitemaps/trainers.xml</loc></sitemap>
  <sitemap><loc>https://www.livekick.com/sitemaps/classes.xml</loc></sitemap>
</sitemapindex>
