15 Mar 2021

7 dk okuma

Node.js İle Google Indexing API Kullanımı ve Test Sonuçları

Node.js İle Google Indexing API Kullanımı ve Test Sonuçları

API’ler artık hayatımızın her alanında ve işlerimizde oldukça sık kullanıyoruz. Özellikle teknik SEO ile ilgilenenler için Google Indexing API konusunda hem bilgi vermek hem de görüşlerimi bu yazıda paylaşmak istedim.

Google için özellikle iş ilanları ya da canlı yayınların site tarafından daha dizinine indexlettirmeden kapanması olumsuz bir durum oluşturuyordu. İş ilanı sayfası indexe açılıyor; ancak indexe dahil edilmesi çok uzun sürebiliyordu. Bu süreçte de başvurular çok yoğun olduğu için ziyaretçiler aradıklarını tam olarak bulamıyordu. Bundan dolayı Indexing API ilk olarak 26 Haziran 2018 tarihinde duyuruldu ve sadece Job Posting schema kullanan sayfalar için uygun olduğu açıklandı.

API bağlantısını Node.js kullanarak yaptım; lakin siz desteklenen diğer türler ile de bağlantı kurabilirsiniz. Verilere daha kolay ulaşabilmek için tüm işlemleri kişisel blogum üzerinden gerçekleştirdim.

Google Indexing API Nedir?

Google Indexing API (Dizine ekleme API’si), iş ilanları ya da canlı yayın videoları gibi kısa ömürlü içeriğe sahip sitelerin Google dizininde yer alması için geliştirilen ücretsiz API türüdür.

Google Indexing API, sayfalarınızın daha hızlı taranmasını sağlayan etkili yollarından birisidir. Sadece sahip olduğunuz Console mülkleri için bu işlemleri yapabilirsiniz. Ayrıca Bing’in de “URL and Content Submission API” özelliği bulunuyor. Üstelik sınırları Google’a göre daha fazla diyebilirim. Bing tarafıyla da ilgileniyorsanız mutlaka şuradan detayları incelemenizi önerebilirim.

Sitenizde belirli bir bölümde iş ilanı yayınlanıyorsa, sitenizin tamamı iş ilanı ise ve canlı yayınlar ile ilgili içerikler üretiyorsanız SEO planlarınıza Indexing API kullanımını dahil etmenizi öneririm. Elbette bu sayfalarınızı yapısal veriler ile de desteklemenizi öneririm.

Site haritalarına göre API ile gönderilen sayfalar aslında Google için daha faydalı olabilir. Google daha az kaynak tüketerek maksimum verimi elde etmeye çalışır:

1647286693 node js google index api21

Google Indexing API İle Neler Yapabilirsiniz?

Dizine Ekleme API'si ile aşağıda belirtilen işlemleri çok hızlı bir şekilde yapabilirsiniz:

URL güncelleme: Güncellediğiniz bir içeriğin tekrar taranmasını istemek ya da yeni içeriğin dizine eklenmesi için talepte bulunmak. URL kaldırma: Sitenizde sildiğiniz sayfaları bu yöntem ile daha hızlı bir şekilde Google’a bildirebilirsiniz. Ardından da dizinden silinmiş URL’leriniz zamanla kaldırılabilir. Bir isteğin durumunu öğrenme: Google'ın belirli bir URL için her bildirim türünü en son ne zaman aldığını kontrol edebilirsiniz. Toplu dizine ekleme istekleri gönderme: En fazla 100 çağrıyı tek bir HTTP isteği bünyesinde birleştirerek, istemcinizin kurması gereken HTTP bağlantılarının sayısını azaltabilirsiniz.

URL_UPDATED hem de URL_DELETED gibi işlemler için kota limitleri bulunmaktadır:

1647286660 node js google index api8

Google Indexing API Nasıl Kurulur?

Kurulum işi biraz karışık gelebilir ve o yüzden adım adım anlatmaya çalışacağım.

Indexing API Projesi Oluşturma

İlk olarak Google Cloud üzerinden Indexing API için yeni bir proje oluşturun:

1647286641 node js google index api2

Aşağıdaki gibi bir ekranla karşılaşıyorsanız projeyi başarıyla oluşturdunuz:

1647286657 node js google index api7

Ardından şuradaki bağlantıya tıklayıp yeni bir service account oluşturmanız gerekiyor. En son oluşturduğunuz projeyi de seçmeyi unutmayın. Ben ismini “my project” olarak değiştirmeden bırakmışım:

1647286690 node js google index api20

“+create service account” butonuna tıkladıktan sonra karşımıza aşağıdaki gibi bir ekran çıkıyor. Account name ve diğer kısımları istediğiniz gibi yazabilirsiniz. Description kısmı zorunlu değil, dilerseniz o kısmı da doldurabilirsiniz. “Create” butonuyla devam edin:

1647286644 node js google index api3

“Grant this service account access to project (optional)” kısmında “Role” kısmını Owner olarak işaretleyelim ve Done butonuyla bu adımı tamamlayalım:

1647286663 node js google index api10

Aşağıdaki sayfa otomatik olarak açılacaktır. Action kısmından “create key” butonuna tıklayalım:

1647286676 node js google index api15

JSON olarak dosyayı oluşturalım:

1647286716 node js google index api27

Dosya oluşacak ve bilgisayarınıza inecektir:

1647286704 node js google index api25

Google Search Console & API Bağlantısı

Google Search Console hesabınız ile service account arasında bağlantı kurulması gerekiyor. Search Console’da yetki verilmiş bir hesapsanız ya da yetkileriniz kısıtlı ise bu adımı yaparken zorluk çekebilirsiniz. “Sahip” yetkisiyle mülkünüzde bu ayarı yapabilirsiniz. Bir SC mülkünde birden fazla sahip çeşitli doğrulama yöntemleri ile eklenebilir. Bundan dolayı eski kullanıcı kaydı silinme ve veriler gitmez hatırlatma yapmak istedim.

Search Console’da yetkilerinizi ayarladıktan sonra “Setting” kısmından “Users and permissions” kısmına tıklayın:

1647286722 node js google index api29

Sahiplik yetkisi olan hesaptaki 3 nokta işaretine tıklayarak “manage property owners” ile yeni sayfayı açın:

1647286699 node js google index api23

“Service accounts” kısmındayken oluşturulan E-mail adresini bu kısımdan ekleyip Continue butonuyla işlemi tamamlayın:

1647286696 node js google index api22

Aşağıdaki uyarıyı gördüğünüzde başarıyla adımları tamamladınız demektir:

1647286726 node js google index api30

Wordpress site sahipleri de Rank Math SEO eklentisini kullanmayı deneyebilirler.

Google Indexing API Kullanımı

API’yı kullanırken Node.js ile yapmak istedim. Google, aşağıdaki programlama dillerine özel de API’nin kullanımını destekliyor ve örneklerle açıklıyor:

Bilgisayarınıza Node.js kurulu değilse kurmanız gerekiyor. (Zorunda değilsiniz, ben makalede node.js üzerinden örnek verdiğim için belirtiyorum.)

İlk adımlarda oluşturup indirdiğiniz JSON dosyasını ve node.js dosyalarını masaüstünde bir klasörde bir araya getirin. Aşağıdaki kod ile de API’ye istek atmaya başlayabilirsiniz:

var request = require("request");
var { google } = require("googleapis");
var key = require("./service_account.json");
const jwtClient = new google.auth.JWT(
  key.client_email,
  null,
  key.private_key,
  ["https://www.googleapis.com/auth/indexing"],
  null
);
jwtClient.authorize(function(err, tokens) {
  if (err) {
    console.log(err);
    return;
  }
  let options = {
    url: "https://indexing.googleapis.com/v3/urlNotifications:publish",
    method: "POST",
    // Your options, which must include the Content-Type and auth headers
    headers: {
      "Content-Type": "application/json"
    },
    auth: { "bearer": tokens.access_token },
    // Define contents here. The structure of the content is described in the next step.
    json: {
      "url": "https://sametozsuleyman.com.tr/yapisal-veri-rehberi/",
      "type": "URL_UPDATED"
    }
  };
  request(options, function (error, response, body) {
    // Handle the response
    console.log(body);
  });
});

JSON içerisindeki URL kısmında kendi blogumdaki bir makaleye istek attığım örnek:

1647286631 node js google index api9

"URL_DELETED" konusunda da test yapmak gerekirse örnek “testt” isimli sayfa oluşturdum ve bunun silindiği ile ilgili bilgiyi iletiyorum. Bu kodu kullanmadan önce silinecek sayfanın 404 ya da 410 durum kodu döndürdüğünden ya da “noindex” eklendiğinden emin olmalısınız:

var request = require("request");
var { google } = require("googleapis");
var key = require("./service_account.json");
const jwtClient = new google.auth.JWT(
  key.client_email,
  null,
  key.private_key,
  ["https://www.googleapis.com/auth/indexing"],
  null
);
jwtClient.authorize(function(err, tokens) {
  if (err) {
    console.log(err);
    return;
  }
  let options = {
    url: "https://indexing.googleapis.com/v3/urlNotifications:publish",
    method: "POST",
    // Your options, which must include the Content-Type and auth headers
    headers: {
      "Content-Type": "application/json"
    },
    auth: { "bearer": tokens.access_token },
    // Define contents here. The structure of the content is described in the next step.
    json: {
      "url": "https://sametozsuleyman.com.tr/testt",
      "type": "URL_DELETED"
    }
  };
  request(options, function (error, response, body) {
    // Handle the response
    console.log(body);
  });
});

Kodu çalıştırdığımda başarılı sonucu görebiliyoruz:

1647286730 node js google index api31

Indexlenmesini istediğiniz URL’leri tek tek göndermek yerine bulk bir şekilde de gönderebilirsiniz. Günlük kota limitinin olduğunu da zaten giriş kısmında belirtmiştim.

API ile çalışırken gözden kaçırılan ufak detaylar yüzünden bazen aşağıdaki gibi hatalar alabilirsiniz. “Missing attribute. 'url' attribute is required.” hataları gibi:

1647286687 node js google index api19

API’den gelen tüm bu hata kodlarının ayrıntılı cevaplarını da doküman sayfasından ulaşabilirsiniz.

Test Sonuçları

API’den gelen istekleri loglara bakarak kontrol ettim. Discover ile ilgili içeriğime API ile UTC saat dilimine göre 19 Şubat 20:51’de istek attım:

1647286666 node js google index api11

Blog loglarım Türkiye’nin kullandığı saat dilimine göre tutuluyordu:

1647286685 node js google index api18

20:51’de atılan isteği TSİ 23:51 olarak düşünebilirsiniz. Logları incelediğimde 00:13 saatinde Googlebot’un geldiğini görebiliyorum:

1647286710 node js google index api26

Başka bir örnek daha gösterebilmek adına yeni bir URL’e istek atmıştım UTC 20:25 zaman diliminde: (TSİ 23:25)

1647286674 node js google index api14

Logları incelediğimde 00:01’de Googlebot’un sayfayı ziyaret ettiğini görüyorum:

1647286736 node js google index api33

Ortalama 30 dk. içerisinde Googlebot istediğim sayfaları ziyaret etti. Elbette bunun net bir zaman dilimi yok; ancak farklı 15-20 adet URL’de de bu işlemi yaptığımda benzer sonuca ulaştığımı söyleyebilirim.

Sitemde API ile istek attığım yeni bir URL’in indexlenip indexlenmediğini kontrol etmek için Türkiye Saati ile publish edilme tarihini de not düştüğüm yeni bir sayfa oluşturdum:

1647286648 node js google index api4

Oluşturduğum yeni test kategori sayfası API istek attım:

1647286650 node js google index api5

Ardından ilgili sayfa TSİ 17:14’te dizine eklendi. Bu işlem için Search Console’dan dizine eklenme talebinde bulunmadım, sadece API kullandım:

1647286680 node js google index api16

Test sayfasının SERP görünümü:

1647286682 node js google index api17

Yeni sayfamın dizine eklendiğini gördükten sonra panelden bu kategori sayfasını 404 statu kodu döndürecek şekilde sildim:

1647286733 node js google index api32

Test kategorisi 'URL_DELETED' komutuyla da API ile silinmesi için istek gönderdim:

1647286701 node js google index api24

Zaten yazımın üst kısımlarında da /testt sayfası için istek atmıştım. Yeni oluşturduğum kategori ve testt sayfasının Search Console tarama istatistikleri raporunda da 404 statu kodu verdiklerini net bir şekilde görebiliyorum:

1647286668 node js google index api12

Yazıyı sonlandırırken SEO’da bu konuyla ilgili önemli gördüğüm bazı hususları da sizlere aktarmak isterim.

Farklı İçerik Türlerini API Destekler Mi?

Yaklaşık 2 yıl önce Garry Illyes, Reddit üzerinden diğer içerik türleriyle ilgili testler yaptıklarını açıklamıştı ve o tarihte itibaren bir gelişme henüz olmadı:

1647286719 node js google index api28

Google'dan John Mueller, Twitter'dan yaptığı açıklamada yine dökümanlarda da yer aldığı gibi tüm içerik türleri için API’nin uygun olmadığını net bir şekilde belirtti:

The indexing API is only for job posting & live stream structured data. For everything else, just use sitemaps.

— 🍌 John 🍌 (@JohnMu) June 1, 2019

Mueller’e API’nin ilk çıktığı yıllarda benzer bir soru sorulduğunda ise “bilmiyorum” yanıtı vermişti:

1647286653 node js google index api6

İş İlanı ve Canlı Yayın Olmayan Siteler Kullanılabilir mi?

Yönergelerde belirtildiği üzere desteklenen sayfa türleri belli. Bunun haricindeki siteler kullansa bile Google bunu desteklemeyebilir.

API Kullandıktan Sonra Sayfam Indexlenmedi Neden?

API kullanılması içeriğin kesinlikle indexleneceği anlamına gelmiyor. Bu süreçte Google’ın arka planda sayfanızı dizine eklemek için kalite ve diğer birçok faktöre bağlı kaldığını unutmamalısınız.

Google Indexing API ile ilgili olabildiğince detay vermeye çalıştım umarım sizlere yardımcı olabilmişimdir :)

Faydalı Bağlantılar:

https://github.com/swalker-888/google-indexing-api-bulk

https://developers.google.com/search/apis/indexing-api/v3/quickstart

https://willmanntobias.medium.com/google-indexing-api-tests-with-normal-urls-which-have-neither-job-posting-nor-livestream-4fa8af85c950

İlgili hizmet

Bu soruyu SEO planınızın parçası yapın

Yazı sitenizdeki bir soruna işaret ediyorsa, SEO danışmanlığı kapsamında önce neyi kontrol etmeniz gerektiğine ve sonraki adımın kimde olacağına birlikte bakabiliriz.
SEO hizmetlerini inceleyin
Samet Özsüleyman
Samet Özsüleyman