Dokumentace

ATFeed RSS

Veřejné RSS kanály s informacemi z českých institucí a dalších veřejných zdrojů. Přidejte si kanál do své čtečky, nebo ho použijte jako datový zdroj ve vlastní aplikaci.

Co AtFeed RSS nabízí

📰Všechny aktuální příspěvky
🏛️Příspěvky podle zdroje
🗂️Příspěvky podle kategorie
🏷️Příspěvky podle tématu
👤Příspěvky podle osoby
🏢Příspěvky podle organizace
⚙️Vlastní kanály podle vašeho výběru (připavované)
🤖AI shrnutí a klíčové body
🖼️Obrázek článku
🔗Odkaz na původní zdroj
📊Strukturovaná metadata pro vývojáře

Pro uživatele RSS čteček

Pokud používáte Feedly, Inoreader, Thunderbird, NewsBlur nebo jinou RSS čtečku, stačí do ní přidat URL požadovaného kanálu.

Všechny příspěvky
https://atfeed.cz/rss
Výchozí kanál obsahuje maximálně 20 nejnovějších příspěvků a je určený především pro běžné RSS čtečky.
RSS čtečka
atfeed.cz/rss
20 nejnovějších příspěvků
AI shrnutí + metadata + obrázek

Veřejné RSS kanály

AtFeed umožňuje odebírat pouze určitou část obsahu — podle zdroje, kategorie, osoby nebo organizace.

Podle zdroje

/rss/source/{slug}

Například:

slug je URL identifikátor zdroje — malá písmena, bez diakritiky, mezery nahrazené pomlčkou.

Zdroj: Ministerstvo zemědělství
Slug: ministerstvo-zemedelstvi
RSS: /rss/source/ministerstvo-zemedelstvi

Podle kategorie

/rss/category/{slug}

Kategorie popisuje hlavní oblast, které se příspěvek týká. Jsou určovány během zpracování obsahu AtFeed.

Podle tématu

/rss/topic/{slug}

Téma je vhodné pro sledování konkrétní oblasti bez ohledu na zdroj. Aktuálně se /topic/ chová stejně jako odpovídající kategoriální filtrace.

Podle osoby

/rss/person/{slug}

Kanál obsahuje příspěvky, ve kterých byla identifikována konkrétní osoba.

Nastavení RSS kanálu

Každý veřejný RSS endpoint podporuje dva základní parametry.

Parametr Hodnoty Výchozí Maximum
limit 1–20 20 20
format reader, plain reader

Limit výsledků

Například /rss?limit=5 vrátí pouze 5 nejnovějších příspěvků:

Pro vývojáře

Pokud chcete obsah AtFeed dále zpracovávat ve vlastní aplikaci, použijte parametr format=plain.

Strukturovaná data
https://atfeed.cz/rss?format=plain
Standardní RSS elementy zůstávají zachované. Metadata AtFeed jsou v samostatných XML elementech s namespacem atfeed:.

Výhodou je, že nemusíte parsovat HTML z popisu článku. Můžete přímo načíst například:

atfeed:summary atfeed:keyPoint atfeed:person atfeed:organization atfeed:category atfeed:location

Formát reader

Výchozí formát, určený především pro klasické RSS čtečky. Obsahuje:

  • Standardní RSS metadata
  • Textový popis (plain text)
  • HTML obsah článku (content:encoded)
  • AI shrnutí a klíčové body
  • Metadata — lokalita, osoby, organizace
  • Odkaz na původní článek
  • Obrázek článku (enclosure)

Příklad itemu

<item>
  <title>Nová opatření vlády…</title>
  <link>https://atfeed.cz/posts/314</link>
  <guid isPermaLink="false">tag:atfeed.cz,2026:post/314</guid>
  <pubDate>Fri, 18 Sep 2026 14:43:48 +0200</pubDate>
  <source url="https://example.cz/rss">Vláda ČR</source>
  <category>zdravotnictví</category>

  <description>Vláda ČR · 18. 9. 2026 14:43

AI shrnutí:
Stručné shrnutí obsahu článku…

Klíčové body:
• První důležitá informace
• Druhá důležitá informace
• Třetí důležitá informace

Původní článek: https://example.cz/clanek</description>

  <content:encoded><![CDATA[
    <p><small>Vláda ČR · 18. 9. 2026 14:43</small></p>
    <h3>AI shrnutí</h3>
    <p>Stručné shrnutí…</p>
    <h3>Klíčové body</h3>
    <ul><li>…</li></ul>
    <p><a href="https://example.cz/clanek">Přečíst původní článek →</a></p>
  ]]></content:encoded>

  <enclosure url="https://atfeed.cz/og/article/314.png"
             type="image/png" length="0"/>
</item>

description

Plain-text verze článku, bez HTML. Vhodná pro jednoduché čtečky, terminálové klienty, RSS-to-email služby.

content:encoded

Sémantické HTML — nadpisy, odstavce, seznamy, odkazy. Bez inline stylů, aby si čtečka mohla obsah zobrazit podle vlastního vzhledu.

enclosure

OG obrázek článku, který dynamicky generujeme z titulku, zdroje, lokality a identifikovaných osob.

Formát plain

Strukturovaná data v samostatných XML elementech. Standardní RSS elementy zůstávají, ale informace specifické pro AtFeed jsou dostupné přímo, bez nutnosti parsovat HTML.

<item>
  <title>Nová opatření vlády…</title>
  <link>https://atfeed.cz/posts/314</link>
  <pubDate>Fri, 18 Sep 2026 14:43:48 +0200</pubDate>

  <atfeed:atfeedUrl>https://atfeed.cz/posts/314</atfeed:atfeedUrl>
  <atfeed:originalUrl>https://example.cz/clanek</atfeed:originalUrl>
  <atfeed:publishedAt>2026-09-18T14:43:48+02:00</atfeed:publishedAt>
  <atfeed:sourceName>Vláda ČR</atfeed:sourceName>
  <atfeed:sourceUrl>https://example.cz/rss</atfeed:sourceUrl>

  <atfeed:summary>Stručné AI shrnutí článku.</atfeed:summary>

  <atfeed:keyPoint>První důležitá informace.</atfeed:keyPoint>
  <atfeed:keyPoint>Druhá důležitá informace.</atfeed:keyPoint>

  <atfeed:category>zdravotnictví</atfeed:category>
  <atfeed:location>Praha</atfeed:location>
  <atfeed:person>Andrej Babiš</atfeed:person>
  <atfeed:organization>Úřad vlády České republiky</atfeed:organization>
</item>

AtFeed XML namespace

Elementy specifické pro AtFeed používají namespace:

https://atfeed.cz/ns/rss/1.0

V XML je namespace deklarován například:

xmlns:atfeed="https://atfeed.cz/ns/rss/1.0"

Namespace umožňuje vývojářům jednoznačně rozlišit vlastní elementy AtFeed od standardních RSS elementů. Není třeba ho registrovat u žádné centrální služby — XML parser pracuje s URI namespace přímo z dokumentu.

Přehled elementů

Element Typ Počet Popis
atfeed:atfeedUrlURL1Kanonická URL článku na AtFeed
atfeed:originalUrlURL1URL původního článku
atfeed:publishedAtISO 86010–1Datum publikace
atfeed:sourceNamestring0–1Název zdroje
atfeed:sourceUrlURL0–1URL zdrojového RSS
atfeed:summarystring0–1AI shrnutí
atfeed:keyPointstring0–NKlíčové body
atfeed:categorystring0–1Kategorie
atfeed:locationstring0–1Identifikovaná lokalita
atfeed:personstring0–NIdentifikované osoby
atfeed:organizationstring0–NIdentifikované organizace
atfeed:aiProviderstring0–1Poskytovatel AI
atfeed:aiModelstring0–1Použitý AI model
atfeed:aiPromptVersionstring0–1Verze AI promptu
atfeed:aiGeneratedAtISO 86010–1Čas vytvoření AI zpracování

Příklady pro vývojáře

Python (feedparser)

import feedparser

feed = feedparser.parse(
    "https://atfeed.cz/rss?format=plain"
)

print(f"Kanál: {feed.feed.title}")
print(f"Příspěvků: {len(feed.entries)}")

for entry in feed.entries:
    print(f"\n# {entry.title}")
    print(f"URL: {entry.link}")

    summary = entry.get("atfeed_summary")
    if summary:
        print(f"Shrnutí: {summary}")

    key_points = entry.get("atfeed_keypoint", [])
    if isinstance(key_points, str):
        key_points = [key_points]

    for point in key_points:
        print(f" • {point}")

Python + lxml

from lxml import etree
import requests

NS = {"atfeed": "https://atfeed.cz/ns/rss/1.0"}

response = requests.get("https://atfeed.cz/rss?format=plain")
response.raise_for_status()

root = etree.fromstring(response.content)

for item in root.xpath("//item"):
    title = item.findtext("title")
    summary = item.findtext("atfeed:summary", namespaces=NS)
    category = item.findtext("atfeed:category", namespaces=NS)

    people = [
        el.text for el in item.findall("atfeed:person", namespaces=NS)
    ]
    organizations = [
        el.text for el in item.findall("atfeed:organization", namespaces=NS)
    ]

    print(title, category, summary, people, organizations)

JavaScript / Node.js

const { XMLParser } = require("fast-xml-parser");

const parser = new XMLParser({
    ignoreAttributes: false,
    isArray: (name) => [
        "item",
        "atfeed:keyPoint",
        "atfeed:person",
        "atfeed:organization",
        "category"
    ].includes(name)
});

const response = await fetch(
    "https://atfeed.cz/rss?format=plain"
);
const xml = await response.text();
const feed = parser.parse(xml);

for (const item of feed.rss.channel.item) {
    console.log(item.title);
    console.log(item["atfeed:summary"]);
    console.log(item["atfeed:keyPoint"] || []);
}

PHP (SimpleXML)

<?php

$xml = simplexml_load_file(
    'https://atfeed.cz/rss?format=plain'
);

$xml->registerXPathNamespace(
    'atfeed',
    'https://atfeed.cz/ns/rss/1.0'
);

foreach ($xml->channel->item as $item) {
    echo $item->title . PHP_EOL;

    $atfeed = $item->children(
        'https://atfeed.cz/ns/rss/1.0'
    );

    echo 'Kategorie: ' . $atfeed->category . PHP_EOL;
    echo 'Shrnutí: ' . $atfeed->summary . PHP_EOL;
    echo PHP_EOL;
}

cURL

# Zobrazit RSS
curl -s 'https://atfeed.cz/rss'

# Formátovat XML
curl -s 'https://atfeed.cz/rss' | xmllint --format -

# Pouze plain formát
curl -s 'https://atfeed.cz/rss?format=plain'

# RSS podle osoby
curl -s 'https://atfeed.cz/rss/person/andrej-babis?format=plain'

Vlastní RSS kanály

Přihlášení uživatelé AtFeed si mohou vytvořit vlastní RSS kanály, které kombinují filtry podle zdroje, kategorie, tématu, osoby a organizace.

Jak filtry fungují

  • Uvnitř jednoho typu platí OR — např. Root.cz OR Lupa.cz
  • Mezi typy platí AND — např. (Root.cz OR Lupa.cz) AND (Technologie) AND (AI)
  • Prázdný filtr = žádné omezení (např. bez zdroje = články ze všech zdrojů)
  • Alespoň jeden filtr musí být vybrán, jinak by kanál byl jen kopií /rss

Správa kanálů

V uživatelském účtu otevřete /account/rss. Odtud můžete:

  • Vytvořit nový kanál
  • Upravit filtry existujícího kanálu
  • Kopírovat URL kanálu pro vložení do RSS čtečky
  • Deaktivovat — URL přestane vracet obsah (HTTP 410)
  • Aktivovat zpět
  • Regenerovat URL — vygeneruje nový token, stará URL okamžitě přestane fungovat
  • Smazat — trvale odstraní konfiguraci

Bezpečnost URL

Vlastní RSS URL funguje jako přístupový token. V databázi ukládáme pouze jeho SHA-256 hash — plain token zobrazíme jen jednou, při vytvoření nebo regeneraci.

Limity a cache

  • Limit výsledků: 10 / 20 / 30 / 50 / 100 článků
  • Cache: Cache-Control: private, max-age=60, must-revalidate
  • Podporované formáty: ?format=reader (výchozí) a ?format=plain
  • Parametr ?limit=... je ignorován — limit je součástí konfigurace kanálu

Chování a cache

Aktualizace a cache

Veřejné RSS kanály používají cache:

Cache-Control: public, max-age=60, must-revalidate

Kanály jsou aktualizovány přibližně každou minutu. V XML odpovědi je doporučení:

<ttl>1</ttl>

AtFeed omezuje počet položek v jednom kanálu na 20. Toto omezení je záměrné — RSS není určeno ke stahování archivu.

Neexistující zdroj

Pokud požadujete například /rss/source/neexistujici-zdroj, AtFeed vrátí prázdný RSS kanál s HTTP 200. Toto chování je záměrné — některé RSS čtečky interpretují 404 jako trvale nefunkční kanál a přestanou ho kontrolovat.

Dočasná nedostupnost

Pokud interní služba potřebná pro sestavení RSS není dostupná, endpoint může vrátit 503 Service Unavailable s RSS odpovědí. Cílem je, aby dočasná chyba nezpůsobila nekontrolované selhání RSS služby.

Autentizace

Veřejné RSS kanály nevyžadují přihlášení, API klíč ani jinou autentizaci. Jsou dostupné přes HTTPS na https://atfeed.cz/rss.

Vlastní RSS kanály jsou navázané na AtFeed účet a používají unikátní URL token. RSS čtečka se k vlastnímu kanálu nepřihlašuje.

Data a původ obsahu

AtFeed zpracovává informace z veřejně dostupných zdrojů. AtFeed není původcem publikovaných zpráv.

U jednotlivých položek proto poskytujeme:

  • atfeed:originalUrl — odkaz na původní článek
  • atfeed:atfeedUrl — odkaz na odpovídající stránku na AtFeed

Pokud AtFeed RSS používáte ve vlastní aplikaci, doporučujeme zachovat odkaz na původní zdroj.

Doporučení pro vývojáře

  • Používejte guid jako identifikátor položky, nikoliv její pořadí v RSS.
  • Ukládejte publishedAt, pokud potřebujete pracovat s časem publikace.
  • Pro zpracování používejte format=plain.
  • Nezávisle na počtu položek počítejte s tím, že některé volitelné elementy mohou chybět.
  • atfeed:keyPoint, atfeed:personatfeed:organization mohou obsahovat více hodnot.
  • Ignorujte neznámé atfeed: elementy — pro kompatibilitu s budoucími verzemi.
  • Respektujte HTTP cache hlavičky a zbytečně neobnovujte RSS častěji než jednou za minutu.
  • Pro kompletní historický dataset nepoužívejte RSS — je určeno pro průběžné sledování.

Přehled dostupných slugů

Pro zjištění, jaké slugy jsou aktuálně dostupné, můžete použít endpoint /rss/slugs. Vrací JSON se seznamem všech zdrojů, kategorií, osob a organizací, které se v příspěvcích objevují.

Přehled slugů
https://atfeed.cz/rss/slugs
Vrací JSON — vhodné pro dynamické načtení dostupných filtrů ve vaší aplikaci.

Struktura odpovědi

{
  "total_articles": 314,
  "generated_at": "2026-09-18T16:30:00+02:00",
  "sources": [
    { "name": "Vláda ČR", "slug": "vlada-cr" },
    { "name": "Ministerstvo zemědělství", "slug": "ministerstvo-zemedelstvi" }
  ],
  "categories": [
    { "name": "zdravotnictví", "slug": "zdravotnictvi" },
    { "name": "zahraničí", "slug": "zahranici" }
  ],
  "people": [
    { "name": "Andrej Babiš", "slug": "andrej-babis" }
  ],
  "organizations": [
    { "name": "Úřad vlády České republiky", "slug": "urad-vlady-ceske-republiky" }
  ],
  "endpoints": {
    "all": "https://atfeed.cz/rss",
    "source": "https://atfeed.cz/rss/source/{slug}",
    "category": "https://atfeed.cz/rss/category/{slug}",
    "topic": "https://atfeed.cz/rss/topic/{slug}",
    "person": "https://atfeed.cz/rss/person/{slug}",
    "organization": "https://atfeed.cz/rss/organization/{slug}"
  }
}

Použití

Ruční použití: otevřete /rss/slugs v prohlížeči a najděte slug, který potřebujete.

Programové použití: endpoint můžete použít pro dynamické načtení dostupných filtrů (např. našeptávač zdrojů, dropdown kategorií, filtrování osob).

Příklad — Python

import requests

response = requests.get("https://atfeed.cz/rss/slugs")
data = response.json()

# Načteme dostupné zdroje
for source in data["sources"]:
    print(f"{source['name']} → {source['slug']}")

# Sestavíme URL pro konkrétní zdroj
first_source = data["sources"][0]
url = f"https://atfeed.cz/rss/source/{first_source['slug']}"
print(f"RSS: {url}")

Příklad — JavaScript

const response = await fetch("https://atfeed.cz/rss/slugs");
const data = await response.json();

// Našeptávač pro zdroje
const sourceOptions = data.sources.map(
    (s) => { value: s.slug, label: s.name }
);

// Sestavíme RSS URL
console.log(
    `https://atfeed.cz/rss/source/${data.sources[0].slug}`
);

Cache

Endpoint má cache 300 sekund (5 minut). Data se obnovují pomaleji než RSS kanály, protože přehled slugů se mění méně často.

Přehled RSS endpointů

Účel Endpoint
Všechny příspěvky/rss
Podle zdroje/rss/source/{slug}
Podle kategorie/rss/category/{slug}
Podle tématu/rss/topic/{slug}
Podle osoby/rss/person/{slug}
Podle organizace/rss/organization/{slug}
Vlastní kanál/rss/custom/{token}

Parametry:

  • ?limit=1–20
  • ?format=reader
  • ?format=plain

Parametry lze kombinovat:

https://atfeed.cz/rss/category/technologie?limit=10&format=plain

Potřebujete něco dalšího?

📰

Pro běžné používání

Přidejte https://atfeed.cz/rss do své RSS čtečky.

Otevřít /rss
🎯

Pro konkrétní oblast

Použijte RSS podle zdroje, kategorie, tématu, osoby nebo organizace.

Zobrazit kanály
💻

Pro vlastní aplikaci

Použijte format=plain a namespace atfeed:.

Ukázka plain
⚙️

Pro vlastní kombinaci

Přihlaste se do AtFeed a vytvořte si vlastní RSS kanál.

Přihlásit se