JekCMS yayın API uç noktası POST /api/v1/posts/publish-task. İstek gövdesinde JSON formatında title, content, author_id, category, featured_image (bir URL) ve isteğe bağlı ISO 8601 zaman damgalı scheduled_at parametreleri kabul ediliyor. API anahtarı X-API-Key başlığıyla iletiliyor. Başarılı oluşturma durumunda yeni gönderinin ID'si ve genel URL'si dönüyor.

n8n'de Minimal Çalışan Akış

n8n'de çalışan minimal bir akış dört düğümden oluşuyor: kaynak içeriği çeken bir HTTP Request düğümü (OpenAI, RSS beslemesi veya kendi kaynağınız olabilir), yükü biçimlendiren bir Code düğümü, JekCMS API'sini çağıran bir HTTP Request düğümü ve hataları Slack bildirimine ya da yeniden deneme kuyruğuna yönlendiren bir IF düğümü. Normal koşullarda tüm akış gönderi başına iki saniyenin altında tamamlanıyor.

Yüksek Hacimli İşlemlerde Medya Yönetimi

Medya yönetimi dikkat gerektiriyor. featured_image olarak bir URL ilettiğinizde JekCMS bunu API isteği sırasında eş zamanlı olarak çekiyor, AVIF'e dönüştürüyor ve yerel olarak depolıyor. Kaynak URL yavaş yanıt verirse tüm API isteğiniz bloke oluyor. Yüksek hacimli akışlar için görselleri önceden POST /api/v1/media/upload-from-url uç noktasıyla JekCMS'e yükleyin ve URL yerine dönen medya ID'sini kullanın. Bu yaklaşım istekleri daha hızlı ve güvenilir kılıyor.

Sekiz Aylık Gerçek Dünya Rakamları

Bu akışla üç sitede aylık yaklaşık 600 otomatik gönderi işliyoruz. Başarısızlık oranı %0,3'ün altında; yaşanan her başarısızlık kaynak içerik çekmede ağ zaman aşımından kaynaklanıyor, JekCMS API hatasından değil. Uç noktanın kendisi bu raporda ele alınan sekiz aylık dönem boyunca %100 çalışır durumda kaldı. 140.000'i aşkın gönderiyi bu basit yapıyla işledik; sistem ek bakım gerektirmeden çalışmaya devam ediyor.

n8n Düğüm Yapılandırmasının Detayları

Yayın çağrısı için HTTP Request düğümünün tam yapılandırması aşağıdadır. Content-Type başlığı application/json olmalı ve API anahtarı X-API-Key başlığında iletilmeli — sorgu parametresi olarak değil. Sorgu parametresi yöntemi v1.5.0'da güvenlik gerekçesiyle kullanımdan kaldırıldı.

// n8n HTTP Request Düğüm Ayarları
Method: POST
URL: https://siteniz.com/api/v1/posts/publish-task
Authentication: None (başlık ile yönetiliyor)
Headers:
 X-API-Key: {{ $credentials.jekcmsApiKey }}
 Content-Type: application/json
Body (JSON):
{
 "title": "{{ $json.title }}",
 "content": "{{ $json.content }}",
 "author_id": 2,
 "category": "{{ $json.category }}",
 "featured_image": "{{ $json.image_url }}",
 "image_alt_text": "{{ $json.image_alt }}",
 "scheduled_at": "{{ $json.publish_date }}"
}

IF Düğümü ile Hata Yönetimi

API çağrısından sonraki IF düğümü {{ $json.success }} değerini kontrol ediyor. Başarısızlık durumunda hata dalı, gönderi başlığını ve hata mesajını içeren bir Slack bildirimi gönderiyor. 409 duplicate hataları için özellikle ayrı bir dala yönlendirme yapıyoruz — bu dal duplicate'ı kaydediyor ancak uyarı tetiklemiyor; çünkü bir içerik grubunu yeniden işlerken duplicate'lar beklenen bir durum.

Zamanlama ve Yayın Sıklığı

JekCMS, API üzerinden üç yayın modunu destekliyor:

  • Anında yayın: scheduled_at alanını atla — gönderi hemen canlıya alınır
  • Zamanlanmış yayın: ISO 8601 zaman damgası ilet (ör. 2026-03-01T09:00:00+03:00) — JekCMS cron'u belirtilen saatte yayınlar
  • Taslak modu: /draft uç noktasını kullan — gönderi kaydedilir ancak admin panelden manuel olarak yayınlanana kadar görünmez

SEO açısından her şeyi aynı anda yayınlamak yerine 90 dakikalık aralıklarla dağıtıyoruz. n8n Cron düğümü günde bir kez tetikleniyor, bekleyen tüm içerik öğelerini bir Google Sheet'ten çekiyor ve Code düğümü sitenin saat diliminde 09:00'dan başlayarak 90 dakika arayla sıralı zaman damgaları atıyor.

Kategori ve Etiket Otomasyonu

API, kategori adlarını metin dizesi olarak kabul ediyor. Kategori mevcut değilse JekCMS onu otomatik olarak oluşturulmuş bir slug ile yaratıyor. Etiketler de aynı şekilde çalışıyor — tags alanında bir dizi metin gönderin. Bu, n8n akışınızın sitenin mevcut kategori ID'lerini bilmesine gerek olmadığı anlamına geliyor; içerik kaynağından gelen kategori adını doğrudan geçirebilir, arama veya oluşturma işlemini JekCMS'e bırakabilirsiniz.

İzleme ve Hata Ayıklama

Her API isteği istek yöntemi, uç nokta, kimlik doğrulama sonucu, yanıt kodu ve yürütme süresiyle birlikte logs/api-{tarih}.log dosyasına kaydediliyor. n8n hata ayıklaması için HTTP Request düğümünde "Include Response Headers" seçeneğini etkinleştirin — JekCMS, sunucu günlük girişiyle eşleşen bir X-Request-ID başlığı döndürüyor. Destek talebi açarken anında günlük araması için bu ID'yi ekleyin.

  • Yalnızca metin içeren gönderi için ortalama API yanıt süresi: 180 ms
  • Öne çıkan görsel URL çekme ve AVIF dönüşümüyle ortalama yanıt süresi: 3,2 saniye
  • Kurulum başına desteklenen maksimum eş zamanlı API isteği: 10 (config/api.php ile yapılandırılabilir)
  • Hız sınırı: API anahtarı başına dakikada 120 istek (aşıldığında 429 durum kodu)