<?xml version="1.0" encoding="UTF-8"?>
<!--
  Sitemap of the public (crawlable) pages, in both languages.
  GENERATED SHAPE — the page list lives in scripts/publicRoutes.mjs, shared with
  the build-time prerender so the two cannot drift, and the hreflang set mirrors
  hreflangAlternates() in src/components/Seo.tsx. src/utils/sitemapParity.test.ts
  fails if this file disagrees with either. Add a page there, then mirror it here.

  Each URL declares region-NEUTRAL en/fr alongside en-CA/fr-CA. The Canadian pair
  alone made every page region-irrelevant to a searcher outside Canada — fr-CA
  targets French speakers *in Canada*, so a reader in France matched nothing.
  Google prefers the most specific match, so Quebec readers are unaffected.

  Catalog pages (editions, works, authors, lists) are auth-gated today and are
  intentionally NOT listed — listing pages a crawler cannot reach hurts trust.
  (Individual /edition/:id pages are server-rendered by the editionMeta function
  but are unbounded, so they are enumerated by the editionsSitemap function at
  /sitemap-editions.xml instead.)
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://booknook-app.com/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/" />
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/fr</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/" />
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/faq</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/faq" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/faq" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/faq" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/faq" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/faq" />
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/fr/faq</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/faq" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/faq" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/faq" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/faq" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/faq" />
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/partners</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/partners" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/partners" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/partners" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/partners" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/partners" />
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/fr/partners</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/partners" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/partners" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/partners" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/partners" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/partners" />
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/policies</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/policies" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/policies" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/policies" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/policies" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/policies" />
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/fr/policies</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/policies" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/policies" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/policies" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/policies" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/policies" />
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/board</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/board" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/board" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/board" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/board" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/board" />
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/fr/board</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/board" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/board" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/board" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/board" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/board" />
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/news</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/news" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/news" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/news" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/news" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/news" />
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/fr/news</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/news" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/news" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/news" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/news" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/news" />
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/changelog</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/changelog" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/changelog" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/changelog" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/changelog" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/changelog" />
    <changefreq>weekly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/fr/changelog</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/changelog" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/changelog" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/changelog" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/changelog" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/changelog" />
    <changefreq>weekly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/guides/scan-bookshelf-ocr</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/guides/scan-bookshelf-ocr" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/guides/scan-bookshelf-ocr" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/guides/scan-bookshelf-ocr" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/guides/scan-bookshelf-ocr" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/guides/scan-bookshelf-ocr" />
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/fr/guides/scan-bookshelf-ocr</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/guides/scan-bookshelf-ocr" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/guides/scan-bookshelf-ocr" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/guides/scan-bookshelf-ocr" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/guides/scan-bookshelf-ocr" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/guides/scan-bookshelf-ocr" />
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/guides/bilingual-reading-tracker-canada</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/guides/bilingual-reading-tracker-canada" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/guides/bilingual-reading-tracker-canada" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/guides/bilingual-reading-tracker-canada" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/guides/bilingual-reading-tracker-canada" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/guides/bilingual-reading-tracker-canada" />
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://booknook-app.com/fr/guides/bilingual-reading-tracker-canada</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://booknook-app.com/guides/bilingual-reading-tracker-canada" />
    <xhtml:link rel="alternate" hreflang="en-CA" href="https://booknook-app.com/guides/bilingual-reading-tracker-canada" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://booknook-app.com/fr/guides/bilingual-reading-tracker-canada" />
    <xhtml:link rel="alternate" hreflang="fr-CA" href="https://booknook-app.com/fr/guides/bilingual-reading-tracker-canada" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://booknook-app.com/guides/bilingual-reading-tracker-canada" />
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
</urlset>
