DLE Parser PRO — комплексне рішення для DataLife Engine, призначене для автоматичного імпорту, обробки, перекладу та публікації матеріалів із зовнішніх джерел. Модуль поєднує HTML-парсинг, RSS/Atom-стрічки, гібридний режим RSS + HTML, імпорт через Sitemap, обробку зображень, додаткові поля DLE, захист від дублів, AI-рерайт та інтеграцію з DLE Multi-Language.
Система розрахована на власників новинних сайтів, тематичних порталів, блогів, агрегаторів і контентних проєктів, яким важливо не просто скопіювати матеріал, а отримати готову публікацію: з очищеним HTML, локальними зображеннями, категоріями, тегами, додатковими полями, ЧПУ, перекладами та діагностикою кожного етапу обробки.
Головне
- Чотири режими: HTML-сторінки, RSS/Atom, гібрид RSS + HTML і Sitemap — підключається майже будь-який сайт
- Селектори — не проблема: їх підбирає AI, а якщо селектор не спрацював, модуль сам знаходить статтю на сторінці — без меню, коментарів і реклами
- ШІ на вибір: DeepSeek, OpenAI, Claude, Gemini, OpenRouter і будь-який сервіс з API як в OpenAI — рерайт, переклад, теги й мета-опис
- Актуальні моделі самі: список моделей завантажується від провайдера з цінами, щойно вказано ключ
- Готова новина: зображення на вашому сервері, категорії, теги, ЧПУ, додаткові поля та SEO — як під час додавання через адмінпанель DLE
- Під контролем: фільтри, заміни, ліміти за джерелом, захист від дублів і тест із попереднім переглядом до публікації
- Зв'язка з Rewrite & Quality PRO: новини можна передавати на рерайт з навичками та перевіркою якості, публікація після рерайту
- Посилання на джерело: адреса статті-донора зберігається в дод. полі, вивести її під новиною — один рядок у шаблоні
Архітектура модуля: чотири режими парсингу
HTML Parser — класичний веб-скрейпінг
- Отримання матеріалів безпосередньо з HTML-структури сайту-донора
- Коректна обробка списків матеріалів: парсер проходить усі знайдені контейнери й шукає посилання всередині кожного блоку
- URL-based progress: відстеження останнього обробленого матеріалу за URL, а не за порядковим номером на сторінці
- Підтримка напрямку обробки: від нових до старих і від старих до нових
- Налаштовувана пагінація:
/page/{page}/, ?page={page}, /p/{page}, /offset/{page} та власні шаблони
- Отримання заголовка, повного тексту, категорій, головного зображення й додаткових полів через CSS-селектори
- Локальне очищення контенту всередині вибраного блоку, без видалення елементів з усього DOM документа
- Автоматичне завантаження зображень із тексту матеріалу й заміна зовнішніх посилань на локальні
- Підтримка додаткових полів DLE: файли, зображення, відео, галереї, HTML-блоки та текстові значення
RSS/Atom Parser — робота з новинними стрічками
- Підтримка RSS 2.0, RSS 1.0 (RDF) та Atom 1.0
- Отримання контенту з
content:encoded, description та Atom content
- Обробка namespaces: media, content, dc, atom
- Отримання зображень з enclosure, media:content, media:thumbnail, media:group та HTML-контенту
- Додатковий пошук головного зображення на сторінці статті через Open Graph і Twitter meta-теги
- Отримання категорій зі стрічки та їх зіставлення з категоріями DLE
- Окрема стратегія cursor для режимів new_to_old та old_to_new, щоб нові матеріали вгорі RSS не пропускалися
- Очищення RSS-контенту від рекламних і службових блоків через селектори виключення
Hybrid Parser — поєднання RSS і HTML
- RSS використовується для швидкого отримання списку актуальних матеріалів
- HTML-сторінка використовується для отримання повного тексту, зображень, категорій і додаткових полів
- Підтримка HTML category selector з політикою об’єднання категорій: RSS first, HTML fallback або HTML priority
- Захист від зависання на проблемному матеріалі: item-level failure tracking, fail cursor advancement та ліміт повторних спроб
- Об’єднання даних із RSS і HTML з пріоритетом повнішого джерела
- Підтримка завантаження медіа й додаткових полів з HTML-версії статті
- Оптимальний режим для сайтів, де RSS містить лише анонс, а повний матеріал доступний на сторінці
Sitemap Parser — імпорт матеріалів із sitemap.xml
- Підтримка звичайних sitemap.xml і sitemap index із вкладеними sitemap-файлами
- Автоматичне отримання списку URL матеріалів із Sitemap
- Кешування sitemap-інвентарю для пришвидшення повторних запусків і зменшення навантаження на сайт-донор
- Підтримка напрямку обробки: від нових до старих і від старих до нових
- Отримання заголовка, повного тексту, категорій, зображень і додаткових полів через CSS-селектори
- Відстеження загальної кількості URL і прогресу обробки
- Захист від повторної публікації вже імпортованих матеріалів
AI-рерайт, переклади та DLE Multi-Language
AI-обробка: шість варіантів провайдера
- DeepSeek, OpenAI, Anthropic Claude, Google Gemini, OpenRouter і будь-який сервіс з API як в OpenAI: Groq, Mistral, xAI, Together, Fireworks, Moonshot, Z.ai, Qwen, YandexGPT, а також локальні Ollama та LM Studio
- Актуальні моделі завантажуються від провайдера автоматично, щойно вказано ключ: звичайний список із пошуком і ціною за 1 млн токенів; потрібну модель можна ввести й вручну
- Кнопка «Перевірити зв'язок» — короткий запит до моделі з витратою токенів і ціною
- Мова результату: заголовок, текст, опис і теги пишуться вибраною мовою — зручно для перекладу іноземних джерел
- Мета-опис новини через ШІ (140–160 символів) і автозаповнення мета-тегів
- Місячний ліміт витрат із попередженням або зупинкою ШІ-обробки; витрати за моделями видно на вкладці «Статистика»
- Повторні спроби в разі перевантаження сервісу й автоматичне підлаштування параметрів під моделі, які не приймають застарілі налаштування
- Рерайт заголовка, короткого опису та повного тексту матеріалу
- Chunk-based обробка довгих статей із розбиттям на безпечні фрагменти
- Збереження HTML-структури під час рерайту й перекладу: параграфи, списки, заголовки, blockquote, code/pre
- Захист медіа-елементів перед AI-обробкою: зображення, figure, picture, iframe, video та pre/code блоки тимчасово замінюються маркерами
- Автоматичне відновлення медіа-елементів після AI-обробки
- Налаштовувані промпти для заголовка, короткого опису, повного тексту й тегів
- Повторна обробка підозрілих фрагментів, якщо AI залишив частину тексту мовою оригіналу
- Додаткова нормалізація HTML після відповіді AI, щоб уникнути зламаних списків і незакритих тегів
Інтеграція з DLE Multi-Language
- Автоматичне визначення активних мов із конфігурації DLE Multi-Language
- Заповнення мовних полів: заголовок, короткий і повний опис, теги, адреса новини (ЧПУ), мета-опис і ключові слова для кожної мови
- Якщо переклад на мову не вдався, ця мовна версія не зберігається — текст мовою оригіналу в чуже поле не потрапляє
- Переклад повного матеріалу, короткого опису, заголовка й тегів для кожної активної мови
- Збереження основної мовної версії окремо від перекладів
- Перевірка наявності мовних колонок перед збереженням, щоб уникнути помилок БД
- Fallback для тегів: якщо AI не зміг перекласти tags, модуль формує теги з уже перекладеного контенту
- Підтримка різних мовних сценаріїв: основна мова сайту може відрізнятися від мови сайту-донора
Фільтри, заміни та публікація за джерелом
- Обов’язкові слова та стоп-слова, мінімальна довжина тексту, максимальний вік матеріалу — перевіряються до ШІ, щоб не витрачати токени
- Заміни в тексті за правилами, зокрема регулярними виразами
- Для кожного джерела: публікувати одразу чи на модерацію, автор новин, виведення на головну, дозвіл коментарів і ліміт новин на добу
- Експорт та імпорт джерел у файл — перенесення налаштувань між сайтами за хвилину
Тестування й попередній перегляд перед публікацією
Real dry-run pipeline
- Тестування джерела використовує той самий pipeline, що й реальний парсинг
- Режим dry-run не зберігає матеріал у БД, але показує підсумковий результат обробки
- Попередній перегляд містить фінальний заголовок, короткий опис, повний текст, категорії, зображення, xfields, tags і duplicate verdict
- Тест допомагає побачити реальний результат після очищення, AI-рерайту, перекладу, завантаження зображень і обробки додаткових полів
- В інтерфейсі додано попередження: повна симуляція може тривати кілька хвилин і використовувати AI/API-запити
- Результат тестування максимально відповідає тому, що буде опубліковано під час реального запуску CRON
CSS-селектори та отримання даних
Розширений selector engine
- Підтримка базових CSS-селекторів: теги, класи, ID, атрибути
- Підтримка груп через кому:
h1, .title, [itemprop="headline"]
- Підтримка вкладеності, прямих нащадків і сусідніх елементів:
.article .text, .post > p, h1 + .lead
- Підтримка кількох класів на одному елементі:
.post.featured
- Підтримка атрибутів:
[href], [data-src], [itemprop="articleBody"], [class*="content"]
- Підтримка низки псевдокласів:
:first-child, :last-child, :nth-child(), :contains(), :not(), :is(), :where(), :has() у підтримуваних межах
- Попередження в тестовому режимі для надто складних або непідтримуваних селекторів
- Докладна довідка в адмінпанелі з прикладами та поясненням підтримуваного синтаксису
Додаткові поля DLE
Завантаження файлів, медіа та галерей
- Налаштування довільної кількості додаткових полів для кожного джерела
- Для кожного поля задаються CSS-селектор, атрибут отримання й тип дії
- Підтримувані атрибути:
href, src, data-src, data-href, content, text, html
- Підтримувані дії: зберегти URL/текст, завантажити файл, завантажити зображення, завантажити відео, зберегти зовнішнє відео, зібрати галерею
- Галереї автоматично обходять усі знайдені елементи й зберігають результат у форматі DLE
- Файли та відео зберігаються в
uploads/public_files/
- Зображення зберігаються в
uploads/posts/ з метаданими розміру
- HTML-блоки можна зберігати в додаткові поля із застосуванням політики очищення контенту
Зображення та медіа
Професійна обробка зображень
- Автоматичне завантаження зображень із повного тексту матеріалу
- Підтримка HTTPS, редиректів і відносних URL
- Збереження зображень із розкладанням за датами
- Заміна зовнішніх URL у контенті на локальні копії
- Підтримка JPEG, PNG, GIF, WebP і AVIF
- Опційна конвертація у WebP або AVIF
- Мінімальна ширина зображення — іконки й лічильники не потрапляють у новину
- Водяний знак із вашого шаблону DLE
- Пропорційне зменшення за максимальною шириною та висотою
- Коректне збереження оригінального формату, якщо конвертацію вимкнено
- Resize зі збереженням пропорцій через GD або Imagick
- Отримання зображень із
figure, picture, img, srcset, lazy-load атрибутів і meta-тегів
Категорії та теги
Розумне керування категоріями
- Отримання категорій із RSS, HTML і Sitemap-сторінок
- Візуальне зіставлення категорій сайту-донора з категоріями DLE
- Підтримка категорії за замовчуванням для незіставлених матеріалів
- Підтримка кількох категорій для одного матеріалу
- Для Hybrid-режиму доступна політика об’єднання категорій із RSS і HTML
Генерація та переклад тегів
- Автоматична генерація тегів через AI
- Fallback-генерація тегів із категорій, заголовка й тексту, якщо AI не повернув коректного результату
- Переклад тегів для DLE Multi-Language
- Fallback для
tags_{iso} з перекладеного контенту, якщо AI-переклад тегів недоступний
- Нормалізація списку тегів: видалення сміття, дублів і надто довгих фраз
Захист від дублів і надійний прогрес
Система запобігання дублікатам
- Нормалізація URL перед перевіркою дублів
- Перевірка за source_url, GUID, заголовком і fingerprint контенту
- Коректна обробка duplicate skip без хибної помилки збереження
- Очищення dedupe-прогресу під час повного скидання джерела
- Захист від повторної публікації після зміни URL-параметрів, trailing slash або tracking-параметрів
Progress і cursor model
- HTML-джерела використовують URL cursor замість лічильника позиції на сторінці
- RSS і Sitemap використовують окремі стратегії для new_to_old та old_to_new
- Hybrid-режим просуває cursor навіть за контрольованих помилок, щоб джерело не зависало на одному матеріалі
- Скидання прогресу очищає пов’язані dedupe-записи джерела
Structured logs, статистика й моніторинг
Структуровані логи
- Кожен етап парсингу записується як structured event
- Лог містить
source_id, source_type, source_name, item_url, stage, status, message, duration_ms і додатковий контекст
- Окремо логуються етапи fetch, parse, download_images, ai_rewrite, translate, generate_tags, translate_tags, db_save та duplicate check
- Логи допомагають швидко зрозуміти, де саме витрачається час або виникає помилка
Health monitoring джерел
- Відстеження останнього успішного запуску
- Fail streak — для розуміння кількості помилок поспіль
- Duplicate rate — для оцінки якості джерела
- Average fetch time та average run time
- Точніша статистика оброблених матеріалів для кожного source
Cloudflare, Proxy та мережевий рівень
Дворівнева система обходу захисту
- Enhanced cURL з імітацією браузерних заголовків
- Підтримка cookie persistence між запитами
- Інтеграція з FlareSolverr для обходу Cloudflare та JavaScript challenges
- Опційна підтримка HTTP/SOCKS5 proxy
- Автоматичне перемикання на FlareSolverr у разі виявлення захисної сторінки
- Graceful fallback на звичайний cURL, якщо обхід захисту не потрібен
Адміністративна панель
Керування джерелами й налаштуваннями
- Додавання й редагування HTML, RSS/Atom, Hybrid та Sitemap джерел
- Увімкнення й вимкнення джерел
- Скидання прогресу та повторна обробка
- Інтерфейс російською, англійською, українською та іспанською мовами, у стилі адмінпанелі DLE і без горизонтальної прокрутки на будь-якому екрані
- Зрозумілі підказки в разі проблем: якщо сайт будує сторінки скриптами або закритий від роботів, модуль прямо радить підключити його RSS або sitemap
- Докладна документація на doc.dlemod.com
- Попередження про ліміти сервера під час запуску повної симуляції парсингу
- Вбудований preview підсумкового матеріалу перед публікацією
- Підтримка старих і нових AJAX endpoints DLE
Безпека
- Очищення матеріалів донорів від шкідливого коду: скрипти, небезпечні атрибути та iframe зі сторонніх сайтів видаляються
- Захист від запитів до внутрішніх адрес сервера під час завантаження сторінок, зображень і файлів
- Усі дії адмінпанелі захищені від підробки запитів; ключі ШІ в налаштуваннях приховано
Round-Robin планувальник
- Рівномірний розподіл навантаження між активними джерелами
- Автоматична ротація джерел
- Налаштування кількості матеріалів за один запуск CRON
- Захист CRON endpoint через secret key
- Structured logging кожного запуску
- Lock-захист від паралельного запуску того самого cron-процесу
Переваги використання
- Автоматизація: повний цикл від отримання матеріалу до збереження готової публікації в DLE
- Багатомовність: автоматичне заповнення мовних полів DLE Multi-Language
- Гнучкість: чотири режими роботи для різних типів джерел
- Якість контенту: AI-рерайт, переклад, генерація тегів і збереження HTML-структури
- Надійність: захист від дублів, стійкий cursor, controlled failure handling
- Прозорість: structured logs, health metrics і зрозумілий preview перед публікацією
- Медіа: локальне збереження зображень, файлів, відео й галерей
- Масштабованість: необмежена кількість джерел з Round-Robin обробкою
- Сумісність: підтримка актуальних версій DLE та PHP 7.4-8.4
Сценарії застосування
- Новинні агрегатори: регулярний імпорт матеріалів із кількох RSS, HTML і Sitemap джерел
- Тематичні блоги: адаптація й переклад зарубіжного контенту основною мовою сайту
- Багатомовні сайти: автоматичне заповнення мовних версій матеріалів
- Оглядові портали: імпорт оглядів, інструкцій, гайдів і технічних статей
- Регіональні ЗМІ: збір публікацій із локальних джерел із подальшою обробкою
- Освітні проєкти: імпорт навчальних матеріалів, посібників і документації
- Контентні портали: масове наповнення розділів із контролем дублів, категорій і тегів
Технічні вимоги та сумісність
- DLE: 15.1 – 21.0
- PHP: 7.4 - 8.4
- Розширення PHP: CURL, DOM, XPath, libxml, GD або Imagick, JSON, mbstring
- MySQL/MariaDB: сумісна версія, яку підтримує ваша версія DLE
- Права доступу: запис у
/uploads/posts/, /uploads/public_files/, /engine/data/, /engine/cache/
- AI API: ключ будь-якого з підтримуваних провайдерів (або локальний сервер Ollama / LM Studio), якщо використовуються рерайт, переклад чи генерація тегів
- CRON: доступ до налаштування планувальника завдань
- FlareSolverr: опційно, потрібен лише для сайтів із захистом Cloudflare/JavaScript