Сибирь AI

Документация
Сибирь.Аудит 1.2.0

Описание функциональных характеристик программы для ЭВМ, информация, необходимая для установки и эксплуатации, и описание процессов, обеспечивающих поддержание жизненного цикла программного обеспечения. Документы размещены в открытом доступе, регистрация не требуется.

Подготовлено правообладателем - ООО «ФИИ», ИНН 5402076457. Редакция от .

версия 1.2.0 набор правил 2026.08.8 редакция октябрь 2026

Описание функциональных характеристик

Программа для ЭВМ «Сибирь.Аудит» (Siberia Audit), версия 1.2.0. Правообладатель - ООО «ФИИ».

1. Общие сведения

ПараметрЗначение
НаименованиеПрограмма для ЭВМ «Сибирь.Аудит»
Наименование латиницейSiberia Audit
ПравообладательООО «ФИИ», ОГРН 1235400001870, ИНН 5402076457
Адрес правообладателя630090, г. Новосибирск, ул. Демакова, д. 23/5
Официальный сайтhttps://siberia-ai.ru
Версия1.2.0 (набор правил RULES_VERSION 2026.08.8). В файле pyproject.toml экземпляра остался номер 1.0.1, экземпляр определяется контрольной суммой SHA-256
Год создания2026
Язык программированияPython 3.12
Объем70 файлов, 15 425 строк, 851,1 КБ

2. Назначение и область применения

Программа предназначена для автоматизированного технического аудита веб-сайтов и подготовки рекомендаций по устранению выявленных дефектов.

Область применения: деятельность организаций, эксплуатирующих корпоративные сайты и информационные ресурсы. Экземпляр проверяет исходный HTML одной страницы, отдельные признаки структурированных данных, доступности и адаптивности в разметке, цепочку перенаправлений одного адреса и реализованные признаки готовности HTML к обработке системами искусственного интеллекта. Границы этих проверок приведены ниже.

Ключевая особенность программы — детерминированность. Все оценки, баллы и вердикты вычисляются по кодифицированным правилам с версионированием их набора. Программа не использует генеративные модели для формирования оценок и не обращается к внешним сервисам: анализируется только содержимое проверяемого ресурса. Каждая находка сопровождается сведениями о происхождении: источник, примененное правило, версия набора правил.

3. Функциональные характеристики

3.1. Технический аудит страницы.

Загрузка и разбор одной страницы, выполнение применимых детерминированных проверок, вычисление итогового балла по формуле «100 минус сумма весов выявленных дефектов» с нижней границей 0. В контрольном примере выполнена 31 проверка. Число применимых правил зависит от запроса. Недоступность ресурса (коды ответа 4xx, 5xx) устанавливает балл 0. Страница, вернувшая успешный код при пустом содержимом, помечается признаком необходимости повторной загрузки, а не признается страницей без заголовка. Проверяются доступность, индексируемость, канонические адреса, заголовки и описания, иерархия заголовков, объем содержания, язык и кодировка, защищенное соединение, смешанное содержимое, языковые соответствия и заголовки доверия.

3.2. Проверка отдельных признаков структурированных данных.

Разбор JSON-LD в исходном HTML одной страницы: выявление синтаксических ошибок и проверка отдельных признаков разметки в объеме правил экземпляра. Полная валидация всех типов и свойств Schema.org не заявляется.

3.3. Проверки признаков доступности и адаптивности в HTML.

Анализируются признаки в исходной разметке: подписи полей, доступные имена элементов, иерархия заголовков, блокировка масштабирования, объявленные размеры, атрибуты изображений и значения цвета и фона. Браузерный рендеринг, измерение реальной геометрии и визуальная проверка поведения интерфейса не выполняются.

3.4. Проверка признаков структуры исходного HTML.

В исходной разметке проверяются отдельные признаки скрытого или недостаточного содержания и зависимостей от сценариев. Результаты являются эвристиками статического HTML. Итоговая структура после исполнения JavaScript, фактическая видимая область и горизонтальное переполнение в браузере не измеряются.

3.5. Эвристическая оценка готовности HTML к обработке системами ИИ.

Оцениваются реализованные признаки исходного HTML одной страницы. Результат не является прогнозом поисковых позиций или цитирования. Комплектная ONNX-модель вызывается отдельными функциями библиотеки и автоматически в HTTP /check, /audit или audit_url не применяется.

3.6. Анализ признаков содержания и локальной релевантности.

Проверка содержания на соответствие заданным требованиям к полноте и достоверности, выявление недостающих смысловых блоков, оценка признаков локальной релевантности и коммерческих признаков страницы.

3.7. Проверка требований к содержанию.

Выявление в содержании страницы утверждений, не допускаемых требованиями к рекламной и информационной деятельности, а также утверждений, не подкрепленных проверяемыми сведениями.

3.8. Проверка перенаправлений одного адреса.

Проверяется цепочка перенаправлений одного запрошенного адреса. Обход всего сайта, построение и сверка общей карты перенаправлений в этой сборке не реализованы. Маршрут /site возвращает HTTP 501 с сообщением о недоступности обхода сайта целиком.

3.9. Программный интерфейс.

Предоставление результатов через программный интерфейс по протоколу HTTP: сокращенный отчет (итоговый балл и приоритетные рекомендации) и полный отчет (все находки с доказательствами, версией набора правил, методом расчета балла и результатом проверки правил индексирования). Реализованы защита от обращения к внутренним сетевым ресурсам, ограничение частоты обращений, ограничение числа одновременных обработок и кэширование результатов.

3.10. Семантическая оценка содержания.

Программа сравнивает тексты по смыслу, а не по совпадению слов. Для этого фрагменты документа переводятся в числовые векторы нейросетевой моделью, и близость вычисляется между векторами. Оценок три: отвечает ли начало раздела на вопрос своего заголовка, повторяет ли документ сам себя и чем материал отличается от эталонных текстов по теме. Каждая оценка возвращается вместе с признаком того, чем она получена: моделью или запасным лексическим способом.

4. Ограничения применимости

4.1. Загрузка страниц выполняется без исполнения сценариев на стороне клиента. Для ресурсов, содержание которых формируется средствами браузера, проверки, относящиеся к объему и структуре содержания (в частности, оценка объема текста и наличия заголовка первого уровня), дают заниженный результат. Достоверными для таких ресурсов остаются проверки заголовков ответа, мета-тегов, правил индексирования, перенаправлений и структурированных данных.

4.2. Программа не изменяет проверяемый ресурс и не публикует исправления: результатом работы являются выявленные дефекты и рекомендации.

4.3. Программа не измеряет позиции ресурса в поисковых системах и не использует сведения из внешних источников данных.

4.4. Оценки формируются исключительно по кодифицированным правилам. Дефект, не описанный правилом действующего набора, не выявляется.

4.5. Указанные ограничения обусловлены принятым при разработке решением обеспечить автономность программы и воспроизводимость ее оценок.

5. Технические характеристики

ПараметрЗначение
Тип ЭВМIBM PC-совместимый компьютер, серверное оборудование
Операционная системаLinux, Microsoft Windows, macOS
Среда исполненияPython версии не ниже 3.12
Требуемый объем памятине менее 2 ГБ оперативной памяти
Требуемый объем дискового пространстване менее 1 ГБ
Сетевые требованиядоступ к проверяемому ресурсу по протоколу HTTP/HTTPS
Способ распространенияпредоставление права использования по лицензионному договору

6. Сведения о компонентах

6.1. Программа использует библиотеки с открытым исходным кодом, распространяемые на условиях свободных лицензий (MIT, BSD-3-Clause, Apache-2.0, MPL-2.0, PSF-2.0): средства разбора разметки, средства выполнения сетевых запросов, средства валидации данных, средства ведения журналов и средства реализации программного интерфейса. Полный перечень с версиями и условиями лицензий приведен в отдельном документе.

6.2. Программа не содержит иностранных проприетарных компонентов, использование которых требует получения лицензий у иностранных лиц.

6.3. Программа не осуществляет обращений к внешним сервисам обработки данных, не требует подключения к внешним программным интерфейсам и не имеет функций принудительного обновления или управления, осуществляемых с территории иностранных государств.

6.4. Результаты исторического контрольного прогона с программной блокировкой сетевых соединений относятся только к выполненным в нем операциям. Они не подтверждают полную сетевую изоляцию приложения или проверку всех компонентов. В проверке экспертного экземпляра от 28 октября 2026 года изоляция на уровне операционной системы не применялась. Для HTTP-аудита удаленной страницы необходим сетевой доступ к проверяемому адресу.

7. Сведения об обработке персональных данных

7.1. Программа не предназначена для обработки персональных данных. Обрабатываются исключительно общедоступные сведения, размещенные на проверяемом ресурсе.

7.2. Хранение и передача персональных данных граждан Российской Федерации за пределы Российской Федерации программой не осуществляются.

8. Отнесение к сфере искусственного интеллекта

8.1. Программа относится к сфере искусственного интеллекта. Основанием является реализованный в ней метод вывода: программа представляет собой экспертную систему, построенную на версионируемой базе знаний — кодифицированном наборе правил с весами, — и формирует вердикты и итоговую оценку путем применения этих правил к разобранному представлению проверяемого документа. Экспертные системы и системы, основанные на знаниях, относятся к технологиям искусственного интеллекта в соответствии с Национальной стратегией развития искусственного интеллекта, утвержденной Указом Президента Российской Федерации от 10.10.2019 № 490.

8.2. Программа выполняет задачу, результат которой сопоставим с результатом интеллектуальной деятельности специалиста: выявление дефектов веб-ресурса, их квалификация по значимости и формирование рекомендаций по устранению. Заключение выносится автоматически, без участия человека.

8.3. Отдельные функции программы имеют предметной областью системы искусственного интеллекта: оценка пригодности содержания для цитирования автоматическими системами поиска на основе искусственного интеллекта (пункт 3.5) и проверка условий доступа таких систем к проверяемому ресурсу.

8.4. Метод вывода является детерминированным. Генеративные языковые модели к формированию оценок не привлекаются. Детерминированность выбрана осознанно: она обеспечивает воспроизводимость результата и прослеживаемость каждого вердикта до конкретного правила и версии их набора, что необходимо для применения результатов в контрольных и приемочных процедурах. Отсутствие генеративных моделей не выводит программу за пределы сферы искусственного интеллекта: оно характеризует способ реализации, а не предметную область.

8.5. Обучение моделей машинного обучения в составе программы не производится, обращений к внешним сервисам обработки данных не выполняется.

8.6. В редакции 1.2.0 в состав программы включена подсистема семантических оценок и обученная модель представления текста (пункт 3.10). Модель применяется к разбору проверяемого документа и не является генеративной: она не порождает текст, а сопоставляет имеющийся. Сказанное в пунктах 8.4 и 8.5 сохраняет силу: вердикты правил остаются детерминированными, обучение моделей в составе программы не производится, обращений к внешним сервисам не выполняется.

9. Техническая поддержка

9.1. Техническая поддержка осуществляется правообладателем — ООО «ФИИ» — на территории Российской Федерации силами сотрудников общества. Передача обращений третьим лицам и за пределы Российской Федерации не осуществляется.

9.2. Канал обращений: электронная почта support@siberia-ai.ru, телефон +7 (383) 288-82-82. Режим работы — рабочие дни с 9:00 до 18:00 (UTC+7). Срок реакции — не более одного рабочего дня.

9.3. Сведения о технической поддержке размещены на официальном сайте правообладателя https://siberia-ai.ru.

9.4. Гарантийные обязательства и порядок обновления определяются лицензионным договором.

Информация, необходимая для установки экземпляра

Экземпляр поставляется архивом по лицензионному договору вместе с контрольной суммой SHA-256. Обученная модель входит в архив, отдельно ее скачивать не требуется.

1. Состав экземпляра

ПоказательЗначение
Архив дистрибутиваsibir-audit-1.2.0.zip
Размер архива, байт108 260 400
Записей в архиве73
Файлов исходного текста70
Строк исходного текста15 425
Контрольная сумма SHA-2563a0913d4c46a482730bcd19689e1c4756692617e8d59f4dfefcc14ba3752e8f6

В архив входит исходный текст программы на языке Python и каталог sibir_audit/models с обученной моделью представления текста и словарем токенизатора. Модель занимает 117 142 976 байт и загружается программой с файловой системы. Отдельно скачивать ее не требуется.

2. Проверка экземпляра перед установкой

Перед распаковкой сверьте контрольную сумму полученного архива с указанной в разделе 1. Несовпадение означает, что файл поврежден или подменен, и установку продолжать нельзя.

sha256sum sibir-audit-1.2.0.zip

В операционной системе Windows та же проверка выполняется командой:

certutil -hashfile sibir-audit-1.2.0.zip SHA256

3. Требования к среде

ТребованиеЗначение
Операционная системасемейства Linux
Язык исполненияPython версии не ниже 3.12
Оперативная памятьне менее 2 ГБ
Свободное местоне менее 1 ГБ
Сетевой доступтолько к проверяемым ресурсам

Средства виртуализации, контейнеризации, отдельный веб-сервер и система управления базами данных не требуются. Связь с правообладателем для работы программы не нужна.

4. Установка

4.1. Распаковать архив в каталог эксплуатанта.

unzip sibir-audit-1.2.0.zip -d sibir-audit

4.2. Создать изолированное окружение и установить зависимости, перечисленные в файле pyproject.toml.

python3 -m venv .venv && . .venv/bin/activate
pip install -e sibir-audit

4.3. Убедиться, что каталог sibir_audit/models распакован вместе с исходным текстом. Без него программа продолжит работать, но семантические оценки будут считаться запасным лексическим способом, о чем программа сообщит признаком основания оценки.

5. Запуск

Программный интерфейс поднимается штатным сервером приложений:

uvicorn sibir_audit.public_audit:app --host 127.0.0.1 --port 8080

Проверка одной страницы выполняется обращением к интерфейсу:

curl -X POST http://localhost:8080/check -H "Content-Type: application/json" -d '{"url": "https://example.org/"}'

Экземпляр для экспертной проверки: sibir-audit-1.2.0.zip (выдается по запросу), SHA-256 3a0913d4c46a482730bcd19689e1c4756692617e8d59f4dfefcc14ba3752e8f6.

5.1. Семантические оценки (пункт 3.10)

Подсистема семантических оценок находится в модуле sibir_audit.modules.semantika и дает три оценки: otvet_po_zagolovku (отвечает ли начало раздела на вопрос заголовка), samopodobie (повторяет ли документ сам себя) и novizna (насколько текст отличается от эталонных текстов). Каждая возвращает число от 0 до 1 и признак основания: model, если число получено нейросетевой моделью, или leksika, если запасным способом по пересечению слов.

Подсистема вызывается отдельно. HTTP-служба из пункта 5 и функция технического аудита страницы ее не вызывают, на их результат она не влияет. Модель передается в оценку явно, объектом Embedder.po_umolchaniyu(). Он берет файлы rubert-tiny2.onnx и vocab.txt из каталога sibir_audit/models внутри установленного пакета. Без этого аргумента оценка считается лексическим способом.

Для работы модели нужна среда выполнения onnxruntime. В перечень зависимостей pyproject.toml она не входит и устанавливается отдельно, в то же окружение:

pip install onnxruntime

Проверка на текстах из обоснования отнесения программы к сфере искусственного интеллекта:

python -c "
from sibir_audit.modules.semantika import Embedder, otvet_po_zagolovku
e = Embedder.po_umolchaniyu()
z = 'Как заменить счетчик воды'
for t in ('Прибор учета меняют так', 'История московского метрополитена кратко'):
    print(otvet_po_zagolovku(z, t, e))
    print(otvet_po_zagolovku(z, t))
"

Вывод 28 сентября 2026 года, onnxruntime 1.30.0, Python 3.12.10:

Ocenka(znachenie=0.8174937137223827, osnovanie='model', poyasnenie='')
Ocenka(znachenie=0.0, osnovanie='leksika', poyasnenie='модель недоступна, считано пересечением слов')
Ocenka(znachenie=0.6988008865467242, osnovanie='model', poyasnenie='')
Ocenka(znachenie=0.0, osnovanie='leksika', poyasnenie='модель недоступна, считано пересечением слов')

Первая и третья строки получены моделью: 0,817 для ответа, сформулированного другими словами, и 0,699 для постороннего текста. Вторая и четвертая строки получены без модели и равны нулю, потому что общих слов у этих текстов нет. Близость приводится к отрезку от 0 до 1 сдвигом косинуса, поэтому даже посторонний текст получает около 0,7. Сравнивать следует значения между собой, а не с серединой отрезка.

Те же оценки на разделах этой страницы документации. Эталоном для третьей оценки служит документация «Сибирь.Диалога»:

python -c "
from bs4 import BeautifulSoup
from sibir_audit.modules.pr.safe_fetch import safe_fetch_page
from sibir_audit.modules.semantika import Embedder, otvet_po_zagolovku, samopodobie, novizna
e = Embedder.po_umolchaniyu()
def razdely(url):
    return BeautifulSoup(safe_fetch_page(url).body, 'lxml').select('main section')
docs = razdely('https://siberia-ai.ru/docs')
for r in docs:
    print(r.get('id'), otvet_po_zagolovku(r.h2.get_text(), r.p.get_text(), e))
teksty = [r.get_text(' ', strip=True) for r in docs]
print('samopodobie', samopodobie(teksty, e))
etalon = ' '.join(r.get_text(' ', strip=True) for r in razdely('https://siberia-ai.ru/dialog-docs'))
print('novizna', novizna(' '.join(teksty), [etalon], e))
"
functional Ocenka(znachenie=0.6930483691270071, osnovanie='model', poyasnenie='')
install Ocenka(znachenie=0.7802163705151968, osnovanie='model', poyasnenie='')
operation Ocenka(znachenie=0.7902162853197296, osnovanie='model', poyasnenie='')
lifecycle Ocenka(znachenie=0.7597422891267605, osnovanie='model', poyasnenie='')
samopodobie Ocenka(znachenie=0.9727690332105996, osnovanie='model', poyasnenie='')
novizna Ocenka(znachenie=0.05178191592006476, osnovanie='model', poyasnenie='')

Модель читает каждый раздел не дальше первых 256 токенов, поэтому для длинных разделов оценка относится к их началу.

Без onnxruntime программа не прерывает работу. Каждая оценка возвращается лексическим способом с признаком osnovanie='leksika' и пояснением «модель недоступна, считано пересечением слов». Первая команда без onnxruntime печатает четыре одинаковые строки:

Ocenka(znachenie=0.0, osnovanie='leksika', poyasnenie='модель недоступна, считано пересечением слов')

Команды выполнены правообладателем 28 сентября 2026 года в Windows Server 2022, в оболочках bash и PowerShell. В Linux не проверялось.

Развернутое руководство по установке и эксплуатации. Скачать PDF. Редакция 4 от 30 октября 2026 года. Экземпляр 1.2.0. Идентификация архива, команды и границы проверок приведены в руководстве. Уточнение функциональных границ.

Информация, необходимая для эксплуатации экземпляра

Порядок работы, прекращение работы и техническая поддержка.

6. Эксплуатация

6.1. Результат проверки возвращается в виде структуры с перечнем выявленных дефектов, их значимостью, сведениями о происхождении каждого вывода и рекомендацией по устранению.

6.2. Пороги принятия решений в программу не заложены и настраиваются эксплуатирующей организацией под свои задачи.

6.3. Журнал работы ведется в стандартный поток вывода и может быть перенаправлен средствами операционной системы.

6.4. Обновление выполняется заменой каталога программы на новую редакцию с предварительной проверкой контрольной суммы по разделу 2.

6.5. Загрузка и запуск

Программа работает в одном из двух режимов: как HTTP-служба (программный интерфейс) или как библиотека Python, которую вызывает программа эксплуатанта. Оба режима используют окружение, созданное по пункту 4.2. Перед запуском окружение активируется:

. .venv/bin/activate

В Linux не проверялось. В Windows выполнено . .venv/Scripts/activate в bash и .venv\Scripts\Activate.ps1 в PowerShell.

Служба запускается из того же окружения:

uvicorn sibir_audit.public_audit:app --host 127.0.0.1 --port 8080

Параметр --host задает адрес, на котором служба принимает обращения, --port задает порт. Параметр --no-access-log отключает строки журнала о каждом обращении (пункт 6.11). Проверки подлинности обращений служба не выполняет, поэтому ее поднимают на адресе 127.0.0.1 или во внутренней сети эксплуатанта.

Признак успешного старта: последняя из четырех строк, «Uvicorn running on», после нее служба принимает обращения.

INFO:     Started server process [5336]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)

Готовность проверяется обращением к пути /healthz:

curl http://127.0.0.1:8080/healthz
{"ok":true,"service":"public-audit"}

Если порт занят, строки «Uvicorn running on» не будет. Вместо нее служба печатает сообщение об ошибке и завершается с кодом 3:

ERROR:    [Errno 10048] error while attempting to bind on address ('127.0.0.1', 8080): [winerror 10048] only one usage of each socket address (protocol/network address/port) is normally permitted

Текст ошибки приведен для Windows. В Linux номер и текст ошибки системные, начало строки то же, не проверялось.

6.6. Команды программного интерфейса

Все команды, кроме /healthz и /openapi.json, принимаются методом POST. Тело запроса передается в формате JSON с заголовком Content-Type: application/json.

Метод и путьНазначение
GET /healthzПризнак жизни службы. Отвечает, пока процесс работает, проверяемые ресурсы не запрашивает
POST /checkПолный отчет по одной странице: все находки с доказательствами и сведениями о происхождении, пройденные проверки, версия набора правил, метод расчета балла, результат проверки robots.txt
POST /auditСокращенный отчет по одной странице: балл, число находок по значимости, до трех приоритетных исправлений значимости CRITICAL, HIGH и MEDIUM, готовность страницы к системам поиска на основе искусственного интеллекта
POST /ai-accessДоступ поисковых роботов систем искусственного интеллекта к сайту по его файлу robots.txt и наличие файла llms.txt
POST /llms-txtФормирование файла llms.txt по карте сайта и заголовку главной страницы
POST /siteОбзор сайта целиком. В этой сборке не поддерживается, ответ 501
GET /openapi.jsonМашиночитаемое описание интерфейса в формате OpenAPI 3.1

Поля запроса у всех команд POST одинаковые:

ПолеЗначение
urlОбязательное. Адрес страницы, строка длиной от 1 до 2048 знаков. Принимаются схемы http и https, адрес без схемы дополняется до https://. Для /ai-access и /llms-txt используется только схема и имя сайта
langНеобязательное. Язык отчета: ru, en или zh. Пустое значение означает русский. Неизвестное значение заменяется на en, и ответ сообщает об этом полем lang_fallback

Команда /site дополнительно принимает поля max_pages, max_depth и exclude, но в этой сборке отвечает отказом до их обработки.

6.7. Полный отчет: POST /check

curl -X POST http://127.0.0.1:8080/check -H "Content-Type: application/json" -d '{"url": "https://siberia-ai.ru/"}'

Ответ программы 29 сентября 2026 года, код 200. Сокращены два перечня: из 30 пройденных проверок показаны две, из семи ограничений одно. Значения остальных полей приведены без изменений, изменены только переносы строк.

{
 "ok": true,
 "lang": "ru",
 "lang_requested": null,
 "lang_fallback": false,
 "requested_url": "https://siberia-ai.ru/",
 "final_url": "https://siberia-ai.ru/",
 "redirect_chain": [],
 "http_status": 200,
 "checked_at": "2026-09-29T00:35:20+00:00",
 "elapsed_ms": 2406,
 "rules_version": "2026.08.8",
 "score": 98,
 "score_method": {
  "formula": "100 минус взвешенный вычет за каждую находку; недоступность страницы (не открылась, 4xx, 5xx) обнуляет балл.",
  "weights": {"CRITICAL": 40, "HIGH": 15, "MEDIUM": 7, "LOW": 2, "INFO": 0},
  "note": "Это ориентир по данному набору правил, а не метрика поисковой системы и не предсказание позиций. В балле учитываются все находки, которые набор умеет выдавать, поэтому технически исправная страница может получить низкий балл из-за формулировок."
 },
 "needs_render": false,
 "robots": {"checked": true, "allowed": true, "robots_url": "https://siberia-ai.ru/robots.txt"},
 "counts_by_severity": {"LOW": 1},
 "findings_total": 1,
 "findings": [
  {
   "code": "schema_sameas_no_kg_anchor",
   "category": "GEO",
   "severity": "LOW",
   "title": "sameAs ведёт только в соцсети, без якоря на граф знаний",
   "recommendation": "Добавьте в sameAs хотя бы одну ссылку на запись в публичной базе знаний — Викиданных (wikidata.org) или Википедии.",
   "evidence": {
    "organizations": ["ООО «ФИИ»"],
    "org_nodes_without_kg_anchor": 1,
    "provenance": {
     "status": "verified",
     "sources": [{"source_id": null, "tier": 5, "type": "self-measured"}],
     "max_tier": 5,
     "method": "self-measured"
    }
   },
   "effort": 1,
   "impact": 1,
   "why": "Ссылки на соцсети подтверждают только присутствие в соцсетях; сущность организации ИИ-системы сверяют по графу знаний, и без такого якоря разметка её не опознаёт.",
   "title_en": "Organization sameAs links to social profiles, not a knowledge graph",
   "recommendation_en": "The Organization's sameAs points only to its own social/brand profiles. Add at least one public knowledge-graph entry — Wikidata or Wikipedia — so AI engines can resolve the publisher to a known entity, not just corroborate its social presence.",
   "why_en": "sameAs that lists only social profiles proves the brand has a presence, not which entity it is; an engine resolves the publisher against a knowledge graph, and without a Wikidata/Wikipedia link there is nothing to resolve it to."
  }
 ],
 "passed_checks": [
  {"code": "reachability", "title": "Доступность и код ответа", "title_en": "Reachability & HTTP status"},
  {"code": "https", "title": "HTTPS и смешанное содержимое", "title_en": "HTTPS & mixed content"}
 ],
 "checks_total": 31,
 "not_checked": 0,
 "limitations": [
  "Проверен один снимок одной страницы, скачанной с наших серверов, — это не весь сайт и не то, что уже находится в индексе поисковой системы."
 ]
}
ПолеЗначение
oktrue, если отчет сформирован
lang, lang_requested, lang_fallbackЯзык отчета, язык из запроса и признак замены неизвестного языка на английский
requested_url, final_url, redirect_chainЗапрошенный адрес, адрес после перенаправлений и цепочка перенаправлений
http_statusКод ответа проверяемого сервера
checked_at, elapsed_msВремя проверки (UTC) и ее длительность в миллисекундах
rules_versionВерсия набора правил
score, score_methodИтоговый балл от 0 до 100 и формула его расчета с весами значимости
needs_rendertrue, если сервер отдал почти пустую страницу, которая формируется сценариями в браузере. Тогда балл не считается (null)
robotsПроверялся ли robots.txt, разрешает ли он загрузку страницы и его адрес
counts_by_severity, findings_totalЧисло находок по значимости и всего
findingsНаходки: код правила, категория, значимость (CRITICAL, HIGH, MEDIUM, LOW, INFO), заголовок, рекомендация, доказательства со сведениями о происхождении (evidence.provenance), трудоемкость и эффект исправления по шкале от 1 до 3, пояснение why. Поля с окончанием _en содержат английский текст
passed_checksПроверки, выполненные без замечаний
checks_total, not_checkedЧисло выполненных проверок и число проверок, которые не выполнялись, потому что страница не открылась
limitationsОграничения проверки
cachedПрисутствует со значением true, если ответ выдан из хранилища результатов (пункт 6.9)

6.8. Другие команды

Сокращенный отчет:

curl -X POST http://127.0.0.1:8080/audit -H "Content-Type: application/json" -d '{"url": "https://siberia-ai.ru/"}'

Ответ 29 сентября 2026 года, код 200. Поля ai_readiness, opportunity_teaser и recommended_actions опущены:

{"ok": true, "url": "https://siberia-ai.ru/", "final_url": "https://siberia-ai.ru/", "http_status": 200, "score": 98, "needs_render": false, "counts_by_severity": {"LOW": 1}, "findings_total": 1, "top_fixes": [], "locked": 1}

Поле top_fixes содержит до трех находок значимости CRITICAL, HIGH или MEDIUM, locked равно числу находок, не вошедших в сокращенный отчет. Полный перечень выдает команда /check. Поле ai_readiness содержит оценку готовности к системам поиска на основе искусственного интеллекта от 0 до 100 и ее составляющие.

Доступ роботов систем искусственного интеллекта:

curl -X POST http://127.0.0.1:8080/ai-access -H "Content-Type: application/json" -d '{"url": "https://siberia-ai.ru/"}'

Ответ, код 200. Перечень bots (девять роботов) и limitations опущены:

{"ok": true, "lang": "ru", "base": "https://siberia-ai.ru", "rules_version": "2026.08.8", "robots": {"url": "https://siberia-ai.ru/robots.txt", "found": true}, "llms_txt": {"url": "https://siberia-ai.ru/llms.txt", "present": true}, "summary": {"verdict": "all_open", "retrieval_blocked": 0, "retrieval_total": 4, "training_blocked": 0, "training_total": 5, "unclassified_blocked": 0, "unclassified_total": 0}}

Вердикт summary.verdict принимает значения all_open (ничего не закрыто), training_optout (закрыты роботы, собирающие данные для обучения), retrieval_blocked (закрыты роботы, которые читают страницы для ответов) и unclassified_blocked (закрыты роботы с неподтвержденной ролью).

Формирование llms.txt:

curl -X POST http://127.0.0.1:8080/llms-txt -H "Content-Type: application/json" -d '{"url": "https://siberia-ai.ru/"}'

Ответ, код 200. Поля sections, llms_txt (текст файла) и limitations опущены:

{"ok": true, "base": "https://siberia-ai.ru", "brand_source": "homepage_title", "sitemap": {"url": "https://siberia-ai.ru/sitemap.xml", "found": true, "from_robots": true}, "page_count": 91, "truncated": true, "valid": true}

Обзор сайта:

curl -X POST http://127.0.0.1:8080/site -H "Content-Type: application/json" -d '{"url": "https://siberia-ai.ru/"}'
{"ok":false,"code":"unsupported","message":"Обход сайта целиком в этой сборке недоступен: проверяется одна страница."}

6.9. Ограничения частоты, одновременности и хранилище результатов

Значения по умолчанию задаются переменными окружения при запуске службы. Действие переменных PUBLIC_AUDIT_TIMEOUT и PUBLIC_CHECK_CACHE_TTL проверено, остальные значения взяты из исходного текста программы, а предел 10 обращений в минуту к /check подтвержден ответом 429 на одиннадцатое обращение.

ПеременнаяПо умолчаниюЗначение
PUBLIC_AUDIT_TIMEOUT20Предельное время загрузки проверяемой страницы, секунд
PUBLIC_CHECK_RATE_PER_MIN10Обращений к /check в минуту с одного адреса клиента
PUBLIC_AUDIT_RATE_PER_MIN10Обращений к /audit в минуту с одного адреса. Для /check, /ai-access и /llms-txt это значение по умолчанию
PUBLIC_AUDIT_GLOBAL_RATE_PER_MIN300Обращений в минуту со всех адресов вместе, на каждую команду
PUBLIC_CHECK_MAX_CONCURRENCY4Одновременно выполняемых проверок /check
PUBLIC_CHECK_CACHE_TTL120Сколько секунд ответ /check выдается повторно из хранилища результатов. Значение 0 отключает повторную выдачу
PUBLIC_AI_CACHE_TTL, PUBLIC_LLMSGEN_CACHE_TTL300, 600То же для /ai-access и /llms-txt

Повторный запрос того же адреса на том же языке в пределах срока хранения выдается из хранилища без обращения к проверяемому ресурсу, с полем "cached": true. Для повторной проверки после изменения страницы выждите срок хранения или перезапустите службу.

6.10. Сообщения об ошибках

При отказе служба отвечает кодом HTTP и телом {"ok": false, "code": ..., "message": ...}. Поле code предназначено для обработки программой, message для человека.

Код HTTP и codeОтвет программыКогда возникает и что делать
400 invalid_urlEnter a valid http(s) website URL.Адрес пуст, схема не http и не https, имя сайта содержит пробелы или пустые части. Исправить адрес
400 blocked_targetThat host can't be checked. (для /audit: That host can't be audited.)Адрес ведет на петлевой, частный, служебный или зарезервированный адрес, либо на порт, отличный от 80 и 443. Такие адреса служба не запрашивает, это защита от обращений к внутренним ресурсам. Страницу во внутренней сети проверяют функцией audit_url (пункт 6.12). Команда /audit так же отвечает и на имя сайта, которое не удалось разрешить
400 unreachableThat domain could not be resolved — check the spelling.Имя сайта не удалось разрешить (/check, /ai-access, /llms-txt). Проверить написание адреса и доступ машины к службе имен
422 unsupported_contentThis looks like image/png — the checker analyzes HTML pages.По адресу лежит не страница HTML (изображение, архив). Указать адрес страницы
429 rate_limitedToo many checks — try again in a minute.Превышено число обращений в минуту (пункт 6.9). Повторить через минуту
503 busyThe checker is at capacity — try again in a few seconds.Заняты все места одновременной обработки. Повторить через несколько секунд
504 timeoutThe page took too long to respond.Проверяемый сервер не ответил в срок PUBLIC_AUDIT_TIMEOUT
501 unsupportedОбход сайта целиком в этой сборке недоступен: проверяется одна страница.Команда /site в этой сборке не поддерживается
422 без поля code{"detail":[{"type":"missing","loc":["body","url"],"msg":"Field required","input":{}}]}В запросе нет поля url или тело не является JSON (тип json_invalid). Исправить запрос
404, 405{"detail":"Not Found"}, {"detail":"Method Not Allowed"}Неверный путь или метод, например GET вместо POST

Если страница не открылась по иной причине, отчет формируется с кодом 200 и одной находкой unreachable значимости CRITICAL, балл равен 0, а поле not_checked называет число невыполненных проверок. Так же отвечает функция audit_url, пример в пункте 6.12. Для функции это проверено, для HTTP-службы описано по исходному тексту программы и не проверялось.

6.11. Журнал работы

Сообщения о запуске служба печатает в стандартный поток ошибок, сообщения об обращениях в стандартный поток вывода. Пример строк журнала при обращениях:

2026-09-28 17:35:26 [info     ] check.blocked_target           host=127.0.0.1
INFO:     127.0.0.1:50719 - "POST /check HTTP/1.1" 400 Bad Request
2026-09-28 17:35:43 [info     ] check.ok                       findings=9 host=siberia-ai.ru lang=en ms=1281 status=200
2026-09-28 17:35:43 [info     ] check.rate_limited

Строки вида check.ok пишет программа: в них только имя проверяемого сайта, без полного адреса и без адреса клиента. Строки с INFO пишет сервер приложений, в них есть адрес клиента. Параметр запуска --no-access-log их отключает. Время в журнале местное.

6.12. Работа без HTTP-службы: функция audit_url

Функция проверяет одну страницу и возвращает словарь Python. Вызов:

python -c "
from sibir_audit.modules.audit.audit import audit_url
from sibir_audit.modules.audit.checks import RULES_VERSION
r = audit_url('https://siberia-ai.ru/', lang='ru')
print(RULES_VERSION, r['http_status'], r['score'], r['checks_total'])
for f in r['findings']:
    print(f['severity'], f['code'], f['title'])
"
2026.08.8 200 98 31
LOW schema_sameas_no_kg_anchor Organization sameAs links to social profiles, not a knowledge graph
ПараметрЗначение
urlАдрес страницы. Функция принимает и петлевые, и внутренние адреса, в отличие от HTTP-службы
langНабор проверок по языку, по умолчанию "en". Функция возвращает заголовки находок по-английски при любом значении, перевод выполняет HTTP-служба
timeoutПредельное время загрузки страницы, секунд, по умолчанию 20
check_robotsЗагружать ли robots.txt для проверки индексируемости, по умолчанию да

Возвращаемый словарь содержит поля url, final_url, http_status, elapsed_ms, score, counts_by_severity, findings, passed_checks и checks_total в том же значении, что в ответе /check (пункт 6.7), а также geo_readiness (оценка готовности к цитированию системами искусственного интеллекта) и clean_but_invisible. Если страница не открылась, находка одна:

python -c "
from sibir_audit.modules.audit.audit import audit_url
r = audit_url('https://net-takogo-domena.invalid/', lang='ru')
print(r['score'], r['checks_total'], r['not_checked'], r['findings'][0]['code'], r['findings'][0]['severity'])
"
0 1 31 unreachable CRITICAL

Семантические оценки текста (пункт 3.10) вызываются отдельными функциями, не функцией audit_url и не HTTP-службой. Порядок вызова, установка onnxruntime и ответы программы приведены в пункте 5.1.

7. Прекращение работы и удаление

Работа прекращается остановкой процесса сервера. Удаление выполняется удалением каталога программы и изолированного окружения. При аудите программа обращается к проверяемым адресам. Ограничения сетевого доступа задает администратор среды. Наблюдение за отдельными функциями не является заключением о сетевой изоляции всего приложения.

7.1. Служба останавливается нажатием Ctrl+C в окне терминала, где она запущена, или сигналом SIGTERM процессу службы. Служба перестает принимать новые обращения, дожидается завершения обращений, которые уже выполняются, и завершает процесс. Журнал при этом:

INFO:     Shutting down
INFO:     Waiting for connections to close. (CTRL+C to force quit)
2026-09-28 17:36:12 [info     ] check.ok                       findings=5 host=siberia-ai.ru lang=ru ms=1406 status=200
INFO:     127.0.0.1:50787 - "POST /check HTTP/1.1" 200 OK
INFO:     Waiting for application shutdown.
INFO:     Application shutdown complete.
INFO:     Finished server process [13644]

Здесь проверка страницы, начатая до сигнала остановки, завершилась с кодом 200, после чего процесс завершился. Повторное нажатие Ctrl+C во время ожидания прерывает незавершенные обращения. Промежуточных данных между запусками служба не хранит: хранилище результатов и счетчики обращений находятся в памяти процесса и при остановке очищаются.

7.2. Функция audit_url завершается вместе с вызвавшей ее программой и отдельной остановки не требует.

Команды и ответы этого раздела получены правообладателем 28 и 29 сентября 2026 года на экземпляре 1.2.0 в Windows Server 2022, Python 3.12.10, сервер приложений uvicorn 0.54.0, в оболочке bash. Не проверялись: активация окружения командой . .venv/bin/activate в Linux (в Windows выполнена .venv/Scripts/activate), нажатие Ctrl+C с клавиатуры и сигнал SIGTERM (остановка проверена сигналом CTRL_BREAK процессу службы), повторное нажатие Ctrl+C, ответ 503 busy, язык отчета zh. Ответы 504 timeout и 429 rate_limited получены при измененных значениях PUBLIC_AUDIT_TIMEOUT и после серии обращений.

8. Техническая поддержка

Обращения принимаются по адресу info@siberia-ai.ru. Порядок и сроки поддержки определяются лицензионным договором.

Условия предоставления прав использования: Лицензионная политика ООО «ФИИ» и приложение № 1 с тарифными позициями «Сибирь.Аудит».

Процессы, обеспечивающие поддержание жизненного цикла

Устранение неисправностей, выявленных в ходе эксплуатации, совершенствование программного обеспечения и сведения о персонале, необходимом для обеспечения такой поддержки.

1. Общие сведения

ПараметрЗначение
НаименованиеПрограмма для ЭВМ «Сибирь.Аудит» (Siberia Audit)
Версия1.2.0 (набор правил RULES_VERSION 2026.08.8). В файле pyproject.toml экземпляра остался номер 1.0.1, экземпляр определяется контрольной суммой SHA-256
ПравообладательООО «ФИИ», ОГРН 1235400001870, ИНН 5402076457
Адрес правообладателя630090, г. Новосибирск, ул. Демакова, д. 23/5
Официальный сайтhttps://siberia-ai.ru
Канал обращенийsupport@siberia-ai.ru, +7 (383) 288-82-82

1.1. Настоящий документ описывает процессы, обеспечивающие поддержание жизненного цикла программы для ЭВМ «Сибирь.Аудит», в том числе устранение неисправностей, выявленных в ходе эксплуатации, совершенствование программы, а также сведения о персонале, необходимом для обеспечения такой поддержки.

1.2. Все процессы, предусмотренные настоящим документом, выполняются правообладателем — ООО «ФИИ» — на территории Российской Федерации силами работников общества. Передача обращений и сведений третьим лицам и за пределы Российской Федерации не осуществляется.

1.3. Действующая редакция настоящего документа размещается на официальном сайте правообладателя и доступна без ограничений и без регистрации.

2. Состав процессов жизненного цикла

2.1. Поддержание жизненного цикла программы обеспечивается совокупностью процессов:

— прием и регистрация обращений пользователей;

— диагностика и устранение неисправностей, выявленных в ходе эксплуатации;

— совершенствование программы, включая актуализацию набора правил;

— сборка, проверка и выпуск версий, предоставление обновлений лицензиатам;

— консультирование пользователей по вопросам эксплуатации;

— ведение учета обращений и выпущенных версий.

2.2. Гарантийное обслуживание, техническая поддержка и модификация исходного текста программы осуществляются правообладателем. Привлечение иностранных юридических лиц и иностранных граждан к выполнению указанных процессов не осуществляется.

3. Прием обращений

ПараметрЗначение
Электронная почтаsupport@siberia-ai.ru
Телефон+7 (383) 288-82-82
Режим работырабочие дни с 9:00 до 18:00 (UTC+7, Новосибирск)
Срок реакциине более одного рабочего дня
Язык обращенийрусский, английский

3.1. Обращение регистрируется в журнале обращений с присвоением номера и указанием даты поступления, версии программы, описания ситуации и способа связи с заявителем.

3.2. Заявителю сообщается регистрационный номер обращения и предварительная классификация в срок, не превышающий срока реакции.

3.3. Обращения, не относящиеся к работе программы (вопросы эксплуатации, консультации по применению), обрабатываются в том же порядке и завершаются письменным разъяснением.

4. Устранение неисправностей

4.1. Неисправностью признается несоответствие фактического поведения программы описанию функциональных характеристик действующей версии.

4.2. Обращения классифицируются по степени влияния на эксплуатацию:

КлассПризнакОчередность устранения
БлокирующаяЭксплуатация программы невозможна: аудит не выполняется, программный интерфейс недоступенв первоочередном порядке, с приостановкой прочих работ
СущественнаяОтдельная проверка дает неверный результат либо часть функциональности недоступна, обходной путь имеетсяв плановом порядке, до выпуска очередной версии
НесущественнаяНеточность вывода, оформления или документации, не влияющая на результат аудитав составе очередной версии

Конкретные сроки устранения по обращению сообщаются заявителю после установления причины неисправности и зависят от ее характера. Обязательства по срокам могут быть приняты Обществом в лицензионном договоре с конкретным лицензиатом.

4.3. Порядок устранения: регистрация обращения — воспроизведение ситуации на стенде правообладателя — установление причины — внесение изменений в исходный текст программы — проверка исправления, включая регрессионную проверку ранее выявленных дефектов — выпуск версии — уведомление заявителя.

4.4. Если причина неисправности находится в компоненте с открытым исходным кодом, входящем в состав программы, устранение производится обновлением версии такого компонента либо изменением порядка его использования. Перечень компонентов и условия их лицензий приведены в отдельном документе.

4.5. Если воспроизвести ситуацию не удалось, заявителю направляется мотивированный ответ с указанием выполненных проверок и перечнем сведений, необходимых для продолжения диагностики.

5. Совершенствование программы

5.1. Источниками изменений являются: обращения лицензиатов, изменения открытых стандартов и рекомендаций, применяемых при проверках (разметка структурированных данных, правила индексирования, требования доступности интерфейса), а также собственные исследования правообладателя.

5.2. Проверки программы выполняются по кодифицированным правилам, объединенным в версионированный набор. В проверенном экспертном экземпляре используется обозначение набора RULES_VERSION 2026.08.8. Обозначение набора правил включается в результат проверки и позволяет учитывать редакцию правил при сопоставлении результатов.

5.3. Обозначение поставки экспертного экземпляра: 1.2.0. Внутренние обозначения версии в файлах сборки отличаются от обозначения поставки. Для точной идентификации используются имя архива sibir-audit-1.2.0.zip, его размер и контрольная сумма SHA-256, приведенные в руководстве. Номера версии программы и набора правил учитываются раздельно.

5.4. Перед выпуском версии выполняются автоматизированные проверки, воспроизводимая сборка дистрибутива по сборочному скрипту и вычисление контрольной суммы дистрибутива по алгоритму SHA-256. Контрольная сумма сообщается лицензиатам вместе с дистрибутивом.

5.5. Программа не содержит функций принудительного обновления и не выполняет обращений к внешним сервисам. Решение об установке новой версии принимает лицензиат.

6. Предоставление обновлений

6.1. При использовании программы по подписке обновление выполняется правообладателем на экземпляре, размещенном у правообладателя; действий со стороны лицензиата не требуется.

6.2. При развертывании программы в инфраструктуре лицензиата обновление предоставляется в виде дистрибутива с контрольной суммой и перечнем изменений. Порядок установки приведен в документации, содержащей информацию, необходимую для установки и эксплуатации программы.

6.3. Обновления, ограничивающие или прекращающие работу программы, а также обновления, инициируемые с территории иностранных государств, не предусмотрены и технически не реализованы.

7. Персонал

7.1. Процессы, предусмотренные настоящим документом, обеспечивает работник правообладателя — генеральный директор, являющийся автором программы. В его обязанности входят прием и разбор обращений, диагностика, внесение изменений в исходный текст, сборка и выпуск версий, ведение документации.

7.2. Требуемая квалификация: владение языком программирования Python версии не ниже 3.12, знание протокола HTTP и форматов представления структурированных данных, знание применяемых при проверках открытых стандартов, навыки работы с системой контроля версий и средствами автоматизированного тестирования.

7.3. Численность персонала соответствует объему программы (70 файлов, 15 425 строк исходного текста) и текущему числу лицензиатов. При увеличении числа лицензиатов предусмотрено выделение отдельных ролей — разработчик и инженер технической поддержки — с сохранением требований пункта 1.2 настоящего документа.

7.4. Привлечение к поддержке иностранных юридических лиц, иностранных граждан и лиц без гражданства не осуществляется.

8. Учет и хранение

8.1. Исходный текст программы хранится правообладателем в системе контроля версий с сохранением истории изменений; выпущенные дистрибутивы хранятся вместе с контрольными суммами.

8.2. Правообладатель ведет журнал обращений и перечень выпущенных версий с указанием даты выпуска, состава изменений и обозначения набора правил.

8.3. Сведения, поступающие в обращениях, используются исключительно для устранения неисправностей и совершенствования программы.

9. Заключительные положения

9.1. Настоящий документ подлежит актуализации при изменении порядка технической поддержки, каналов обращений или состава персонала.

9.2. Гарантийные обязательства правообладателя и порядок предоставления обновлений в части, не урегулированной настоящим документом, определяются лицензионным договором.