Автонаповнення новинного розділу з RSS-стрічок 1С-Бітрікс
Новинний розділ без регулярних публікацій втрачає позиції в пошуку та аудиторію. RSS-агрегація — швидкий спосіб організувати потік публікацій з профільних джерел: галузеві ЗМІ, прес-релізи партнерів, новини виробників. Технічно завдання нескладне, але вимагає правильної архітектури для забезпечення унікальності контенту та коректної атрибуції.
Отримання та парсинг RSS
RSS — XML-формат зі стандартною структурою. Кожен запис (<item>) містить title, link, description, pubDate, author. Атоми (<entry>) використовують інші теги, але логіка та сама.
Парсинг через SimpleXML:
$rss = simplexml_load_file($feedUrl);
foreach ($rss->channel->item as $item) {
$this->processItem([
'title' => (string)$item->title,
'link' => (string)$item->link,
'content' => (string)$item->children('content', true)->encoded ?: (string)$item->description,
'pubDate' => strtotime((string)$item->pubDate),
'guid' => (string)$item->guid,
]);
}
<content:encoded> містить повний текст статті (якщо джерело надає), <description> — зазвичай анонс.
Дедуплікація записів
Один і той самий матеріал може з'явитися в кількох стрічках або бути опублікований повторно. Дедуплікація за guid (унікальний ідентифікатор запису в RSS):
$existing = CIBlockElement::GetList([], [
'IBLOCK_ID' => NEWS_IBLOCK_ID,
'=PROPERTY_RSS_GUID' => $item['guid']
])->Fetch();
if ($existing) continue; // вже імпортовано
Властивість RSS_GUID типу S з IS_REQUIRED = N. Альтернатива для прискорення — зберігати оброблені GUID в окремій таблиці або Redis Set.
Зберігання в інфоблоці новин
Стандартний інфоблок новин з додатковими властивостями під RSS-агрегацію:
-
RSS_GUID— GUID запису для дедуплікації -
RSS_SOURCE— ID або назва джерела (для атрибуції) -
ORIGINAL_URL— посилання на оригінал (для canonical та посилання «джерело») -
AUTO_IMPORTED— прапорець автоімпорту (Y/N), щоб відрізняти від ручних публікацій
Дата публікації з RSS → ACTIVE_FROM елемента. Це важливо для коректного сортування новин.
Обробка контенту: очищення та рерайт
Пряма публікація RSS-контенту без обробки — дублювання, яке тягне санкції від пошукових систем. Варіанти обробки:
Мінімум: публікуємо анонс (description) з посиланням «читати далі» на оригінал. Це законна агрегація — не дублювання.
Середній рівень: очищаємо HTML (HTMLPurifier), прибираємо посилання на джерело всередині тексту, перефразовуємо вступ і заголовок.
Повний рерайт через AI: відправляємо content:encoded у GPT з інструкцією переписати в іншому стилі. Дорого для високочастотних стрічок, виправдано для важливих матеріалів.
Налаштування кількох стрічок
Конфігурація джерел у Highload-блоці RssSources:
-
UF_URL— URL стрічки -
UF_NAME— назва джерела -
UF_IBLOCK_ID— в який інфоблок імпортувати -
UF_SECTION_ID— розділ для імпортованих матеріалів -
UF_ACTIVE— увімкнено/вимкнено -
UF_INTERVAL— інтервал перевірки в хвилинах -
UF_LAST_CHECK— час останньої перевірки -
UF_PROCESSING— тип обробки (excerpt/full/ai_rewrite)
Таймлайн робіт
| Етап | Термін |
|---|---|
| Розробка RSS-рідера з підтримкою RSS 2.0 та Atom | 4–8 годин |
| Дедуплікація, зберігання в інфоблоці | 4–8 годин |
| Обробка контенту (очищення HTML) | 4 години |
| Адміністративний інтерфейс для управління джерелами | 4–8 годин |
| Розклад, моніторинг | 2–4 години |
Разом: 3–5 робочих днів. Додавання AI-рерайту — плюс 1–2 дні.







