<?xml version="1.0" encoding="UTF-8"?>
<!--
  Phase L.1 — Story Spinner sitemap.

  Static. Lists every public, indexable route. Authenticated routes
  (dashboard, books/*, profile, etc.) are intentionally absent.

  When a new public route is added:
    1. Add a <url> entry below.
    2. Add a useSeoMeta() call in the corresponding view.
    3. Update apps/web/public/llms.txt and apps/web/public/robots.txt
       (the latter only if the new path is private and needs Disallow).
    4. If the route's content changes meaningfully, bump <lastmod>.

  <lastmod> uses the date this slice landed (Phase L.1, 2026-04-28). It
  doesn't have to track every content edit — Google + LLM crawlers
  re-fetch periodically anyway. Bump it when you make a real content
  change so the next crawl is prioritized.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <url>
    <loc>https://thestoryspinner.com/</loc>
    <lastmod>2026-05-22</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <url>
    <loc>https://thestoryspinner.com/pricing</loc>
    <lastmod>2026-04-28</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://thestoryspinner.com/login</loc>
    <lastmod>2026-04-28</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.4</priority>
  </url>

  <url>
    <loc>https://thestoryspinner.com/privacy</loc>
    <lastmod>2026-04-28</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>

  <url>
    <loc>https://thestoryspinner.com/terms</loc>
    <lastmod>2026-04-28</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>

  <url>
    <loc>https://thestoryspinner.com/wishlist</loc>
    <lastmod>2026-04-29</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://thestoryspinner.com/invite</loc>
    <lastmod>2026-05-22</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
  </url>

</urlset>
