<?xml version="1.0" encoding="UTF-8"?>
<!-- Hand-maintained (see astro.config.mjs); regenerated 2026-10-05 from the real
     src/pages list (en + /zh/ twins, legal pages included). All <loc>/hreflang
     hrefs use the TRAILING-SLASH form Astro actually serves — a bare path 301s
     to the slashed one, and submitting the bare form made Google index nothing
     (redirect + canonical loop). The two SPA shells (/gravity/, /snore-analyzer/)
     are NOT listed: they canonicalize to the marketing pages by design, so
     submitting them only produces "alternate page with proper canonical tag"
     exclusions. /admin and /404 are noindex. Keep the Makefile INDEXNOW_URLS
     list in step with this file. -->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://hplab.dev/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://hplab.dev/products/gravity/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/products/gravity/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/products/gravity/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/products/gravity/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/products/gravity/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/products/gravity/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/products/gravity/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/products/gravity/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://hplab.dev/products/snore-analyzer/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/products/snore-analyzer/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/products/snore-analyzer/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/products/snore-analyzer/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/products/snore-analyzer/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/products/snore-analyzer/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/products/snore-analyzer/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/products/snore-analyzer/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://hplab.dev/learn/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/learn/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://hplab.dev/learn/how-to-record-snoring/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/how-to-record-snoring/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/how-to-record-snoring/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/how-to-record-snoring/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/learn/how-to-record-snoring/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/how-to-record-snoring/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/how-to-record-snoring/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/how-to-record-snoring/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/learn/snoring-vs-sleep-apnea-sounds/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/snoring-vs-sleep-apnea-sounds/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/snoring-vs-sleep-apnea-sounds/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/snoring-vs-sleep-apnea-sounds/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/learn/snoring-vs-sleep-apnea-sounds/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/snoring-vs-sleep-apnea-sounds/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/snoring-vs-sleep-apnea-sounds/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/snoring-vs-sleep-apnea-sounds/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/learn/understand-your-snore-report/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/understand-your-snore-report/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/understand-your-snore-report/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/understand-your-snore-report/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/learn/understand-your-snore-report/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/understand-your-snore-report/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/understand-your-snore-report/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/understand-your-snore-report/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/learn/visualize-your-professional-network/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/visualize-your-professional-network/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/visualize-your-professional-network/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/visualize-your-professional-network/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/learn/visualize-your-professional-network/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/visualize-your-professional-network/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/visualize-your-professional-network/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/visualize-your-professional-network/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/privacy/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/privacy/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/privacy/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/privacy/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/privacy/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/privacy/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/privacy/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/privacy/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/terms/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/terms/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/terms/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/terms/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/terms/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/terms/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/terms/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/terms/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/personal-info/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/personal-info/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/personal-info/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/personal-info/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/personal-info/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/personal-info/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/personal-info/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/personal-info/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/third-party-sharing/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/third-party-sharing/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/third-party-sharing/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/third-party-sharing/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/third-party-sharing/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/third-party-sharing/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/third-party-sharing/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/third-party-sharing/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/face-recognition/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/face-recognition/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/face-recognition/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/face-recognition/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/face-recognition/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/face-recognition/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/face-recognition/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/face-recognition/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/child-safety/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/child-safety/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/child-safety/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/child-safety/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/child-safety/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/child-safety/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/child-safety/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/child-safety/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/account-deletion/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/account-deletion/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/account-deletion/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/account-deletion/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/account-deletion/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/account-deletion/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/account-deletion/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/account-deletion/"/>
    <lastmod>2026-10-05</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
