<?xml version="1.0" encoding="UTF-8"?>
<!--
  Kloti sitemap.

  THIS FILE MUST EXIST BEFORE build_blog.py RUNS. The generator splices the blog block between
  the two markers below and it does NOT create the file: if the file is missing it prints one
  warning and returns, and every blog URL is silently absent from the sitemap with nothing else
  to tell you. That is the one ordering trap in this pipeline.

  Two rules, both learned the hard way:

  1. lastmod means the day the page changed in a way a READER would notice, not the day the file
     was touched. These sat frozen for a month once while the pages moved underneath them, which
     tells a crawler there is no reason to come back.

  2. Every URL here must answer 200 at exactly the URL written, and must be the URL its own page
     names as canonical. A sitemap entry that redirects, or that names a URL the page does not
     claim, is a contradiction, and contradicting yourself is how the whole site collapsed to one
     indexed page before. Do not list a page that does not exist yet.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <url>
    <loc>https://kloti.co/</loc>
    <lastmod>2026-09-01</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <!--
    /home is the About page, added 2026-09-01. It is a real prerendered document at
    public/home.html with its own canonical, not a redirect: until today /home answered a 301
    to /. It is linked from the footer of every static page, because an orphan page with no
    inbound link is a page a crawler has little reason to trust or revisit.
  -->
  <url>
    <loc>https://kloti.co/home</loc>
    <lastmod>2026-09-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>

  <!-- BEGIN blog (generated by app/tools/build_blog.py, do not hand-edit) -->
  <url>
    <loc>https://kloti.co/blog</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/category/carousels</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/category/photography</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/why-nobody-swipes-past-your-first-slide</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/what-to-write-in-a-carousel-caption</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/what-to-post-when-you-do-not-sell-a-product</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/how-to-make-an-instagram-carousel</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/what-to-post-when-you-have-nothing-new-to-sell</loc>
    <lastmod>2026-08-28</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/why-your-white-background-came-out-grey</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/what-to-photograph-when-you-only-sell-one-thing</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/what-a-good-product-carousel-says</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/six-pictures-from-one-product</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/keep-the-words-off-the-picture</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/image-sizes-that-actually-matter</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/how-to-photograph-clothes-without-a-model</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/how-to-photograph-candles-and-home-fragrance</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/how-to-describe-your-product</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/best-ai-product-photography-apps-2026</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/shooting-a-menu-that-keeps-changing</loc>
    <lastmod>2026-08-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/a-ring-is-a-mirror</loc>
    <lastmod>2026-08-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/a-house-look-for-work-that-is-never-the-same-twice</loc>
    <lastmod>2026-08-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/which-image-goes-where</loc>
    <lastmod>2026-08-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/nobody-can-tell-how-big-it-is</loc>
    <lastmod>2026-08-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://kloti.co/blog/why-ai-product-photos-look-fake</loc>
    <lastmod>2026-07-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <!-- END blog -->

  <!-- BEGIN pages (generated by app/tools/build_faq.py, do not hand-edit) -->
  <url>
    <loc>https://kloti.co/faq</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://kloti.co/terms</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://kloti.co/privacy</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <!-- END pages -->

</urlset>
