Автонаполнение новостного раздела из 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 дня.







