<?xml version="1.0" encoding="UTF-8"?>
<!--
  Hand-maintained. It lists only routes with stable, public content: the home
  page and the section views, plus one entry per lesson from src/lib/openings.js
  (those pages carry real prose, so they are the ones worth ranking).

  /play is deliberately absent: "/" client-redirects there, so listing both
  would hand Google two URLs with identical content.

  Adding a lesson to src/lib/openings.js means adding it here too.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.chessonline.app/</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/puzzles</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/analysis</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/learn</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/learn/italian-game</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/learn/ruy-lopez</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/learn/sicilian-defense</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/learn/rook-checkmate</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/learn/king-pawn-opposition</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/learn/philidor-position</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/learn/isolated-queen-pawn</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/learn/greek-gift-sacrifice</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
  <url>
    <loc>https://www.chessonline.app/learn/immortal-game</loc>
    <lastmod>2026-08-13</lastmod>
  </url>
</urlset>
