Feedly je skvělé, ale má to háček, Postupně zamykají věcí do placené verze a je to další cloudová služba, která kdykoliv může přestat existovat či fungovat. Zpracovávám zhruba 800 RSS zdrojů, takže právě tohle je dost důležitá část mého workflow. Dá se to nahradit lokálně?
Dá. Zkusil jsem toho víc, ale nakonec to vypadá, že rozumné řešení je FreshRSS. Ale pojďme to vzít od začátku.
Potřebujete RSS agregátor v kombinací s RSS čtečkou. Provozovaný lokálně, v mém případě ideálně QNAP NAS, ale může to být docker nebo přímo. Výběr je v zásadě z
- TT-RSS (Tiny Tiny RSS) je favorit řady lidí, ale nepodařilo se mi jí zprovoznit, ale možná to ještě časem zkusím znovu. Na mých cca 800 zdrojů totiž prostě neměla.
- FreshRSS je nakonec to, co jsem zprovoznil. Běží na QNAP NAS, připojuje se (prozatím) na MySQL na mém Windows stroji. Umí se přebarvit, ale umí i nějaká ta rozšíření, z nichž se pár určitě hodí. A dá se dobře nastavit. Včetně cesty jak dostat věcí do Pocket a následně i do Notion (ale viz dále).
- Miniflux (čtečka) jsem nezkoušel. Uvádím pokud byste chtěli.
FreshRSS na QNAP NAS
Nakonec to není tak složité. V Container Station najdete docker image, stačí ho aktivovat a pak otevřít v prohlížeči – projdete si instalaci, kde budete potřebovat SQL databázi.
Na mém hlavním strojí mam MySQL, takže jsem tam vytvořil datatabázi freshrss, vytvořil uživatele freshrss a dal mu práva přistupovat k databázi. A pak jen vyplnil adresu stroje a přihlašovací údaje. V rámci instalace jsem si vytvořil uživatele daniel pro případně využití pro další projekty (každý projekt může mít uživatele a tím vlastní sadu RSS).
Z Feedly jsem stáhl OPML export a provedl import do Fresh RSS – pokud vám to skončí chybou a máte hodně zdrojů, tak se nedivte, ale dojede to správně.
Pokud budete FreshRSS provozovat na neveřejné adrese, tak časem narazíte na záplavu chyb “Error while PubSubHubbub subscribing to”. Můžete to nechat být, ale pokud je nechcete, tak v config.php nastavte base_url na prázdnou hodnotu. Případně, pokud máte veřejnou adresu, tak si zkontrolujte, že je nastavená právě zde.
TIP: Jak zjistit adresu RSS pro nějaký web? Jak získat RSS webu, který ho nemá
Postřehy k Fresh RSS
Fresh RSS je velmi rozumně fungující agregátor – bude stahovat obsah z přidaných zdrojů. Zároveň je to čtečka, takže budete moci vše stažené nějak zpracovávat – číst, označovat, odesílat dál, vyhledávat v článcích.

Umí themes a můžete si to tedy mírně přizpůsobit. Zvolil jsem levý sloupec tmavý a pravý (s obsahem) světlý. Další je možné jen nahrávat an hosting, ale k tomu se asi vrátím až později.
Umí extensios, ale i ty je nutné nahrávat na hosting, tedy v mém případě na QNAP NAS. Což v nejjednodušším případě obnáší.
- V Container Station zjistit kde je daný kontejner Dockeru na disku
- Stáhnout si složku s rozšířením (většinou z Githubu)
- Použít SFTP (třeba Termius) pro nahrání složky na FreshRSS do /freshrss/extensions
- Aktivování rozšíření v Settings
Prozatím jsem přidal pouze dvě rozšíření, ale jedno opět vypnul
- TitleWrap protože zobrazí titulky článků celé, nezkrácené
- ThreePanesView jsem ale nakonec vypnul, zobrazení není moc použitelné
Hodit se může i FreshRSS Flaresolverr Extension. Weby za CloudFlare totiž běžné na snahu stáhnout RSS házejí 403ky. Jen je to komplikovanější, protože mít instanci FlareSolverr (můžete využít snadno i Docker). Má to ale i jiné možné řešení, feedburner.com umožní vytvořit RSS proxy, kterou CloudFlare občas neodmítá.
Pokud budete zakládat další uživatele, tak aktivace rozšíření je zvlášť u každého uživatele, stejně jako případná další nastavení
V Nastavení je toho záplava co můžete změnit, za sebe mohu doporučit pár drobností
- Display -> Content width -> Narrow
- Reading -> Show articles unfolded by default ,,, můžete aktivovat pokud prostě chcete mít pořád pokračující možnost číst, Osobně jsem ale nechal neaktivní a budu rozklikávat.
- Reading -> Mark an article as read -> when the article is viewed .. aktivovat
- stejně tak jako when the article is opened on its original website .. aktivovat
- while scrolling (except for important feeds) ,,, aktivovat
- if an identical title already exists in the top n newest article je velmi užitečné, pokud máte častý problém s duplikáty článků. Ale tak jako tak si spíš pročistěte feed
Výše uvedení průběžně při čtení “to co odejde z displeje” označí jako přečtené, stejně jako při otevření v originále či při rozbalení obsahu.
V Sharing je vhodné si přidat další možnosti sdílení. System Sharing ve Windows mimochodem nefunguje, ale osobně jsem si přidal Pocket protože to umožní (například) přes Zapier nasdílet do Pocket a odtamtud to dostat to Notion. Přímo to neumí. A nutno dodat, že to nevypadá, že by tam bylo možné dát více sdílení najednou – zůstává jenom jedno.
POZNÁMKA: Zapier bez placení umožní pouze 100 úkonů měsíčně, takže si moc nedělejte naději, že to půjde využívat zdarma. IFTTT počet úkonů omezený nemá, ale neumí vzít položku z Pocket a přidat do My Links v Notion. Make se mi podařilo komplet projit, fungoval test, ale pak už nefunguje, nevidí nic nového v Pocket.
Jediná nepraktická věc na Sharing je, že otevírá nové okno(tab) a musíte ho ručně zavírat. V případě přidávání do Pocket spíše řešitelné přes rozšíření freshrss-pocket-button, ale musíte si u Pocket vytvořit aplikaci jako vývojář.
Po pár dnech intenzivního používání jsem ale nakonec cestu Pocket -> Notion nechal být. To co chci dostat do Notion prostě otevřu (otevře se v nové záložce) a nasdílím do Notion. Funguje to na PC a ještě lépe na iPadu, kde Fresh RSS mám otevřené v Chrome.
RSS ze všech zdrojů, napojení čtečky
FreshRSS je dobré i v tom, že můžete pro vlastní čtení používat jinou čtečku a samotné FreshRSS použít pouze jako agregátor. Ale o tom také případně někdy jindy – jen malá nápověda, váš vlastní RSS feed si vytvoříte přes User Queries. A můžete jich mít víc.
Údržba zdrojů
Do FreshRSS jsem importoval OPML z Feedly a rychle se ukázalo, že množství zdrojů nemá RSS v OPML uvedené nebo neexistuje vůbec. Ve Feedly se to nedozvíte, ale FreshRSS je hodně šikovné v tom, že bude ukazovat u zdrojů chybu – červené vykřičníky.
Pak už jen stačí jít od Subscription management > Show only feeds with errors. Získáte tak přehled všech zdrojů co nefungují a stačí je jeden po druhém projít a bud opravit (najít správné RSS) nebo smazat (pokud zdroj už neexistuje). Pozor ale na to, že není zohledněno “nefunguje zrovna teď, protože chyb” nebo “nefunguje dlouhodobě” či dokonce “RSS feed neexistuje”.

Osobně jsem postrádal možnost ve zdrojích (feedech) hledat (hledání je jen v textech článků). V mém feedly je totiž spousta zdrojů historicky přes něco co neexistuje. Takže by to dost usnadnilo aktualizaci.
Chybí ale také možnost vidět proč některý zdroj selhává. Jde to částečně přes Settings-> Logs, ale bohužel chyby stahování nejsou vidět právě u konkrétních chybujících zdrojů.

V Subscription Management -> Idle Feeds je ale ještě jedna užitečná pomůcka. Podívat se na “mrtvé” zdroje. 5 let, 3, 2, jeden rok atd. Velmi snadná cesta jak vyházet mrtvé věci. Jen pozor na to, že “mrtvý” může být feed co tam máte a web má dávno novější.

Ještě jednu drobnost bych ocenil, deduplikaci u zdrojů. FreshRSS to neumí, takže pokud máte víc zdrojů se stejnou URL, budete jich prostě mít víc. Můžete se ale dotázat sql (freshrss_daniel_feed nahraďte jménem vaší feed tabulky):
SELECT NAME, website, COUNT(*) as count
FROM freshrss_daniel_feed
GROUP BY website
HAVING COUNT(*) > 1;
Případně místo website můžete dotazovat url (což je url rss feedu).
Stejně tak můžete využít SQL pro dohledání url na výskyt již neexistujících služeb.
Kategorizace je omezená na zařazení do jedné kategorie, neuškodilo by do víc, ale dá se s tím pracovat.
Dynamické OPML
V nastavení zdrojů si můžete zvolit dynamické OPML – ze zadané URI se importují feedy. Má to jeden háček, objevují se tam pak možné duplicity, ale FreshRSS je dává na mute. A v nastavení feedu je Delete muted feeds. Takže to nemusíte dělat ručně.

Filtrace otravných věcí
V Settings -> Reading najdete až na konci Filter Actions a je možné tam napsat vyhledávací filtry, které povedou k automatickému označení článku jako přečteného.

Můžete se tak postupně zbavit otravných opakujících se věcí, například článků co každý den řeší “dnešní Wordle”.
Filtry je možné přidávat i ke konkrétnímu zdroji v jeho nastavení.
Přesunout FreshRSS SQL na jiný server?
Nakonec to asi z SQL v mé pracovní mašině přesunu na MariaDB na QNAP NAS kde FreshRSS běží, bude to praktičtější.
Stačí vzít sql dump, na novém SQL serveru založit databázi, uživatele, dát mu práva k založené databází a pak importovat sql dump. Následně opravit config.php v www/freshrss/data. Po restartu FreshRSS to pojede z nového.
Případně, velmi užitečné, v Subscription Management -> Import/Export je export – OPML a další drobnosti. Není tam ale export případného nastavení vašeho účtu. Můžete se tak přestěhovat i kamkoliv jinam, kde podporují OPML import.