SeoGeo Logo
Entegrasyon· 6 dk okuma

WordPress'e otomatik makale yayınlama: webhook entegrasyon rehberi

Neden webhook?

Bir SEO makalesinin üretimi (rakip analizi + yazım + görsel sentezi) 2 ila 4 dakika sürebilir. İstemcinin bu süre boyunca bağlantıyı açık tutup beklemesi (isteğin zaman aşımına — timeout'a — uğraması) pratik değildir. Bu yüzden SeoGeo, üretim işini asenkron başlatır ve iş bittiğinde sonucu sizin belirttiğiniz bir adrese kendisi gönderir. Bu mekanizmaya webhook denir.

Akış şu şekilde işler:

  1. POST /v1/generate isteğinde webhookUrl parametresiyle kendi endpoint'inizi belirtirsiniz.
  2. SeoGeo isteği hemen "status": "processing" ve bir jobId ile yanıtlar; bağlantı burada kapanır.
  3. Üretim arka planda tamamlandığında SeoGeo, belirttiğiniz webhookUrl adresine bir POST isteği atar.
  4. Sizin endpoint'iniz bu isteği işler ve 200 OK döner.

/v1/generate isteği nasıl kurulur?

İlk istek Authorization: Bearer YOUR_API_KEY başlığıyla, HTTPS üzerinden atılır (HTTP üzerinden yapılan istekler reddedilir). Gövdede kullanılan alanlar:

  • keyword (zorunlu) — hedeflenecek anahtar kelime veya konu başlığı.
  • language (opsiyonel, varsayılan "tr") — çıktı dili.
  • includeImage (opsiyonel, varsayılan true) — kapak görseli sentezi yapılsın mı.
  • webhookUrl (opsiyonel) — üretim tamamlandığında sonucun POST edileceği adres.
{
  "keyword": "2026 Elektrikli Araç Trendleri",
  "language": "tr",
  "wordCount": 1000,
  "includeImage": true,
  "webhookUrl": "https://api.siteniz.com/blog/import"
}

Bu isteğe anında dönen yanıt şudur (henüz makale hazır değildir, sadece iş kabul edilmiştir):

{
  "status": "processing",
  "jobId": "req_12345abc",
  "message": "Makale üretimi başlatıldı."
}

Webhook'a düşen gerçek gövde ne görünür?

Üretim tamamlandığında webhookUrl adresinize aşağıdaki gibi bir JSON gövdesi ile POST isteği gelir:

{
  "id": "req_12345abc",
  "status": "completed",
  "article": {
    "title": "2026 Elektrikli Araç Trendleri",
    "slug": "2026-elektrikli-arac-trendleri",
    "htmlContent": "<h1>2026 Elektrikli Araç Trendleri</h1><p>...</p>",
    "metaDescription": "Elektrikli araç pazarında 2026 trendleri...",
    "imageUrl": "https://cdn.seogeo.com/.../image.jpg",
    "tags": ["otomotiv", "teknoloji"]
  }
}

Dikkat edilmesi gereken nokta: gövde içeriği article nesnesinin altında geliyor ve makale gövdesi htmlContent alanında — düz metin değil, doğrudan yayına hazır HTML olarak.

Kendi endpoint'inizi kurarken

WordPress veya kendi CMS'inizde dışarıdan POST kabul eden bir yol açmanız gerekir (örneğin /api/blog/import). Bu yolu kurarken:

  • Güvenlik doğrulaması ekleyin. Payload içindeki statik bir token/secret değerini doğrulayarak isteğin gerçekten SeoGeo'dan geldiğini teyit edin; doğrulanmamış bir endpoint'i açık bırakmayın.
  • 200 OK dönmeyi unutmayın. İsteği başarıyla işlediğinizde 200 OK yanıtı vermeniz gerekir; aksi halde sistem isteği başarısız kabul edebilir.
  • id/slug alanlarını idempotent işleyin. Aynı id ile ikinci kez gelen bir isteği (yeniden deneme senaryosunda) yinelenen yayın oluşturmadan işleyebilecek şekilde tasarlayın.
  • htmlContent'i olduğu gibi kaydedin. İçerik zaten yayına hazır HTML olarak geldiği için, ayrıca markdown veya başka bir formatta dönüştürmeye gerek yoktur.

WordPress özelinde pratik yaklaşım

WordPress tarafında en basit yol, webhookUrl olarak özel bir REST API route'u (custom endpoint) tanımlamak ve gelen article.title, article.slug, article.htmlContent, article.metaDescription, article.imageUrl alanlarını sırasıyla yazı başlığı, slug, içerik, meta açıklama (SEO eklentinizin ilgili alanı) ve öne çıkan görsel olarak eşlemektir. tags alanı doğrudan WordPress etiketleri olarak atanabilir.

Özet

Webhook entegrasyonu üç parçadan oluşur: /v1/generate isteğinde webhookUrl belirtmek, kendi tarafınızda bu adrese gelecek POST isteğini kabul eden bir endpoint açmak ve bu endpoint'in article nesnesindeki alanları CMS'inize doğru eşleyip 200 OK döndürmesini sağlamak. Üretim süresi 2-4 dakika olduğu için senkron bekleme yerine bu asenkron akış tercih edilir.

© 2026 SeoGeo