PressioSizi görünür kılar
Medya Partneri Ol
Yeni Bülten
Dokümantasyon

Pressio RSS / XML Feed Spesifikasyonu

Pressio bültenlerini WordPress olmayan bir partner sitesinde (Drupal, Joomla, Strapi, Ghost, custom CMS vs.) tüketmek için kullanılacak RSS feed'in tam spesifikasyonu.

Genel Yapı

Pressio her partner site için kendine özel bir RSS 2.0 uyumlu XML feed yayınlar. Endpoint cache header'ı ile birlikte gelir, partner site bu feed'i periyodik çekip yeni bültenleri kendi CMS'ine post / makale / haber olarak ekler.

Sistem pull-tabanlı'dır — Pressio sitenize hiçbir webhook veya API çağrısı göndermez; sitenizin RSS reader'ı Pressio'yu sorgular.

Endpoint URL Şeması

https://pressio.media/api/feeds/<site_id>/<lang>/<category>.xml
  • site_id: Pressio panelindeki partner site kimliği (slug). Pressio ekibinden alırsınız.
  • lang: Dil kodu — şu an tr (Türkçe). Global paketler için ileride en da gelecek.
  • category: all (sitenin abone olduğu tüm kategoriler) veya tek bir kategori adı (örn. ekonomi, teknoloji).

Örnek:

https://pressio.media/api/feeds/orneksite/tr/all.xml

HTTP Yanıt Başlıkları

  • Content-Type: application/xml; charset=utf-8
  • Status: 200 OK (feed mevcut), 404 (site bulunamadı / pasif)
  • Cache: server-side revalidation 60 saniye

XML Yapısı

Standart RSS 2.0. Her <item> bir bültendir.

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>orneksite.com - Tüm Haberler</title>
    <description>orneksite.com için haberler</description>
    <link>https://orneksite.com</link>
    <language>tr</language>
    <item>
      <guid isPermaLink="false">3f8e1d40-b29c-...</guid>
      <title>Şirket X yeni teknolojisini tanıttı</title>
      <description>Spot/özet metni burada (Pressio'nun spot alanı)...</description>
      <link>https://pressio.media/releases/3f8e1d40-...</link>
      <pubDate>Mon, 12 May 2026 17:30:00 GMT</pubDate>
      <content:encoded><![CDATA[
        <p class="press-spot"><strong>Spot metni...</strong></p>
        <p>Lead paragrafı...</p>
        <h2>Alt başlık 1</h2>
        <p>Paragraf 1...</p>
        <h2>Alt başlık 2</h2>
        <p>Paragraf 2...</p>
        <p><em>"Alıntı metni"</em> — Konuşan Kişi</p>
        <p class="boilerplate">Şirket hakkında metni...</p>
      ]]></content:encoded>
      <enclosure url="https://..." type="image/jpeg" />
    </item>
    <!-- daha fazla item... -->
  </channel>
</rss>

Item Alanlarının Anlamı

AlanİçerikKullanım
guidBültenin UUID'si (Pressio'da benzersiz)Deduplicate için BU alan kullanılmalı. Aynı guid'i 2. kez görürseniz post oluşturmayın.
titleBülten başlığı (maks 50 karakter)Post başlığı olarak.
descriptionSpot / özet metni (25-40 kelime)Post excerpt / meta description.
linkBültenin Pressio'daki kaynak URL'siSEO için canonical / kaynak gösterimi.
pubDateRFC 822 formatında yayın tarihi (UTC)Post yayın tarihi.
content:encodedBültenin tam HTML içeriği (CDATA içinde)Post body. <strong>, <h2>, <em> içerir.
enclosureBülten görseli (url + type)Featured image. Yoksa item bu alanı içermez.

Deduplicate (Mükerrer Engelleme)

Cron ile periyodik çekme yaparken aynı bülteni 2 kez post'lamamak için guid alanını kendi DB'nizde saklayın.

Pseudo-kod:

for each item in feed:
    if exists in your_db where pressio_guid == item.guid:
        continue   # zaten import edilmiş, atla
    insert into your_posts (
        pressio_guid = item.guid,
        title        = item.title,
        excerpt      = item.description,
        body         = item.content_encoded,
        published_at = item.pub_date,
        image_url    = item.enclosure.url,
        source_url   = item.link
    )

Önemli: Deduplicate'i title üzerinden yapmayın — Pressio editörü bültenin başlığını revize edebilir, aynı guid'le içerik güncellenir. Sadece guid güvenilir.

Polling Sıklığı

  • Önerilen: 30 dakika
  • Çok agresif (önerilmez): 5-10 dakika — gereksiz sunucu yükü, sitenizin IP'si rate-limit'e takılabilir
  • Çok yavaş: 1 saatten uzun — bültenler "anlık" hissi vermez

Pressio sunucusu zaten 60 sn'lik cache'le yanıt veriyor, dolayısıyla 30 dakikadan daha sık çekmek sonuç değiştirmez.

Minimal Tüketici Örnekleri

PHP (Drupal / Joomla / custom)
<?php
$url = 'https://pressio.media/api/feeds/orneksite/tr/all.xml';
$xml = simplexml_load_file($url);
foreach ($xml->channel->item as $item) {
    $guid = (string)$item->guid;
    // Kendi DB'nizde guid kontrolü yapın
    if (already_imported($guid)) continue;

    $body = (string)$item->children('content', true)->encoded;
    $image = $item->enclosure ? (string)$item->enclosure['url'] : null;

    insert_post([
        'pressio_guid'  => $guid,
        'title'         => (string)$item->title,
        'excerpt'       => (string)$item->description,
        'body'          => $body,
        'published_at'  => (string)$item->pubDate,
        'image_url'     => $image,
        'source_url'    => (string)$item->link,
    ]);
}
Python (Strapi / Django / FastAPI)
import feedparser

url = "https://pressio.media/api/feeds/orneksite/tr/all.xml"
feed = feedparser.parse(url)

for entry in feed.entries:
    guid = entry.id  # feedparser guid'i 'id' field'ına maps eder
    if already_imported(guid):
        continue

    image = None
    if hasattr(entry, "enclosures") and entry.enclosures:
        image = entry.enclosures[0].href

    body = entry.content[0].value if hasattr(entry, "content") else entry.summary

    insert_post(
        pressio_guid=guid,
        title=entry.title,
        excerpt=entry.summary,
        body=body,
        published_at=entry.published,
        image_url=image,
        source_url=entry.link,
    )
Node.js (Next.js / Express / Ghost)
import Parser from "rss-parser";

const parser = new Parser({
    customFields: { item: ["content:encoded"] },
});

const feed = await parser.parseURL(
    "https://pressio.media/api/feeds/orneksite/tr/all.xml"
);

for (const item of feed.items) {
    if (await alreadyImported(item.guid)) continue;

    const image = item.enclosure?.url || null;
    const body = (item as any)["content:encoded"] || item.content;

    await insertPost({
        pressio_guid: item.guid,
        title: item.title,
        excerpt: item.contentSnippet,
        body,
        published_at: item.isoDate,
        image_url: image,
        source_url: item.link,
    });
}

Sorun Giderme

Feed 404 dönüyor

Pressio admin panelinde site "Pasif" durumdaysa feed 404 döner. Site sahibinden Pressio ekibine durumu kontrol ettirin.

URL'de typo var mı kontrol edin — özellikle site_id.

Feed boş ama bültenler olması gerekiyor

Sitenin Pressio panelinde abone olduğu kategorilerde aktif bülten olmayabilir.

category=all kullanmıyorsanız, kategori yazımı doğru mu (case-sensitive değildir ama tireli olabilir).

HTML/CSS bozuk render oluyor

Pressio content:encoded içinde inline style kullanmaz (sınıf isimleri yollar: press-spot, boilerplate). Sitenizin tema CSS'inde bu class'lar için stil tanımlayın ya da tam HTML render'a izin verin.

Görseller görünmüyor

Görsel her item'da olmak zorunda değil — bültende görsel yoksa enclosure elementi yer almaz.

Item içinde enclosure var ama URL ölü ise: Pressio storage URL'leri public, CORS engelliyor olabilir — CMS'inizin görsel proxy/import mekanizmasını kullanın (görseli kendi sunucunuza indirin).

Spesifikasyon tam. Yukarıdaki yapı RSS 2.0 standardına bağlıdır; content:encoded dışındaki tüm alanlar standart. Herhangi bir RSS okuyucusu Pressio feed'ini sorunsuz parse eder.

Pressio, sizi görünür kılar

Pressio

Yapay zeka destekli basın bülteni oluşturma ve dağıtım platformu.

Medya Partneri Ol

Hızlı Bağlantılar

  • Ana Sayfa
  • Bültenlerim
  • Yeni Bülten Oluştur

Yasal Belgeler

  • Kullanım Koşulları
  • Gizlilik Politikası
  • Mesafeli Satış Sözleşmesi
  • Sorumluluk Reddi

Bizi Takip Et!

© 2026 Pressio. Tüm hakları saklıdır.