<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://towatari.app/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://towatari.app/gate</loc>
    <changefreq>daily</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://towatari.app/forge</loc>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://towatari.app/terms</loc>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://towatari.app/privacy</loc>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://towatari.app/guidelines</loc>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://towatari.app/minors</loc>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <!-- /archive removed 2026-09 SEO audit: it is a signed-in reader's own
       reading history (src/screens/Archive.jsx fetchCrossings), not a public
       page — it was in this file and allowed in robots.txt with nothing on it
       a signed-out crawler, or anyone but the account it belongs to, can see.
       Individual /world/:no and /character/:id pages are not listed here:
       they are real, public, crawlable pages (see robots.txt), but they come
       from the worlds table, not from a file in this repo, so a static list
       here would drift the moment a world is published or unpublished. They
       are reachable from /gate's internal links today; a generated sitemap
       sourced from the same query src/lib/account.js:fetchCatalog() runs
       (is_published, listed, already rating-filtered by the sitewide content
       policy before this seat ever saw a row) is the honest next step and is
       proposed, not built, here — see the discovery-strategy writeup for why. -->
</urlset>

