Kodėl SPA ir Google News – sudėtinga pora?
Jei esi kūręs naujienų portalą ant React, Vue ar Angular pagrindo, tikriausiai jau susidūrei su ta nemalonią akimirką – Google News tiesiog nepastebi tavo straipsnių arba indeksuoja juos su kelių dienų vėlavimu. O naujienų pasaulyje kelios dienos – tai amžinybė. Problema nėra tavo turinys, problema yra tai, kaip SPA (Single Page Application) veikia ir kaip Google Googlebot skaito puslapius.
Trumpai tariant: Googlebot mato tuščią HTML skeleto puslapį, nes JavaScript dar nespėjo suveikti ir sugeneruoti turinio. Naujienų kontekste tai katastrofa.
Server-Side Rendering – ne mada, o būtinybė
Pirmasis ir svarbiausias žingsnis – įdiegti SSR (Server-Side Rendering). Next.js, Nuxt.js ar SvelteKit čia yra tikri gelbėtojai. Kai Googlebot užklausia straipsnio URL, serveris turi grąžinti jau pilnai sugeneruotą HTML su visu turiniu – antrašte, tekstu, metaduomenimis. Jokio „palaukite, JavaScript krauna”.
Ypač svarbu užtikrinti, kad kiekvienas straipsnis turėtų savo unikalų URL ir tas URL būtų pasiekiamas iš karto, be jokių papildomų navigacijos žingsnių. Google News boteliams nėra laiko laukti.
News Sitemap – tavo geriausias draugas
Google News turi savo sitemap formatą ir jis skiriasi nuo įprasto XML sitemap! Čia daug kas suklysta. Tavo naujienų sitemap turi:
- Apimti tik per paskutines 48 valandas publikuotus straipsnius
- Turėti
<news:publication_date>su tiksliu laiku ir laiko juosta - Kiekvienam straipsniui nurodyti
<news:title>– būtent tą, kurį matys Google News - Atnaujintis dinamiškai – kiekvieną kartą, kai publikuojamas naujas straipsnis
Statinis sitemap čia neveiks. Reikia endpoint’o, kuris generuoja sitemap realiu laiku iš duomenų bazės.
Structured Data – pasakyk Google, ką turi
Kiekviename straipsnyje privalo būti NewsArticle schema.org žymėjimas. Tai ne tik padeda indeksavimui – tai tiesiogiai veikia, ar tavo straipsnis atsidurs Google News srautuose ar ne. Minimalus rinkinys: headline, datePublished, dateModified, author, publisher su logotipu.
SPA kontekste šiuos duomenis reikia įterpti serverio pusėje – ne per JavaScript po puslapio užkrovimo. Next.js getServerSideProps arba Nuxt useAsyncData čia dirba puikiai.
Canonical URL ir duplikacijos spąstai
SPA dažnai generuoja tą patį turinį keliais URL – su parametrais, be jų, su trailing slash ir be. Google News tai nemėgsta. Kiekvienas straipsnis turi turėti vieną kanoninį URL ir jis turi būti nurodytas <link rel="canonical"> tage. Ir vėl – serverio pusėje, ne JavaScript.
Greitis – nes lėtas puslapis = praleista naujiena
Google News botai nėra kantrūs. Core Web Vitals čia svarbūs ne tik SEO, bet ir realiam indeksavimo greičiui. LCP (Largest Contentful Paint) straipsnio puslapyje turėtų būti žemiau 2,5 sekundės. Optimizuok vaizdus, naudok CDN, ir – labai svarbu – užtikrink, kad serveris atsakytų per mažiau nei 200ms.
Kai viskas sudedama į vieną paveikslą
Naujienų SPA konfigūravimas Google News indeksavimui nėra vienas nustatymas ar vienas įrankis – tai visas ekosistemos klausimas. SSR užtikrina, kad turinys pasiekiamas iš karto. Dinaminis News Sitemap leidžia botams rasti naujus straipsnius per minutes, o ne dienas. Structured data paaiškina, kas tas turinys yra. Canonical URL’ai neleidžia pačiam save „nukonkuruoti”. O greitis viską suriša į veikiančią visumą. Jei nors vienas iš šių elementų šlubuoja – visa grandinė subyra. Bet kai viskas veikia kartu? Tavo straipsniai Google News atsiranda per 15-30 minučių po publikavimo. O tai jau yra tikras žaidimas.