RSS kanály
RSS je nejstarší a stále nejspolehlivější způsob, jak sledovat nový obsah — bez algoritmu, bez účtu a bez toho, aby vám někdo rozhodoval, co uvidíte. Stačí adresu kanálu vložit do čtečky. Kromě hlavního kanálu nabízíme i samostatné kanály k jednotlivým osobnostem a hotové šablony, kterými si výpis článků vložíte na vlastní web.
Hlavní kanál
Všechny nově publikované články, nejnovější nahoře.
https://rubriky.cz/rss.xml
Adresu vložte do libovolné čtečky — například Feedly, Inoreader, NetNewsWire nebo Mozilla Thunderbird. Kanál se obnovuje průběžně, změny se v něm projeví do 15 minut.
Kanály k osobnostem
Zajímá vás jen konkrétní člověk? Každá osobnost má vlastní kanál, který obsahuje pouze články, kde se o ní mluví. Adresa má vždy stejný tvar:
https://rubriky.cz/rss/slug-osobnosti.xml
https://rubriky.cz/rss/petr-pavel.xml
https://rubriky.cz/rss/donald-trump.xml
https://rubriky.cz/rss/andrej-babis.xml
https://rubriky.cz/rss/filip-turek.xml
https://rubriky.cz/rss/tucker-carlson.xml
https://rubriky.cz/rss/petr-macinka.xml
https://rubriky.cz/rss/alena-schillerova.xml
https://rubriky.cz/rss/petr-fiala.xml
https://rubriky.cz/rss/viktor-orban.xml
https://rubriky.cz/rss/benjamin-netanjahu.xml
https://rubriky.cz/rss/charlie-kirk.xml
https://rubriky.cz/rss/epstein.xml
https://rubriky.cz/rss/milos-vystrcil.xml
https://rubriky.cz/rss/petr-drulak.xml
https://rubriky.cz/rss/tomio-okamura.xml
https://rubriky.cz/rss/vaclav-klaus.xml
https://rubriky.cz/rss/bernd-posselt.xml
https://rubriky.cz/rss/chase-hughes.xml
https://rubriky.cz/rss/igor-chaun.xml
https://rubriky.cz/rss/jd-vance.xml
https://rubriky.cz/rss/jindrich-rajchl.xml
https://rubriky.cz/rss/vit-rakusan.xml
https://rubriky.cz/rss/adam-sejna.xml
https://rubriky.cz/rss/anthony-fauci.xml
https://rubriky.cz/rss/petr-holec.xml
https://rubriky.cz/rss/vaclav-moravec.xml
https://rubriky.cz/rss/daniel-davis.xml
https://rubriky.cz/rss/elon-musk.xml
https://rubriky.cz/rss/lubomir-zaoralek.xml
https://rubriky.cz/rss/mikulas-minar.xml
https://rubriky.cz/rss/vaclav-havel.xml
https://rubriky.cz/rss/keir-starmer.xml
https://rubriky.cz/rss/ladislav-jakl.xml
https://rubriky.cz/rss/libor-vondracek.xml
https://rubriky.cz/rss/milos-zeman.xml
https://rubriky.cz/rss/christopher-nolan.xml
https://rubriky.cz/rss/ivan-fila.xml
https://rubriky.cz/rss/jan-lipavsky.xml
https://rubriky.cz/rss/karel-havlicek.xml
https://rubriky.cz/rss/ondrej-prokop.xml
https://rubriky.cz/rss/patrik-nacher.xml
https://rubriky.cz/rss/petr-kolar.xml
https://rubriky.cz/rss/petr-zantovsky.xml
https://rubriky.cz/rss/radim-fiala.xml
https://rubriky.cz/rss/zuzana-mrazova.xml
Kanál si takto můžete sestavit i pro libovolné jiné téma, nejen pro osobnosti. Potřebný
slug najdete v adrese stránky štítku — u adresy rubriky.cz/tag/energetika
je to energetika, kanál tedy vede na rubriky.cz/rss/energetika.xml.
Nastavení počtu článků
Kanály standardně vracejí 25 nejnovějších článků. Kratší výpis získáte parametrem limit:
| Parametr | Povolené hodnoty | Příklad |
|---|---|---|
limit |
3, 5, 10, 15, 20, 25 (výchozí 25) | rubriky.cz/rss/petr-pavel.xml?limit=3 |
Jiná hodnota než povolená se automaticky zaokrouhlí na nejbližší z nich — kanál kvůli překlepu nikdy neselže.
Widget na váš web
Chcete na svém webu ukazovat nejnovější články k určité osobnosti? Zkopírujte si jednu z hotových šablon. Obě jsou bez knihoven a závislostí, obě si výsledek ukládají do vlastní cache na 15 minut a obě mají v patičce uvedený zdroj.
Jak to vypadá
Načítám ukázku…
Šablona pro PHP doporučeno
Funkci vložte do svého projektu a zavolejte ji tam, kde má být výpis. Cache se ukládá do dočasného adresáře serveru, takže návštěvnost vašeho webu nezatíží ani nás, ani vás. Výpis vzniká na serveru, takže ho vidí i vyhledávače a AI asistenti — na rozdíl od varianty v JavaScriptu, kterou roboti nespouštějí.
<?php
/**
* RSS widget Rubriky.cz — vrátí HTML se seznamem nejnovějších článků.
* Použití: echo rubriky_rss_widget('petr-pavel', 3);
* echo rubriky_rss_widget(); // hlavní feed
*/
function rubriky_rss_widget($tag = '', $limit = 3) {
$ttl = 900; // 15 min serverové cache — bez ní by každé zobrazení stránky
// znamenalo dotaz na rubriky.cz; prosíme neponižovat
$url = $tag !== ''
? 'https://rubriky.cz/rss/' . rawurlencode($tag) . '.xml?limit=' . (int) $limit
: 'https://rubriky.cz/rss.xml?limit=' . (int) $limit;
$cache = sys_get_temp_dir() . '/rubriky-rss-' . md5($url) . '.xml';
$xml = '';
if (is_file($cache) && filemtime($cache) > time() - $ttl) {
$xml = (string) file_get_contents($cache);
} else {
$ctx = stream_context_create(array('http' => array(
'timeout' => 5,
'header' => "User-Agent: rubriky-widget-php\r\n",
)));
$fresh = @file_get_contents($url, false, $ctx);
if ($fresh !== false && $fresh !== '') {
$xml = $fresh;
@file_put_contents($cache, $fresh, LOCK_EX);
} elseif (is_file($cache)) {
$xml = (string) file_get_contents($cache); // výpadek → prošlá cache
}
}
if ($xml === '') return '';
libxml_use_internal_errors(true);
$rss = simplexml_load_string($xml);
libxml_clear_errors();
if (!$rss || !isset($rss->channel)) return '';
$title = str_replace('Rubriky.cz', 'Rubriky', (string) $rss->channel->title);
$out = '<div class="rubriky-widget">';
$out .= '<h3>' . htmlspecialchars($title, ENT_QUOTES, 'UTF-8') . '</h3>';
$out .= '<ul>';
foreach ($rss->channel->item as $item) {
$link = trim((string) $item->link);
if (strpos($link, 'https://rubriky.cz/') !== 0) continue; // jen odkazy na zdroj
$out .= '<li><a href="' . htmlspecialchars($link, ENT_QUOTES, 'UTF-8')
. '" target="_blank" rel="noopener">'
. htmlspecialchars((string) $item->title, ENT_QUOTES, 'UTF-8') . '</a>';
$ts = strtotime((string) $item->pubDate);
if ($ts) {
$out .= '<span class="rubriky-widget__date">' . date('j. n. Y', $ts) . '</span>';
}
$out .= '</li>';
}
$out .= '</ul>';
/* Patička s uvedením zdroje je podmínkou užití widgetu — ponechte ji, prosím. */
$out .= '<div class="rubriky-widget__footer">Zdroj: rubriky.cz/rss</div>';
$out .= '</div>';
return $out;
}
Šablona pro JavaScript
Pro weby, kam vlastní PHP kód přidat nejde. Vložte na místo, kde má výpis být, a na
začátku nastavte TAG (slug osobnosti, prázdné = hlavní kanál)
a LIMIT. Obsah se doplní až v prohlížeči, takže se do indexu vyhledávačů
nedostane.
<div id="rubriky-widget"></div>
<script>
(function () {
var TAG = 'petr-pavel'; // slug osobnosti; prázdný řetězec '' = hlavní feed
var LIMIT = 3; // 3, 5, 10, 15, 20 nebo 25
var TARGET = 'rubriky-widget'; // id cílového elementu
var TTL = 15 * 60 * 1000; // 15 min — prosíme neponižovat, šetří náš i váš server
var url = TAG
? 'https://rubriky.cz/rss/' + TAG + '.xml?limit=' + LIMIT
: 'https://rubriky.cz/rss.xml?limit=' + LIMIT;
var key = 'rubriky-rss-' + TAG + '-' + LIMIT;
function render(xml) {
var box = document.getElementById(TARGET);
if (!box) return;
var doc = new DOMParser().parseFromString(xml, 'text/xml');
var items = doc.querySelectorAll('item');
if (!items.length) return;
var wrap = document.createElement('div');
wrap.className = 'rubriky-widget';
var head = document.createElement('h3');
var chTitle = doc.querySelector('channel > title');
head.textContent = (chTitle ? chTitle.textContent : 'Rubriky').replace('Rubriky.cz', 'Rubriky');
wrap.appendChild(head);
var ul = document.createElement('ul');
Array.prototype.forEach.call(items, function (item) {
var linkEl = item.querySelector('link');
var href = linkEl ? linkEl.textContent.trim() : '';
if (href.indexOf('https://rubriky.cz/') !== 0) return; // jen odkazy na zdroj
var titleEl = item.querySelector('title');
var li = document.createElement('li');
var a = document.createElement('a');
a.href = href;
a.target = '_blank';
a.rel = 'noopener';
a.textContent = titleEl ? titleEl.textContent : href; // textContent = žádné XSS
li.appendChild(a);
var dateEl = item.querySelector('pubDate');
if (dateEl) {
var d = new Date(dateEl.textContent);
if (!isNaN(d.getTime())) {
var span = document.createElement('span');
span.className = 'rubriky-widget__date';
span.textContent = d.toLocaleDateString('cs-CZ');
li.appendChild(span);
}
}
ul.appendChild(li);
});
wrap.appendChild(ul);
/* Patička s uvedením zdroje je podmínkou užití widgetu — ponechte ji, prosím. */
var foot = document.createElement('div');
foot.className = 'rubriky-widget__footer';
foot.textContent = 'Zdroj: rubriky.cz/rss';
wrap.appendChild(foot);
box.innerHTML = '';
box.appendChild(wrap);
}
var cached = null;
try { cached = JSON.parse(localStorage.getItem(key) || 'null'); } catch (e) {}
if (cached && cached.xml && (Date.now() - cached.ts) < TTL) { render(cached.xml); return; }
fetch(url)
.then(function (r) { return r.ok ? r.text() : Promise.reject(r.status); })
.then(function (xml) {
try { localStorage.setItem(key, JSON.stringify({ ts: Date.now(), xml: xml })); } catch (e) {}
render(xml);
})
.catch(function () { if (cached && cached.xml) render(cached.xml); });
})();
</script>
Styly (pro obě varianty)
Záměrně střídmé — barvy si upravte podle svého webu.
.rubriky-widget { border: 1px solid #e0e0e0; border-radius: 6px; padding: 1rem 1.25rem;
font-family: system-ui, -apple-system, sans-serif; max-width: 100%; }
.rubriky-widget h3 { margin: 0 0 .75rem; font-size: 1rem; }
.rubriky-widget ul { list-style: none; margin: 0; padding: 0; }
.rubriky-widget li { padding: .45rem 0; border-bottom: 1px solid #f0f0f0; }
.rubriky-widget li:last-child { border-bottom: 0; }
.rubriky-widget a { color: inherit; text-decoration: none; }
.rubriky-widget a:hover { text-decoration: underline; }
.rubriky-widget__date { display: block; font-size: .8rem; opacity: .6; }
.rubriky-widget__footer { margin-top: .75rem; font-size: .8rem; opacity: .7; }
Podmínky použití
Kanály i šablony můžete používat zdarma, na osobních i komerčních webech. Prosíme jen o tři věci:
- Ponechte patičku s uvedením zdroje. Je součástí obou šablon a je podmínkou jejich užití.
- Nesnižujte dobu cache pod 15 minut. Šablony ji mají nastavenou samy; častější dotazy nepřinesou čerstvější obsah, protože kanály se stejně obnovují jednou za 15 minut.
- Nepřebírejte plná znění článků. Kanály obsahují titulek a perex — ty jsou k volnému použití, celé texty ne.
Kanály poskytujeme tak, jak jsou, bez záruky dostupnosti. Nedaří se vám něco nastavit nebo chybí kanál k osobnosti, kterou sledujete? Napište nám přes kontaktní formulář.
Časté dotazy
Jak často se kanál obnovuje?
Nový článek se v kanálu objeví do 15 minut od publikace, obvykle dřív.
Proč kanál vrací jen 25 článků?
Delší kanály zbytečně zatěžují čtečky i server. Starší články najdete na stránce příslušného štítku nebo v mapě webu.
Chybí kanál k osobnosti, kterou sleduji.
Kanál existuje ke každému štítku, i když není v seznamu výše — stačí znát jeho slug. Pokud osobnost nemá vlastní štítek, napište nám přes kontakt.
Funguje kanál i pro celé rubriky?
Zatím ne. K dispozici je hlavní kanál a kanály ke štítkům. Kanály k rubrikám zvažujeme.
Technická poznámka: kanály se odesílají s hlavičkami Cache-Control
a ETag, takže se čtečka i widget zeptají jen na to, co se opravdu změnilo.