| Section | URL count | Notes |
|---|---|---|
/pages/* |
101 | Templated "[niche]-pr-agency" landing pages. Not linked from homepage, nav, or footer. |
/playbook/* |
117 | Long-form guide articles. Linked from /playbook hub (116 links found) and 8 links from homepage. |
/blog/* |
81 | Linked from /blog hub. |
/services/* |
9 | Linked from nav and footer directly. |
/glossary/* |
6 | Linked from footer. |
/work/* |
7 | Linked from nav/footer. |
Region pages (/apac, /india, /singapore, /dubai-mena, /korea, /japan) |
6 | Linked from footer. |
| Core pages (home, about, speaker, testimonials, authors, press, faq, contact) | 8 | Linked from nav/footer. |
Checked homepage <nav>, <header>, and <footer> link targets directly via DOM inspection:
/services/* (7 of 9), /blog, /playbook, /glossary, all region pages, /work, /about, etc./pages or any /pages/* URL./pages or any /pages/* URL./pages hub page itself does link out to all 100 of its children (confirmed: 100 links found on /pages), so the sub-pages aren't fully isolated, but the hub itself is an island with no inbound internal links from anywhere else on the site.This matches Google's own guidance and third-party GSC diagnostics for 2026: pages that exist only in an XML sitemap with no real internal links are the textbook cause of "Discovered - currently not indexed." Google's crawler treats the absence of internal links as a signal the page isn't important, regardless of sitemap presence.
lastmod bug (corrected finding)Initial read of the sitemap showed 255 of 335 URLs (76%) stamped lastmod = 2026-07-02 (today), which looked like a mass same-day publish. Root-caused in app/sitemap.ts, and it isn't a real publish event. The generator ran const now = new Date() and set lastModified: now on every static page (/pages/*, /playbook/*, /glossary/*, /services/*, regions, etc, everything except individual /blog/[slug] posts, which pull a real updated_at from Supabase). That means every static page gets stamped with the current request time on every single sitemap fetch, regardless of whether anything changed. That's why it looked like 255 pages changed today. Only the 81 blog posts showed genuine historical dates (May 28 - Jun 21) because those come from real Supabase timestamps.
This is a known anti-pattern: Google's own sitemap guidance warns that stamping every URL with the current date on every crawl makes the lastmod signal meaningless, and Google may start ignoring it site-wide. It doesn't block indexing by itself, but it wastes crawl budget and undermines a signal that could otherwise help prioritize genuinely updated pages.
Fixed: removed the fake lastModified: now for static pages in app/sitemap.ts so Next.js omits the field for them instead of lying about it. See Fix Plan.