<?xml version="1.0" encoding="UTF-8"?>
<!--
  Grasp Social — Sitemap (GS_WEB_LAUNCH_CONSOLIDATION_v2 Phase B2;
  blog + waitlist routes added GS-20260616-SITEREMEDIATE; the /waitlist entry
  was removed 2026-08-02 when the waitlist was removed entirely).

  Public marketing routes only. Authenticated routes (/dashboard, /posts,
  /settings, etc.) are excluded — they require sign-in and produce no
  public content for crawlers.

  Updated when: marketing routes are added/removed. The per-post /blog/<slug>
  entries below mirror the static blog corpus (src/content/blog/*.md, slug in
  frontmatter); ADD a <url> here when a post is added. lastmod uses the
  production deploy date convention (Operator updates at deploy if a
  marketing route's content changed materially).

  NOT A FREE LIST. Every non-blog-post <loc> below is asserted as an EXACT SET
  against the elected keep-list in src/lib/webKeepList.ts by
  src/__tests__/webKeepListClosure.behavior.test.ts. A route added or removed
  without editing the keep-list reds that suite; so does a <loc> for a path that
  is not a keep-list page.

  ⚠ /download's sitemap membership was NOT separately ruled. It is included here
  because it is a registered, indexable, keep-list marketing page like every
  other entry, and excluding one keep-list page from the sitemap would be the
  anomaly. Recorded rather than buried: if the operator wants a page that
  currently states the app is not yet installable kept out of the index, drop
  this <url> AND set `inSitemap: false` on the /download keep-list entry — the
  closure suite forces the two to move together.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://graspsocial.io/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <!-- /about was removed by an earlier pass of the web severance and RESTORED by
       OPERATOR RULING 63_. The page, its component tree, its route and its
       ROUTE_META entry are all back, so the canonical this <loc> advertises is
       one src/lib/routeMeta.ts actually emits. -->
  <url>
    <loc>https://graspsocial.io/about</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <!-- /download — built by OPERATOR RULING 62_; the destination of every "get the
       app" control on the site. See the header note on its sitemap membership. -->
  <url>
    <loc>https://graspsocial.io/download</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://graspsocial.io/blog</loc>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://graspsocial.io/blog/how-to-avoid-creator-burnout</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://graspsocial.io/blog/how-to-find-your-niche-as-a-content-creator</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://graspsocial.io/blog/social-media-metrics-that-actually-matter-for-creators</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://graspsocial.io/blog/how-to-find-trending-topics-before-they-peak</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://graspsocial.io/blog/which-social-media-platform-should-creators-focus-on-in-2026</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://graspsocial.io/support</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://graspsocial.io/privacy</loc>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://graspsocial.io/terms</loc>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
</urlset>
