2026-09-10 growth/SEO/GEO review
Reviewed: live production (curl on https://scribble-works.pages.dev/, /robots.txt, /sitemap.xml, /llms.txt, /game/big-bigger-biggest/, /browse/, and a fabricated non-existent path); src/pages/{index,browse,game/[slug]}.astro, public/ (no robots.txt/sitemap.xml/404.astro found in repo); ~/.claude/state/studio/queue.md:224 (JSON-LD+policy item) and 2026-09-02-commerce-agents-takeaways reference; gh pr list --repo RayDataCo/scribble-works --state merged --limit 150 (130 merged PRs, grepped for sitemap/robots/seo/meta/schema/og/canonical/geo — 0 SEO-specific PRs ever merged).
Findings
- No robots.txt, no sitemap.xml, no real 404. All three requested URLs, and a made-up nonexistent path, return HTTP 200 with byte-identical homepage SPA-shell HTML (confirmed via
cmp). No404.astroorpublic/robots.txt/public/sitemap.xmlexist in the repo — every unmatched route soft-404s as the homepage. This wastes crawl budget and gives crawlers no signal about what's real. - Per-page metadata is actually good where routes exist.
/game/<slug>/and/browse/both render unique<title>and<meta name="description">server-side (verified onbig-bigger-biggest). Not a gap — the earlier "no meta" impression from probing/library/games/...(wrong, nonexistent path) was itself the soft-404 problem in #1. - Zero structured data, zero canonical, zero Open Graph/Twitter tags anywhere checked (home, game detail, browse).
- queue.md:224's JSON-LD + policy-page item is still un-started, still explicitly gated ("Founder-read pending; do not start until he nods") — confirmed live: no
ld+jsonon any checked page. No change to its status; not re-prioritized without his read. - Internal linking is solid:
/browse/links to 34 distinct game pages. - 0/130 merged PRs matched SEO/sitemap/robots/schema keywords in title or description — never framed as SEO work; #2's meta tags shipped as ordinary template code. Structured data, robots.txt, sitemap.xml still don't exist.
Proposed queue.md diff (engineering-lane, reversible, autonomous per charter §2 — branch+PR/preview only, no production):
+ [engineering, S, NEW 2026-09-10] robots.txt + sitemap.xml + 404.astro: real files/route so unmatched
+ paths return actual 404s instead of the homepage soft-404 (confirmed live via curl); sitemap lists
+ all live /game/<slug>/ + top-level pages. Small, no product judgment required.
Bear case: shipping a sitemap before the domain migration risks the opposite of decision 1's caution — a sitemap actively invites crawlers to the throwaway .pages.dev URL rather than just failing to block them, which is a stronger version of the same indexing-authority risk than a bare robots.txt policy choice alone.
Falsification: queue.md item 8 migrates the domain off .pages.dev; if that lands first, indexing decisions made now are moot.
Decisions needed (founder)
- robots.txt policy on the
pages.devdomain: allow indexing now, orDisallow: /until the custom domain (scribbleworks.rdco.dev/ eventual.com) lands per queue.md item 8 ("Production-time cleanup... DNS... r2.dev→custom domain")? Indexing the throwaway.pages.devURL now risks that URL, not the real one, accumulating the search authority described in the charter's naming section (§5) as "expensive to reverse." - JSON-LD/policy-page item (queue.md:224) remains parked on his read of
2026-09-02-commerce-agents-takeaways— flagging as still open, not re-litigated here.
Correction 2026-09-19 (verified in code, main @ 222bf3a): this note's "no robots.txt / sitemap / 404 / JSON-LD / canonical" findings are STALE. Shipped since:
src/lib/robots.js(board #147, 2026-09-14: production allow,/account /api /sign-in /create-account /packsdisallowed,*.pages.devdisallow-all),src/pages/sitemap.xml.ts,404.astro,src/lib/seo.js(gameJsonLd/homeJsonLd, SW-R15 #198), and scribbleworks.co attached. The robots allow-vs-disallow decision is resolved and is not a blocker. Do not cite this note's gap list as current.