Log files analysis: cum citești crawl log-urile pentru a înțelege ce face Googlebot pe site-ul tău
Dacă ai ajuns aici, probabil te-ai săturat de rapoartele din Search Console care îți arată „Discovered – currently not indexed”…
Citește articolul
JavaScript și SEO e una dintre acele combinații care sună simplu pe hârtie, dar te bagă în probleme reale când vezi că jumătate din site-ul tău nu apare în Google. Dacă lucrezi cu React, Vue, Angular sau orice framework modern, ai întâlnit probabil situația: pagina arată perfect în browser, dar în Search Console e goală sau apare cu conținut parțial.
Hai să clarificăm ce indexează Google din JavaScript, ce ignoră și unde greșesc cei mai mulți developeri când livrează un site SPA către echipa de marketing.
Google procesează paginile JS în două etape. Asta e diferența fundamentală față de HTML clasic.
Problema: între etapa 1 și 2 pot trece de la câteva ore la câteva săptămâni. Iar dacă în etapa 1 Googlebot nu găsește linkuri, nu mai descoperă alte pagini de pe site.
Lucrurile care funcționează rezonabil de bine în 2024-2025:
<a href="..."> generate prin JSloading="lazy" nativCuvântul cheie aici e „rezonabil”. Google poate să le indexeze. Asta nu înseamnă că o va face rapid sau consistent pentru fiecare pagină.
Lista lucrurilor care îți strică indexarea, în ordinea frecvenței cu care le văd în audituri:
Text afișat după click pe „Read more”, taburi, accordion-uri încărcate la click. Googlebot nu dă click pe nimic. Dacă vrei ca acel conținut să fie indexat, trebuie să existe în DOM la încărcare, chiar dacă e ascuns vizual prin CSS.
Clasica greșeală: <div onclick="navigate()"> sau <span> cu event listener. Pentru Google, nu există. Folosește <a href> real, chiar dacă overrides cu router-ul JS.
Mulți blochează folder-ele /static/, /assets/ sau bundle-urile JS. Rezultat: Google nu poate randa pagina pentru că nu poate descărca JS-ul necesar. Verifică robots.txt și asigură-te că fișierele JS și CSS sunt accesibile.
URL-uri de tip example.com/#/produs/123 nu sunt tratate ca pagini separate. Tot ce e după # e ignorat. Folosește History API și URL-uri reale.
Dacă conținutul vine dintr-un API care cere token, Googlebot nu îl primește. Soluția: SSR sau prerender pentru roboți.
Nu există soluție universală. Depinde de tipul site-ului și de bugetul tehnic.
Recomandarea mea pentru proiecte noi: dacă SEO contează, alegi din start un framework cu SSR/SSG. Migrarea de la CSR la SSR pe un proiect existent durează 2-6 luni și costă între 5.000 și 25.000 EUR, depinde de complexitate.
Nu te baza pe „merge la mine în browser”. Folosește instrumentele care simulează Googlebot:
Dacă HTML-ul inițial (Ctrl+U) e gol și conținutul apare doar în DOM, ai o problemă. Poate fi tolerabilă pentru câteva pagini, dar pe mii de URL-uri devine gravă.
JavaScript prost optimizat strică Core Web Vitals. Bundle-uri mari, hidratare lentă, layout shift din componente care apar târziu. Toate afectează poziționarea.
Realist, asta înseamnă: code splitting agresiv, lazy loading pentru ce nu e above-the-fold, server components unde se poate, evitarea librăriilor JS care fac același lucru ca 10 linii de cod nativ.
Un site React clasic pornește de la 200-400 KB de JS doar pentru framework. Adaugi UI library, state management, analytics – ajungi rapid la 1 MB. Pe mobile cu 3G, asta înseamnă LCP de 4-6 secunde. Google penalizează.
Dacă site-ul tău are sub 100 de pagini și conținut static, nu te complica cu SSR. Google indexează bine și SPA-uri mici. Concentrează-te pe conținut, structură de linkuri interne și autoritate externă.
Pentru autoritate externă, advertorialele rămân una dintre metodele cele mai stabile. Dacă lucrezi la profilul de linkuri, poți publica articole în publicații verificate prin SEO DIGITAL și te concentrezi pe partea tehnică în paralel. Sunt două probleme separate care nu se exclud.
Google indexează JavaScript, dar cu întârziere și inconsistent. Pentru orice site care depinde de trafic organic, alege SSR sau SSG. Verifică ce vede Googlebot prin Search Console, nu prin browserul tău. Și nu uita: linkurile trebuie să fie <a href>, conținutul important trebuie să existe în DOM la încărcare, iar canonical-ul nu se setează prin JS.
Creezi contul în câteva minute, alegi prima publicație și vezi cum funcționează procesul real. Fără abonament, fără volum minim, fără să te legi de nimic.