Skip to content

fix: spell model names the way vendors do in search results - #161

Merged
brunobuddy merged 2 commits into
mainfrom
chore/seo-metadata-audit
Jul 28, 2026
Merged

fix: spell model names the way vendors do in search results#161
brunobuddy merged 2 commits into
mainfrom
chore/seo-metadata-audit

Conversation

@brunobuddy

@brunobuddy brunobuddy commented Jul 28, 2026

Copy link
Copy Markdown
Member

💭 Why

Model labels were title-cased from the slug, so 41 pages said "Gpt 5.1" instead of "GPT-5.1" and 24 repeated the provider ("DeepSeek Deepseek Chat"). That spelling went into the title, H1, meta description, JSON-LD and llms.txt at once, so the pages missed the exact spelling people search for.

Separately, 145 of 321 titles were over 60 chars and 226 were over 160, so Google truncated most of them. The homepage title also opened on a verb and pushed the brand to character 46.

✨ What changed

  • Token casing map plus shape rules (70b->70B, a4b->A4B, v1.5 stays lowercase) and hyphen binding for GPT-/GLM-.
  • New modelFullLabel() drops the provider prefix when the model name already carries it.
  • Fixed "the 1 model in the catalog that accept it" verb agreement on 9 parameter pages.
  • Meta templates pick the richest phrasing that fits the SERP budget. 0 of 321 titles or descriptions now overflow.
  • Homepage title leads with the brand and targets "LLM parameters", the head term. 60 -> 47 chars.
  • Social cards generated per page from catalog data, replacing one static image shared by all 321 pages.
  • Sitemap lastmod now comes from commit dates, giving 16 distinct dates instead of one build-date stamp.
  • Added a branded 404.html with noindex, follow, plus og:locale, og:image:type, per-page og:type and real image alt text.
  • Test walks the real catalog asserting length, uniqueness and no provider stutter.
  • CONTRIBUTING.md updated for the new src/client/fonts/ directory and the card generation step.

👤 For users

Shared links preview with the actual model or parameter and its facts instead of a generic site card. The default card is now really 1200x630 (it was 1280x640 while declaring 1200x630) and 37 KB instead of 635 KB.

🔧 For operators

Build grows from 1.5s to 4.5s and writes 322 PNGs (11 MB). Adds @resvg/resvg-js and three vendored Outfit TTFs (99 KB). Rendering uses loadSystemFonts: false, so output does not depend on fonts installed on the build machine.

📝 Notes

Rebased on #160, which already added /api to the sitemap. Kept its API_PATH constant and priority, dropped my duplicate entry.
Parameter pages drop the modelparams.dev suffix when the path is long, trading brand for exact-match keywords inside 60 chars. Reversible in parameterPageTitle.
The dev server still returns plain-text 404s, which are more useful while developing. The branded 404 is a build artifact Vercel serves.

@vercel

vercel Bot commented Jul 28, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
modelparams.dev Ready Ready Preview Jul 28, 2026 1:17pm

Request Review

@github-actions github-actions Bot added site Website code or tooling meta Repo docs, CI, and config labels Jul 28, 2026
@brunobuddy brunobuddy closed this Jul 28, 2026
@brunobuddy brunobuddy reopened this Jul 28, 2026
Model labels were title-cased from the slug, so 41 pages read "Gpt 5.1"
instead of "GPT-5.1", and 24 repeated the provider ("DeepSeek Deepseek
Chat"). That spelling landed in the title, H1, meta description, JSON-LD
and llms.txt at once, missing the exact-match form people search for.

Titles and descriptions also overflowed what Google renders: 145 of 321
titles were over 60 chars and 226 over 160. Templates now offer several
phrasings longest-first and take the richest that fits.

Social cards are generated per page from catalog data instead of one
static image for all 321 pages. resvg renders with three vendored Outfit
TTFs and loadSystemFonts disabled, so output does not depend on the fonts
installed on the build machine.
The homepage title opened on a verb and pushed modelparams.dev to
character 46, past where scanning stops. It now leads with the brand,
which is what a navigational search for "modelparams" and a link pasted
into a feed both want to see first.

The descriptive half says "LLM Parameters" rather than "model
parameters": to an ML audience the latter reads as weights, and the
former is the head term people type. The description opens on the brand
and the category, then names temperature, top_p and max_tokens, which
Google bolds when they match the query.

Title drops from 60 to 47 chars, description sits at 155.
@brunobuddy
brunobuddy merged commit 53f0d4f into main Jul 28, 2026
5 checks passed
@brunobuddy
brunobuddy deleted the chore/seo-metadata-audit branch July 28, 2026 13:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

meta Repo docs, CI, and config site Website code or tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant