WP Manifestindependent plugin directory
manifest / ai / tm-news

Trojmiasto News Aggregator

WordPress-плагин: агрегатор польских новостей по Труймясту с LLM-рерайтом на RU/UK для trojmiasto.online

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/valentinych/tm-news/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

tm-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' ).

Формирование «горячей» ленты

  1. Fetch — RSS всех включённых источников, последние 48 часов, до 25 айтемов с фида.
  2. Normalize — канонический URL (+ хеш), нормализованный заголовок (lowercase, без польских стоп-слов).
  3. Cluster — для каждого нового айтема Jaccard на токенах заголовка против открытых кластеров за 48 ч. Порог слияния ≥ 0.35.
  4. Score — для каждого кластера: Σ source_weight(src_i) × exp(-age_i/τ) × topic_match. τ и список ключевых слов — в админке.
  5. Publish — топ-K кластеров со score ≥ min_score → Translator → черновик в CPT tm_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.