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.
| Parametre | Tür | Varsayılan | Notlar |
|---|---|---|---|
limit | integer | 25 | En fazla 100 |
offset | integer | 0 | Atlanacak yazı sayısı |
since | ISO 8601 | — | Yalnı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"
}'
| Alan | Zorunlu | Notlar |
|---|---|---|
post_id | evet | Şu uç noktadan dönen id alanı: /v1/posts |
status | evet | delivered, failed veya skipped |
external_url | hayır | Nerede yayınlandığı |
external_id | hayır | Uzak sistemin kendi kimliği |
error | hayır | Baş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.
| Alan | Tür | Notlar |
|---|---|---|
id | string | Değişmez; idempotency anahtarı olarak kullanın |
title, slug, excerpt | string | slug tekilleştirilmiş nihai değerdir |
content_html, content_md | string | Gövde metni, her iki biçimde de |
meta_title, meta_description | string | SEO meta verileri |
primary_keyword, keywords, category, tags | string / array | Sınıflandırma |
canonical_url | string | Ayarlandığında canonical |
schema_json_ld | object | Ayrıştırılmış, asla JSON metni değil |
featured_image_url | string | Barındırılan görsel, kullanıma hazır |
audio_url | string | Yazıda varsa seslendirme |
audio_duration_seconds, audio_voice | number / string | Seslendirme ayrıntısı |
status | string | published veya draft |
author, author_title, author_url | string | Yazar künyesi |
created_at, published_at | ISO 8601 | Zaman 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." }
| Durum | Anlamı |
|---|---|
400 | Zorunlu bir alan eksik veya hatalı |
401 | Token eksik, bilinmiyor veya iptal edilmiş |
404 | Yazı bu bağlantıya ait değil |
Hazır entegrasyonlar
Kod yazmanız gerekmez. Aynı API şunlar için hazır paketlenmiş durumda:
- WordPress — resmi Get RankBloom eklentisi. Tek tıkla bağlanın, yapıştırılacak token yok.
- Make — şu bileşenlere sahip özel bir uygulama: Watch Posts tetikleyicisi ve Mark Post as Published eylemi.
- Zapier — New Post tetikleyicisi ve Mark Post as Published eylemi.
Destek
API hakkında sorularınız varsa ya da bir şey belgelendiği gibi çalışmıyorsa bize yazın: support@getrankbloom.com.