RSS → статья: автоматизация контента
RSS — самый «скучный» вход, и это хорошо: ленты предсказуемы, их можно кэшировать и мониторить. Для фабрики, которая работает круглосуточно, это идеально.
В отличие от разовых парсеров или закрытых API, RSS даёт стабильные URL, метки времени и идентификаторы элементов. Каждый item можно трактовать как версию факта: забрать, хешировать, решить, достаточно ли новизны для статьи, и только потом тратить токены на генерацию. Иначе «RSS → статья» превращается в дорогие переписывания одного и того же заголовка.
Надёжность
Если лента умерла или отдаёт ошибки — нужен алерт. Добавьте антидубли, чтобы переписанные заметки не пересекались в течение дня.
Задайте SLA по лентам: максимальный возраст последнего элемента, допустимые HTTP-коды, backoff при лимитах. Логируйте каждый fetch с длительностью и размером ответа — так отличите «медленный источник» от «сломался парсер». Пакеты должны быть идемпотентны: при падении воркера следующий прогон не должен дублировать посты и молча терять элементы.
Уровни источников
Не все домены равны: одни дают заголовки срочных постов, другие — только фон для дайджестов.
Уровни фиксируйте в конфигурации, а не в голове. От них зависят промпты, шаблоны заголовков и право item открыть новую тему или слиться с кластером. Пересматривайте уровни: выросший блог в серьёзное издание нужно повысить, а не держать в «фоне» годами.
Прослеживаемость
Храните сырьевые элементы ленты и ссылки на первоисточники — это страховка при спорах.
Сохраняйте XML/JSON, нормализованные поля и тот текст модели, что реально ушёл в публикацию. На вопрос «почему мы так написали?» можно ответить строкой источника и версией политики. Срок хранения — под юридический и продуктовый риск, а не под ротацию логов по умолчанию.
От элемента ленты к форме статьи
До генерации сведите поля ленты к жёсткой внутренней схеме: заголовок, summary, ссылка, рубрики, время публикации, при необходимости enclosure. Шаблоны опираются на схему — сырой HTML из ленты в промпт не кидайте. Чистите сущности, уберите tracking-параметры из URL, относительные ссылки разрешайте от корня сайта издателя.
Определите архетипы: срочная заметка, дайджест, разбор, подборка цитат. У каждого — свой план и чеклист QA. Так проще менять модели и добавлять языки без хаоса.
Сбои и метрики
Смотрите долю успешных публикаций, медиану времени от fetch до живого URL, долю подавленных дублей. Рост ручных правок или снятий с публикации чаще говорит о шаблонах и уровнях, а не о «недостаточно умной» модели.
Алерты на рост правок, побег дублей или сбои загрузки медиа в CMS. Дополняйте дашборды выборкой: раз в неделю просмотрите десять постов — совпадает ли голос с задуманным.
Когда одного RSS мало
Некоторым темам нужны API, суды, закрытые данные. Подключайте их как дополнительные входы в те же архетипы и тот же QA — не плодите второй «теневой» конвейер. Если источник отдаёт только HTML, оберните его в мониторимый fetch с той же наблюдаемостью, что и у RSS.
Цель — одна фабрика контента с разными дверями, а не десять скриптов, о которых все забыли. RSS остаётся основой: он скучный, тестируемый и дешёвый в эксплуатации на масштабе.
Владение и runbook
Назначьте владельца конвейера: кто утверждает новые ленты, кто отключает источник при инциденте, кто подписывает изменения шаблонов. Без владельца автоматизация превращается в «чёрный ящик», который боятся трогать.
Runbook на типовые сбои: лента отдала пустой channel, CMS вернула 500, модель начала галлюцинировать имена. Шаги должны быть конкретными — кого пинговать, что отключить, где смотреть логи.
Гигиена контента в масштабе
RSS-автоматизация умножает мелкие ошибки: битые HTML-сущности ломают вёрстку, повторяющиеся tracking-параметры портят аналитику, несогласованные категории создают тонкие архивы, похожие на SEO-спам. Раз в месяц — гигиена: слить дубли тегов, объединить похожие рубрики, починить внешние ссылки по отчёту краулера.
Гигиена скучна — поэтому работает. Выживают не сайты с самыми хитрыми промптами, а те, кто убирает за собой.
Стратегия тестов: что автоматизировать в CI
Гоняйте автотесты на сохранённых фикстурах лент: парсинг, нормализация, ключ дедупа и решение «публиковать ли» без живых LLM. Живые тесты генерации оставьте на ночные джобы с бюджетом, не на каждый коммит.
Добавьте регрессию на «особенности» издателей: разные GUID на один материал, скачки часовых поясов, реклама в описании. Они вернутся — тесты подскажут, когда это случилось снова.
Партнёры и площадки
Некоторые площадки не любят автоматические новости без раскрытия и контроля качества. У рекламных сетей могут быть отдельные проверки для программных страниц. Дистрибуцию не откладывайте: подключайте ops и policy рано, особенно если монетизация через сторонние сети.
При исходящем синдикате шаблоны должны давать стабильные каноникалы и поля автора. Партнёрам больше мешает непредсказуемые метаданные, чем сама автоматизация.
Дедуп-ключи в деталях
Наивный дедуп — только по GUID; в жизни нужны составные ключи: нормализованное сходство заголовков, окно публикации, домен основной ссылки. Пороги настраивайте по уровням: срочные новости терпят больше почти-дублей в кластере, чем вечнозелёные разборы.
Логируйте решения дедупа на выборке раз в неделю. Если люди часто не согласны с алгоритмом, ключ неверен — не читатели.
Итоговый чеклист на три страницы печати
Используйте статью как полевой мануал: проверьте SLA, уровни, прослеживаемость, метрики сбоев, владение. RSS-автоматизация награждает последовательность и наказывает срезы. Если на распечатанном чеклисте через полгода появились пометки на полях — он сработал: конвейер должен эволюционировать, но не без записанных решений.
Приложение: варианты RSS в дикой природе
Atom и RSS 2.0 по-разному трактуют даты и enclosure. У части лент нет summary; у других описание — дубликат заголовка. Некоторые издатели пересоздают GUID без нужды. Нормализатор должен быть защитным: ни одно поле нельзя считать обязательным по умолчанию; в тестах держите реальные снимки каждого крупного класса источников.
При миграции платформы издателя ждите смену схемы URL и временные дубли элементов. Версионируйте парсеры и следите за резкими сдвигами схемы — при логировании только на warn легко пропустить тихую потерю данных.
Приложение: чеклист договора с издателями (когда отношения важны)
В формальных партнёрствах зафиксируйте частоту обновлений, допустимые user-agent, требования к атрибуции и разрешены ли производные краткие пересказы. Даже без контракта внутренняя политика должна повторять условия издателя — иначе страдает доверие.
Если вас заблокировали, начните с доброй воли: возможно, вы слишком агрессивны, ошиблись в конфигурации или тянете HTML там, где достаточно RSS.
Приложение: заметка об объёме для печати
Статья специально длинная, чтобы операционная команда могла распечатать её один раз и возвращаться к разделам по мере необходимости. Цель — не прочитать от корки до корки за раз, а иметь устойчивую справку, когда ленты масштабно ведут себя плохо.
