RSS ve Atom
YHA Abone · Çıkışlar'da rss türünde çıkış açınca bir adres verilir:
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 daatom. 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>.descriptionspot,content:encodedtam metin (profilde kapatılabilir),pubDateservis zamanı,guid isPermaLink="false"=yha:<no>:s<surum>,categorykategori ve il.- Küçük resim açıksa
media:thumbnailveenclosure(72 saat geçerli imzalı adres). - Öğe bağlantısı (
link) yoktur; herkese açık haber sayfası yoktur. ETagveLast-Modifiedgönderilir;If-None-Match/If-Modified-Sinceile 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>
titlehaberin 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.descriptionspottur;content:encodedtam metni taşır (profilde kapatılabilir).pubDateservis zamanıdır.guidkalıcı bağlantı değildir veyha:<no>:s<surum>biçimindedir: haber numarasını ve sürümünü taşır.categorykategori ve ili verir.- Küçük resim açıksa
media:thumbnail(Media RSS) veenclosuregelir; adresler 72 saat geçerli, imzalı adreslerdir. - Öğede
linkyoktur; 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ı (
webya daorijinal) 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.