feat(web): technical SEO foundation for sqlritedb.com (SQLR-32)#118
Merged
Conversation
- Per-route titles / descriptions / canonicals on / and /docs - OpenGraph + Twitter cards (siteName, locale, summary_large_image) restated at the page level since Next 15 shallow-merges these - Auto-generated OG + Twitter images via next/og ImageResponse, shared `OgFrame` JSX in src/lib/og.tsx; brand mark inlined as SVG so Satori's dynamic-font fetcher doesn't 400 on the ▸ glyph - app/sitemap.ts + app/robots.ts metadata routes; sitemap pointer in robots and SITE.url canonical in both - JSON-LD: SoftwareApplication on landing, BreadcrumbList on /docs - Site-wide robots policy, keywords, author, and a placeholder verification block in the root layout for GSC + Bing tokens - Heading hierarchy: footer column h4→h3, /docs TOC h4→h2 (with aria-label) so headings descend in order - web/README.md SEO surface section documenting each piece Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Lays down the table-stakes technical SEO so search engines and LLM crawlers
can index and understand sqlritedb.com.
<title>/<meta description>/ canonical on/and/docsTwitter images via
next/ogImageResponse(sharedOgFrameJSX insrc/lib/og.tsx)/sitemap.xml+/robots.txtas Next 15 metadata routes, mutuallyreferenced; hostnamed at the new canonical
https://sqlritedb.comSoftwareApplicationon the landing page,BreadcrumbListon
/docs— both stringified inline so they have no client-runtime costh4→h3;/docsTOCh4→h2with
aria-label) so each route descends in order from a single<h1>metadata.verificationblock in the root layout, ready forGoogle Search Console + Bing Webmaster Tools tokens
web/README.mdSEO surface section documents where each piece livesand the Next-15 shallow-merge gotcha for
openGraph/twitterCloses SQLR-32.
Notable implementation notes
openGraphandtwitter. Everypage that overrides them has to restate
siteName,card,site,creator, etc. — verified against the builtindex.html/docs.html.400s on the ▸ (U+25B8) glyph, so the mark renders from a
<path>insteadof relying on a font subset that may not exist.
Test plan
npm run typecheckcleannpm run lintcleannpm run buildclean (no font-fetch warnings)index.html/docs.htmlcontain distinct<title>,<meta name="description">,<link rel="canonical">,og:*,twitter:card="summary_large_image",og:site_name, and JSON-LD blocks.next/server/app/sitemap.xml.bodyandrobots.txt.bodyrender the expected XML / text with the correctcanonical host
/and/docspasses for landing JSON-LD
metadata.verificationinweb/src/app/layout.tsx, submit sitemapand file follow-ups for any red metric
Out of scope (follow-ups)
<pre>blocks in/docsas<pre><code class="language-…">for syntax-highlight semantics — wants a small
<CodeBlock>componentapp/sitemap.tsto enumerate MDX frontmatter once/docs/[slug]landsArticlefor blog,FAQPagefor landing FAQ) whenthose surfaces exist
🤖 Generated with Claude Code