Webhook'lar

jekcms'te webhook'lar içeri doğru çalışır: dış araçlar sitenize içerik ve komut gönderir. Bir n8n akışı makaleyi yazıp bitirdiğinde sonucu sitenize POST eder; yazı — hangisini istediyseniz — taslak olarak, ileri tarihli planlanmış olarak ya da doğrudan yayında belirir. Aynı uçlar medya yüklemeyi, toplu içe aktarmayı ve durum sorgulamayı da yürütür.

Ters yön için (bir şey olduğunda jekcms'in başka servislere haber vermesi) bu uçları bir n8n zamanlı tetikleyicisiyle ya da REST API ile birleştirin — okuma uçları için API referansına bakın.

Uçlar

Tüm webhook çağrıları JSON gövdeli POST https://siteniz.com/api/v1/webhook/{aksiyon} biçimindedir. Desteklenen aksiyonlar:

  • publish — yazı oluştur ve hemen yayınla
  • schedule — ileri bir tarihe planlanmış yazı oluştur
  • draft — taslak yazı oluştur
  • update — mevcut yazıyı güncelle
  • delete — yazı sil
  • media — URL'den medya yükle
  • media-base64 — base64 veriden medya yükle
  • bulk-publish — tek çağrıda birden çok yazı yayınla
  • bulk-import — RSS/JSON'dan toplu yazı aktar
  • ai-enhance — içeriği AI metaverisiyle zenginleştir
  • status — yazının güncel durumunu getir
  • check-source — kaynak URL daha önce aktarılmış mı diye bak
  • trigger — özel otomasyon tetikleyicisi çalıştır

Kimlik doğrulama

Bir webhook çağrısını doğrulamanın iki yolu vardır; biri yeterlidir:

  1. API anahtarıYönetim → API Anahtarları (admin/api-keys.php) altında oluşturduğunuz anahtarı Bearer token olarak gönderin. Başlık alanı ayarlamak kolay olduğu için n8n ve Zapier'de önerilen yol budur.
  2. HMAC imzası — config'inizde N8N_WEBHOOK_SECRET tanımlayın ve her isteği imzalayın: X-Webhook-Signature başlığı (kabul edilen diğer ad: X-N8N-Signature), ham istek gövdesinin bu gizli anahtarla alınmış HMAC-SHA256 özetini taşımalıdır. Ne API anahtarı ne de geçerli imza varsa çağrı 401 Invalid webhook signature ile reddedilir.

İmzalama örnekleri (gönderen taraf)

PHP

$body = json_encode(['title' => 'Merhaba', 'content' => '...']);
$signature = hash_hmac('sha256', $body, getenv('JEKCMS_WEBHOOK_SECRET'));

$ch = curl_init('https://siteniz.com/api/v1/webhook/draft');
curl_setopt_array($ch, [
    CURLOPT_POST       => true,
    CURLOPT_POSTFIELDS => $body,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'X-Webhook-Signature: ' . $signature,
    ],
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);

Node.js

const crypto = require('crypto');

const body = JSON.stringify({ title: 'Merhaba', content: '...' });
const signature = crypto
    .createHmac('sha256', process.env.JEKCMS_WEBHOOK_SECRET)
    .update(body)
    .digest('hex');

await fetch('https://siteniz.com/api/v1/webhook/draft', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'X-Webhook-Signature': signature,
    },
    body,
});

Python

import hmac, hashlib, json, os, requests

body = json.dumps({'title': 'Merhaba', 'content': '...'})
signature = hmac.new(
    os.environ['JEKCMS_WEBHOOK_SECRET'].encode(),
    body.encode(),
    hashlib.sha256,
).hexdigest()

requests.post(
    'https://siteniz.com/api/v1/webhook/draft',
    data=body,
    headers={
        'Content-Type': 'application/json',
        'X-Webhook-Signature': signature,
    },
)

İmza, gönderdiğiniz baytların birebir kendisinden hesaplanır — gövdeyi bir kez serileştirin ve o metni imzalayın; çıkışta yeniden kodlamak imzayı geçersiz kılar.

Editoryal güvenlik

Sürece insan katmak istiyorsanız publish yerine draft (ya da schedule) hedefleyin: içerik yönetim paneline sıradan bir taslak olarak düşer ve ancak bir editör yayınlayınca canlıya çıkar. İçerik kuyruğu (bkz. İçerik Kuyruğu) bunun üstüne bir inceleme hattı ekler.

n8n hızlı başlangıç

  1. Yönetim → API Anahtarları altında bir API anahtarı oluşturun.
  2. n8n'de bir HTTP Request düğümü ekleyin: yöntem POST, URL https://siteniz.com/api/v1/webhook/draft, kimlik doğrulama Bearer token ve anahtarınız.
  3. Akış alanlarınızı JSON gövdeye eşleyin (title, content, category, tags, featured_image…).
  4. Akışı çalıştırın — yazı, panelinizde taslak olarak görünür.

Yeniliklerden ilk sen haberdar ol

Yeni özellikler, sürüm notları ve CMS rehberleri — ayda birkaç e-posta, spam yok.