GEO-003 · Primary content is present in server HTML
Compares raw and rendered primary text. Content that only appears after JavaScript runs is at risk for crawlers that do not render.
- Evidence class
- E2
- Weight
- 3
- Subject
- each route group
- Scope
- URL render; repo inferred
- Default severity
- medium
- Lifecycle
- stable
- Platforms
- Any web stack; needs a renderer
Sub-checks
A subject fails if any evaluated sub-check fails, and passes only when every applicable sub-check ran and passed. url sub-checks need a URL; both can also run from source.
| Sub-check | Scope | Checks that |
|---|---|---|
server_text_ratio | url | raw/rendered primary-text ratio is at least 0.5 when rendered text is 200+ characters |
Preconditions
- A renderer is available. Without one the rule is not_evaluated, never failed. This release ships no renderer.
Remediation
Render primary content on the server (a Server Component, SSR or static generation) and hydrate interactivity on top.
Fix class: contextual
Known false positives
- Pages whose primary content is intentionally interactive.
Evidence
Platform policies and standards are cited as such; anything else is labelled guidance. These links were carried forward from the specification and should be rechecked before quoting them as current policy.
- Google: JavaScript SEO basics (guidance)
Run it
npx geopilot explain GEO-003
npx geopilot scan . --rule GEO-003