> For the complete documentation index, see [llms.txt](https://suigar.gitbook.io/suigar-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://suigar.gitbook.io/suigar-docs/seo/status.md).

# SEO status

Last reviewed: 2026-07-13

This scorecard tracks current SEO maturity. Update it when implementation, validation, Search Console, analytics, or content process changes the evidence.

## 2026-07-13 Sitemap Enforcement Audit

* Repository contract: every child sitemap must contain only its own canonical URLs, every URL must have a source-derived `lastmod`, ignored `priority`/`changefreq` hints are forbidden, the apex index must contain exactly the app/blog/docs sitemaps without an unverifiable `lastmod`, and every mainnet robots file must advertise exactly one same-site discovery URL (the apex index for app/blog/docs and the House sitemap for SweetHouse).
* Prevention: source/output drift, route-classification omissions, sitemap ownership, duplicates, redirects, non-HTML responses, canonical mismatches, missing titles/descriptions, and `noindex` pages are blocking checks in local tests and the relevant deploy pipelines.
* Production-state auditing is available through `node scripts/seo/check-live-sitemap-system.mjs --site-url https://suigar.com`, but automatic CI and scheduled execution are disabled unless `ENABLE_LIVE_SITEMAP_AUDIT=true` is configured.

## Scorecard

| Channel                   | Maturity | Status     | Owner                    | Evidence                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | Next Action                                                                                                       |
| ------------------------- | -------: | ---------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Technical SEO             |        4 | Measured   | Frontend + SEO           | Frontend build now emits and validates route-specific static HTML heads for all indexed sitemap routes; non-mainnet builds emit `noindex,nofollow` route HTML; CloudFront rewrites extensionless app routes to those files; deploy workflow uses the shared static-site action and verifies live frontend/docs SEO behavior; blog build now verifies the standalone Next runtime, ISR routes, feeds, sitemap, DB asset handler, and revalidation endpoint; docs-site builds only from `docs/public/` with Docusaurus `baseUrl=/docs/`, keeping internal docs outside the public surface and outside docs-site CI path triggers; SweetHouse now has static sitemap/robots plus rendered canonical/title/description validation in CI.                                                                                                                                                                                                  | Wire blog runtime deployment behind `/blog`, then restore live post-deploy checks for the runtime host.           |
| Crawl And Indexing        |        4 | Measured   | Frontend + SEO           | Search Console service owner is verified; apex/blog/docs sitemaps were submitted on 2026-05-17 before the docs path migration; frontend deploy now validates mainnet sitemap/robots and non-mainnet blocking policy; frontend public sitemap now lists only `suigar.com` URLs; docs robots/sitemap now target `https://suigar.com/docs`; app/blog/docs robots advertise the exact same-site apex index; SweetHouse advertises its single-host `house.suigar.com` sitemap and non-mainnet blocks crawling without advertising a sitemap; blog sitemap plus RSS/Atom feeds are ISR runtime discovery endpoints backed by the same published-post source.                                                                                                                                                                                                                                                                                | Deploy all four mainnet surfaces, then submit the apex index and same-host SweetHouse sitemap in Search Console.  |
| Canonicals And Duplicates |        4 | Measured   | Frontend + Blog          | `www.suigar.com` 301s to apex; `mainnet.suigar.com` 301s path-preserving to apex; repo CloudFront function code defines exact canonical redirects for `/lootbox`, `/roadmap`, `/rewards`, and `/weekly-contest`, but live verification still returns 200 until the pending AWS SSO-backed apply runs; blog code now canonicalizes the path-style root `https://suigar.com/blog/`; docs code now canonicalizes the path-style root `https://suigar.com/docs/` and adds a path-preserving legacy docs-subdomain redirect; Search Console URL Inspection confirms apex/blog canonical PASS, `www` alternate canonical to apex, and `/games` plus `/nft` indexed with their own Google canonicals.                                                                                                                                                                                                                                        | Apply and verify legacy route redirects plus the docs path migration, then re-check URL Inspection after recrawl. |
| Metadata                  |        3 | Enforced   | Frontend + Blog          | Frontend sitemap route registry requires title/description/canonical metadata; `seo-metadata-report.mjs` fails duplicate or weak title/description checks; `seo-static-html.mjs` validates every generated route file has exactly one title, description, canonical, and expected robots tag; live `/games`, `/nft`, `/coinflip`, `/range`, and `/pvp-coinflip` raw HTML was verified with route-specific titles/descriptions/canonicals; blog homepage/post metadata exists.                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Extend duplicate/weak metadata reporting to blog and docs.                                                        |
| Structured Data           |        2 | Partial    | Frontend                 | Frontend has Organization, WebSite, SoftwareApplication, WebPage, Game, Breadcrumb JSON-LD builders.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Decide and add blog `BlogPosting` only when visible author/date/image data is reliable.                           |
| Content Quality           |        1 | Manual     | Product + SEO            | Global content rules exist; no content scorecard yet.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Create first high-value page/post audit using `page-checklist.md` and `blog-generation.md`.                       |
| Blog Generation           |        2 | Documented | Blog + SEO               | `blog-generation.md` defines briefs, templates, ledgers, and AI critique gates.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | Apply the workflow to the next blog post and add learnings to the constraint registry.                            |
| Internal Links            |        1 | Manual     | Frontend + Blog + Docs   | Blog links to product and docs; frontend has hubs.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Build first internal-link inventory for home, games, docs, and blog posts.                                        |
| Social Previews           |        1 | Manual     | Design + Frontend + Blog | Frontend/blog metadata emits preview basics.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Audit OG/Twitter card rendering for top acquisition pages and posts.                                              |
| Image SEO                 |        1 | Manual     | Design + Blog            | Blog schema supports cover image alt; frontend has stable assets.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Add image alt/provenance expectations to post QA and page audits.                                                 |
| Core Web Vitals           |        2 | Baseline   | Frontend + Blog          | Budgets documented from web.dev; 2026-05-18 mobile Lighthouse screenshot baseline for the frontend homepage showed performance 38, FCP 10.6s, LCP 23.0s, TBT 700ms, Speed Index 12.7s, and CLS 0.014. Homepage first-load now uses a static logo-only `suigar-startup-shell` with one app-ready fade/removal, no resize observer mode, no fake startup artwork, and no artificial gating of the promo carousel, games, activity feed, or Recent Big Wins. Wallet, MUI, Sui read helpers, Suifrens image runtime, free-bet repository, VIP repository, and SUINS repository are out of the initial graph; activity animations and Big Wins autoscroll remain protected. Final local checks: Lighthouse mobile score 62, FCP 4.9s, LCP 5.0s, TBT 340ms, Speed Index 4.9s, TTI 10.4s, CLS 0.014; Playwright mobile confirmed one navigation, startup shell removal after app mount, running Big Wins `moveX`, and unclipped feature art. | Re-run Lighthouse/PageSpeed on a deployed production-like build and attach p75 field-data source when available.  |
| Analytics And Measurement |        4 | Measured   | Analytics + SEO          | Search Console API works through SSM-backed AWS-to-GCP WIF; query/page exports drove the 2026-05-17 fixes; `pnpm run seo:gsc` now generates repeatable page/query/URL inspection reports.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Run the report on a weekly cadence and turn repeated findings into backlog items.                                 |
| AI Search And GEO         |        1 | Early      | SEO + Content            | Crawler rules and `llms.txt` exist; entity/answer strategy is not yet formalized.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Add entity map and answerable definitions for Suigar, games, rewards, and SweetHouse.                             |
| Off-Site Discovery        |        1 | Manual     | Growth + SEO             | Blog RSS/Atom feed routes now provide opt-in reader and subscriber discovery for mainnet blog posts; no distribution/backlink ledger exists in this directory yet.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Create campaign/distribution ledger when the first blog campaign is planned.                                      |

## Current Evidence Notes

* Production frontend route indexability has a concrete validation path through `pnpm --filter @suigar/ui run check:seo`; built route HTML has a validation path through `pnpm --filter @suigar/ui run check:seo:static` after a mainnet build.
* Static sitemap and robots standards are enforced by `scripts/seo/check-static-site-seo.mjs`, which validates host scoping, duplicate URLs, URL count, file size, required `lastmod`, forbidden `changefreq`/`priority`, and the exact robots sitemap directive; `--check-html` additionally verifies static HTML canonical/title/description/noindex alignment for sitemap URLs.
* SweetHouse route indexability has a concrete validation path through `NODE_ENV=production NETWORK=mainnet pnpm run build && pnpm run check:seo` from `sweethouse-website/`; non-mainnet blocking was validated on 2026-05-18 with `NODE_ENV=production NETWORK=testnet pnpm run build` plus the shared static-site SEO checker.
* `https://house.suigar.com/sitemap.xml` is implemented but not yet recorded as submitted in Search Console in this scorecard.
* Blog site now builds as a Next standalone runtime with 60-second ISR and a secret-protected `/blog/api/revalidate/` endpoint; the production routing/deploy layer still needs to be wired so live traffic reaches that runtime instead of any retired static export.
* Blog index metadata, RSS/Atom discovery, social image metadata, and BreadcrumbList JSON-LD are validated, while visible generic SEO filler was removed in favor of real article cards plus a concise empty state.
* Blog metadata is generated through Next App Router, but no rendered social card or schema audit is recorded yet.
* Mainnet frontend has explicit non-mainnet blocking in `frontend/scripts/write-seo-assets.mjs`; non-mainnet frontend builds now emit route HTML with `noindex,nofollow`, blocking robots policy, and no sitemap. Blog non-mainnet builds emit root noindex metadata, blocking robots policy, and an empty sitemap.
* Blog homepage now exports an explicit canonical URL through `blog-site/src/app/page.tsx`; blog posts already had canonical URLs through `blog-site/src/app/posts/[slug]/page.tsx`.
* Blog RSS/Atom feeds are generated from published posts through ISR runtime routes, exposed through page alternate links on mainnet, and omitted from non-mainnet alternate metadata.
* Static-site deploys still upload `robots.txt`, `sitemap*.xml`, `rss.xml`, `atom.xml`, and `llms.txt` with `public,max-age=300,must-revalidate` for projects that remain static; the blog static deploy path is retired in favor of the standalone runtime.
* Mainnet robots files must advertise exactly one same-site discovery URL: app/blog/docs use `https://suigar.com/sitemap_index.xml`, while SweetHouse uses `https://house.suigar.com/sitemap.xml`. Each child sitemap owns only its canonical host/path scope.
* Google Search Console and Site Verification APIs are enabled in Google Cloud project `suigar` (`242881611940`) through Terraform-managed services.
* `suigar-terraform@suigar.iam.gserviceaccount.com` is a verified owner for `sc-domain:suigar.com`, `https://suigar.com/`, `https://blog.suigar.com/`, `https://testnet.suigar.com/`, and `https://blog.testnet.suigar.com/`; the docs path migration should use `sc-domain:suigar.com` and submit `https://suigar.com/docs/sitemap.xml` after deployment.
* Search Console sitemap submissions on 2026-05-17: `https://suigar.com/sitemap.xml` (33 submitted URLs), `https://blog.suigar.com/sitemap.xml` (4 submitted URLs), and the then-current docs sitemap (13 submitted product-doc URLs), all with zero immediate sitemap errors or warnings.
* Search Console URL Inspection on 2026-05-17: `https://suigar.com/` is submitted and indexed; `https://blog.suigar.com/` is submitted and indexed; the then-current docs root was discovered but not indexed; `https://testnet.suigar.com/` is excluded by noindex; `https://blog.testnet.suigar.com/` is unknown to Google; `https://www.suigar.com/` is treated as an alternate canonical to apex.
* Live CloudFront was corrected on 2026-05-17: `blog.suigar.com` and `blog.testnet.suigar.com` now serve their static exports directly instead of redirecting to `/blog` on frontend hosts.
* The legacy testnet frontend `/blog/` path now serves the same noindex blog export, and the public docs build reads only `docs/public/` so internal SEO, engineering, migration, and AI notes do not become public search inventory.
* Live frontend raw HTML was corrected on 2026-05-17: indexed SPA routes now have route-specific static HTML heads, and CloudFront rewrites extensionless app routes like `/games`, `/nft`, `/coinflip`, `/range`, and `/pvp-coinflip` to those files before falling back to the SPA.
* `mainnet.suigar.com` now has a Route53 record and CloudFront alias that 301s path-preserving to `suigar.com`, turning old GSC impressions from an unreachable host into a canonical consolidation signal.
* Repo CloudFront function code now defines exact server-side redirects for legacy frontend aliases: `/lootbox` and `/roadmap` to `/`, `/rewards` to `/bonus`, and `/weekly-contest` to `/weekly-race`; live verification on 2026-05-18 still returned HTTP 200 for those routes because the targeted apply was blocked by expired AWS SSO credentials.
* Search Console sitemap resubmission on 2026-05-17: `https://suigar.com/sitemap.xml` was resubmitted after the static frontend head fix; GSC reported `lastSubmitted` as `2026-05-17T20:44:30.202Z`, 33 submitted URLs, and zero sitemap errors/warnings immediately after submission.
* Search Console URL Inspection on 2026-05-17: `https://suigar.com/nft` and `https://suigar.com/games` are both submitted and indexed with Google canonicals matching their own URLs; `https://mainnet.suigar.com/range` remains an old crawled-not-indexed URL from 2026-01-09 and now live-redirects to `https://suigar.com/range`.
* Search Console performance export for 2026-02-15 through 2026-05-15 showed apex home as the primary page (75 clicks, 657 impressions, average position 2.10), with stale `mainnet.suigar.com` URLs still receiving impressions; that hostname now resolves and redirects to the matching apex path.
* `scripts/seo/search-console-report.mjs` can generate a repeatable markdown report for Search Console page/query data, CTR opportunities, and URL inspection rows.
* Frontend Core Web Vitals work started from the 2026-05-18 mobile Lighthouse screenshot baseline: performance 38, FCP 10.6s, LCP 23.0s, TBT 700ms, Speed Index 12.7s, CLS 0.014. The current implementation keeps the homepage user experience intact while simplifying the first-load path: `frontend/index.html` renders a logo-only `suigar-startup-shell`, `frontend/src/app.tsx` removes it once the React app is ready, `data-resizing` remains removed, promo/game/activity/top-win sections render immediately, and wallet/MUI/Sui/Suifrens/free-bet/VIP/SUINS-heavy repositories stay outside the initial graph. Final local validation on 2026-05-18: Lighthouse mobile score 62, FCP 4.9s, LCP 5.0s, TBT 340ms, Speed Index 4.9s, TTI 10.4s, CLS 0.014, total payload 3,013 KiB, unused JS savings 602 KiB, LCP node `#suigar-startup-logo`; Playwright mobile confirmed shell removal after mount, one `navigate` entry, running Recent Big Wins `moveX`, visible Activity feed, and unclipped `Fast as Sui` art. Remaining audit pressure comes from live homepage data and deferred-but-audited Suifrens/Sui/MUI helper chunks; further gains require either delaying those below-fold/identity reads more aggressively or slimming their repository dependencies.

## Update Rules

* Do not raise maturity based on intent alone. Attach the code path, command output, audit note, Search Console result, analytics report, or external evidence.
* If a check fails, lower status or add a dated blocker instead of leaving stale optimism.
* When an item reaches level 3 or above, document the exact command, script, CI job, or typed contract that enforces it.
* When an item reaches level 4 or above, include the measurement window and data source.
