Problema, kurią visi ignoruoja
SPA ir „Google News” – tai tokia kombinacija, kuri ant popieriaus atrodo logiška, o praktikoje virsta galvos skausmu. Daugelis kūrėjų tiesiog paleidžia „React” ar „Vue” pagrįstą naujienų portalą, įdeda sitemap.xml ir tikisi, kad viskas suveiks savaime. Nesuveiks. „Google News” indeksavimas veikia pagal kiek kitokias taisykles nei įprastas „Google Search”, ir šios subtilybės kainuoja – realiai kainuoja, nes straipsniai pasirodo per vėlai arba neatsiranda visai.
Rendering – čia prasideda tikroji drama
Pirmasis ir svarbiausias klausimas: kaip jūsų SPA renderina turinį? Jei atsakymas yra „kliento pusėje”, tai jau yra problema. „Google News” boteris nėra toks kantrus kaip pagrindinis „Googlebot” – jis ne visada laukia, kol JavaScript užsikraus, įvykdys API užklausas ir suformuos DOM. Todėl SSR (server-side rendering) arba bent jau SSG (static site generation) straipsnių puslapiams nėra prabanga, o būtinybė.
„Next.js” su getServerSideProps arba „Nuxt.js” su universaliu režimu čia yra logiški pasirinkimai. Bet net ir juos naudojant, reikia įsitikinti, kad HTML atsakymas į serverio užklausą jau turi visą straipsnio turinį – antraštę, tekstą, metaduomenis – o ne tuščią <div id="app"></div>.
News Sitemap – ne papildomas darbas, o privalomas
Daugelis portalų turi bendrą sitemap.xml ir mano, kad to pakanka. „Google News” reikalauja atskiro News Sitemap, kuris atitinka specifinį formatą. Jame turi būti <news:news> elementai su publikavimo data, kalba, pavadinimais. Ir čia yra subtilybė: News Sitemap turėtų apimti tik paskutinių 48 valandų straipsnius. Jei įtrauksite senesnius, „Google” tiesiog ignoruos juos šiame kontekste.
Dar svarbiau – šis sitemap turi būti atnaujinamas realiu laiku. Kiekvienas naujas straipsnis turi atsirasti jame per kelias minutes po publikavimo. Jei sitemap generuojamas kartą per dieną kaip kažkoks batch procesas, tai yra architektūrinė klaida, kurią reikia taisyti.
Metaduomenys, kurie iš tikrųjų svarbūs
SPA kontekste metaduomenų valdymas dažnai yra chaotiškas. Kūrėjai naudoja klientines bibliotekas kaip „react-helmet” ir mano, kad viskas tvarkoje. Bet jei puslapis renderinamas kliento pusėje, boteris mato tik numatytuosius meta tagus, o ne straipsnio specifinius.
Kiekvienas straipsnio puslapis privalo turėti:
- Teisingą
<title>su straipsnio antrašte og:title,og:description,og:image– ir tai turi būti unikalūs kiekvienam straipsniuiarticle:published_timeirarticle:modified_time– „Google News” į tai žiūri rimtai- Struktūrizuotus duomenis pagal
NewsArticleschema.org tipą
Ir visa tai – serveryje sugeneruota, ne kliente.
Greitis, kurio niekas nematuoja teisingai
„Google News” indeksavimo greitis priklauso ne tik nuo sitemap atnaujinimo, bet ir nuo to, kaip greitai boteris gali pasiekti ir apdoroti puslapį. SPA dažnai turi problemą su per dideliais JavaScript bundle’ais, kurie lėtina serverio atsakymą net ir su SSR. Jei TTFB (Time to First Byte) viršija 500ms, tai jau yra signalas, kad kažkas negerai.
Taip pat verta patikrinti, ar robots.txt neblokuoja jokių resursų, reikalingų puslapio renderinimui. Tai skamba trivialiai, bet praktikoje tai yra viena dažniausių klaidų – blokuojami CSS ar JS failai, kurie yra kritiniai turinio atvaizdavimui.
Kai teorija susiduria su realybe
Visa tai, kas parašyta aukščiau, yra techniškai teisinga, bet reikia pripažinti – net ir viską padarius teisingai, „Google News” indeksavimas lieka iš dalies neperskaitoma juoda dėžė. Portalai su ta pačia technine konfigūracija gali gauti skirtingus rezultatus, nes „Google News” redakciniai algoritmai vertina ir turinio kokybę, ir šaltinio autoritetą.
Todėl techninis paruošimas yra būtinas, bet nepakankamas. SSR, teisingas News Sitemap, korektiški metaduomenys, greitas serveris – tai yra minimumas, be kurio net nekalbėkite apie „Google News” indeksavimą. Bet jei tikitės, kad vien techninis tobulumas garantuos greitą ir pilną indeksavimą – nusivylsite. Tai yra sistema, kurioje technika atveria duris, o turinys ir šaltinio reputacija nusprendžia, ar jus įsileis vidun.