# Azonnali indexelés: IndexNow és Google Indexing API

> URL-ek beküldése a Bingnek, a Yandexnek és a Google-nek, automatikus beküldés, kulcsfájl-ellenőrzés és a beküldések előzménye.

Az **Instant Indexing** funkcióval értesítheted a keresőmotorokat, ha egy URL új, megváltozott vagy törölt. Két külön szolgáltatást használ:

- **IndexNow** (Bing és Yandex): automatikusan is működik, külön Google-fiók nélkül.
- **Google Indexing API**: szolgáltatásfiók (JSON-kulcs) kell hozzá, és csak kézi beküldéssel használható.

A sikeres beküldés csak értesítés. Nem garantálja, hogy a keresőmotor be is járja, indexeli vagy jó helyre rangsorolja az oldalt. Az XML-oldaltérképet továbbra is használd: ezek az API-k nem helyettesítik.

## Bekapcsolás

1. Nyisd meg a **SEO → Instant Indexing** oldalt.
2. Kapcsold be a funkciót a cím melletti kapcsolóval (a felirat **ENABLED** lesz).

![Az Instant Indexing General füle: keresőmotorok kiválasztása, Google-művelet és az URL-lista](./kepek/fejlesztoknek-azonnali-indexeles-altalanos.webp)

*Az Instant Indexing General füle: keresőmotorok kiválasztása, Google-művelet és az URL-lista* (https://minta-bolt.hu/wp-admin/admin.php?page=seopress-instant-indexing)

A képen a **General** fül látszik: itt választod ki a keresőmotort, a Google-műveletet, és itt adod meg a beküldendő URL-eket.

## Az IndexNow beállítása és az automatikus beküldés

1. Az **Instant Indexing** oldalon nyisd meg a **Settings** fület.
2. A **Bing Indexing API key** mezőben egy automatikusan generált kulcsnak kell állnia. Ha üres, kattints a **Generate key** gombra. Ez a kulcs nem azonos a Google JSON-kulcsával.
3. Kapcsold be az **Enable automatic URL submission for IndexNow API** kapcsolót az **Automatic submission** sorban.
4. Kattints a **Save changes** gombra.

![Az Instant Indexing Settings füle: Google JSON-kulcs, Bing-kulcs és automatikus beküldés](./kepek/fejlesztoknek-azonnali-indexeles-beallitasok.webp)

*Az Instant Indexing Settings füle: Google JSON-kulcs, Bing-kulcs és automatikus beküldés* (https://minta-bolt.hu/wp-admin/admin.php?page=seopress-instant-indexing)

A **Settings** fülön három dolgot állítasz: a Google JSON-kulcsát, a Bing-kulcsot és az automatikus beküldést.

Bekapcsolt automatikus beküldésnél a SEOPress minden közzétett vagy frissített bejegyzésnél, oldalnál és támogatott tartalomtípusnál értesíti az IndexNow-t. Ha egy közzétett tartalmat a kukába teszel, az is megy: ilyenkor a tartalom eredeti URL-jét küldi el, nem a WordPress ideiglenes `__trashed` címét.

Az automatikus beküldés csak az IndexNow-t (Bing, Yandex) éri el. A Google-t soha nem értesíti automatikusan, akkor sem, ha a **General** fülön ki van választva. Piszkozat és privát tartalom nem alkalmas a kipróbálásra.

Ha olyan URL-t kell jelezni, amely más módon tűnt el (visszaállítottad piszkozatra vagy privátra, a kukát megkerülve törölted, vagy a WordPressen kívül távolítottad el), használd a kézi beküldést. Ilyenkor mindig nézd meg az eredeti URL HTTP-válaszát is: az értesítés magától nem törli az oldalt, és nem veszi ki a keresési találatok közül.

### A kulcsfájl ellenőrzése

A SEOPress a nyilvános kulcs-URL-t a WordPressen át szolgálja ki, nem hoz létre fizikai fájlt a lemezen. A **Settings** fülön a **Check saved key file** gomb ellenőrzi.

1. Előbb mentsd a kulcsot a **Save changes** gombbal: a teszt a mentett értéket használja, a nem mentett módosítást nem.
2. Kattints a **Check saved key file** gombra.
3. Nyisd meg az eredményben megjelenő URL-t.

| Eredmény | Teendő |
|---|---|
| Hiányzó kulcs | Generálj érvényes kulcsot, mentsd, és próbáld újra. |
| A funkció ki van kapcsolva | Kapcsold be az Instant Indexinget, hogy a WordPress ki tudja szolgálni az URL-t. |
| Nem 200-as HTTP-válasz | Nézd meg a `.txt` fájlokra vonatkozó szabályokat, a CDN-t, a gyorsítótárat és a hozzáférési korlátozásokat. A kérésnek el kell jutnia a WordPressig. |
| 200-as válasz, de hibás tartalom | Töröld az elavult gyorsítótárat, és nézd meg, nem ír-e felül az URL-t fizikai fájl vagy szerverszabály. |
| Az URL nem tölthető le | Próbáld böngészőben, és kérd meg a tárhelyszolgáltatót, hogy ellenőrizze a loopback-kéréseket, a tűzfalat és a TLS-t. A böngészős elérés nem bizonyítja a szerverek közti elérést. |
| Túl sok ellenőrzés | Várj legalább öt másodpercet az újrapróbálkozás előtt. |

A siker azt jelenti, hogy az URL 200-as választ adott, és a szövege egyezik a mentett kulccsal. Csak a kulcsfájl rendben létét igazolja, az oldalak indexelését nem.

## Kézi beküldés

1. Nyisd meg az **Instant Indexing → General** fület.
2. A **Select search engines** sorban kapcsold be a **Google** és/vagy a **Bing / Yandex** kapcsolót.
3. Google esetén a **Google action** listából válaszd az **Update URLs** (frissítés) vagy a **Remove URLs** (eltávolítás) műveletet. Eltávolításhoz az URL-nek 404 vagy 410 állapotkódot kell adnia, vagy az oldalnak tartalmaznia kell a `<meta name="robots" content="noindex" />` címkét.
4. A **Submit URLs for indexing** mezőbe írj soronként egy teljes URL-t a saját webhelyedről. Egy beküldésben legfeljebb 100 URL mehet.
5. Kattints a beküldés gombra (**Submit URLs to Google & Bing**).
6. Az oldal újratöltődik, és a válasz a **Latest indexing request** blokkban jelenik meg. Nézd meg az eredményt, mielőtt újabb csomagot küldesz.

Az IndexNow a megkapott URL-listát kapja, és a keresőmotor maga nézi meg minden oldal aktuális állapotát. A Google-műveletválasztó (frissítés vagy eltávolítás) csak a Google-re vonatkozik.

## A Google Indexing API bekötése

A Google hivatalosan csak `JobPosting` vagy `VideoObject` alatti `BroadcastEvent` strukturált adatot tartalmazó oldalakhoz ajánlja az Indexing API-t. Más URL-ekkel is működhet, de takarékosan használd, és csak akkor, ha komoly indexelési gondod van. Az IndexNow-ra ez a korlátozás nem vonatkozik.

Előfeltétel egy Google Cloud-projekt.

### 1. Az API bekapcsolása és a szolgáltatásfiók

1. Jelentkezz be a Google Cloud Console-ba.
2. A főmenüben nyisd meg az **APIs & Services → Library** oldalt, keresd meg a **Web Search Indexing API** (`indexing.googleapis.com`) elemet, és kapcsold be.
3. Az API oldalán a bal oldali menüben kattints a **Credentials** pontra, majd a **Create credentials** gombra, és válaszd a **Service account** lehetőséget.
4. Az első lépésben adj nevet és leírást, majd kattints a **Create** gombra.
5. A második lépésben a legördülő listából válaszd az **Owner** szerepkört, és kattints a **Continue** gombra.
6. A harmadik lépésben kattints a **Done** gombra.
7. A szolgáltatásfiókok táblázatában kattints az újonnan létrehozott fiókra.
8. Nyisd meg a **Keys** fület, majd **Add key → Create new key**.
9. A felugró ablakban a kulcs típusa legyen **JSON**, és kattints a **Create** gombra. A böngésző letölt egy JSON-fájlt. Zárd be az ablakot.

### 2. A szolgáltatásfiók felvétele a Search Console-ba

1. Nyisd meg a Google Search Console-t, és válaszd ki a webhelyed tulajdonságát.
2. A bal oldali menüben kattints a **Settings** pontra, majd a **Property settings** alatt a **Users and permissions** pontra.
3. Kattints az **Add user** gombra.
4. Add meg a szolgáltatásfiók e-mail-címét. Megtalálod a Google Cloud Console **IAM & Admin → Service Accounts** oldalán a fiók **Details** fülén, vagy a letöltött JSON-fájl `client_email` sorában.
5. A **Permission** mezőben válaszd az **Owner** jogosultságot, különben a beküldésnél 403-as hibát kapsz.
6. Kattints az **Add** gombra.

### 3. A kulcs beillesztése a SEOPressbe

1. Nyisd meg a **SEO → Instant Indexing → Settings** fület.
2. Nyisd meg a letöltött JSON-fájlt szövegszerkesztővel, jelöld ki a teljes tartalmát (Ctrl+A, Macen Cmd+A), és másold ki.
3. Illeszd be a **Google Indexing API key** mezőbe.
4. Kattints a **Save changes** gombra.

Ezután a **General** fülön a Google is választható a kézi beküldéshez.

## A beküldések előzménye

Az **Instant Indexing → History** fül minden beküldött URL-t rögzít: a kézi beküldéseket és az automatikusakat (közzététel, frissítés, kukába helyezés) is, a Google-hez és az IndexNow-hoz (Bing / Yandex) egyaránt. Innen látod, hogy egy URL el lett-e küldve, mikor, és mit válaszolt a keresőmotor. Az elfogadott kérés csak annyit jelent, hogy a keresőmotor megkapta.

![Az Instant Indexing History füle: a beküldések táblázata keresővel és forrásszűrővel](./kepek/fejlesztoknek-azonnali-indexeles-elozmenyek.webp)

*Az Instant Indexing History füle: a beküldések táblázata keresővel és forrásszűrővel* (https://minta-bolt.hu/wp-admin/admin.php?page=seopress-instant-indexing)

A képen még üres a lista (**No URLs submitted yet.**). A tábla fölött kereső és a **SOURCE** szűrő van.

### Hol találod

- Az egész webhelyre: **SEO → Instant Indexing → History**. A **General** fülön a **Latest URLs submitted** alatti **See every submission in the History tab** hivatkozás is ide visz.
- Egy tartalomhoz: a szerkesztőben a SEO metabox **Content Analysis** fülén az **Indexing history** alfül. Csak akkor látszik, ha az Instant Indexing be van kapcsolva.

A **General** fül **Latest indexing request** blokkja megmarad: ez csak az utolsó beküldés teljes válaszát mutatja, és a következő felülírja (az automatikus beküldést is beleértve). Az előzmény minden beküldést megőriz.

### A táblázat

A lista a legújabbal kezdődik, oldalanként 20 sorral. Minden URL keresőmotoronként külön sor: ha 100 URL-t küldesz a Google-nek és a Bing / Yandexnek is, az 200 sor.

| Oszlop | Tartalma |
|---|---|
| **Date** | A beküldés ideje a webhely dátum-, idő- és időzóna-beállításai szerint. |
| **URL** | A beküldött URL, kattintásra új lapon nyílik meg. |
| **Search engine** | **Google** (Google Indexing API) vagy **Bing / Yandex** (IndexNow). |
| **Source** | **Manual**: a General fülről küldted. **Automatic**: automatikus beküldés volt közzétételkor, frissítéskor vagy kukába helyezéskor. A kötőjel azt jelenti, hogy a forrás ismeretlen. |
| **Status** | A keresőmotor válasza. |

Az állapotok:

| Állapot | Jelentése |
|---|---|
| **Accepted (HTTP 200)**, **Accepted (HTTP 202)** | A keresőmotor megkapta a kérést (2xx kód). IndexNow esetén a 202 azt jelenti, hogy a kulcs ellenőrzése még függőben van. |
| **Failed (HTTP 403)**, **Failed (HTTP 429)** … | A keresőmotor hibakóddal válaszolt. A visszaadott hibaüzenet az állapot alatt látszik. |
| **Not sent** | A kérés nem kapott HTTP-választ, például mert hiányzik vagy érvénytelen az API-kulcs, vagy megszakadt a kapcsolat. Ha ismert, az ok az állapot alatt áll. |

A Google minden URL-re külön válaszol, ezért egy csomag URL-jei különböző állapotot kaphatnak. Az IndexNow az egész csomagra egyszer válaszol, így a Bing / Yandexnek küldött csomag minden sora ugyanazt az állapotot mutatja.

### Keresés, szűrés, törlés

- A keresőmezőbe az URL egy részét (például a slugot) írva azokat a sorokat látod, amelyek URL-je tartalmazza.
- A **SOURCE** szűrőben választhatsz: **All**, **Manual** vagy **Automatic**.
- A tábla alatt a találatok száma és, ha több oldal van, az előző és a következő oldal gombja látszik.
- A **Clear history** gomb a tábla alatt jelenik meg, ha van sor, és nincs bekapcsolt keresés vagy szűrő. Kattints rá, majd a megerősítő ablakban még egyszer a **Clear history** gombra (vagy a **Cancel** gombra). Ez minden rögzített beküldést töröl, a szerkesztőben látszókat is, és nem vonható vissza. A **Latest indexing request** blokk megmarad.

### Egy tartalom előzménye

A szerkesztőben a SEO metabox **Content Analysis → Indexing history** alfüle az adott tartalomhoz küldött utolsó 20 kérést listázza, a legújabbal kezdve, a **Date**, **Search engine**, **Source** és **Status** oszlopokkal. A beküldött URL a dátum alatt áll. A tartalom automatikus beküldései és a webhelyed olyan URL-jeinek kézi beküldései szerepelnek benne, amelyeket a WordPress ehhez a tartalomhoz rendel.

- A **Refresh** újratölti a listát, például közzététel vagy frissítés után.
- A **See the whole history** az előzmények fülre visz. Csak annak jelenik meg, aki kezelheti az Instant Indexing beállításait.

Ha az adott tartalomhoz még semmi nem ment ki, az alfül a „No request sent for this content yet.” üzenetet mutatja, mellette az automatikus beküldésről szóló tippel.

### Ki láthatja

- A **History** fület az látja, aki kezelheti az Instant Indexing beállítóoldalát: az adminisztrátorok, és azok a szerepkörök, amelyeket a **SEO → Advanced → Security** fülön az Instant Indexing oldalhoz engedélyeztél.
- Az **Indexing history** alfület az látja, aki szerkesztheti a tartalmat, hacsak a szerepköre nincs letiltva a Content Analysis fülről (ugyanezen a **Security** fülön a Content Analysis blokkolt szerepkörei).

### Mi kerül az előzménybe

- Minden URL, amelyet a SEOPress a Google-nek vagy az IndexNow-nak küld, kézzel vagy automatikusan, a keresőmotor válaszával együtt.
- Az automatikus beküldés csak IndexNow-t használ, ezért a Google-sorok mindig kézi beküldésből származnak. Ha csak a Google van kiválasztva keresőmotornak, az automatikus beküldés semmit nem küld és nem rögzít.
- Ha egy beküldés a kérés előtt megáll (nincs beküldendő URL, nincs keresőmotor kiválasztva, vagy egyáltalán nincs API-kulcs), azt nem rögzíti az előzmény. A hibaüzenet a **General** fül **Latest indexing request** blokkjában áll.
- Frissítés előtt az utolsó rögzített kérés egyszer átmásolódik az előzménybe, ha a dátuma kiolvasható. A **Source** oszlopban ilyenkor kötőjel állhat, mert a régebbi változat nem jegyezte, hogy kézi vagy automatikus volt.

### Meddig marad meg egy sor

Az utolsó 5000 sor marad meg. Új beküldés rögzítésekor a határ feletti legrégebbi sorok automatikusan törlődnek. A **History** fül a tábla fölött emlékeztet erre. Fejlesztőknek: a megőrzött sorok számát a `seopress_instant_indexing_history_max_rows` szűrő módosítja (a `0` visszatérési érték leállítja a rögzítést), a `seopress_instant_indexing_history_recorded` művelet minden beküldés után lefuttatja a kódodat, az előzményt pedig a REST API-n át is olvashatod és törölheted (lásd a [REST API](https://hub.hellowp.io/hu/plugins/wp-seopress-pro/fejlesztoknek-rest-api/) fejezetet).

## Az automatikusan beküldött URL módosítása (hook)

Az automatikus IndexNow-beküldés előtt a SEOPress lefuttatja a `seopress_instant_indexing_permalink` szűrőt (filter, legkisebb verzió: 8.3). Ezzel megváltoztathatod azt az URL-t, amelyet a közzétételkor, frissítéskor vagy kukába helyezéskor az IndexNow-nak küld. A szűrő két paramétert kap: az alapértelmezett URL-t (a tartalom bővítő által képzett permalinkjét) és a bejegyzés objektumát, amelyből az URL készült. Kukába helyezéskor ez a közzétett példány, nem a WordPress ideiglenes `__trashed` változata. A szűrőnek az URL-t kell visszaadnia.

```php
add_filter( 'seopress_instant_indexing_permalink', 'sajat_indexnow_url', 10, 2 );
function sajat_indexnow_url( $permalink, $post ) {
    // Itt módosíthatod a beküldendő URL-t.
    return $permalink;
}
```

A hook használatának általános szabályait a [Composer és hookok használata](https://hub.hellowp.io/hu/plugins/wp-seopress-pro/fejlesztoknek-composer-es-hookok/) fejezet tartalmazza.

## Korlátok és válaszkódok

Az IndexNow protokoll egy POST-kérésben legfeljebb 10 000 URL-t enged, nem általános napi keretet. A SEOPress kézi űrlapja beküldésenként legfeljebb 100 URL-t dolgoz fel, nagyobb listát bontsd csomagokra. A keresőmotorok további sebességkorlátot szabhatnak.

| Kód | Teendő |
|---|---|
| 200 | Megkapta, az indexelést külön ellenőrizd. |
| 202 | Megkapta, a kulcs ellenőrzése függőben. |
| 400 | Ellenőrizd a kérést és az URL formátumát. |
| 403 | Ellenőrizd a kulcsot és a nyilvános ellenőrző URL-t. |
| 422 | Nézd meg, hogy az URL-ek egyeznek-e a gazdagéppel és a kulcs hatókörével. |
| 429 | Várj az újrapróbálkozás előtt, és ne küldd újra a változatlan URL-eket. |

## Gyakori kérdések és hibaelhárítás

**Van napi korlát?** Igen: a Google-nél naponta 200 kérés, a Bingnél 10 000.

**Ingyenes?** Igen, a Google és a Bing sem kér érte pénzt.

**Kell még XML-oldaltérkép?** Igen. Ezek az API-k még kísérletiek, és nem váltják ki az oldaltérképet.

**Mennyit kell várni a találatokra?** A keresőmotortól függ, általában néhány perc, legfeljebb néhány óra.

**Javítja a rangsorolást?** A keresőmotorok gyorsabban járhatják be és indexelhetik a tartalmat, de a rangsorolás ettől függetlenül a tartalmadon, a hivatkozásokon és hasonlókon múlik.

**401-es hiba:** valószínűleg hibás a Google JSON-kulcsa a **Settings** fülön. Töröld ki, add meg újra, és mentsd.

**403-as hiba:** ellenőrizd, hogy a Search Console-hoz hozzáadott Google Cloud-felhasználónak **Owner** jogosultsága van-e.

**Nincs beküldés:** nézd meg, hogy be van-e kapcsolva a funkció, az automatikus beküldés, a kiválasztott keresőmotor és a mentett kulcs. Kézi beküldésnél az URL-lista ne legyen üres. Olvasd el a megjelenő hibaüzenetet, és ha a kérések elbuknak, kérd meg a tárhelyszolgáltatót, hogy ellenőrizze a kimenő HTTPS-elérést.

A kézbesített értesítés nem oldja meg a noindex-utasításokat, a bejárási korlátozásokat, a canonical-ütközéseket és a tartalmi minőség gondjait. Nézd meg az oldal HTTP-válaszát és a SEO-beállításokat, és az indexelést a keresőmotor webmesteri eszközében vizsgáld.
