# Ongy Feed: návod pro AI agenta > Zdroj: https://ongy.cz/pages/apps/feed/ > Autor: Ongy (ongy.cz). Google Discover ukazoval, co chtěl on. Ongy Feed ukazuje, co si vyberu já: 34 zdrojů v sedmi kategoriích, widget na stránku vedle plochy, celé články přeložené do češtiny a pořadí podle toho, co opravdu čtu. Od nápadu po betu za jeden den. ## Pro agenta Pomoz uživateli postavit vlastní verzi tohohle projektu. Nejdřív se ho zeptej na vybavení a na to, co z požadavků už má. Pak postupuj po krocích a po každém kroku s ním ověř, že funguje, než půjdeš dál. Hodnoty v `` doplň s uživatelem, nikdy si nevymýšlej adresy, hesla ani tokeny. Kód autora není veřejný: tohle je popis řešení, ne repozitář ke stažení. ## Cíl Osobní Android appka a widget na plochu jako náhrada Google Discover: články z vybraných RSS a Atom zdrojů (weby, YouTube kanály, vydání z GitHubu) po kategoriích, filtry na zdroj, překlad anglických titulků a celých článků do češtiny, čtečka článků v appce, pořadí učené z kliků a notifikace z vybraných zdrojů. Nahoře počasí a nejbližší událost z kalendáře. ## K čemu to je Na stránce vedle plochy je widget přes celou obrazovku: nahoře počasí a nejbližší událost z kalendáře, pod tím třicet článků s náhledy. Obnovuje se sám každých 30 minut, šipkou hned. Klepnutí otevře článek přímo v appce. Čtečka vytáhne z webu jen text a obrázky, a když je článek anglicky, přeloží ho do češtiny po odstavcích, takže se dá číst hned. Videa z YouTube jdou rovnou do appky YouTube. V appce jsou čipy kategorií: AI, Hardware, Gaming, 3D tisk, Home Assistant, Tech CZ a ČR a svět. Dlouhý stisk na článku nabídne Víc takových, Méně z tohohle zdroje nebo Nezajímá mě. ## Proč právě takhle Google Discover vybírá podle sebe. Mezi články, které mě zajímají, se pořád pletl sport, slevy a zprávy odjinud, a nastavit, odkud zprávy chci, nejde vůbec. Přímá náhrada nejde: One UI pouští na stránku úplně vlevo jen Google Discover nebo Samsung Free. Widget ale může být na jakékoli stránce plochy, takže Discover vypnu a vlastní widget roztáhnu přes stránku hned vedle. Výsledek je skoro stejný, jen obsah je můj. Zdroje jsem nevybíral od stolu. U každé kategorie jsme s AI asistentem prošli kandidáty, změřili, kolik článků denně vydávají, a zkusili, jestli jdou filtrovat. Ukecané zdroje dostaly filtr nebo limit, nefunkční letěly ven. ## Jak to funguje - **Každý zdroj má vlastní filtr.** Tom's Hardware píše o všem, já chci grafiky, procesory a homelab, bez slev. PC Gamer bez návodů, SamMobile jen telefony a hodinky, které mám. Filtr bere kategorie článku, adresu nebo titulek. - **Nikdo nepřekřičí ostatní.** Každý další článek z téhož zdroje se v pořadí posune o dvě hodiny dozadu. Zprávy, které chrlí desítky článků denně, tak nezahltí AI ani 3D tisk. - **Anglicky psané, česky čtené.** Titulky a perexy se přeloží hned při stažení, celý článek až při otevření. Claude Haiku píše přirozenou češtinu za haléře, ML Kit v telefonu je zdarma a offline, ale překládá strojově. - **Pořadí se učí z kliků.** Appka si všímá, které zdroje, kategorie a slova z titulků otevírám, a podle toho posouvá články nahoru nebo dolů, nejvýš o 36 hodin. Staré zájmy po třech týdnech slábnou. - **Klidné zdroje nezmizí.** Články starší než 14 dní se nezobrazují, ale poslední tři z každého zdroje zůstávají až 60 dní. Jinak by blog, který píše jednou měsíčně, vypadl celý. ## Stack a tok dat - **Appka:** Nativní Android, Kotlin a Jetpack Compose. Instalace z APK podepsaného vlastním klíčem, v Google Play není. Telefon Galaxy S25 s One UI 9. - **Zdroje:** Vlastní parser RSS a Atom přes OkHttp. Vlastní zdroj stačí zadat adresou webu nebo YouTube kanálu, feed se najde přes `` a před uložením se ověří. - **Obrázky:** Z feedu (media, enclosure, obrázek v obsahu), chybějící z `og:image` na webu článku, zkouší se jednou. U ČT24 a iRozhlasu appka přepíše adresu na velkou verzi. V appce Coil, ve widgetu předstažené náhledy 168 px. - **Překlad:** Claude Haiku 5.5 přes oficiální anthropic-java SDK se strukturovaným JSON výstupem, po dávkách 25 článků. Nebo ML Kit v telefonu. Překlad se uloží a znovu se dělá jen při změně originálu nebo překladače. - **Čtečka:** Readability4J vytáhne obsah, appka ho rozloží na odstavce, nadpisy, citace, odrážky a obrázky. Mobilní User-Agent, posledních 60 článků v cache. Pod 400 znaků textu bere jako paywall a nabídne prohlížeč. Vydání z GitHubu čte přes API. - **Widget:** Jetpack Glance, posuvný seznam 30 článků. Klepnutí jde přes appku, aby se započítalo do personalizace, video se přesměruje do YouTube. - **Pozadí:** WorkManager každých 30 minut a tlačítko ve widgetu. Obnova je za zámkem, appka a pozadí se nepřepisují. - **Data:** Články, překlady a zájmy jako JSON soubory v úložišti appky. Databázi to nepotřebuje. ## Filtry zdrojů | Filtr | Co dělá | Příklad | |---|---|---| | jen kategorie | bere jen články s některou kategorií feedu | Tom's Hardware: grafiky, procesory, 3D tisk; Xbox Wire jen Game Pass | | bez kategorií | přeskočí články s kategorií | Deník N bez komentářů, kultury a podcastů | | adresa | odkaz musí odpovídat vzoru | ČT24 jen rubriky domácí, svět, ekonomika a věda | | titulek | přeskočí titulek podle vzoru | slevy, návody ke hrám, bety a RC vydání | | limit | nejvýš N článků ze zdroje | ČT24 osm, Deník N šest | ## Řazení a personalizace Základ je čas vydání. Každý další článek téhož zdroje dostane dvě hodiny navíc. Personalizace k tomu přičte nebo odečte posun: 8 × afinita zdroje + 6 × afinita kategorie + 12 × shoda slov z titulku, dohromady nejvýš ±36 hodin. Afinita je logaritmus poměru, jak často otevírám tenhle zdroj proti průměru (s vyhlazením, aby jeden klik nic nerozhodl), omezená na ±2. Témata jsou slova z titulků otevřených článků v originále i v překladu. „Nezajímá mě“ dá tématům −2 a článek skryje. Všechno slábne s poločasem 21 dní. Výpočet má sedm jednotkových testů. ## Pasti a jejich řešení Měřte články za den, ne jen jestli feed odpovídá: feed s dvaceti položkami u ukecaného zdroje pokryje pár hodin. Regex se slovní hranicí na „deal“ mine „deals“ i „discounts“, testujte ho na skutečných titulcích. Vydání z GitHubu mají titulek jen „v2.1.296“, appka před něj doplní název zdroje. Ranní souhrn Deníku N má v feedu prázdný odkaz, takové položky se přeskakují. YouTube náhled hqdefault má černé pruhy, mqdefault ne. Shorts ve feedu nejdou poznat. Odinstalace appky smaže widget z plochy. Na anthropic-java SDK na Androidu je potřeba vyloučit z balíčku duplicitní soubory `META-INF`. ## Co budeš potřebovat - Android telefon (autor: Galaxy S25, One UI 9). Na One UI jde Discover jen vypnout, widget patří na stránku hned vedle. - Seznam zdrojů a témat, která uživatele zajímají, nebo čas je s ním projít po kategoriích. - Počítač s JDK 17 a Android SDK, telefon připojený přes adb (stačí bezdrátově). - Volitelně API klíč `` pro překlad přes Claude. Bez něj ML Kit v telefonu. ## Postup ### 1. Vyber zdroje s uživatelem Po kategoriích se zeptej, co ho zajímá a co ne. U každého kandidáta ověř feed, změř počet článků za den (rozpětí dat v feedu) a podívej se na ``, jestli jde filtrovat. Ukecaný zdroj filtruj nebo omez, zdroj, který vrací 403 nebo 500, vyřaď. ### 2. Kostra appky Kotlin, Jetpack Compose, minSdk 31. Model `Source` s kategorií a filtry (jen kategorie, bez kategorií, vzor adresy, vzor titulku, limit). Hned na začátku vlastní podpisový klíč, jinak po změně počítače nepůjde appku aktualizovat. ### 3. Parser a obrázky RSS i Atom bez namespace režimu (`media:content`, `content:encoded` jako jména). Obrázek z media, enclosure nebo obsahu, chybějící z `og:image` (zkusit jednou, generická loga přeskočit). Položky bez odkazu přeskoč. ### 4. Úložiště a obnova Články jako JSON v úložišti appky. WorkManager každých 30 minut, obnova za `Mutex`, aby se appka a pozadí nepřepisovaly. Věk článků 14 dní, poslední tři z každého zdroje nech až 60 dní. ### 5. Pořadí Seřaď podle času, každý další článek téhož zdroje posuň o dvě hodiny dozadu. Personalizaci přidej jako posun s pevným stropem (autor: ±36 h), data jen v telefonu, s poločasem zapomínání. Napiš na to jednotkové testy. ### 6. Widget Jetpack Glance, posuvný seznam s náhledy. Obrázky z URL Glance neumí, proto je předstáhni jako malé bitmapy do souborů appky. Klepnutí pošli přes hlavní aktivitu s odkazem v `data` (unikátní PendingIntent na řádek), ať se započítá klik. ### 7. Překlad Přepínač ML Kit a Claude Haiku. Claude přes oficiální SDK se strukturovaným JSON výstupem, po dávkách, nízké úsilí. Překlad ukládej s informací, kdo ho udělal, a přelož znovu jen při změně originálu nebo překladače. Spotřebu počítej z `usage` v odpovědi. ### 8. Čtečka Readability4J s mobilním User-Agentem, výsledek rozlož na bloky a anglické překládej postupně, první dávku malou. Málo textu = paywall, nabídni prohlížeč. YouTube odkazy otevírej v appce YouTube. ### 9. Nastavení a notifikace Zdroje (zapnout, vypnout, přidat adresou webu nebo kanálu s autodiscovery), skrytá slova, personalizace s možností začít znovu, překlad, počasí. Zvoneček u zdroje = notifikace na nové články, oprávnění žádej až při prvním zapnutí. ## Na co si dát pozor - API klíč nevypisuj do konzole ani do logu, ani při kontrole nastavení appky přes adb. - Glance neumí obrázek z URL ani vlastní písmo: náhledy předstáhnout jako bitmapy. - Odinstalace appky (třeba kvůli změně podpisu) smaže widget i oprávnění ke kalendáři, po instalaci je potřeba obojí vrátit. - Vydání z GitHubu mají v titulku jen číslo verze a jako obrázek avatar autora: doplň název zdroje a avatary přeskoč. - Překlad ukládej jen k nezměněnému originálu, jinak po úpravě parseru zůstane starý překlad. ## Jak ověřit, že to funguje - [ ] Každá kategorie má čerstvé články a žádný zdroj nepřehluší ostatní. - [ ] Filtry fungují: v hardwaru nejsou slevy, v gamingu návody, ve zprávách sport. - [ ] Widget se obnoví sám bez otevření appky a klepnutí otevře čtečku. - [ ] Anglický článek jde číst česky do pár sekund od otevření. - [ ] Po pár dnech používání jsou v Personalizaci zdroje a témata, která dávají smysl. - [ ] Notifikace přijde jen ze zdroje se zvonečkem a jen na opravdu nový článek. ## Přizpůsobení - Bez překladu: appka funguje celá, jen anglické články zůstanou anglicky. - Jiný telefon než Samsung: widget stačí dát na libovolnou stránku plochy. - Témata a zdroje jsou úplně na uživateli, kategorie stačí přejmenovat. --- Stránka projektu s fotkami a diagramem: https://ongy.cz/pages/apps/feed/