Jak se to měří
Z veřejných kanálů se nedozvíte, kolik má článek lajků. Dozvíte se ale něco lepšího: kolik nezávislých redakcí to zvedlo a jak rychle. Čtyři redakce, které o téže věci píší během půl hodiny, jsou silnější důkaz pozornosti než počítadlo zobrazení na jednom webu — každá má vlastní analytiku, vlastní editory a vlastní zájem.
A hlavně: dá se to změřit bez jediného přístupu k cizím statistikám, bez API klíče a bez čtení čehokoli, co není určeno ke čtení.
Váha slova je jeho vzácnost
Prostý překryv slov selhal hned při prvním běhu. Dva titulky o téže explozi:
Silná exploze otřásla muniční továrnou u Říma
Muniční továrnou ve střední Itálii otřásl mohutný výbuch
Táž událost, sdílená dvě slova ze třinácti, podobnost 0,18. Jenže ta dvě slova jsou muniční a továrnou. V toku zpráv se skoro nevyskytují, takže jejich shoda je mnohem silnější důkaz než shoda slov jako policie nebo Česko. Váha slova se proto počítá z jeho vzácnosti — kolikrát se vyskytuje ve všech ostatních zprávách.
Titulek sám nestačí. Titulky téže zprávy se u různých redakcí překrývají minimálně, takže do porovnání patří i perex — dalších dvacet až čtyřicet slov o téže události. Zkracuje se na 180 znaků, protože dlouhé konce bývají redakční patička, u všech článků téhož webu totožná, která by spojovala nesouvisející zprávy.
Skupiny se musí slučovat
První verze přiřadila článek k první skupině nad prahem podobnosti a dvě skupiny už nikdy nespojila. Když se článek podobal skupině A i skupině B, zůstaly A a B oddělené navždy.
Na reálných datech to jednu událost — vykolejení vlaku v Anglii, o kterém psaly čtyři redakce — rozdrobilo na dvě. Tím engine ničil přesně to číslo, které měří. Po opravě, kdy se skupiny slučují obousměrně, vyskočilo skóre té události z 9,2 na 45,8.
Měřeno na vzorku 410 položek z prvního ostrého běhu 14. srpna 2026. Italská továrna se přitom slila ze tří shluků do jednoho se čtyřmi zdroji.
Co je heat
Řadicí veličina, ne sdělení. Hlavní číslo na obrazovce je počet redakcí — to je údaj, který nikde jinde nedostanete. Heat jen rozhoduje, co bude v seznamu výš, a skládá se ze součinu pěti veličin, z nichž každou lze vysvětlit:
- šíře
- součet vah redakcí, které událost zvedly
- rychlost
- jak rychle se šíře nabrala — (šíře − 1) děleno hodinami od první do poslední zmínky
- priorita
- jak vysoko to redakce samy zařadily ve svém kanálu
- vytrvalost
- jak dlouho se to v kanálech drží
- útlum
- poločas osm hodin — stará událost klesá, i když se nic nemění
Skóre, které nikdo neumí obhájit, se nedá redakčně použít. Proto žádná z těch pěti veličin není samoúčelná a žádná se nepočítá z něčeho, co bychom neměli mít.
Rozpětí mezi první a poslední zmínkou má v enginu podlahu půl hodiny. Událost, která se rozšířila za pět minut, má v datech stejnou hodnotu jako ta, která se šířila třicet — proto se v žebříčku píše „do 30 min“ a ne konkrétní číslo. Přesnější údaj by byl vymyšlený.
Historie se nepřepisuje
Viralita není hodnota, ale derivace — ne „kolik má článek ohlasu“, ale „jak rychle ten ohlas roste“. Kdo si ukládá jen aktuální číslo, už nikdy zpětně nespočítá rychlost. Ta informace v tu chvíli přestane existovat.
Tabulka pozorování se proto nikdy nepřepisuje, jen doplňuje. Všechno ostatní — skóre, shluky, žebříčky — je odvozené a dá se kdykoli přepočítat. Změna modelu tedy přepočítá historii, místo aby ji zahodila.
Stejný důvod stojí za tím, proč se u videí tempo počítá proti měření, které je aspoň hodinu zpět. Když se rychlost brala z poslední dvojice pozorování, mělo osm z deseti videí rozdíl přesně nula — YouTube aktualizuje počítadla dávkově, takže krátký odstup neukazuje tempo, ale náhodu. Kratší okno se proto v žebříčku označí jako nespolehlivé, nebo se nezobrazí vůbec.
Před každým zdrojem se ptáme robots.txt
Evropská výjimka pro text and data mining (směrnice 2019/790, čl. 4; v Česku § 39c autorského zákona) dovoluje těžbu z legálně dostupného obsahu — ale jen tam, kde si nositel práv výhradu nevyhradil strojově čitelným způsobem. robots.txt je přesně takový způsob.
Proto je ta kontrola brána v kódu před každým zdrojem, ne věta v dokumentaci. Výhradu tak nelze přehlédnout. Že to není formalita, ukázal hned první běh.
Načítám stav zdrojů…
Zároveň se neukládají plné texty ani média — jen odkaz, titulek, krátký popisek z kanálu a odvozené signály. Databáze tedy z podstaty nemůže být kopií cizí databáze. A protože se posílá podmíněný dotaz, kanál, který se nezměnil, nepřenese ani bajt navíc.
Co neděláme
- Nescrapujeme HTML stránek a neobcházíme
robots.txt. - Neukládáme plné texty ani obrázky ze zdrojů.
- Nevytváříme profily osob. Agregát ano, dokumentace o člověku ne.
- Nepoužíváme cizí statistiky ani nic, k čemu bychom neměli mít přístup.
Stav enginu je veřejný — kolik položek, kolik pozorování a kdy proběhl poslední sběr.