Как создаём повестку
Это не редакция из двадцати человек и не опрос читателей. Цифры на морде считаются со склада RSS. Полный текст чужих статей не храним и не рисуем.
Окно склада
На витрине — до 50 последних материалов не старше 30 дней (config/ingest.yml → feed). Аналитика облака / настроения / конфликтов / топа переключается окном 1 / 7 / 30 суток одним рядом, без тройного SQL в /api/pack.
Облако тем
Частота тегов склада за выбранное окно. Размер чипа = доля от лидера. Это не облако интересов профиля в Telegram-боте (/tags).
Настроение
Эвристика lexicon, не языковая модель. POS-теги: ai, llm, science, startups, opensource, products. NEG: security, crypto. Показываем n+, n−, список тегов-весов и окно. Источник — склад, не опрос.
Противостояния
Пары competitors из YAML компаний + ручной список в content.yml. Склад подтверждает пару, если в заголовке окна есть lexicon (vs, иск, запрет…). Режим conflicts_mode: auto | manual.
Топ повестки
Объём упоминаний в окне, не редакционная «важность». Три грани: компании (keyword hit), технологии (теги минус id фирм), персоны (полное имя в заголовке).
Сюжеты ленты
Карточки с одним title_key и n≥2 источников собираются в доску дня. Take — две-три фразы своей трактовки. Клик ведёт на исходник RSS.
Что не делаем
- Не копируем полный текст статьи.
- Не скрейпим HTML без RSS.
- Не считаем это Яндекс.Метрикой или Webmaster.
- Не кладём военку / dual-use как главную тему (
ingest.ymldeny).