Problema, kurią visi žino, bet mažai kas sprendžia tinkamai
Jei kada nors bandėte paleisti naujienų portalą ant React, Vue ar Angular pagrindo, tikriausiai susidūrėte su tuo pačiu galvos skausmu: „Google News” tiesiog nepastebi jūsų turinio arba pastebi jį per vėlai. Straipsnis jau pasenęs, o Google vis dar jo nėra indeksavęs. Tai nėra atsitiktinumas – tai architektūros problema.
SPA (Single Page Application) ir naujienų žurnalistika yra gana nepatogi pora. Naujienoms svarbus laikas. „Google News” robotas nėra toks kantrus kaip įprastas „Googlebot” – jis nori gauti turinį greitai, aiškiai ir be JavaScript gimnastikos.
SSR arba SSG – ne pasirinkimas, o būtinybė
Pirmas dalykas, kurį reikia suprasti: jei jūsų SPA grąžina robotui tuščią HTML su <div id="app"></div>, jūs tiesiog nedirbate. „Google News” indeksavimo robotas turi ribotą JavaScript vykdymo pajėgumą ir dar ribotesnį kantrybę laukti, kol jūsų React komponentai susirenderins.
Sprendimas – serverio pusės renderinimas (SSR) arba statinis generavimas (SSG). Next.js, Nuxt.js, SvelteKit – šie įrankiai egzistuoja ne be priežasties. Kiekvienas naujas straipsnis turi būti pasiekiamas kaip pilnai suformuotas HTML jau pirmojo užklausos momento. Ne po sekundės, ne po dviejų – iš karto.
Jei naudojate Next.js, getServerSideProps arba ISR (Incremental Static Regeneration) su trumpu revalidacijos laiku – tarkime, 60 sekundžių – yra geras kompromisas tarp greičio ir aktualumo. Naujienoms, kur turinys keičiasi kas kelias minutes, SSR paprastai laimi.
Sitemap – ne biurokratija, o komunikacija su robotu
„Google News” turi atskirą sitemaps protokolą naujienoms. Tai ne tas pats kaip įprastas sitemap.xml. Naujienų sitemape turi būti tik per paskutines 48 valandas publikuoti straipsniai, ir jis turi atsinaujinti realiu laiku – kiekvieną kartą, kai publikuojamas naujas turinys.
Štai kaip atrodo tinkama naujienų sitemap struktūra:
<url>
<loc>https://jusuportalas.lt/straipsnis/pavadinimas</loc>
<news:news>
<news:publication>
<news:name>Jūsų Portalas</news:name>
<news:language>lt</news:language>
</news:publication>
<news:publication_date>2024-11-15T10:30:00+02:00</news:publication_date>
<news:title>Tikslus straipsnio pavadinimas</news:title>
</news:news>
</url>
Data turi būti tiksli iki minutės ir atitikti tai, kas nurodyta straipsnio datePublished schema.org žymoje. Bet koks neatitikimas – ir Google gali nuspręsti, kad turinys nėra patikimas.
Struktūrizuoti duomenys – ne papuošimas, o instrukcija
Kiekvienas straipsnis turi turėti NewsArticle schema.org žymėjimą. Tai nėra SEO triukas – tai būdas pasakyti Google, kad šis puslapis yra naujienų straipsnis, o ne bet koks turinys. Minimalus rinkinys:
- headline – pavadinimas, ne ilgesnis nei 110 simbolių
- datePublished – publikavimo laikas ISO 8601 formatu
- dateModified – atnaujinimo laikas
- author – žurnalisto vardas, o ne redakcijos pavadinimas
- image – bent vienas paveikslėlis, ne mažesnis nei 1200px pločio
SPA kontekste šiuos duomenis reikia įterpti į HTML galvutę serverio pusėje. Jei tai darote kliento pusėje per useEffect, robotas to tiesiog nematys.
Greitis – ne prabanga naujienų pasaulyje
„Google News” algoritmas vertina ne tik turinį, bet ir tai, kaip greitai jis pasiekiamas. Core Web Vitals čia svarbūs, bet naujienoms ypač kritiškas LCP (Largest Contentful Paint). Jei pagrindinis straipsnio tekstas užkraunamas ilgiau nei 2,5 sekundės, jūs jau prarandate pozicijas.
Praktiškai tai reiškia: kritinis CSS turi būti inline, šriftai – iš anksto užkrauti, paveikslėliai – optimizuoti ir teisingai dydžiais aprašyti. SPA dažnai kenčia nuo per didelio JavaScript bundle’o – kiekvieną kartą, kai pridedamas naujas paketas, verta pagalvoti, ar jis tikrai reikalingas straipsnio puslapyje.
Kai technika susitinka su realybe
Visa tai skamba logiškai ant popieriaus, bet redakcijose dažnai yra kitaip. Žurnalistai publikuoja straipsnius per CMS, kuris generuoja URL, sitemap atsinaujina su vėlavimu, o SSR serveris kartais tiesiog atsatsako per lėtai piko valandomis. Todėl monitoringas yra toks pat svarbus kaip ir konfigūracija.
Google Search Console naujienų ataskaita rodo, kurie straipsniai buvo indeksuoti ir kada. Jei matote, kad tarp publikavimo ir indeksavimo praeina daugiau nei valanda, kažkas negerai – arba sitemap neatsinaujina laiku, arba serveris grąžina lėtą atsaką, arba struktūrizuoti duomenys turi klaidų.
Galiausiai „Google News” indeksavimas nėra magiška juodoji dėžė – tai sistema, kuri veikia pagal aiškias taisykles. SPA architektūra pati savaime nėra kliūtis, jei ji sukonfigūruota taip, kad robotas gautų tą patį, ką gauna skaitytojas: greitą, pilną, struktūrizuotą puslapį. Techniniai sprendimai čia yra tik priemonė – tikslas lieka tas pats kaip ir žurnalistikoje: tinkamas turinys, tinkamu laiku, tinkamam žmogui.