İçeriğe geç
Belgeler menüsü

RSS ve Atom

YHA Abone · Çıkışlar'da rss türünde çıkış açınca bir adres verilir:

metin
https://rss.<alan>/b/<erişim kodu>/<etiket>.xml
  • Anahtarsızdır: adresi bilen okur. Adresi paylaşmayın; sızarsa YHA Abone'den erişim kodunu yenileyin (eskisi hemen düşer).
  • Biçim profilde seçilir: rss2 (varsayılan) ya da atom. Her zaman UTF-8.
  • Son 50 öğe, en çok 48 saat geriye. Embargolu öğe saatinden önce görünmez.
  • title: düzeltmede "DÜZELTME: ", iptalde "İPTAL: " öneki; tanıtımda "[Tanıtım] " öneki ve <category domain="https://<alan>/rss/tur">tanitim</category>.
  • description spot, content:encoded tam metin (profilde kapatılabilir), pubDate servis zamanı, guid isPermaLink="false" = yha:<no>:s<surum>, category kategori ve il.
  • Küçük resim açıksa media:thumbnail ve enclosure (72 saat geçerli imzalı adres).
  • Öğe bağlantısı (link) yoktur; herkese açık haber sayfası yoktur.
  • ETag ve Last-Modified gönderilir; If-None-Match / If-Modified-Since ile 304. Okuyucunuzu dakikada birden sık sordurmayın.
  • Abonelik askıdaysa ya da sona erdiyse 403.

Yazar Haber Ajansı RSS ve Atom Beslemeleri: Kurulum ve Kullanım Rehberi

Yazar Haber Ajansı RSS ve Atom beslemeleri, abone olduğunuz haberleri yazılım geliştirmeden sitenize, uygulamanıza veya haber yönetim sisteminize almanın en hızlı yoludur. YHA Abone'de rss türünde bir çıkış açtığınızda size https://rss.yha.com.tr/b/<erişim kodu>/<etiket>.xml biçiminde bir adres verilir; bu adresi sisteminize eklersiniz, yazılımınız beslemeyi belirli aralıklarla okur. Bu sayfada RSS ile Atom arasındaki farkı, YHA beslemesinin yapısını, erişim kodunu, düzeltme ve iptallerin nasıl göründüğünü, önbellek kurallarını ve PHP ile Python örneklerini bulacaksınız.

Bu rehber, Yazar Haber Ajansı geliştirici belgeleri kümesinin bir parçasıdır. Daha esnek sorgulama (imleçli akış, arşivde arama, süzgeçler) gerekiyorsa YHA API ile JSON formatında haber çekme rehberine bakmanızı öneririz.

RSS ve Atom: hangisini seçmelisiniz?

İkisi de XML tabanlıdır; fark, belgenin hangi kurallara göre yapılandırıldığındadır. YHA'da biçimi çıkış profilinde seçersiniz: rss2 (varsayılan) ya da atom. Haber içeriği aynıdır, besleme her zaman UTF-8'dir.

Özellik RSS 2.0 Atom 1.0
Standart RSS 2.0 spesifikasyonu (RSS Advisory Board) RFC 4287 (IETF)
Destek Neredeyse tüm CMS, eklenti ve okuyucular Çoğu modern kütüphane
Tarih biçimi RFC 822 tarzı (Wed, 07 Oct 2026 11:19:00 GMT) RFC 3339 (2026-10-07T11:19:00Z)
Tam metin content:encoded uzantısıyla content öğesiyle
En uygun kullanım WordPress ve hazır içe aktarma eklentileri Atom okuyan sistemler

Pratik öneri: yazılımınız özel bir neden olmadıkça RSS 2.0 ile başlayın; YHA'nın RSS çekme hazır ayarı da RSS 2.0, tam metin ve küçük resimle gelir.

"XML" ile ajansın kendi haber biçimini kastediyorsanız: ajans XML'i (yha_xml), NewsML-G2, NITF ve IPTC 7901 besleme değil, dosya biçimleridir ve FTP/SFTP çıkışlarıyla gelir. Ayrıntılı alanlar için NewsML-G2 ve ajans XML'i sayfasına bakın.

Besleme kimler için doğru seçim?

Besleme tabanlı entegrasyon özellikle şu durumlarda en verimli yöntemdir:

  • Yalnızca besleme okuyabilen sistemler: Yazılım ekibi olmayan, hazır bir haber yazılımı kullanan yayınlar besleme adresini girerek dakikalar içinde haber almaya başlar.
  • Belirli kategorilere ihtiyaç duyan yayınlar: Beslemenin içeriğini çıkışı açarken seçtiğiniz paket ve kategoriler belirler; gereksiz içerik gelmez.
  • Bülten ve ekran sistemleri: E-posta bülteni ya da dijital ekran gibi sistemler beslemeyi basit bir veri kaynağı olarak kullanabilir.

Geçmişe dönük sorgu yapan veya dosya tabanlı aktarım isteyen kurumlar için API ya da FTP/SFTP daha uygundur. WordPress kullanıyorsanız ajansın WordPress eklentisi düzeltme ve iptalleri de işlediği için beslemeden daha uygundur.

YHA besleme adresi ve erişim kodu

Beslemeyi YHA Abone · Çıkışlar ekranında rss türünde bir çıkış açarak oluşturursunuz. Paketleri ve kategorileri seçersiniz; ajans size şu biçimde bir adres verir:

https://rss.yha.com.tr/b/<erişim kodu>/<etiket>.xml

Bu adres anahtarsızdır: HTTP başlığı ya da ayrı bir token gerekmez, adresi bilen okur. Bu yüzden:

  • Adresi herkese açık bir JavaScript dosyasına, tema koduna veya kod deposuna koymayın; beslemeyi sunucu tarafında okuyun.
  • Adres sızarsa YHA Abone'den erişim kodunu yenileyin; eski adres hemen düşer, yenisini yazılımınıza girin.
  • Farklı sistemler için ayrı çıkışlar açmak, sorun çıktığında yalnızca birinin adresini yenilemenizi sağlar.

Beslemede son 50 öğe bulunur ve en çok 48 saat geriye gidilir. Abonelik askıdaysa ya da sona erdiyse besleme 403 döner.

Örnek RSS öğesi (item)

YHA RSS beslemesinde bir haber öğesi şu alanlardan oluşur (değerler kısaltılmıştır):

<item>
  <title>DÜZELTME: …</title>
  <description>Haberin spotu…</description>
  <content:encoded><![CDATA[<p>Haberin tam metni…</p>]]></content:encoded>
  <pubDate>Wed, 07 Oct 2026 11:19:00 GMT</pubDate>
  <guid isPermaLink="false">yha:H-001230:s2</guid>
  <category>Ekonomi</category>
  <category>Trabzon</category>
  <media:thumbnail url="https://…"/>
  <enclosure url="https://…" type="image/jpeg" length="…"/>
</item>
  • title haberin başlığıdır; düzeltmede "DÜZELTME: ", iptalde "İPTAL: " öneki alır. Tanıtım içeriğinde "[Tanıtım] " öneki ve <category domain="https://yha.com.tr/rss/tur">tanitim</category> bulunur.
  • description spottur; content:encoded tam metni taşır (profilde kapatılabilir).
  • pubDate servis zamanıdır.
  • guid kalıcı bağlantı değildir ve yha:<no>:s<surum> biçimindedir: haber numarasını ve sürümünü taşır.
  • category kategori ve ili verir.
  • Küçük resim açıksa media:thumbnail (Media RSS) ve enclosure gelir; adresler 72 saat geçerli, imzalı adreslerdir.
  • Öğede link yoktur; ajans haberlerinin herkese açık bir sayfası bulunmaz.

content:encoded ve media:thumbnail öğelerinin ad alanları beslemede tanımlıdır; ayrıştırıcınızın ad alanlarını okuyabildiğinden emin olun. Atom biçimi seçildiğinde aynı bilgi Atom'un karşılık gelen öğeleriyle verilir.

Düzeltme, iptal ve embargo

Ajans haberleri canlıdır: düzeltilir, bazen iptal edilir. Beslemede bunlar şöyle görünür:

  • Düzeltme: Haberin yeni sürümü "DÜZELTME: " önekiyle yeniden görünür; guid'deki sürüm (s2, s3…) artar.
  • İptal: İptal edilen haber beslemeden düşer ve "İPTAL: " önekli bir iptal öğesi gelir. Bu öğeyi gördüğünüzde haberi sitenizden kaldırın.
  • Embargo: Embargolu öğe yayım saatinden önce beslemede görünmez.

Bu yüzden içe aktarma yazılımınız haberi guid'in numara kısmıyla (yha:H-001230) eşleştirmeli, sürüm büyükse yazıyı güncellemeli, iptal öğesinde yazıyı yayından kaldırmalıdır. Besleme yalnızca son 48 saati taşıdığından, iptali kaçırmamak için okuma aralığını uzun tutmayın.

Görseller: media:thumbnail ve enclosure

Beslemede görsel, küçük resim seçeneği açıksa gelir. Her iki öğedeki adres 72 saat geçerli imzalı bir adrestir; kalıcı bağlantı olarak kullanılamaz.

  • Görseli kendi sunucunuza indirin. İmzalı adresin süresi dolduğu için görseli medya kütüphanenize kaydedip oradan sunun. Kullanım hakkı abonelik sözleşmenizle sınırlıdır.
  • Alt metin ekleyin. Haber başlığından anlamlı bir alt metin üretin.
  • Daha büyük görsel gerekiyorsa API'den medya dosyasını (web ya da orijinal) indirin ya da dosya çıkışlarını kullanın.

Güncelleme sıklığı ve önbellek (ETag, If-Modified-Since)

YHA beslemesi ETag ve Last-Modified başlıklarını gönderir. Okuyucunuzu dakikada birden sık sordurmayın ve koşullu istek kullanın: bir sonraki istekte bu değerleri If-None-Match ve If-Modified-Since başlıklarıyla geri gönderirsiniz; besleme değişmediyse sunucu gövdesiz bir 304 Not Modified yanıtı döner.

Başlık Yön Görevi
ETag Sunucu → istemci Beslemenin sürüm parmak izi
Last-Modified Sunucu → istemci Son değişiklik zamanı
If-None-Match İstemci → sunucu Bir önceki ETag değeri
If-Modified-Since İstemci → sunucu Bir önceki Last-Modified değeri

Koşullu isteklerin ayrıntısı için MDN'nin koşullu istekler sayfasına bakabilirsiniz. Haberi ajans servis ettiği anda almak istiyorsanız beslemeyi sık sorgulamak yerine YHA webhook bildirimlerini ya da anlık akışı kullanın.

PHP ile RSS okuma

Aşağıdaki kod beslemeyi koşullu istekle okur ve her öğenin guid'ini, başlığını ve küçük resmini listeler. Besleme adresini ortam değişkeninde tutun.

<?php
$adres = getenv('YHA_RSS_ADRESI'); // https://rss.yha.com.tr/b/<erişim kodu>/<etiket>.xml
$etagDosya = __DIR__ . '/yha_etag.txt';
$etag = is_file($etagDosya) ? trim(file_get_contents($etagDosya)) : '';

$ch = curl_init($adres);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER         => true,
    CURLOPT_TIMEOUT        => 20,
    CURLOPT_HTTPHEADER     => $etag ? ['If-None-Match: ' . $etag] : [],
]);
$yanit = curl_exec($ch);
$durum = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$bas   = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
curl_close($ch);

if ($durum === 304) exit("Yeni haber yok\n");
if ($durum !== 200) exit("Besleme hatası: HTTP $durum\n");

if (preg_match('/^etag:\s*(.+)$/mi', substr($yanit, 0, $bas), $m)) {
    file_put_contents($etagDosya, trim($m[1]));
}
$xml = simplexml_load_string(substr($yanit, $bas));
foreach ($xml->channel->item as $oge) {
    [, $no, $surum] = explode(':', (string) $oge->guid);   // yha:H-001230:s2
    $iptal  = str_starts_with((string) $oge->title, 'İPTAL: ');
    $gorsel = isset($oge->enclosure) ? (string) $oge->enclosure['url'] : '';
    echo $no, ' ', $surum, $iptal ? ' İPTAL' : '', ' | ', (string) $oge->title, ' | ', $gorsel, PHP_EOL;
}

Python feedparser ile okuma

Python'da feedparser kütüphanesi hem RSS'i hem Atom'u aynı arayüzle okur ve ETag/Last-Modified değerlerini sizin için tutar.

import os
import feedparser

ADRES = os.environ["YHA_RSS_ADRESI"]

besleme = feedparser.parse(ADRES)
for oge in besleme.entries:
    _, no, surum = oge.id.split(":")          # yha:H-001230:s2
    iptal = oge.title.startswith("İPTAL: ")
    print(no, surum, "İPTAL" if iptal else "", oge.title)

# Sonraki istekte koşullu okuma:
yeni = feedparser.parse(ADRES, etag=besleme.get("etag"), modified=besleme.get("modified"))
if yeni.get("status") == 304:
    print("Yeni haber yok")

Yinelenen haberleri önlemek

Besleme her okunduğunda son öğelerin çoğu yeniden gelir. İçe aktarma yazılımınız her haberi numarasıyla (guid'in yha:<no> kısmı) veritabanına kaydetmeli ve aynı numara ikinci kez geldiğinde yeni yazı oluşturmamalıdır. Numara eşleşiyor ama sürüm büyümüşse haberi güncelleyin; "İPTAL: " önekli öğede yayından kaldırın. Bu basit kural, sitenizde aynı haberin birkaç kopyasının oluşmasını önler.

Ajans haberlerini yayınlarken SEO dikkat noktaları

Aynı ajans haberi abone olan birçok sitede aynı anda yayınlanır. Arama motorları bu durumda genellikle sürümlerden birini öne çıkarır. Ajans içeriğinden arama trafiği almak istiyorsanız haberi olduğu gibi kopyalamak yerine okura ek değer sunun:

  • Yerel bağlam ekleyin. Haberin sizin şehriniz veya okur kitleniz için ne anlama geldiğini bir iki paragrafla açıklayın.
  • Başlığı ve girişi kendi okurunuza göre düzenleyin. Olguları değiştirmeden kendi yayın dilinize uygun hâle getirin.
  • Kendi görselinizi veya verinizi kullanın. Özgün fotoğraf, harita ya da tablo haberi diğer sürümlerden ayırır.
  • Kaynağı belirtin. Haberde kaynak olarak "Yazar Haber Ajansı" ya da "YHA" yazın; bu abonelik koşullarının gereğidir.
  • Toplu ve değer katmadan yayından kaçının. Yüzlerce ajans haberini hiçbir katkı yapmadan otomatik yayınlamak sitenin genel kalitesine dair olumsuz bir sinyal oluşturabilir.

Sık görülen hatalar ve çözümleri

Hata Olası neden Çözüm
403 yanıtı Abonelik askıda ya da sona ermiş Abonelik durumunuzu kontrol edin
Eski adres çalışmıyor Erişim kodu yenilenmiş YHA Abone'deki yeni adresi girin
Türkçe karakterler bozuk Ayrıştırıcı UTF-8 okumuyor İsteği ve veritabanını UTF-8 (utf8mb4) olarak ayarlayın
Görseller gelmiyor ya da sonradan kırılıyor Küçük resim kapalı ya da 72 saatlik imzalı adres doldu Profilde küçük resmi açın, görseli indirirken kaydedin
Haberler tekrar ediyor Numara kontrolü yok guid'in numara kısmını kaydedip kontrol edin
Saatler kaymış Saat dilimi dönüştürülmüyor Tarihi saat dilimiyle birlikte ayrıştırın, sitenizi Europe/Istanbul olarak ayarlayın

Beslemeyi doğrulama

Bir besleme okunamıyorsa önce biçimini kontrol edin. W3C Feed Validation Service RSS ve Atom beslemelerindeki hataları satır satır gösterir. Besleme adresi gizli tutulması gereken bir erişim kodu içerdiğinden adresi doğrudan girmek yerine beslemenin çıktısını kaydedip içeriğini doğrulama aracına yapıştırmanızı öneririz.

Beslemeyi WordPress'e bağlamak

WordPress kullanıyorsanız hazır içe aktarma eklentileri RSS adresini alıp haberleri yazı olarak ekleyebilir; adımlar için WordPress haber çekme ve RSS ile haber yayınlama rehberine bakın. Ancak genel RSS eklentileri ajansın düzeltme ve iptal öneklerini anlamaz. Kategori eşleme, düzeltme, iptal ve embargo işleyen çözüm için YHA WordPress eklentisi daha uygundur.

Besleme kavramının temelleri RSS nedir? ve XML nedir? rehberlerinde.

Sıkça Sorulan Sorular

Yazar Haber Ajansı RSS beslemesi ücretsiz mi?

Hayır; RSS, abonelik paketine sözleşmeyle eklenen bir çıkıştır. Paketler için abonelik ve paketler sayfasına bakabilirsiniz.

YHA RSS ile Atom arasında içerik farkı var mı?

Haber içeriği aynıdır; fark yalnızca biçimdedir. Biçimi çıkış profilinde seçersiniz.

Beslemeyi ne sıklıkla okumalıyım?

En sık dakikada bir okuyun ve ETag ile koşullu istek kullanın. Saniyeler içinde bildirim istiyorsanız webhook ya da anlık akış kullanın.

Beslemede eski haberler neden görünmüyor?

Besleme son 50 öğeyi, en çok 48 saat geriye kadar taşır. Daha eski haberler için YHA API'deki haber listesi ve arama uçlarını kullanın.

Beslemeye token ya da kullanıcı adı eklemem gerekir mi?

Hayır. YHA beslemesi anahtarsızdır; erişim kodu adresin içindedir. Bu yüzden adresi gizli tutun, sızarsa erişim kodunu yenileyin.