Morning Brief
Automaticky generovaný ranní přehled, který každý den promění desítky zdrojů v krátký český e-mail s tím nejdůležitějším.
Projekt v kostce
22 zdrojů, jeden e-mail, žádná ranní práce
Morning Brief vznikl z jednoduchého problému: kvalitní přehled zpráv, technologií, marketingu a ekonomiky zabíral každé ráno příliš mnoho času. Cílem bylo sestavit spolehlivý proces, který informace sám sesbírá, pročistí, přeloží, shrne a doručí.
Zprávy, technologie, marketing a ekonomika v jednom sjednoceném vstupu.
Přehled dorazí dřív, než začíná pracovní den, bez jakéhokoli ranního zásahu.
Model volím podle náročnosti kroku, takže provoz zůstává prakticky zdarma.
Nad denním přehledem běží ještě týdenní rekapitulace hlavních témat.
Orientace ve studii
Stav projektu a moje role
Stav projektu
Studie vychází z dostupných podkladů a z práce, kterou jsem na projektu skutečně dělal. Výsledky a čísla uvádím jen tam, kde je mohu doložit.
Co bylo v mém rozsahu
- Navrhl jsem celý informační tok od zdrojů až po výsledný e-mail.
- Vybral a kategorizoval jsem 22 zdrojů z českých i zahraničních médií.
- Vyřešil jsem normalizaci RSS dat, odstraňování duplicit a překlad zahraničních titulků.
Výchozí problém
Sloučit zdroje znamená vyrobit další šum
Pouhé sloučení zdrojů by vytvořilo další informační šum. Bylo potřeba řešit rozdílné formáty RSS, duplicity mezi médii, zahraniční titulky, výběr relevance, konzistentní české shrnutí a spolehlivé automatické odeslání. Výstup zároveň musel být levný a dostatečně stabilní pro každodenní běh.
Moje uvažování
Rozdělit na sběr, čištění, výběr a doručení
Nejdřív jsem definoval obsahové kategorie a informační hodnotu výstupu. Potom jsem rozdělil proces na sběr, normalizaci, odstranění duplicit, jazykovou úpravu, generování shrnutí a sestavení e-mailu. Jednotlivé kroky jsem ladil podle skutečných ranních výstupů, ne podle izolovaného testu.
Řešení
Node.js pipeline s Claude Haiku, běží v 6:30
Automatizace v Node.js zpracovává 22 českých a zahraničních RSS zdrojů. Claude Haiku vybírá a shrnuje relevantní položky, zahraniční titulky převádí do češtiny a výsledný e-mail doplňuje o počasí a jmeniny. Každý den se spouští v 6:30; v neděli vytváří také týdenní souhrn.
Zajímavosti
Čtyři čísla, která o projektu řeknou nejvíc
Kolik stojí jeden ranní přehled
Náklad na jeden běh vychází na necelé dva koruny. Není to náhoda ani štěstí — je to výsledek toho, že každý krok pipeline dostal model podle své náročnosti. Výběr relevance a překlad titulků nepotřebují nejsilnější dostupný model; potřebují rychlý, levný a dostatečně dobrý. Ušetřené peníze tu nejsou cílem samy o sobě, ale znamenají, že projekt může běžet donekonečna bez rozhodování, jestli se to ještě vyplatí.
Čas, který určil celou architekturu
Přehled musí být v schránce dřív, než začne pracovní den. Z toho plyne všechno ostatní: kdy se pipeline spouští, jak dlouho smí trvat, co se stane při výpadku zdroje a proč má každý krok vlastní časový limit. Kdyby doručení nebylo pevné, mohl bych si dovolit pomalejší a přesnější zpracování. Takhle je rychlost součástí zadání.
Kolik zpráv přehled záměrně zahodí
Ze zpracovaných zdrojů se do e-mailu dostane jen zlomek. Většina práce pipeline spočívá v odstraňování: duplicity napříč zdroji, tematické opakování, zprávy bez informační hodnoty. Filtr je ta nejcennější část a zároveň ta nejnevděčnější — jeho kvalita se pozná jen tím, že vám nic důležitého neuteklo, což je těžké změřit.
Celá pipeline je jeden Node.js skript
Žádná fronta, žádná databáze, žádný orchestrátor. Cron spustí skript, ten projde celý řetězec a odešle e-mail. Je to schválně nudné řešení — u projektu, který běží jednou denně a má jednoho uživatele, by cokoliv složitějšího bylo jen dalším místem, kde se to může rozbít. Cena je popsaná v sekci o kompromisu.
Rozbor řešení
Nejdůležitější části projektu
Každý blok odděluje problém, zvolený směr a konkrétní důsledky pro výsledné řešení. První je otevřený, další lze postupně procházet.
01 Produktový problém Agregace bez filtru je jen jiný druh nepořádku +
Nástrojů, které sesbírají obsah z mnoha zdrojů, existuje spousta. Skoro všechny řeší sběr a nechávají na uživateli to nejtěžší — rozhodnout, co má cenu číst. Morning Brief stavím obráceně: sběr je nutná technikálie, produktem je výběr. Úspěch se pozná podle toho, že přehled jde přečíst za dvě minuty a nic podstatného v něm nechybí.
- hodnota je ve vyhazování, ne ve sbírání
- cílem je krátký přehled, ne úplný archiv
- úspěch = přečteno celé, ne otevřeno
02 Architektura zpracování Čtyři kroky, každý samostatně laditelný +
Řetězec vede od sběru přes normalizaci a odstranění duplicit k výběru relevance, překladu titulků a sestavení e-mailu. Každý krok má jasně definovaný vstup i výstup, takže když se výsledek zhorší, jde dohledat kde. Kdyby to byl jeden monolitický průchod, ladění by znamenalo hádání.
- normalizace sjednotí formáty z různých zdrojů
- odstranění duplicit sloučí stejnou zprávu napříč weby
- výběr relevance a překlad běží odděleně od sestavení
03 Volba modelů a náklady Nejlepší model není vždy správný model +
Každý krok dostal model podle své náročnosti. Výběr relevance a překlad titulků zvládne rychlý a levný model; složitější uvažování se používá jen tam, kde se to projeví na výstupu. Výsledkem je náklad kolem šesti centů na běh — částka, u které se nemusím ptát, jestli se to ještě vyplatí.
- model podle náročnosti kroku, ne podle prestiže
- levné kroky tvoří většinu objemu
- náklad na běh je součást zadání, ne dodatečná optimalizace
04 Provozní spolehlivost Automatizace potřebuje chybové stavy víc než funkce +
Nedostupný zdroj, prázdný výstup nebo přetečený limit nesmí znamenat, že ráno nedorazí nic. Každý krok má časový limit a chování pro případ selhání: chybějící zdroj se přeskočí, prázdný výběr pošle kratší přehled s poznámkou. Nespolehlivý přehled je horší než žádný, protože se na něj přestane spoléhat.
- výpadek jednoho zdroje nezastaví celý běh
- prázdný výstup se odešle s vysvětlením, ne jako ticho
- časové limity drží doručení v 6:30
Architektura
Jak spolu části řešení komunikují
Vyberte vrstvu a podívejte se, co v ní řešení zajišťuje. Mapa ukazuje logiku produktu bez dlouhého seznamu technologií.
Sběr
- RSS zdroje
- zprávy
- technologie
- marketing
- ekonomika
Zpracování
- normalizace formátů
- odstranění duplicit
- výběr relevance
- překlad titulků
- sestavení e-mailu
Modelová vrstva
- levný model pro výběr a překlad
- silnější model jen kde se projeví
- časové limity na krok
Provoz
- cron v 6:30
- týdenní souhrn
- chování při výpadku zdroje
- fallback při prázdném výběru
Produktová rozhodnutí
Volby, které drží projekt udržitelný
U vlastního produktu nestačí vybrat technologii. Důležité je vědět, co tím získám, jaký kompromis přijímám a jestli řešení zvládnu dlouhodobě provozovat.
Rozdělit na sběr, čištění, výběr a doručení
První verze dělala všechno v jednom průchodu a nešla ladit — když byl výsledek špatný, nebylo poznat proč. Rozdělení na čtyři fáze s jasným vstupem a výstupem znamenalo o něco víc kódu a nesrovnatelně snazší hledání chyb.
Model podle náročnosti kroku
Původní verze posílala všechno přes nejsilnější model a cena za běh byla neúnosná. Přiřazení podle náročnosti snížilo náklady o víc než řád bez znatelného rozdílu na výstupu. Byla to nejlevnější optimalizace celého projektu.
Pevný čas doručení jako součást zadání
Kdyby přehled chodil „někdy ráno", ztratil by smysl. Pevný čas znamená, že rychlost není optimalizace na konec, ale omezení, ze kterého vychází návrh celé pipeline.
Jeden skript místo infrastruktury
Zvolil jsem cron a jeden Node.js soubor místo fronty, databáze a orchestrátoru. U projektu s jedním během denně a jedním uživatelem by složitější řešení znamenalo jen víc míst, kde se to může rozbít. Cenu za to popisuji v sekci o kompromisu.
Vývoj v čase
Od naivního sběru k filtru, který funguje
-
Zima 2026
Problém: ráno mizelo v prohlížení zdrojů
Sledovat zprávy, technologie, marketing a ekonomiku znamenalo každé ráno projít desítku míst. Trvalo to čtyřicet minut a většinu z toho tvořilo čtení věcí, které jsem už znal z jiného zdroje. Zadání jsem si napsal jako otázku: dá se ten výběr udělat za mě, aniž bych přišel o důležité?
-
První verze
Naivní sběr, který vyrobil víc šumu než pořádku
Nasbírat články z RSS a poslat je e-mailem byla otázka večera. Výsledek byl nepoužitelný — dostal jsem osmdesát položek, z toho dvacet variací na stejnou zprávu. Ukázalo se, že sběr je ta triviální část a hodnota je celá ve filtrování.
-
Rozdělení na kroky
Sběr, čištění, výběr, doručení
Pipeline jsem rozdělil na čtyři samostatné fáze, každou s vlastním vstupem a výstupem. Normalizace sjednotí formáty, odstranění duplicit sloučí stejnou zprávu z různých zdrojů, výběr relevance rozhodne, co má hodnotu, a sestavení připraví e-mail. Rozdělení umožnilo ladit každý krok zvlášť místo hádání, kde se to pokazilo.
-
Ladění nákladů
Levný model tam, kde stačí
Původně šlo všechno přes nejsilnější dostupný model a cena za běh byla neúnosná. Přiřazení modelu podle náročnosti kroku snížilo náklady o víc než řád, aniž by se poznal rozdíl na výstupu.
-
Provoz
Denní běh v 6:30 a týdenní souhrn
Přehled dorazí každé ráno před začátkem pracovního dne. Nad ním běží ještě týdenní rekapitulace hlavních témat, která zachytí souvislosti, jaké v denním pohledu nejsou vidět. Od nasazení projekt běží bez zásahu — což je u automatizace ta nejlepší zpráva.
Proces práce
Jak převádím nápad do funkce
- Začínám od výstupu: jak má vypadat e-mail, který chci ráno dostat. Teprve pak řeším, co k tomu musí pipeline umět.
- Každý krok stavím tak, aby šel spustit a zkontrolovat samostatně. Když se zhorší výsledek, chci vědět kde, ne hádat.
- Náklad a čas běhu sleduji od začátku jako součást zadání. Řešení, které je desetkrát dražší a o procento lepší, zahazuji.
- Chybové stavy řeším dřív než další funkce. U automatizace, která běží denně bez dozoru, je spolehlivost důležitější než rozsah.
Co jsem se naučil
Poznámky, které si odnáším dál
- Sloučit dvacet zdrojů do jednoho e-mailu je snadné. Těžké je nevyrobit tím další šum. Většina práce na tomhle projektu nešla do sběru dat, ale do rozhodování, co se do přehledu nedostane.
- Model se vyplatí volit podle náročnosti kroku, ne podle toho, který je nejlepší. Výběr relevance zvládne levný model, překlad titulků taky — a díky tomu stojí jeden běh šest centů místo několika dolarů.
- Automatizace, která běží každý den, potřebuje ošetřené chybové stavy víc než další funkce. Nedostupný zdroj, prázdný výstup nebo přetečený limit nesmí znamenat, že ráno nedorazí nic.
- Doručení v pevný čas je součást produktu. Přehled, který přijde v deset dopoledne, už nikdo nečte — hodnotu má jen proto, že je na místě dřív než pracovní den.
Zpětný pohled
Co bych udělal jinak
Celou pipeline jsem napsal jako jeden Node.js skript spouštěný cronem, protože mi šlo o to, aby to fungovalo do víkendu. Funguje to spolehlivě, ale znamená to, že přidat nový typ zdroje je zásah do kódu, ne konfigurace. Kdybych do toho investoval ještě dva dny, oddělil bych definici zdrojů do datového souboru a ušetřil si každou pozdější úpravu.
Moje role
Za co jsem v projektu odpovídal
Tady odděluji, co jsem v projektu skutečně navrhl, postavil nebo rozhodl. Výsledek je důležitý, ale stejně podstatná je odpovědnost, kterou jsem při cestě k němu převzal.
-
01
Navrhl jsem celý informační tok od zdrojů až po výsledný e-mail.
-
02
Vybral a kategorizoval jsem 22 zdrojů z českých i zahraničních médií.
-
03
Vyřešil jsem normalizaci RSS dat, odstraňování duplicit a překlad zahraničních titulků.
-
04
Navrhl jsem prompty a pravidla pro výběr a stručné české shrnutí zpráv.
-
05
Připravil jsem responzivní e-mailovou šablonu a doplnil počasí, jmeniny a týdenní přehled.
-
06
Nastavil jsem plánované spouštění, odesílání a provozní wrapper pro opakovatelný běh.
Výsledek a důkazy
Co je na projektu doložitelné
Plně automatický denní briefing doručovaný v 6:30 bez ruční přípravy.
Jeden přehled místo ručního procházení 22 samostatných zdrojů.
Samostatný týdenní souhrn vytvářený každou neděli.
Provozní náklad jazykového modelu přibližně 0,06 USD na jeden běh.
Konkrétní důkaz schopnosti spojit obsahové rozhodování, automatizaci a umělou inteligenci do stabilního pracovního procesu.
Silné stránky
Kompetence viditelné na projektu
Nástroje a prostředí
Technický a pracovní základ
Relevantní role
Další krok
Hodí se vám do týmu podobný způsob práce?
Rád se rychle ponořím do nového kontextu, položím otázky a pomohu dostat nejasný problém k řešení, které lze vyzkoušet. Hledám dlouhodobou roli, ve které mohu převzít konkrétní odpovědnost a sledovat dopad v čase.