← RankBloom'a dönün

Publish API

RankBloom, ona bağladığınız web siteleri için SEO blog içeriği yazar. Publish API, biten bu içeriğin RankBloom'dan çıkıp istediğiniz yere ulaşma yoludur — bir WordPress sitesi, bir CMS, bir otomasyon platformu ya da kendi kodunuz.

Resmi WordPress eklentisinin, Zapier ve Make entegrasyonlarının arkasındaki API ile aynıdır.

Temel URL

https://app.getrankbloom.com/api/publish

Kimlik doğrulama

Her istek bir bağlantı token'ı taşır. Bunu RankBloom'da Bağlantılar bölümünde oluşturun: siteyi seçin, platformu seçin ve Bağlantı oluştur'a tıklayın. Token yalnızca bir kez gösterilir ve sadece hash olarak saklanır; bu yüzden oluştururken bir kopyasını alın.

Bir token tek bir siteyle sınırlıdır. Şu başlıklardan herhangi biriyle gönderin:

Authorization: Bearer rb_live_xxxxxxxx
X-RankBloom-Token: rb_live_xxxxxxxx
X-API-KEY: rb_live_xxxxxxxx

Üçü birden kabul edilir, çünkü paylaşımlı ve yönetilen sunucular çoğu zaman Authorization başlığını siler; bazı otomasyon platformları da varsayılan olarak X-API-KEY başlığı gönderir.

Token'ı asla sorgu dizesine koymayın. Aksi hâlde erişim kayıtlarına ve yol boyundaki her proxy'ye kaydedilir. API zaten oradan okumaz.

Bir bağlantının iptali anında geçerli olur. İptal edilmiş ve bilinmeyen token'lar aynı yanıtı döndürür; böylece çağrıyı yapan taraf aradaki farktan yola çıkıp geçerli token arayamaz.

Uç noktalar

GET /v1/ping

Bir token'ı doğrular ve neye bağlı olduğunu bildirir. Bağlantı testi olarak kullanın.

curl https://app.getrankbloom.com/api/publish/v1/ping \
  -H "Authorization: Bearer rb_live_xxxxxxxx"
{
  "ok": true,
  "contract_version": 1,
  "label": "Example Site",
  "connection": { "id": "…", "name": "Make — Example Site", "platform": "make" },
  "site": { "id": "…", "name": "Example Site", "url": "https://example.com" }
}

label bağlantı için yalın ve okunabilir bir addır. Otomasyon platformları bağlı hesabı etiketlemek için bunu kullanır.

GET /v1/posts

Bağlı siteye ait son yazılar, en yeniden başlayarak. Salt okunur — durumu asla değiştirmez, bu yüzden zamanlayıcıyla düzenli sorgulamak güvenlidir.

ParametreTürVarsayılanNotlar
limitinteger25En fazla 100
offsetinteger0Atlanacak yazı sayısı
sinceISO 8601Yalnızca bu andan itibaren oluşturulan yazılar
curl "https://app.getrankbloom.com/api/publish/v1/posts?limit=100&offset=0" \
  -H "Authorization: Bearer rb_live_xxxxxxxx"
{
  "ok": true,
  "contract_version": 1,
  "count": 46,
  "limit": 100,
  "offset": 0,
  "posts": [ … ]
}

Sayfalama. Arşivde geriye doğru ilerlemek için offset değerini limit kadar artırın. Toplam sayı yoktur: limit değerinden kısa bir sayfa, sonuna geldiğiniz anlamına gelir. Sonuçlar önce oluşturulma zamanına, sonra id'ye göre sıralanır; böylece iki yazı aynı zaman damgasını paylaşsa bile sayfalama kararlı kalır.

POST /v1/status

Bir yazıya ne olduğunu RankBloom'a bildirin. Bu, "devrettik" durumunu "yayında" durumuna çeviren adımdır ve yazının tekrar sunulmasını engeller.

curl -X POST https://app.getrankbloom.com/api/publish/v1/status \
  -H "Authorization: Bearer rb_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "post_id": "b86cbffe-…",
    "status": "delivered",
    "external_url": "https://example.com/my-post",
    "external_id": "123"
  }'
AlanZorunluNotlar
post_idevetŞu uç noktadan dönen id alanı: /v1/posts
statusevetdelivered, failed veya skipped
external_urlhayırNerede yayınlandığı
external_idhayırUzak sistemin kendi kimliği
errorhayırBaşarısız olduysa nedeni

Bir token yalnızca kendi sitesine ait yazılar için bildirim yapabilir.

Yazı veri yükü

Tek bir standart yapı; sürümü şu alanla belirlenir: contract_version.

AlanTürNotlar
idstringDeğişmez; idempotency anahtarı olarak kullanın
title, slug, excerptstringslug tekilleştirilmiş nihai değerdir
content_html, content_mdstringGövde metni, her iki biçimde de
meta_title, meta_descriptionstringSEO meta verileri
primary_keyword, keywords, category, tagsstring / arraySınıflandırma
canonical_urlstringAyarlandığında canonical
schema_json_ldobjectAyrıştırılmış, asla JSON metni değil
featured_image_urlstringBarındırılan görsel, kullanıma hazır
audio_urlstringYazıda varsa seslendirme
audio_duration_seconds, audio_voicenumber / stringSeslendirme ayrıntısı
statusstringpublished veya draft
author, author_title, author_urlstringYazar künyesi
created_at, published_atISO 8601Zaman damgaları

Her alan her zaman mevcuttur. Geçerli olmayan bir değer null olarak döner — asla atlanmaz. Seslendirmesi olmayan bir yazıda yalnızca audio_url: null bulunur; bu normal bir durumdur, hata değildir. Entegrasyonunuzu eksik alanlar yerine null değerler bekleyecek şekilde yazın.

Sözleşme salt eklemelidir. Alanlar asla yeniden adlandırılmaz, türü değiştirilmez ya da kaldırılmaz; çünkü sahadaki entegrasyonlar süresiz olarak sürüm 1'i istemeye devam eder. Geriye dönük uyumu bozan bir değişiklik, bunun yanında sunulan yeni bir sürüm olarak yayınlanır.

Hatalar

Hatalar, uygun bir HTTP durum kodu ve okunabilir bir mesaj içeren JSON gövdesi döndürür.

{ "ok": false, "error": "Invalid or revoked connection token." }
DurumAnlamı
400Zorunlu bir alan eksik veya hatalı
401Token eksik, bilinmiyor veya iptal edilmiş
404Yazı bu bağlantıya ait değil

Hazır entegrasyonlar

Kod yazmanız gerekmez. Aynı API şunlar için hazır paketlenmiş durumda:

Destek

API hakkında sorularınız varsa ya da bir şey belgelendiği gibi çalışmıyorsa bize yazın: support@getrankbloom.com.