<?xml version="1.0" encoding="UTF-8"?>
<!--
  Hand-maintained, and every URL is the EXTENSIONLESS form that page's own
  <link rel="canonical"> declares. Advertising /join.html against a canonical of
  /join is a duplicate the sitemap itself creates; it did exactly that until
  2026-09-01.

  Deliberately absent: the transactional and legal pages (paid, joined, free,
  terms, privacy), which carry their own noindex, and /order, which is a
  redirect.

  📅 Every <lastmod> is written by scripts/np-sitemap-lastmod.mjs from the page's own bytes
  (data/sitemap-lastmod.json), never by hand: each builder runs it after writing, and after a
  hand edit to a page run it yourself. Its --check fails a date that is behind its page.

  ⚠️ The /training/ and content pages are GENERATED (scripts/np-build-area-guides.mjs
  and scripts/np-build-content-pages.mjs). Both builds assert that every page they
  produce appears below and FAIL if one does not — a generated page missing from
  here is live, correct and undiscoverable, with nothing going red. Adding a row to
  a generator's table means editing this file too; the build prints the lines.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <!-- the site -->
  <url><loc>https://nakedproteinbali.com/</loc><lastmod>2026-10-20</lastmod><priority>1.0</priority></url>
  <url><loc>https://nakedproteinbali.com/join</loc><lastmod>2026-10-17</lastmod><priority>0.9</priority></url>

  <!-- the service page: the one measured term in this territory with buying intent -->
  <url><loc>https://nakedproteinbali.com/meal-prep-canggu</loc><lastmod>2026-10-20</lastmod><priority>0.9</priority></url>

  <!-- SEO articles: generated from data/seo-articles/ by /meta-seo; the hub lists every one -->
  <url><loc>https://nakedproteinbali.com/guides/</loc><lastmod>2026-10-20</lastmod><priority>0.6</priority></url>
  <url><loc>https://nakedproteinbali.com/ready-to-eat-chicken-breast</loc><lastmod>2026-10-20</lastmod><priority>0.6</priority></url>

  <!-- the eating guide: a directory, generated from data/canggu-food.json -->
  <url><loc>https://nakedproteinbali.com/healthy-food-canggu</loc><lastmod>2026-10-20</lastmod><priority>0.8</priority></url>

  <!-- one page per flavour -->
  <url><loc>https://nakedproteinbali.com/p/naked</loc><lastmod>2026-10-20</lastmod><priority>0.8</priority></url>
  <url><loc>https://nakedproteinbali.com/p/honey-mustard</loc><lastmod>2026-10-20</lastmod><priority>0.8</priority></url>
  <url><loc>https://nakedproteinbali.com/p/teriyaki</loc><lastmod>2026-10-20</lastmod><priority>0.8</priority></url>
  <url><loc>https://nakedproteinbali.com/p/spicy-tomato</loc><lastmod>2026-10-20</lastmod><priority>0.8</priority></url>
  <url><loc>https://nakedproteinbali.com/p/sesame</loc><lastmod>2026-10-20</lastmod><priority>0.8</priority></url>

  <!-- where to train: the hub, then one guide per area and discipline -->
  <url><loc>https://nakedproteinbali.com/training/</loc><lastmod>2026-10-20</lastmod><priority>0.8</priority></url>
  <url><loc>https://nakedproteinbali.com/training/prices</loc><lastmod>2026-10-20</lastmod><priority>0.8</priority></url>
  <url><loc>https://nakedproteinbali.com/training/gyms-canggu</loc><lastmod>2026-10-20</lastmod><priority>0.7</priority></url>
  <url><loc>https://nakedproteinbali.com/training/gyms-seminyak</loc><lastmod>2026-10-20</lastmod><priority>0.7</priority></url>
  <url><loc>https://nakedproteinbali.com/training/gyms-pererenan</loc><lastmod>2026-10-20</lastmod><priority>0.6</priority></url>
  <url><loc>https://nakedproteinbali.com/training/gyms-umalas</loc><lastmod>2026-10-20</lastmod><priority>0.6</priority></url>
  <url><loc>https://nakedproteinbali.com/training/gyms-berawa</loc><lastmod>2026-10-20</lastmod><priority>0.6</priority></url>
  <url><loc>https://nakedproteinbali.com/training/yoga-canggu</loc><lastmod>2026-10-20</lastmod><priority>0.7</priority></url>
  <url><loc>https://nakedproteinbali.com/training/pilates-canggu</loc><lastmod>2026-10-20</lastmod><priority>0.7</priority></url>
  <url><loc>https://nakedproteinbali.com/training/yoga-pilates-seminyak</loc><lastmod>2026-10-20</lastmod><priority>0.7</priority></url>
  <url><loc>https://nakedproteinbali.com/training/yoga-pilates-umalas</loc><lastmod>2026-10-20</lastmod><priority>0.6</priority></url>
  <url><loc>https://nakedproteinbali.com/training/yoga-pilates-west</loc><lastmod>2026-10-20</lastmod><priority>0.6</priority></url>
  <url><loc>https://nakedproteinbali.com/training/combat-canggu</loc><lastmod>2026-10-20</lastmod><priority>0.6</priority></url>

  <!-- customer documentation: forecast at zero search traffic, and it is here so
       that a buyer who searches for it, or is sent it, can find it -->
  <!-- the protein calculator: a shareable tool that ends on the weekly box that fits -->
  <url><loc>https://nakedproteinbali.com/protein-calculator</loc><lastmod>2026-10-20</lastmod><priority>0.7</priority></url>

  <url><loc>https://nakedproteinbali.com/your-pack</loc><lastmod>2026-10-20</lastmod><priority>0.4</priority></url>

</urlset>
