Trojmiasto News Aggregator
WordPress-плагин: агрегатор польских новостей по Труймясту с LLM-рерайтом на RU/UK для trojmiasto.online
by trojmiasto.online · github.com/valentinych/tm-news · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/valentinych/tm-news/archive/refs/heads/main.ziptm-news — Trojmiasto News Aggregator
WordPress-плагин для сайта trojmiasto.online.
Собирает свежие польскоязычные новости по теме Труймяста (Гданьск, Гдыня,
Сопот), кластеризует их по инфоповодам, оценивает «горячесть» и с помощью
LLM готовит короткие рерайты на русский и украинский — в виде черновиков
CPT tm_news_digest, которые редактор утверждает вручную.
Архитектура пайплайна
[RSS источники] → Fetcher → items ──┐
├─ Clusterer (Jaccard по заголовкам)
↓
clusters
↓
Scorer (Σ weight × recency × topic_match)
↓
Publisher → Translator (OpenAI)
↓
черновики в tm_news_digest
Таблицы: wp_tm_news_items, wp_tm_news_clusters. CPT: tm_news_digest.
Планировщик: wp_schedule_event( 'hourly', 'tm_news_cron_tick' ).
Формирование «горячей» ленты
- Fetch — RSS всех включённых источников, последние 48 часов, до 25 айтемов с фида.
- Normalize — канонический URL (+ хеш), нормализованный заголовок (lowercase, без польских стоп-слов).
- Cluster — для каждого нового айтема Jaccard на токенах заголовка против открытых кластеров за 48 ч. Порог слияния ≥ 0.35.
- Score — для каждого кластера:
Σ source_weight(src_i) × exp(-age_i/τ) × topic_match. τ и список ключевых слов — в админке. - Publish — топ-K кластеров со score ≥
min_score→ Translator → черновик в CPTtm_news_digest.
Юридическая рамка
Плагин намеренно не перепечатывает статьи источников. В пост попадают только:
- рерайт своими словами в 2–3 предложениях (на русском и украинском);
- жирная ссылка на оригинал и название издания.
Это соответствует практике агрегатора (Google News и т.п.) и польской реализации ст. 15 EU DSM Directive (2024).
Установка
git clone git@github.com:valentinych/tm-news.git wp-content/plugins/tm-news
Затем в WP:
wp plugin activate tm-news
Настройка
Инструменты → News aggregator:
- OpenAI API key и модель (по умолчанию
gpt-4o-mini). - Список источников (ключ, URL, вес 0..1, enabled).
- Ключевые слова темы (по одному на строку).
- τ recency, top K, min score.
- Рубрика (WordPress category) для черновиков.
- Кнопка «Запустить пайплайн сейчас» + dry-run.
WP-CLI
wp tm-news fetch # только тянуть RSS
wp tm-news cluster # только кластеризовать необработанные
wp tm-news score # только пересчитать score
wp tm-news publish --dry-run
wp tm-news run # весь пайплайн целиком
wp tm-news status
Системный cron
Плагин регистрирует WP-cron на hourly. На проде, где WP-cron отключён,
добавь системный cron, который триггерит WP-cron (см. основной репо
trojmiasto, scripts/wp-cron.sh).
Разработка
PHP 8.1+, WP 6.4+. Без composer-зависимостей, только WordPress core (SimplePie для RSS идёт с ядром).
Лицензия
MIT.