Commit f7bdd40
seo: make Google show "Prisma" as the site name, not "Prisma ORM" (#8091)
* seo: make Google show "Prisma" as the site name, not "Prisma ORM"
Searching for "prisma" returned the prisma.io homepage titled "Prisma ORM".
That string appears nowhere in the homepage's metadata — Google was rewriting
the title link, because the title it was given, "Agent Infrastructure for
TypeScript", contains no brand at all. When a title doesn't identify the site,
Google substitutes other signals, chiefly inbound anchor text, and nearly
everything linking to prisma.io calls it "Prisma ORM".
Three things were feeding the rewrite:
- The homepage title carried no brand, and page titles across the site were
inconsistent about it — some ended in "| Prisma", most had nothing.
- Docs and blog each declared their own schema.org WebSite entity ("Prisma
Documentation", "Prisma Blog") alongside the canonical one in apps/site, so
the domain offered Google three competing candidates for its site name.
- Docs and blog emitted no og:site_name, leaving apps/site as the only section
of the domain asserting the brand.
So:
- Homepage title is now brand-first, "Prisma | Agent Infrastructure for
TypeScript", per Google's guidance for homepages.
- createPageMetadata appends "| Prisma" to any title that doesn't already
contain it, which brands the ~30 pages that lacked it while leaving
"Prisma ORM | Type-Safe ORM..." and friends untouched.
- Docs and blog no longer declare WebSite entities. Docs is a CollectionPage
and the blog is a Blog, both isPartOf the one WebSite in apps/site. The docs
node dropped its SearchAction along the way; that drove the sitelinks search
box, which Google has retired.
- Docs and blog set og:site_name to "Prisma", matching apps/site.
Verified by rendering all three apps: the homepage titles as "Prisma | Agent
Infrastructure for TypeScript", /terms as "Terms of Service | Prisma", /orm
unchanged, and docs/blog emit a single WebSite plus og:site_name "Prisma".
Note that this only removes our own conflicting signals. Google recrawls and
re-evaluates the site name on its own schedule, so the SERP change will lag
the deploy by days to weeks.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* seo: match brand as a whole word when branding page titles
Guard withSiteName against a title that merely contains the letters
"Prisma" (a hypothetical "Prismatic…") getting treated as branded, while
still leaving titles that already carry the brand as a word untouched so
they don't become "Prisma ORM | ... | Prisma".
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 7e21855 commit f7bdd40
13 files changed
Lines changed: 64 additions & 18 deletions
File tree
- apps
- blog/src
- app/(blog)
- [slug]
- author/[slug]
- series
- [key]
- lib
- docs/src/app
- (docs)/(default)/[[...slug]]
- site/src
- app
- (index)
- lib
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
333 | 333 | | |
334 | 334 | | |
335 | 335 | | |
| 336 | + | |
336 | 337 | | |
337 | 338 | | |
338 | 339 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
| 146 | + | |
146 | 147 | | |
147 | 148 | | |
148 | 149 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| 36 | + | |
36 | 37 | | |
37 | 38 | | |
38 | 39 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
| 146 | + | |
146 | 147 | | |
147 | 148 | | |
148 | 149 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
30 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
31 | 34 | | |
32 | 35 | | |
33 | 36 | | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
34 | 40 | | |
35 | 41 | | |
36 | 42 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
126 | 126 | | |
127 | 127 | | |
128 | 128 | | |
| 129 | + | |
129 | 130 | | |
130 | 131 | | |
131 | 132 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
69 | 74 | | |
70 | 75 | | |
71 | | - | |
| 76 | + | |
72 | 77 | | |
73 | 78 | | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
82 | 83 | | |
83 | 84 | | |
84 | 85 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
218 | 218 | | |
219 | 219 | | |
220 | 220 | | |
221 | | - | |
| 221 | + | |
222 | 222 | | |
223 | 223 | | |
224 | 224 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
0 commit comments