Sari la conținut
megapromotingHai să discutăm

Expertiză · SEO

Optimizare pentru motoarele clasice: parcurgem fiecare adresă, punem rezultatul într-un tabel și reparăm ce se poate verifica.

SEO tehnic și structural — indexabilitate, adrese canonice, hartă de site generată din date, redirecționări, titluri și descrieri, conținut subțire, viteză măsurată în octeți. Fără promisiuni de poziții.

Construit dejaDouă implementări proprii, ambele deschise pe disc. Prima: auditul acestui site — 249 de adrese parcurse cu cereri directe, 23 de coloane per adresă, rezultatul într-un fișier tabelar versionat lângă cod, plus reparațiile care au ieșit din el (adresa canonică rezolvată o dată pentru toate rutele, adresa de partajare, harta de site generată din date). A doua: `mega-seo-analyzer`, un analizor propriu cu 16 module de analiză și un scor ponderat scris explicit în cod. Ce nu putem susține și nu vom scrie: poziții obținute sau procente de creștere. Nu avem măsurători publicabile pentru așa ceva.

SEO clasic e o meserie de inventar, nu de idei. Un motor de căutare trebuie să poată ajunge la fiecare pagină, să înțeleagă care e versiunea oficială a ei, să primească un titlu și o descriere care nu se repetă și să găsească destul conținut cât să merite un loc într-o listă. Aproape tot ce se strică aici se poate număra, iar ce se poate număra se poate repara.

De aceea începem cu o parcurgere completă, nu cu un eșantion. La site-ul acesta au ieșit 249 de adrese, fiecare cu 23 de coloane: cod de răspuns, adresă canonică, titlu, descriere, hreflang, numărul de blocuri de date structurate, volumul de text vizibil și restul. Rezultatul e un fișier tabelar versionat lângă cod, deci fiecare afirmație de mai jos se poate reproduce cu comenzile din anexa raportului.

Ce a ieșit: 244 de adrese răspund 200 și cinci redirecționează. 131 de pagini nu aveau adresă canonică. 219 din 244 declarau pagina de start ca adresă de partajare, deci orice distribuire arăta pagina greșită. 100 de titluri depășeau 60 de caractere, cel mai lung având 106. 65 de pagini împărțeau o singură descriere generată din șablon. 96 de pagini aveau sub 2.000 de caractere de text vizibil. Primele două au fost reparate cu câte o linie în aranjamentul de bază, care se aplică fiecărei rute; restul sunt în lista de lucru, cu prioritate scrisă.

Această pagină e una din trei. SEO se ocupă de motoarele care întorc o listă de linkuri. Vizibilitatea în răspunsurile generate de modele e altceva și are propria pagină, pentru că se controlează altfel și — important — nu se poate promite. Răspunsurile directe și datele structurate sunt a treia. Ce e comun tuturor trei: pagina trebuie să fie accesibilă, randată pe server și să aibă o singură adresă oficială. Partea aceea se face o dată și folosește la toate.

Ce cuprinde

Lucrarea, pe componente

Parcurgem fiecare adresă, nu un eșantion

Cereri directe către fiecare adresă cunoscută, fără urmărirea redirecționărilor, cu cel mult șase cereri simultane ca să nu deranjăm serverul, și 23 de coloane per adresă: cod, adresă canonică, titlu, descriere, hreflang, numărul de blocuri de date structurate, volumul de text vizibil. Rezultatul e un fișier tabelar pe care îl predăm. La site-ul acesta: 249 de adrese, dintre care 244 răspund 200 și 5 redirecționează.

Adresa oficială a unei pagini, rezolvată o dată pentru tot site-ul

131 de pagini nu declarau nicio adresă canonică, iar 219 din 244 declarau pagina de start ca adresă de partajare — deci orice distribuire pe rețele arăta altă pagină. Ambele s-au reparat cu câte o declarație relativă în aranjamentul de bază, care se rezolvă pentru fiecare rută în parte. E o linie de cod în locul unei convenții pe care fiecare pagină nouă ar fi trebuit să și-o amintească singură.

Harta de site generată din date, verificată după publicare

Harta se construiește din sursele de conținut și trece printr-o deduplicare finală — la site-ul acesta, 147 de adrese, aceeași cifră în cod și în fișierul servit de producție. Un script rulat după publicare cade dacă harta pierde o pagină sau dacă apar variante de adresă care nu se deschid. Ce lipsește azi, spus ca lipsă: intrările nu poartă dată de ultimă modificare, iar 93 de adrese indexabile nu sunt încă incluse.

Adresele vechi primesc fiecare o decizie

La o restructurare, fiecare adresă existentă primește un verdict: rămâne, se redirecționează permanent sau dispare. La site-ul acesta au rezultat 43 de redirecționări în configurație. Verificate separat și lucrurile pe care nimeni nu le testează: saltul de la domeniul fără `www` la cel cu `www` e unul singur; adresa cu bară finală redirecționează corect; adresa scrisă cu majuscule întoarce 404, deci nu există duplicat de scriere.

Titluri, descrieri și conținut subțire, numărate

100 de titluri din 244 depășesc 60 de caractere, cel mai lung având 106 — riscul e trunchierea în rezultate. 33 de descrieri depășesc 160 de caractere, dar zero lipsesc. Mai serios: 65 de pagini împart o singură descriere generată din șablon, iar 30 dintre ele diferă între ele prin 240 de octeți în total. Median de text vizibil: 2.328 de caractere, cu 96 de pagini sub 2.000. Sunt cifre, nu impresii, și fiecare are o listă de adrese în spate.

Un analizor propriu, cu module și ponderi scrise în cod

Analizorul nostru are 16 module — pe pagină, performanță, hartă de site, securitate, accesibilitate, infrastructură de nume, informații de înregistrare a domeniului, legături externe, rețele sociale, stivă tehnică, poziții, cercetare de cuvinte-cheie, audit general — plus module de comparație: găsirea concurenților, diferența de cuvinte-cheie, diferența de conținut, repere. Scorul general e ponderat explicit în cod: performanță 0,20, SEO 0,20, pe pagină 0,15, securitate 0,15, răspunsuri directe 0,10, accesibilitate 0,10, social 0,10. Modulele care eșuează nu trag scorul în jos — ies din ponderare, ca un serviciu extern căzut să nu producă un raport fals.

Redirecționări care nu costă o pagină întreagă

O redirecționare făcută din interiorul aplicației construiește pagina și abia apoi trimite răspunsul de redirecționare. La site-ul acesta sunt 11 astfel de cazuri, fiecare producând peste 200 KB de HTML înainte de a spune „du-te în altă parte”. Funcționează, dar e risipă; mutarea lor în configurație e o lucrare mică cu efect direct pe bugetul de parcurgere. E în lista de reparații, scrisă ca lipsă.

Ce vede un crawler, verificat cu crawlerul, nu presupus

Am cerut cinci adrese cu 18 identificatori de agent diferiți și am comparat codul, dimensiunea și amprenta conținutului normalizat. Toți primesc 200 și exact același conținut ca un browser; `robots.txt` e identic, 129 de octeți, pentru toți; nu există blocare, provocare sau limitare pentru crawlere. Singura diferență reproductibilă — 237 de octeți în minus pe o pagină dinamică, pentru trei agenți — vine din cadrul de lucru însuși, care le trimite HTML complet nestreamat, deci mai mult conținut gata randat, nu mai puțin.

Ce nu promitem, scris înainte de contract

Nu promitem poziții, procente de creștere sau un număr de vizite. Nu avem măsurători publicabile pentru așa ceva și nu inventăm. Ce livrăm e verificabil în alt fel: lista de adrese cu starea fiecăreia, reparațiile făcute, verificarea rulată după publicare și diferența măsurabilă între starea de dinainte și cea de după — în octeți, coduri și numere de pagini, nu în promisiuni.

Cum arată

Site-ul ca teritoriu, verificările ca straturi peste el: cod de răspuns → adresă canonică → titlu și descriere → date structurate → volum de text. 249 de adrese, 23 de coloane, un singur fișier tabelar.

01

Parcurgerea completă și tabelul de stare

Prima livrare e fișierul tabelar cu fiecare adresă și starea ei pe 23 de coloane, plus comenzile care îl reproduc. De aici încolo, orice discuție are un rând în spate. E și momentul în care se descoperă adresele pe care nimeni nu știa că există.

02

Reparațiile structurale, în ordinea impactului

Întâi lucrurile care se rezolvă într-un loc și se aplică peste tot: adresa canonică, adresa de partajare, comportamentul paginii de eroare, regulile pentru roboți. Apoi cele care cer muncă pe pagină: titluri, descrieri, conținut subțire. Ordinea nu e negociabilă — invers, repari o sută de pagini manual pentru ceva ce se rezolva cu o linie.

03

Harta de site și redirecționările

Harta se leagă de sursele de date, ca o pagină nouă să intre singură. Adresele vechi primesc redirecționări permanente în configurație, nu în interiorul aplicației. Livrăm lista completă a deciziilor, adresă cu adresă.

04

Verificarea care rămâne după noi

Livrăm un script rulat după fiecare publicare, care cade dacă o adresă canonică a dispărut, dacă harta de site a pierdut o pagină sau dacă `robots.txt` a început să blocheze resurse de randare. Fără el, reparațiile se erodează în câteva luni și nimeni nu observă până la următorul audit.

05

Măsurarea, cu instrumentele tale

Dacă ai consolă de căutare și instrument de analiză, montăm raportarea peste ele și stabilim ce urmărim. Dacă nu ai, primul pas e să le ai — și spunem asta înainte, nu după. Ce nu facem: nu raportăm poziții dintr-un instrument terț ca și cum ar fi date din sursă.

OBSERVAȚIEDATESTRAT PE HARTĂ
Site-ul ca teritoriu, verificările ca straturi peste el: cod de răspuns → adresă canonică → titlu și descriere → date structurate → volum de text. 249 de adrese, 23 de coloane, un singur fișier tabelar.

Datele

Ce atingem, unde stau și cât rămân

Întrebările pe care le pune oricine are un responsabil cu protecția datelor — puse aici înainte să le pună el.

Ce citim de pe site-ul tău
Doar ce e public: HTML-ul paginilor, antetele răspunsurilor, `robots.txt`, harta de site. Cereri directe, la ritm limitat — cel mult șase în paralel, ca parcurgerea să nu semene cu un atac. Nu avem nevoie de acces la administrare pentru partea de audit.
Ce ne trebuie de la tine, dacă vrei și partea de măsurare
Acces de citire la consola de căutare și la instrumentul de analiză a traficului. Fără ele putem spune ce e greșit tehnic, dar nu ce se întâmplă în rezultate. Auditul acestui site a fost făcut deliberat fără astfel de acces, iar limita e declarată explicit în document — ca să nu confunde nimeni o măsurătoare tehnică cu una de trafic.
Unde stau rezultatele
Fișierul tabelar cu parcurgerea și raportul scris stau în depozitul proiectului, versionate lângă cod. Nu într-o prezentare și nu într-un instrument cu abonament din care nu le mai poți scoate. Când o cifră se schimbă, se vede în istoricul fișierului cine și când a schimbat-o.
Retenția rapoartelor
Trăiesc cât trăiește depozitul proiectului. Datele parcurse sunt publice prin definiție — sunt paginile tale, așa cum le vede oricine. Dacă auditul atinge zone care cer autentificare, se stabilește separat ce se salvează și cât.

Un caz

249 de adrese, 23 de coloane, și două linii de cod care au reparat 350 de pagini

Situația

Un site restructurat recent, cu aproximativ 250 de adrese publice. Toate răspundeau 200 și nimic nu părea în neregulă. Întrebarea de pornire nu a fost „cum creștem traficul”, ci „ce declară fiecare pagină despre ea însăși”.

Ce am construit

Am parcurs fiecare adresă cu cereri directe, fără urmărirea redirecționărilor, cu cel mult șase cereri simultane, și am scris pentru fiecare 23 de coloane într-un fișier tabelar versionat lângă cod. Peste el am rulat verificări separate: cine declară ce adresă canonică, cine declară ce adresă de partajare, ce lungimi au titlurile și descrierile, câte pagini împart aceeași descriere din șablon, cât text vizibil are fiecare, ce răspunde serverul la 18 identificatori de agent diferiți, ce oferă la comprimare și protocol. Fiecare cifră a fost citită din răspunsul real, nu dedusă din configurație.

Ce a ieșit

244 de adrese răspund 200, cinci redirecționează. 131 de pagini nu declarau adresă canonică; 219 din 244 declarau pagina de start ca adresă de partajare. Ambele au fost reparate cu câte o declarație relativă în aranjamentul de bază — două linii care se aplică fiecărei rute, în loc de o corectură pe fiecare pagină. Restul constatărilor au intrat într-un plan cu unsprezece pași, în ordinea impactului: 100 de titluri peste 60 de caractere, 65 de pagini cu descriere din șablon, 96 de pagini cu sub 2.000 de caractere de text, 93 de adrese indexabile lipsă din hartă, 11 redirecționări făcute din interiorul aplicației.

Ce nu spune cazul

Auditul a fost făcut fără acces la consola de căutare și fără date de trafic, deliberat, iar limita e scrisă în raport: putem spune ce e greșit tehnic, nu ce se întâmplă în rezultate. Din cei unsprezece pași ai planului, doi sunt aplicați azi; restul sunt lucrări deschise, nu bifate. Un raport care declară toți pașii încheiați în ziua în care au fost scriși nu e un raport.

Întrebări

Ce ne întreabă oamenii înainte să sune

Care e diferența dintre SEO, GEO și AEO, pe scurt?

Publicul e diferit. SEO se adresează motoarelor care întorc o listă de linkuri — pagina ta apare, omul dă clic. GEO se adresează modelelor generative care compun un răspuns și pot cita o sursă; acolo nu există poziție și nu există garanție, deci se lucrează la ce poate fi controlat, nu la rezultat. AEO se adresează răspunsurilor directe — fragmentul extras, panoul de informații, răspunsul vocal — și se sprijină pe date structurate corecte. Baza e comună: pagină accesibilă, randată pe server, cu o singură adresă oficială. Partea aceea se face o dată.

Ce livrați efectiv într-un audit SEO?

Un fișier tabelar cu fiecare adresă a site-ului și starea ei pe 23 de coloane — cod de răspuns, adresă canonică, titlu, descriere, hreflang, blocuri de date structurate, volum de text — plus un raport scris cu constatările în ordinea impactului, fiecare cu locul din cod, criteriul și remedierea. Și comenzile care reproduc fiecare cifră. La site-ul acesta au ieșit 249 de rânduri; e chiar în depozit, lângă cod.

Garantați poziția întâi?

Nu, și nici o poziție anume. Nu avem măsurători publicabile pentru rezultate de acest tip și nu inventăm. Ce putem arăta e diferența verificabilă: câte pagini nu aveau adresă canonică înainte și câte au acum, câte declarau greșit adresa de partajare, câte adrese vechi au rămas fără redirecționare. La site-ul acesta cifrele au fost 131, respectiv 219 din 244. Alea sunt fapte; o poziție promisă nu e.

De unde știți că ce reparați rămâne reparat?

Dintr-un script rulat după fiecare publicare, care verifică adresele canonice, ancorele de conținut, harta de site și `robots.txt`, și cade dacă ceva a dispărut. Reparațiile de SEO se erodează exact ca orice altă convenție nescrisă: cineva adaugă o pagină nouă, uită o declarație, și nimeni nu observă până la următorul audit. Un script observă imediat.

Aveți instrumente proprii sau folosiți abonamente?

Ambele au rostul lor, dar analiza tehnică o facem cu un analizor propriu: 16 module — pe pagină, performanță, hartă de site, securitate, accesibilitate, infrastructură de nume, înregistrare de domeniu, legături externe, rețele sociale, stivă tehnică, poziții, cuvinte-cheie — plus module de comparație cu concurenții. Scorul general are ponderi scrise în cod, nu ascunse: performanță și SEO câte 0,20, pe pagină și securitate câte 0,15, restul câte 0,10. Un modul care eșuează iese din ponderare în loc să producă un scor fals.

Ce faceți cu o sută de pagini aproape identice?

Le semnalăm ca risc, nu ca oportunitate. La site-ul acesta, 100 din cele 147 de adrese din hartă sunt combinații serviciu × domeniu, iar 65 de pagini împart o singură descriere din șablon — 30 dintre ele diferă între ele prin 240 de octeți în total. Un motor de căutare tratează asta ca pe conținut produs la scară, iar riscul e o sancțiune, nu un plus de vizibilitate. Soluția e conținut real pe fiecare pagină sau mai puține pagini. Nu recomandăm generarea de pagini ca strategie.

Contează viteza pentru SEO?

Contează, dar nu în forma în care se vinde de obicei. Nu îți dăm un scor de laborator, pentru că e ușor de mișcat și nu spune ce trăiește un vizitator. Îți dăm octeți măsurați: cât cântă HTML-ul comprimat, ce se transmite pe fiecare navigare, ce conțin pachetele de JavaScript, dacă serverul oferă comprimare modernă și protocol nou. La site-ul acesta: nu oferă nici Brotli, nici HTTP/2, catalogul de traduceri costă aproximativ 70 KB comprimat pe fiecare navigare, iar un pachet de 443 KB conține patru cataloage de limbă din care doar unul e folosit. Toate trei sunt în lista de reparații.

Blocați crawlerele de inteligență artificială?

E o decizie a proprietarului site-ului, nu a noastră, și cere separarea a trei categorii care azi sunt tratate identic pe majoritatea site-urilor: crawlere de căutare care trimit oameni înapoi, agenți declanșați de un om care a cerut pagina, și crawlere de antrenare. Regulile pentru ele sunt independente. Pe site-ul acesta există în acest moment o singură regulă generală, deci poziția e implicită — și o spunem, în loc să pretindem că e o strategie. Detaliile țin de pagina de vizibilitate în răspunsuri generate.

Ce nu faceți?

Nu cumpărăm legături și nu construim rețele de site-uri. Nu generăm pagini la scară ca să acoperim combinații de cuvinte. Nu raportăm poziții preluate dintr-un instrument terț ca și cum ar fi date din sursă. Și nu declarăm un audit încheiat fără fișierul tabelar și comenzile care îl reproduc — un raport pe care nu îl poți verifica singur nu e un audit, e o părere.

Pe ce se sprijină fiecare afirmație de mai sus (14 surse)
  1. Parcurgere proprie: 249 de adrese × 23 de coloane; 244 răspund 200 și 5 redirecționează (308); metodă fără urmărirea redirecționărilor, cel mult 6 cereri simultaneseo-tehnic.md:41-51
  2. 131 de pagini fără adresă canonică (100 dintre ele combinații serviciu × domeniu, 12 pagini de serviciu); 219 din 244 declarau pagina de start ca adresă de partajareseo-tehnic.md:64-68, 179
  3. 100 de titluri din 244 peste 60 de caractere, cel mai lung 106; 33 de descrieri peste 160, zero lipsă; 65 de pagini cu aceeași descriere din șablon, dintre care 30 diferă între ele prin 240 de octeți în totalseo-tehnic.md:322, 348-350, 356
  4. Median de text vizibil 2.328 de caractere; 96 de pagini sub 2.000seo-tehnic.md:293
  5. Harta de site: 147 de adrese, generate din 5 surse, cu dedupe final; fără dată de ultimă modificare; 93 de adrese indexabile lipsesc din hartăseo-tehnic.md:388
  6. 43 de redirecționări permanente în configurație; 11 pagini redirecționează din interiorul aplicației, fiecare randând peste 200 KB de HTML înainte de răspunsul de redirecționareseo-tehnic.md:429
  7. Un singur salt de la domeniul fără `www` la cel cu `www`; bară finală → 308 corect; adresă cu majuscule → 404, fără duplicat de scriereseo-tehnic.md:228-232
  8. 18 identificatori de agent × 5 adrese: toți primesc 200 și conținut identic; `robots.txt` identic, 129 de octeți, pentru toți; fără blocare, provocare sau limitare; `X-Robots-Tag` absent pe toate cele 249 de adreseseo-tehnic.md:205-215
  9. Analizor propriu cu 16 module și scor ponderat scris în cod: performanță 0,20 · SEO 0,20 · pe pagină 0,15 · securitate 0,15 · AEO 0,10 · accesibilitate 0,10 · social 0,10; modulele eșuate ies din ponderarerunner.ts:34-59
  10. Măsurători de transport pe propriul site: fără Brotli, fără HTTP/2; catalogul de traduceri costă ~70 KB gzip pe fiecare navigare; un pachet de 443.203 octeți conține 4 cataloage de limbă din care doar `ro` e rutabilaccesibilitate-performanta.md:642-771
  11. 100 din cele 147 de adrese ale hărții sunt combinații serviciu × domeniu; riscul e tratarea ca material produs la scarăsearch-strategy.md:19
  12. Pe site-ul acesta `robots.txt` are o singură regulă generală, deci poziția față de crawlerele de model e implicită, nu decisărobots.ts:1-14
  13. Din planul de unsprezece pași al auditului, doi sunt aplicați azi (adresa canonică globală și adresa de partajare); restul sunt deschiseseo-tehnic.md:452+
  14. Pagina veche `/servicii/seo-marketing` răspunde 200 și are trei propoziții fără nicio cifră și nicio tehnologiemega-service-pages.ts:60-83

Citările interne arată numele fișierului și linia. Calea completă rămâne în depozitul nostru; o putem parcurge împreună, la cerere.

Ce ai vrea să funcționeze mai bine?

Povestește-ne despre procesul tău. Împreună stabilim ce merită construit, ce putem conecta și cum verificăm rezultatul.

Hai să discutăm