Problema, kurią dažnas ignoruoja
Single-page aplikacijos ir naujienų portalai – tai derinys, kuris teoriškai turėtų veikti puikiai, bet praktikoje dažnai sukelia galvos skausmą. „Google News” indeksavimas turi savo taisykles, ir jos ne visada sutampa su tuo, kaip veikia modernūs JavaScript frameworks.
Pagrindinė problema paprasta: „Google News” crawleris skuba. Jam nėra laiko laukti, kol JavaScript užsikraus ir sugeneruos turinį. Jei straipsnio tekstas atsiranda tik po kelių sekundžių, didelė tikimybė, kad jis bus praleistas arba indeksuotas su vėlavimu – o naujienų pasaulyje vėlavimas kainuoja.
Server-side rendering – ne mada, o būtinybė
SSR šiame kontekste nėra pasirinkimas. Kiekvienas straipsnis turi būti pilnai sugeneruotas serveryje prieš pasiekiant naršyklę. Next.js, Nuxt ar panašūs sprendimai čia tinka gerai, bet svarbu ne tik juos naudoti, bet ir teisingai sukonfigūruoti.
Konkrečiai – getServerSideProps arba jo atitikmuo turi grąžinti visą straipsnio turinį, meta duomenis ir struktūrizuotus duomenis. Ne dalį, ne placeholder’į, o viską. Crawleris turi gauti baigtą HTML dokumentą.
Taip pat verta patikrinti, kaip aplikacija elgiasi su dinaminiais maršrutais. Jei straipsnio URL generuojamas klientų pusėje ir serveris grąžina tą patį tuščią index.html visiems keliams – tai problema.
News sitemap – dažnai pamirštas detalus
„Google News” turi atskirą sitemap formatą, ir jis skiriasi nuo įprasto. Čia reikalingas <news:news> elementas su publikavimo data, straipsnio pavadinimu ir kalba. Be to, šis sitemap turi būti atnaujinamas realiu laiku – idealiu atveju kiekvieną kartą, kai paskelbiamas naujas straipsnis.
Statiškai generuojamas sitemap, kurį atnaujini kartą per dieną, naujienų portalui neveiks. Reikia dinaminio endpoint’o, kuris visada grąžina naujausią informaciją. Dažniausiai tai sprendžiama su serverless funkcija arba dedikuotu API maršrutu.
Dar vienas niuansas – „Google News” sitemap’e turėtų būti tik paskutinių 48 valandų straipsniai. Senesni įrašai čia nereikalingi ir gali sukelti painiavą.
Struktūrizuoti duomenys ir greitis
Schema.org žymėjimas tipo NewsArticle padeda, bet tik jei jis teisingas. Dažna klaida – datePublished ir dateModified laukų neatitikimas tarp struktūrizuotų duomenų ir matomo puslapio turinio. „Google” tai pastebi.
Greitis taip pat svarbus. Ne tik Core Web Vitals prasme, bet ir TTFB – Time to First Byte. Jei serveris atsako po dviejų sekundžių, crawleris gali tiesiog pasitraukti. Caching’as serverio lygmenyje čia labai padeda, bet reikia užtikrinti, kad kešuojamas turinys nėra pasenęs.
Kai viskas sukonfigūruota, bet vis tiek neveikia
Kartais problema ne techninė, o politinė – „Google News” turi turinio kokybės reikalavimus, ir jei portalas jų neatitinka, techninis tobulumas nepadės. Bet jei turinys tvarkingas, o indeksavimas vis tiek vėluoja, verta patikrinti kelis dalykus: ar crawleris apskritai pasiekia puslapius (Search Console Crawl Stats), ar nėra blokuojančių robots.txt taisyklių, ar canonical žymės rodo teisingus URL.
SPA naujienų portalo konfigūravimas „Google News” nėra raketų mokslas, bet reikalauja dėmesio detalėms. Kiekvienas iš šių elementų atskirai gali atrodyti smulkmena – SSR, teisingas sitemap, struktūrizuoti duomenys, greitis. Bet kartu jie sudaro sistemą, kuri arba veikia, arba ne. Ir naujienų pasaulyje „beveik veikia” – tai tas pats, kas neveikia.