RSS kanály jsou stále živým způsobem, jak se vyrovnat s rozptýleností obsahu po internetu — oborové zpravodajství, konkurenční blogy, tiskové agentury i interní podniková hlášení publikují své aktualizace právě tímto kanálem. Modul /rss-feed proto slouží jako jednotné místo, kam si organizace napojí všechny externí zdroje, které potřebuje sledovat. Každý takový zdroj má své tempo a svou strukturu a úkolem modulu je je všechny zkonsolidovat tak, aby redakce nemusela otevírat desítky záložek v prohlížeči. Stažený obsah zůstává v systému jako zdrojová data pro další zpracování — typicky slouží jako inspirace, podklad pro kurátorskou práci nebo vstup do navazujícího workflow, které dokáže z RSS položky udělat třeba plnohodnotný článek v redakčním systému.
Přehled RSS kanálů
Hlavní tabulka zobrazuje všechny kanály, které má organizace napojené, a u každého z nich ukazuje informace potřebné pro průběžný monitoring. V řádku uvidí administrátor název a URL zdroje, jeho stav (aktivní / neaktivní), poslední synchronizaci v relativním formátu spolu s HTTP kódem odpovědi, počet importovaných článků a datum nejnovějšího z nich, datum nejstaršího dostupného článku (užitečné pro odhad historie pokrytí) a datum přidání kanálu do systému. Tabulka se automaticky obnovuje každých 30 sekund, takže výsledek právě běžící synchronizace se projeví bez ručního zásahu.
Řazení při hromadné synchronizaci
Při spouštění hromadné synchronizace systém upřednostňuje kanály, které ještě nebyly nikdy stažené — ty se dostanou na řadu jako první, aby co nejrychleji začaly produkovat data. Následují kanály s úspěšnou poslední synchronizací a nakonec kanály s chybou. V rámci skupiny se vždy jako první zpracovává ten zdroj, který byl naposledy synchronizován nejdříve. Díky tomuto rozvrhu dostane každý kanál po nějaké době svou šanci a žádný z nich nezůstává dlouho bez aktualizace.
Přidání nového kanálu
Tlačítko Add v pravém horním rohu otevře formulář pro zadání URL nového RSS zdroje a jeho pojmenování. Modul má při přidávání zajímavou optimalizaci: RSS kanály jsou sdílené napříč organizacemi. Při založení systém zkontroluje, zda už daná URL existuje, a pokud ano, vytvoří jen novou vazbu mezi organizací a existujícím kanálem, takže se napojíte na už nashromážděná data. Pokud URL v systému dosud není, vznikne zcela nový záznam. V obou případech se kanál pro danou organizaci aktivuje.
První synchronizace se neprovede automaticky — je potřeba ji spustit buď individuálně tlačítkem Synchronizovat tento kanál v kontextovém menu, nebo hromadným Synchronizovat všechny kanály v horní liště. Důvodem této opatrnosti je fakt, že zdroj může být v okamžiku založení nedostupný a tato pauza dává administrátorovi prostor k rozmyšlení.
ℹ️ Sdílení kanálů je záměrné a výhodné — pokud už daný zdroj v systému někdo používá, vaše organizace se napojí na už stažená data a ušetří se síťový provoz i nároky na cílový server.
Detail kanálu
Po kliknutí na kanál se otevře detail se záložkou Články, která zobrazuje všechny příspěvky importované z tohoto zdroje. U každého článku je viditelný název, autor, URL, datum publikace převzaté z RSS a datum objevení, tedy okamžik, kdy jej systém poprvé stáhl. Rozdíl mezi oběma daty bývá užitečný: datum publikace říká, kdy zdroj článek sám vydal, zatímco datum objevení odpovídá tomu, kdy se o něm dozvěděl náš systém. Pokud se RSS kanál přidá se zpožděním, jsou tyto dva údaje výrazně jiné a napomáhají pochopit časový kontext.
Jak funguje synchronizace
Synchronizace je proces, při kterém systém stáhne aktuální obsah RSS adresy a aktualizuje lokální databázi. Začíná stažením URL s přísným časovým limitem 15 sekund — pokud zdroj do té doby neodpoví nebo vrátí chybu, systém si uloží HTTP kód a čas pokusu, ale obsah se nemění. Když obsah dorazí úspěšně, systém spočítá jeho kontrolní součet (hash) a porovná ho s hashem z poslední úspěšné synchronizace. Pokud se obsah od posledně nezměnil, aktualizuje se jen čas a HTTP kód a články se vůbec neprocházejí znovu — tato optimalizace šetří výpočetní výkon při častých synchronizacích zdrojů, které publikují nepravidelně.
Pokud je obsah nový, systém ho rozparsuje jako XML (RSS nebo Atom — oba formáty jsou podporované) a projde všechny položky. Každý článek je identifikován svým jedinečným GUID, nebo URL v případě, že GUID chybí. Nové články se přidávají, existující se aktualizují (název, popis, autor, datum publikace). Článek, který v novém XML už není (například protože zdroj archivuje jen posledních deset položek), zůstává v databázi zachován — systém historii aktivně nemaže, aby redakce měla k dispozici kompletní časovou osu.
Podporované formáty
Systém rozpoznává a parsuje dva formáty. RSS 2.0 je klasický RSS formát se strukturou <channel><item>, který je standardem zpravodajských webů. Atom je alternativní formát používaný například WordPressem. U obou se extrahují stejná pole: název, popis nebo shrnutí, autor (včetně dc:creator), datum publikace a URL článku. Jiné formáty — například JSON Feed — podporovány nejsou.
Akce nad kanálem
Modul nabízí na několika místech akce, které pokrývají běžnou správu. Synchronizovat všechny kanály v horní liště spouští kontrolu všech aktivních kanálů organizace naráz — to je typická akce, kterou administrátor spouští ráno nebo podle potřeby. Synchronizovat tento kanál v kontextovém menu řádku aktualizuje jen jeden vybraný kanál (užitečné po přidání nového zdroje nebo při pokusu o opravu chyby). Smazat odebere kanál z organizace — odstraní se pouze vazba, zatímco samotný záznam kanálu může existovat dál pro jiné organizace.
Monitoring chyb
Každá synchronizace zaznamená HTTP kód odpovědi, který velmi rychle prozradí, zda se zdrojem není něco v nepořádku. 200 znamená, že vše proběhlo v pořádku. 301 a 302 jsou přesměrování, která systém automaticky následuje. 403 značí, že server odmítl přístup (často kvůli restrikci podle User-Agent nebo IP adresy). 404 znamená, že zdroj neexistuje a URL je třeba opravit nebo kanál smazat. Kódy 500, 502 a 503 ukazují na chybu na straně zdrojového serveru, se kterou obvykle pomůže počkat a zkusit později. Prázdný sloupec pak znamená, že kanál ještě nikdy nebyl synchronizován.
Pokud parsování XML selže (například kvůli nevalidnímu formátu nebo poškozenému obsahu), systém si stažená data uloží do mezipaměti pro pozdější analýzu, ale nové články nepřidá. Všechny takové chyby se zapisují do interního logu s úrovní warning, takže je snadno dohledáte.
Neaktivní kanály
Kanál lze pro organizaci deaktivovat, aniž by se smazal. Neaktivní kanály nejsou zahrnuté v hromadné synchronizaci, zůstávají viditelné v seznamu se šedou vlaječkou a jejich dříve stažené články jsou dál dohledatelné. Deaktivace je vhodná všude tam, kde zdroj dočasně nefunguje a nechcete opakovaně zahlcovat log chybami, nebo kde kanál dlouhodobě produkuje obsah, který už není zajímavý — a přitom ho nechcete definitivně odstranit, protože se v budoucnu může hodit historie.
Duplicitní články
Články se identifikují kombinací kanálu a GUID. Pokud různé kanály publikují stejný článek (například když web publikuje do vlastního kanálu a zároveň do agregátora), systém jej importuje samostatně pro každý kanál — duplicita se kontroluje pouze v rámci jednoho kanálu. Když zdroj GUID nevyplňuje, použije se jako identifikátor URL článku.
⚠️ Pokud zdroj nečekaně změní strukturu GUID (například přejde na jiný formát identifikátorů), systém začne všechny jeho články považovat za nové a provede kompletní reimport. V takovém případě se doporučuje kanál raději odstranit a znovu vytvořit, aby historie zůstala přehledná.
Možné chyby při přidávání
Systém odmítne přidat kanál s prázdnou URL. Pokud URL neobsahuje validní RSS nebo Atom obsah, kanál se sice založí, ale při první synchronizaci dostane chybový HTTP kód. Validita zdroje se tedy ověří až při prvním pokusu o stažení — z toho důvodu se doporučuje ihned po přidání nového kanálu spustit synchronizaci a zkontrolovat výsledek.
Využití importovaných článků
Importované články se automaticky nepřevádějí do modulu Příspěvky — zůstávají v tabulce RSS kanálu jako zdrojová data. Dál s nimi lze pracovat (například automatickým převodem na vlastní příspěvek), ale to už je záležitost workflow a není součástí této stránky. Článek z RSS je tedy potenciální surovina, nikoli hotový redakční výstup.
Doporučené postupy
Při práci s RSS kanály se osvědčuje několik pravidel. Hromadnou synchronizaci spouštějte pravidelně — frekvence záleží na rytmu zdrojů, u zpravodajských serverů několikrát denně, u firemních blogů stačí jednou denně nebo méně. Sledujte HTTP kódy — pokud se u některého zdroje opakovaně objevuje 403 nebo 500, je na místě ho zkontrolovat nebo deaktivovat, aby nezatěžoval systém zbytečnými pokusy. Pojmenovávejte kanály přehledně — systém sice převezme název z RSS, ale ten se může lišit od toho, jak si zdroj vnitřně pojmenujete v administraci. A konečně nepřidávejte kanály s identickým obsahem — zbytečně to zatěžuje systém i zdrojové servery.
Struktura stažených dat
Každý stažený článek uchovává sadu metadat, která dohromady tvoří minimální popis potřebný pro další zpracování. Jde o jedinečný identifikátor (GUID) převzatý z RSS, URL odkazu vedoucího na originál, název (titulek), popis nebo shrnutí (podle zdroje může jít o perex nebo plný text), autora (pokud zdroj tuto informaci poskytuje), datum publikace převzaté z RSS a datum objevení, tedy okamžik, kdy systém článek poprvé stáhl.
Bezpečnost a ochrana
Stahování obsahu z externích zdrojů přináší rizika, před kterými se modul brání několika opatřeními. Na odpověď zdroje je nastavený patnáctisekundový časový limit, aby synchronizace neuvázla na pomalém nebo nefunkčním serveru. Systém ukládá pouze metadata článků, nikoli plný HTML obsah cílových stránek — ten zůstává dostupný jen přes URL. Všechny chyby synchronizace se navíc logují s úrovní warning, aby bylo možné je dohledat v přehledu logů a pravidelně monitorovat zdraví kanálů.
⚠️ Pokud RSS zdroj vyžaduje autentizaci (například HTTP Basic Auth nebo přihlášení), systém ho nedokáže stáhnout. Podporovány jsou pouze veřejně dostupné RSS a Atom kanály bez autentizační vrstvy.
Řešení problémů
V provozu modulu se opakuje několik typických problémů, se kterými se administrátor může setkat. Pokud se kanál nesynchronizuje, je prvním krokem kontrola HTTP kódu poslední synchronizace — ten obvykle řekne, co je špatně. Dalším krokem je otevřít URL v prohlížeči a ověřit, zda vrací validní XML; pokud ano, spusťte synchronizaci ručně a sledujte změnu HTTP kódu.
Pokud se články nepřidávají i přes úspěšnou synchronizaci, ověřte, že XML obsahuje buď pole <guid>, nebo alespoň <link> u každé položky. Bez identifikátoru systém položku ignoruje. Zkontrolujte také formát — RSS a Atom jsou podporovány, ostatní (například JSON Feed) ne.
Pokud se články duplikují, téměř jistě je příčinou to, že zdroj mezi synchronizacemi mění GUID (generuje náhodné identifikátory při každém vygenerování kanálu). Takové zdroje se doporučuje nepoužívat, protože při každé synchronizaci nafukují databázi o neexistující duplikáty.