Skip to content

Titluri și descrieri meta la lungimea rezultatului

Vitalie requested to merge 16_meta into main

Ține de #16 (closed). Citește secțiunea despre criteriul de acceptare înainte de merge — nu e îndeplinit literal, deliberat.

Ce era

Măsurat pe cele 384 de adrese din sitemap-ul de producție (issue-ul măsurase doar cele 42 statice):

În interval Sub Peste
Titluri (50-62) 21/384 (5%) 164 199, din care 189 peste 65
Descrieri (140-165) 26/384 (7%) 161 197

Plus 5 descrieri tăiate la mijloc de cuvânt, toate pe articole — excerptul întreg ajungea în <meta name="description">, până la 876 de caractere.

Ce s-a făcut

Paginile statice (15 rute × 3 limbi): titluri și descrieri rescrise, 45/45 în interval, zero duplicate. Paginile noindex — cont, comandă, confirmare, 404 — sunt excluse: o pagină pe care îi spunem Google să n-o indexeze nu are nevoie de fragment în rezultate.

Paginile generate (produse, colecții, articole): titluri construite pe bugetul rămas după sufixul de brand, descrieri din propoziții întregi.

Decizia care schimbă criteriul

Issue-ul cerea „titlurile de articol sub 60 de caractere cu tot cu sufixul de brand". Nu s-a făcut, și n-ar trebui făcut. Prima implementare a respectat cerința și rezultatul măsurat a fost: 199 din 216 titluri de articol trunchiate, multe în fragmente care nu se citesc — „Revitalizează-ți picioarele: Cum să", „Sciatica relief unveiled: The power of foam" (din „foam rolling"), „Ролик для фасции при бурсите тазобедренного" (adjectiv la genitiv, fără substantiv). Iar la articolele „Ghid complet: " tăierea păstra jumătatea generică și pierdea subiectul.

Un titlu editorial rupt e prost peste tot — în fila browserului, la partajare, în rezultat. Unul lung e scurtat de Google singur, curat, doar în rezultat. Titlurile de articol se păstrează acum întregi; se scurtează doar pe o clauză pe care a încheiat-o autorul și numai dacă acea clauză păstrează subiectul specific.

Titlurile pe care le scriem noi — produs și colecție — rămân încadrate, pentru că acolo textul e al nostru.

Cifrele finale, măsurate independent de mine

429 de pagini generate randate prin resolvePageMeta, plus cele 45 statice:

Prima implementare Acum
Titluri duplicate 12 pagini 0
Titluri de articol trunchiate 199/216 43/216
Titluri care se termină pe prepoziție goală 12 0
Descrieri cu „…" 262/429 165/429, toate pe excerpt propriu, 0 pe șablon
Descrieri oprite pe prepoziție/articol 75 0
Descrieri peste 165 0 0
Titluri de produs 50-62 179/183 175/183
Titluri de colecție 50-62 33/33 33/33
Titluri de articol peste 65 0 159 — chiar decizia de mai sus
Descrieri sub 140 71, din care 24 colecții cu text propriu scurt

Ce s-a înrăutățit, explicit: titlurile de articol peste 65 (0 → 159, prin decizie), descrierile de produs în interval (180 → 142, pentru că o propoziție întreagă și scurtă bate una lungă și ciuntită), titlurile de produs în interval (179 → 175, prețul regulii anti-ecou).

Un regres prins la verificare și reparat

Titlul paginii era folosit în două locuri unde se cere un nume, nu un titlu: pasul din firul Ariadnei de deasupra fiecărui articol, și linkurile din blocul <noscript> pe care îl citește un crawler. Mergea doar pentru că titlurile erau scurte. Cu titlurile noi, firul ar fi citit „Hyperhub: ghiduri de recuperare > " și fiecare link de navigație ar fi devenit o propoziție.

Paginile din fir poartă acum crumb — exact titlul scurt pe care îl aveau înainte. Verificat: firul dă „Hyperhub > ", linkurile dau „Terapie prin masaj", „Despre noi", „Hyperhub", „Contact".

Testul păzește că numele există, nimic mai mult. Un plafon de lungime n-ar distinge un nume de un titlu scurt — titlul care a stricat firul are 31 de caractere — iar comparația cu propriul titlu nu spune nimic nici ea, pentru că titlul rus al paginii de start a ieșit mai scurt decât numele pe care îl înlocuiește.

Două corecturi de limbă

  • „Despre magazinul nostru de recuperare" — în română sună a recuperare de creanțe. Engleza și rusa păstrau cuvântul „tehnologie"; româna îl pierduse.
  • Titlul rus promitea „adresa magazinului", dar singura adresă de pe pagina de contact e cea juridică a firmei, un apartament. Spune acum „reqvizitele companiei".

Verificat

Comandă Rezultat
backend/ npm run build exit 0
backend/ npm test 568 de teste în 38 de fișiere
frontend/ npx tsc --noEmit -p tsconfig.app.json exit 0
frontend/ npx tsc --noEmit -p tsconfig.test.json exit 0
frontend/ npm run lint 1 avertisment preexistent, nelegat
frontend/ npm test 396 de teste în 31 de fișiere

Măsurat pe backend/prisma/dev.db, care oglindește catalogul de producție. Măsurătoarea pe cele 384 de adrese reale se face după deploy.

Ce rămâne, cu issue propriu

#49 — numele colecției „Gift Card Recommendations" nu e tradus; e dată din baza de date, nu meta. #23 (closed) — trei pagini de articol nu emit deloc descriere; preexistent, neatins de această lucrare.

Merge request reports