Pipeline
Обзор
Статус автопилота, источника Роструда, базы знаний НПА и публикаций WordPress.
Runtime
Режим работы
Worker сам забирает raw-материалы и проводит их через RAG, LLM, QC и обложку.
Использовать локальную ChromaDB с НПА-фрагментами как контекст для writer'а.
Выключено: writer пишет только по результатам Tavily web search (pravo.gov.ru, consultant.ru, garant.ru и др.).
⚠️ Если выключить RAG и при этом Tavily не вернёт результатов (кончились ключи или нет совпадений по теме) —
writer возвращает «нет нормативной опоры», статья падает в needs_manual_review
без сгенерированного текста. Рекомендуется держать RAG включённым как
страховку: он подхватит контекст когда Tavily на лимите.
«Черновик WP» — статья появляется в админке hses.ru как draft, на сайте не видна (тестовый режим). «Сразу на сайт» — статья сразу публикуется на hses.ru. Менять только когда уверены в качестве.
Какая большая языковая модель пишет статьи и проводит QC. «Claude Opus 4.7» — самая сильная (юридический разбор, через Vibecode-прокси, ключ CLAUDE_API_KEY). «Gemini 2.5 Pro/Flash» — дешевле и быстрее (Vertex AI). «DeepSeek» — альтернатива; требует DEEPSEEK_API_KEY. Изменения вступают с ближайшей следующей генерации.
Сколько статей за календарный день (МСК) разрешено выпустить. Когда лимит достигнут — автопилот ждёт до полуночи. Выбор из raw идёт случайно — лента на сайте получается разнообразной. 0 = без лимита.
Часы, в которые автопилот этого сайта может публиковать. По умолчанию 0–24 (24/7). Для ukcr.pro Сергей просил 8–18. Часы задаются в формате 0–23 для начала и 1–24 для конца (24 = полночь).
Минимальный промежуток между двумя соседними публикациями этого сайта. 0 = без ограничения, автопилот выпускает пачкой. Для ukcr.pro Сергей просил 35 минут — получается ~17 публикаций в день.
Сколько коротких ссылок на нормативные акты (ТК РФ ст. 214, ФЗ-426 ст. 5 и т.п.) валидатор требует в теле статьи. Если writer не дотягивает (например, без локального RAG или Tavily), валидатор отправит статью на ручную модерацию. 0 = проверка выключена. Меняйте осторожно — низкий порог пропускает менее обоснованные статьи.
- Автопилот
- ...
- Режим публикации
- ...
- LLM-движок
- ...
- За цикл
- ...
- Интервал обработки
- ...
- Лимит/день
- ...
- Токены input
- 0
- Токены output
- 0
Шаг 1 — источники
Парсер (2 источника)
Забирает свежие вопросы с двух порталов и кладёт в очередь со статусом raw. При включенном автопилоте работает по расписанию — ручная кнопка нужна, если хочется дёрнуть прямо сейчас.
Дёргает оба источника по очереди.
- Источник 1
- онлайнинспекция.рф
- Источник 2
- vo.spec.help
- Расписание
- каждые ... минут
- Последний прогон
- ...
- За последний прогон
- ...
- В очереди на обработку
- статей со статусом
raw
«Уже было» — это вопросы, которые парсер уже видел раньше (или сейчас в очереди). Это нормально: при повторных запусках старые повторно не добавляются. Если все из источника «уже были» — значит они либо в очереди, либо уже опубликованы.
Шаг 2 — генерация
Запустить writer вручную
Берёт raw вопросы из очереди и прогоняет их через RAG → LLM → QC → обложку → публикацию в WP-черновик. При включенном автопилоте writer запускается сам каждые несколько минут — кнопка нужна только для теста или поштучного догона.
Если raw-вопросов в очереди меньше — возьмутся сколько есть.
Очередь
Сводка по статусам
База знаний
Нормативные акты
| Акт | Источник | Фрагменты | Обновлён | Действие |
|---|
WordPress
Последние черновики
| Заголовок | Категория | Опубликован | WP |
|---|
Журнал
Лента событий по статьям
Каждая строка — одна статья и её последнее событие в пайплайне. Кликни строку, чтобы открыть карточку статьи.
| Время | Событие | Статья | Категория | Детали | Ссылка |
|---|
Статусы
Распределение очереди
Категории
Тематики HSES
14 дней
Публикации и ошибки
Текущий период
Биллинг по опубликованным статьям
Учитываются только статьи со статусом published — те, что реально создались в WordPress. Месяц «в работе» — считается на лету. «Закрыт» — счёт можно выгрузить (выставляется 1 числа следующего месяца).
| Период | Опубликовано | Ставка, ₽ | Итого, ₽ | Действия |
|---|
Реквизиты
Исполнитель
Реквизиты исполнителя зафиксированы в коде и меняются только разработчиком — это защищает от случайных правок из дашборда.
Реквизиты
Заказчик
Тариф
Стоимость генерации одной статьи
Telegram
Модераторы бота
Список Telegram user_id, которым приходят уведомления о новых черновиках и которые могут пользоваться командами бота. Чтобы узнать свой id — напишите боту @hsesrubot команду /myid.
Legal
Дисклеймеры (до 10 вариантов через ---)
Разделите варианты строкой --- на отдельной строке. Каждой статье
в публикации присваивается один из вариантов по очереди (id статьи % N).
Если разделителей нет — весь текст используется как единственный дисклеймер.
Writer
Системный промпт
Imagen
Промпт обложек
Базовый style preset, который добавляется к каждой обложке. Здесь описывают визуальный стиль (документальное фото, естественный свет), список запретов на тексты/логотипы/нашивки и тип одежды. Сохраняется на диск, обложка генерируется с новым промптом со следующего же запуска.
Parser sources
Источники парсинга
Какие доноры опрашивает парсер при каждом запуске. Можно временно отключить любой источник — оставшиеся продолжат работать. Хотя бы один источник должен быть включён.
Основной донор: вопросы и ответы инспекторов Роструда. Раздел «Охрана труда» + смежные категории. Самые свежие практические кейсы.
Второй донор: «Вопросы специалисту» — сообщество специалистов по охране труда. Темы по тегу «Охрана труда» и смежным разделам безопасности.
Tavily API
Ключи веб-поиска (пул)
Несколько API-ключей Tavily для параллельной работы. Free tier даёт ~500 advanced-запросов в месяц на ключ. Система чередует ключи по кругу и автоматически переключается на следующий при 429/исчерпании лимита. Один ключ на строку, формат tvly-…. Минимум один ключ должен быть. Изменения применяются с ближайшего запроса — рестарт не нужен.
Web search
Источники веб-поиска
Whitelist доменов, на которых разрешено искать актуальные нормы (через Tavily). Поиск идёт только по этим сайтам, всё остальное игнорируется. Один домен на строку, без https:// и без www. (например: consultant.ru, garant.ru, pravo.gov.ru). Изменения применяются со следующего запуска генерации — деплоить не нужно.
Taxonomy
Категории
Список категорий, в которые система раскладывает статьи. Сценарий 1: добавьте категорию через форму ниже — она появится и в нашей таксономии, и в WP-админке одним нажатием. Сценарий 2: если категорию уже создали в WP — нажмите «Синхронизировать с WP», новая категория добавится в YAML с черновым описанием (его нужно дописать вручную, иначе LLM не будет туда классифицировать). Сценарий 3: чтобы изменить существующую категорию (дополнить ключевые слова, поправить описание) — выберите её из выпадающего списка ниже. Категории работают сразу — пайплайн перечитывает YAML на каждый запуск.
Выберите категорию — её текущие настройки подгрузятся в форму ниже. Внесите правки и нажмите «Сохранить изменения».
Создаст категорию в WP-админке hses.ru И добавит в наш YAML. Slug подтянется автоматически из названия, можно править вручную.
Ключевые слова используются для предварительного фильтра: если в заголовке/тексте статьи встречаются ключи одной категории сильно чаще остальных — категория выбирается без обращения к LLM (быстрее и точнее). Можно писать корни без окончаний: «несчастн», «травм», «инструктаж». Чем точнее терминология — тем меньше ошибок типа «несчастный случай ушёл в Охрану труда».
YAML целиком (для редактирования вручную)
Master switch
Автопубликация в соцсети
Когда выключено — после публикации статьи в WordPress ничего не отправляется в TG/VK/OK/MAX. Включите, когда готовы запускать.
Каналы
VK · OK · MAX · Telegram
Включатель на канал + шаблон поста. Подстановки: {topic_emoji} (по категории статьи), {title}, {situation}, {answer}, {url}. В Telegram шаблон поддерживает HTML: <b> для жирного, <i> для курсива (parse_mode=HTML). В VK/OK/MAX — plain text, форматирование передаётся только эмодзи-маркерами. Первая строка TG-поста становится заголовком в Дзене через @zen_sync_bot. При нехватке места — сначала режется {answer}, затем {situation}; {title} и {url} сохраняются.
Status