SEO-tanulságok a saját oldalunk javításából
Néhány napot töltöttünk azzal, hogy a saját oldalunkat úgy olvassuk, ahogy egy keresőmotor. Hat dolgot találtunk, amit érdemes javítani. Minden oldal két FAQ-blokkot deklarált, a Google egy dekoratív háttérfényt használt bélyegképként, egy sablonoldal-csoport olyan keresésekre rangsorolt, amelyekre nem válaszolt, az oldal egy új szekcióját pedig a saját edge-ünk blokkolta stagingen. Egyik sem volt drámai. Mindegyik csendben csökkentette a láthatóságunkat.
Az oldal egy bekezdésben
A mythex.ai egy egyoldalas app, amelyet build időben előrenderelünk: egy szkript bejárja az összes útvonalat, minden oldalhoz statikus HTML-fájlt ír, és beilleszti az oldal címét, leírását és strukturált adatait (a JSON-LD blokkot, amely megmondja a keresőmotoroknak, mi az oldal — lásd: mi a strukturált adat). A következők nagy része ebben az előrenderelési lépésben él, mert ezt a HTML-t olvassa a crawler.
1. Minden oldal a FAQ-oldalnak mondta magát
Tünet. A HTML-sablonunk egy oldalszintű FAQPage blokkot tartalmazott a strukturált adatai között, az URL-je a /faq-ra mutatott. Az előrenderelés ezután minden oldal saját FAQPage-ét hozzáadta. Így minden oldalon kettő volt — az adatvédelmi szabályzatunk pedig azt mondta a Google-nek, hogy ő a FAQ-oldal.
Miért számít. A Google oldalanként legfeljebb egy FAQPage-et vár. Egy második, máshová mutató jelölés nemcsak figyelmen kívül marad, hanem az oldal jelölését is leértékelheti.
Javítás. Az globális blokk megszűnt. Minden oldal FAQ-jelölése egy helyről jön, beleértve a /faq-ot is, amely a kérdések teljes listájából építi fel. Azok az oldalak, amelyeknek nincs FAQ-ja, már nem deklarálnak egyet, ami az őszinte válasz. Az előrenderelés pedig megbukik a build-et, ha bármelyik oldalon ismét több mint egy FAQPage lesz. Az a szabály, amely csak valakinek a fejében létezik, előbb-utóbb megszegődik; az a szabály, amelyet a build kikényszerít, nem.
2. A Google rossz képet használt rólunk
Tünet. A keresési találatokban a Mythex bélyegképe a főoldali hős mögötti lüktető fény volt — egy dekoratív háttérkép —, nem a megosztási kártyánk.
Miért történt. Soha nem mondtuk meg a Google-nek, melyik kép képviseli az oldalt, ezért azt választotta, amelyet talált.
Javítás. Ennek két oldala van:
- Mondd meg, melyik kép az oldalé. A főoldalnak most van egy
WebPagecsomópontja, amelynekprimaryImageOfPagemezője a megosztási kártyára mutat, és minden előrenderelt oldal strukturált adata saját képet hordoz (az oldal megosztási képe, vagy az alapértelmezett). - Rejtsd el a dekorációt. A háttérképek most tiltva vannak a
robots.txt-ben, ésnoindex, noimageindexfejléccel szolgáljuk ki őket, így kimaradnak a képkeresésből és a bélyegképekből.
3. A keresőmotorok csak a logónkat ismerték
A Organization jelölésünkben volt név, logó és néhány közösségi link — márkaépítés, semmi más. A keresőmotorok a cégek tudáspaneljét nyilvántartásszerű adatokból építik, ezért hozzáadtuk azokat, amelyek a cégbejegyzési okiratunkon szerepelnek: a bejegyzett nevet, az alapítás dátumát, az alapítót és a bejegyzett székhelyet. A telefonszámot szándékosan kihagytuk.
4. A sablonoldalak rossz kérdésre válaszoltak
Tünet. A Search Console három sablonoldalt mutatott, amelyek megjelenéseket gyűjtöttek kattintás nélkül. Az egyik a „content strategist portfolio” és variánsai keresésére rangsorolt, egy másik a „best italian restaurant website design” keresésre, a harmadik pedig az „agile board” köré csoportosuló keresésekre — ezek fele tartalmazta a „free” szót. A pozíciók a 20-as évek közepétől az 50-es évekig terjedtek.
Miért. Minden oldal más kérdésre válaszolt, mint amit a keresők feltettek. Aki olasz étterem-dizájnra volt kíváncsi, egy építőt áruló oldalra került.
Javítás. Mindhárom most kapott egy szekciót, amely a keresésnek szól, nem a terméknek; a címet és leírást azokkal a szavakkal írtuk meg, amelyeket az emberek beírnak; és a már kibocsátott FAQ-jelölésükhöz méltó kérdéseket adtunk.
Ugyanez a commit egy csendesebb problémát is javított. A „kapcsolódó sablonok” blokk egy kategória első négy sablonját vette, így minden portfólió-sablon ugyanarra a négy portfólióra mutatott, a kategória többi része pedig egyáltalán nem kapott belső linket. Ezt egy alkategória szerint rendezett körre cseréltük: minden sablonoldal pontosan négy be- és négy kimenő linket kap. Az előrenderelt HTML most ezeket a linkeket is kiírja — korábban csak a JavaScript futása után léteztek, amit egy crawler soha nem biztos, hogy lefuttat.
5. Új oldalak azonnali jelzése a Bingnek
A Google figyelmen kívül hagyja az IndexNow-t, egy protokollt, amellyel a keresőmotorokat értesíthetjük egy URL változásáról. A Bing, a Yandex és a Seznam használja — és a Bing indexe az, amelyet a ChatGPT keresés olvas. Egy AI app-építő, amelyet az AI-asszisztensek nem találnak meg, sajátos típusú kudarc.
A nyilvánvaló megoldás, hogy minden telepítéskor elküldjük a teljes sitemapet, de így fojtható le a kulcs, és a legtöbb telepítés semmit nem változtat, amire a keresők figyelnek. Ezért egy szkript összehasonlítja az oldal által most kiszolgált sitemapet az éppen felépítettel, és csak a különbséget küldi el.
Két részlet tette működőképessé:
- Pillanatkép a telepítés előtt. Az alapvonalat még az új build élesítése előtt kell rögzíteni. Utána az „élő” sitemap már az új lesz, és minden különbség üres.
- Egelőre csak az új oldalak. A sitemapünkben nincsenek
lastmoddátumok, ezért a szkript az új oldalakat jelzi, az átírtakat nem. Ha minden URL-t a build dátumával látnánk el, az egész oldal minden telepítésnél változottnak tűnne — pont az a spam, amelytől szabadulni akartunk.
Csak éles telepítéseknél fut, és soha nem bukik meg a build miatt: mire lefut, az oldal már él, és egy keresőmotoros értesítés nem ér meg egy piros telepítést.
6. Az edge-ünk „nem található”-t mondott
Amikor elindítottuk az /ai oldalakat (többet róluk: egy céloldal minden üzlettípusnak), a stagingen minden oldalon „Not found” jelent meg, miközben a statikus host rendesen kiszolgálta őket.
A marketing-hostjaink előtt álló szolgáltatás csak az útvonalak egy engedélyezőlistáját továbbítja; minden más kemény 404-et kap. Az /ai új volt, és nem szerepelt a listán. Hozzáadtuk az /ai és /ai/* útvonalakat egy teszttel, amely ellenőrzi, hogy átjutnak. Kis hiba, de pont az a fajta, amely láthatatlanná teszi az új szekciót a crawlerek számára, és senki nem veszi észre.
Amit ebből tanultunk
- Olvasd azt a HTML-t, amelyet a crawler olvas. Ezek többsége böngészőben láthatatlan volt, az előrenderelt fájlban viszont nyilvánvaló.
- Alakítsd az SEO-szabályokat build-ellenőrzéssé. Az „oldalanként egy FAQPage” szabály ma már kikényszerített, nem emlékezett.
- Mondd meg a keresőknek, mit jelent. Ha nem mondod meg, melyik kép vagy melyik adatok képviselnek téged, kitalálják.
- A Search Console megmondja, melyik kérdést tették fel az emberek. A kattintás nélküli megjelenés általában azt jelenti, hogy az oldal másik kérdésre válaszolt.
- Csak a különbséget küldd el. Ha csak azt jelzed, ami változott, az a sebességkorlátok helyes oldalán marad.
Ha ugyanezt egy saját építésű weboldalon csinálnád, az SEO AI-val épített weboldalakhoz és a Google Search Console beállítása útmutató alapokat ad.