Skip to content

feat(web): keyword research + on-page SEO rewrites (SQLR-33)#139

Merged
joaoh82 merged 1 commit into
mainfrom
sqlr-33-seo-keywords-onpage
May 12, 2026
Merged

feat(web): keyword research + on-page SEO rewrites (SQLR-33)#139
joaoh82 merged 1 commit into
mainfrom
sqlr-33-seo-keywords-onpage

Conversation

@joaoh82
Copy link
Copy Markdown
Owner

@joaoh82 joaoh82 commented May 12, 2026

Summary

Lands the SQLR-33 keyword research + on-page SEO pass for sqlritedb.com. Content/metadata only — no structural redesigns, no new routes, no dep changes.

  • New web/seo/keywords.md — head / mid-tail / long-tail keyword tables with target page, intent, priority, and a per-page primary+secondary registry for the P0 pages.
  • web/src/app/layout.tsx — site-wide default title + description + keywords array rewritten to lead with "embedded SQL + vector database in Rust".
  • web/src/app/page.tsx — landing metadata rewritten; page-level title now explicitly contains the primary head term + product name.
  • web/src/components/hero.tsx — H1: "SQLRite — an embedded SQL + vector database in Rust." Lede leads with "SQLite alternative" / "embedded database in Rust" and names HNSW + BM25 inside the 160-char meta-snippet zone.
  • web/src/app/docs/page.tsx — H1: "SQLRite docs — getting started with the embedded Rust database." Lede answers "what is SQLRite + how do I use it" in plain language and adds 4 descriptive deep-links into key sections. Docs CTA card now exposes /blog as a second descriptive in-site sibling alongside /.
  • web/src/components/benchmarks.tsx — H2: "SQLRite vs SQLite benchmarks — honest numbers, published in public." Sub-copy names HNSW + BM25 as the differentiator workloads.
  • web/README.md — points future rewrites at web/seo/keywords.md.

Why

The site has been a beautiful brochure — full metadata surface (OG, JSON-LD, sitemap, RSS, OG images) but no keyword targeting at the wording level. Without explicit terms in the H1 + lede, Google can't surface us for "embedded database in Rust", "SQLite alternative", or "MCP server for SQLite" even though we're a credible answer for all three.

The keyword sheet is the registry — every P0 page now records its primary + secondary keyword so future rewrites stay coordinated rather than drifting.

Internal-linking sweep

Grep confirmed zero non-descriptive anchors in web/src — no "click here" / "read more" / bare "here". The "every doc page links to ≥ 2 sibling pages with descriptive anchors" rule is met via the global <Footer /> (links to /blog, /blog/rss.xml, GitHub) plus the docs CTA card, which now adds an explicit /blog link as a second descriptive in-site sibling.

Verified locally

npm run typecheck   # ✅
npm run lint        # ✅ No ESLint warnings or errors
npm run build       # ✅ 49 static pages generated, no orphans

Test plan

  • CI web lint + build steps pass.
  • Vercel preview deploy renders the new H1s + lede on /, /docs, and the landing benchmarks section.
  • View-source on each P0 route shows the new <title> + <meta name="description">.
  • After production promote: optional Screaming Frog re-crawl of https://sqlritedb.com (free up to 500 URLs) to confirm no duplicate H1/title/meta and no orphan pages.

Follow-ups (filed separately)

Long-tail keywords from the sheet that are blog topics rather than rewrites — split into their own tickets:

  • SQLR-59 — Blog post: Adding HNSW vector search to a SQLite-style engine.
  • SQLR-60 — Blog post: Wiring a SQLite-style engine into Claude Code via MCP.
  • SQLR-61 — Blog post: Shipping a Tauri 2 app with an embedded SQL database.
  • SQLR-62 — Blog post: Running a SQL engine in a browser tab with WASM.
  • SQLR-63 — Docs: dedicated .ask / natural-language-to-SQL section in /docs.

🤖 Generated with Claude Code

Land a per-page keyword registry under web/seo/keywords.md and rewrite
the H1, lede, and metadata on /, /docs, and the landing-page benchmarks
section to target "embedded SQL + vector database in Rust", "SQLite
alternative", and "SQLRite vs SQLite benchmarks" — terms the site can
realistically rank for without overclaiming features that don't ship
yet. Internal-anchor audit found no "click here" / "read more"; docs
CTA now exposes /blog as a second descriptive in-site sibling.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 12, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
rust-sqlite Ready Ready Preview, Comment May 12, 2026 3:59pm

Request Review

@joaoh82 joaoh82 merged commit a38023a into main May 12, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant