Humanizer-ru — очеловечивание русского ИИ-текста

License: MIT GitHub stars Версия Regex checks Skills.sh

English version → README.en.md

Скилл для ИИ-агентов: находит и убирает следы машинной генерации в русскоязычном тексте. 37 паттернов (25 базовых + 12 расширений), 38 проверяемых regex-маркеров классов A и B, автоматический прогон проверок в CI. Каталог skills.sh сообщает об успешных проверках Gen Agent Trust Hub, Socket и Snyk.

До:

🚀 Инновации: Данное программное обеспечение безусловно является свидетельством нашего стремления к качеству. Кроме того, оно обеспечивает бесшовный, интуитивно понятный и мощный пользовательский опыт — гарантируя эффективность. Эксперты считают, что это революция.

После:

Мы добавили пакетную обработку, горячие клавиши и офлайн-режим. Тестировщики отмечают, что задачи выполняются быстрее.

Граница применения: редактура, а не живой диалог

Скилл работает как редактор готового текста: дайте ему фрагмент — он найдёт следы генерации и по просьбе перепишет. Держать полный SKILL.md в системном промпте чата не нужно: ответы станут медленнее, а живее — нет, потому что редакторские правила не предназначены для генерации реплик. Для живого общения есть отдельный компактный набор правил — PERSONA.md: скопируйте его ядро в системные инструкции чат-клиента.

Установка за 30 секунд

npx skills add https://github.com/vladimir-human/humanizer-ru --skill humanizer-ru

Установщик предложит выбрать агентов: Claude Code, Codex, Cursor, Gemini CLI, OpenCode и другие среды с поддержкой формата Agent Skills. Сам скилл состоит из текстовых инструкций и не исполняет код при работе. Команда npx запускает сторонний Skills CLI; если хотите проверить каждый файл до установки, используйте раздел «Установка вручную».

Установка вручную

Скилл humanizer-ru ставится в Claude.ai и в локальный CLI Claude Code. Для команд есть отдельный путь установки на уровне организации.

0. Проверка перед установкой

Скилл не выполняет код при активации: рабочая часть — только текстовые файлы разметки. В репозитории есть вспомогательные Python-скрипты (scripts/) для тестов и CI — они запускаются только вручную или в GitHub Actions. Правило одно для любых скиллов: сначала прочитать, потом ставить.

  1. Откройте SKILL.md и references/ прямо на GitHub и убедитесь, что содержимое вас устраивает.
  2. Ставьте только выпуски со страницы Releases (подписанные теги вида vX.Y.Z), а не произвольное состояние ветки.
  3. После распаковки убедитесь, что внутри лишь SKILL.md, README.md, SECURITY.md, LICENSE, references/, scripts/check_markers.py и .github/ — ничего исполняемого при установке.

1. Claude.ai (Веб-интерфейс)

  1. Откройте страницу Releases этого репозитория, выберите свежий выпуск и скачайте архив Source code (zip).
  2. Зайдите в аккаунт Claude.ai и перейдите в Settings > Skills.
  3. Нажмите Upload skill и выберите скачанный архив.

Примечание. Если Claude.ai не принимает архив из-за вложенной папки вида humanizer-ru-3.0.0, распакуйте его, проверьте содержимое (см. шаг 0) и заархивируйте папку заново так, чтобы SKILL.md лежал в корне архива.

2. Организации (Enterprise & Team)

Администратор организации проверяет выпуск (см. шаг 0) и загружает его в общую библиотеку — скилл становится доступен всей команде.

3. API и локальные агенты (Claude Code)

При использовании API (эндпоинт /v1/messages или аналоги) передайте скилл через параметр container.skills — детали в документации используемого клиента.

Локальная установка — с закреплением на теге выпуска, чтобы получить именно проверенное состояние:

mkdir -p ~/.claude/skills
git clone --branch v3.5.0 --depth 1 https://github.com/Vladimir-Human/humanizer-ru.git ~/.claude/skills/humanizer-ru

Или минимально — только карта скилла (без справочников references/; глубина проверки будет ниже):

mkdir -p ~/.claude/skills/humanizer-ru
cp SKILL.md ~/.claude/skills/humanizer-ru/

Способы этого раздела дают полный контроль над каждым шагом. Если такой контроль не нужен, быстрее поставить одной командой из каталога skills.sh — см. «Установка за 30 секунд» выше.

Использование

В Claude Code или другом агенте:

/humanizer-ru [вставьте текст]

Или напрямую:

Очеловечь этот текст: [ваш текст]

Что делает

Выявляет и исправляет 37 паттернов машинного текста на русском языке (25 базовых + 12 расширений для русского) и 38 проверяемых regex-маркеров классов A и B. Опирается на Wikipedia:Signs of AI writing и Википедия:Признаки сгенерированности текста.

С версии 2.3 SKILL.md — это карта с деревом решений. Полное описание паттернов и проверок лежит в подключаемых файлах references/.

Архитектура

humanizer-ru/
├── SKILL.md                  # Карта, дерево решений, чек-лист
├── CHANGELOG.md              # Полная история версий
├── PERSONA.md                # Компактные правила живого диалога
├── README.md / README.en.md  # Описание проекта (рус/англ)
├── SECURITY.md / SECURITY.en.md
├── scripts/
│   ├── check_markers.py          # Прогон regex-маркеров, режим --scan
│   ├── check_spec.py             # Валидатор спецификации Agent Skills
│   ├── check_fixture_sources.py  # Валидатор реестра источников
│   ├── count_style_markers.py    # Счётчик стилевых нарушений
│   └── check_docs.py             # Согласованность документации
├── .github/workflows/        # CI: regex-check, self-scan, no-anglicisms,
│                             #     validators, docs-check
├── references/               # 9 справочников паттернов и маркеров
├── research/                 # Протоколы, реестр, сырые ответы, пилоты и аудит
└── tests/fixtures/           # Проверочные образцы

Содержательные паттерны

# Паттерн Критичность
1 Усреднение — конкретика заменяется общими эпитетами «выдающийся», «титан» 🔴
2 Раздувание значимости — «ключевой момент в истории отрасли» 🟡
3 Перечисление СМИ — «цитировали NYT, BBC, Forbes» без контекста 🟡
4 Причастные хвосты — «символизируя... отражая...» 🟡
5 Рекламный язык — «жемчужина региона», «идеальное место» 🟡
6 Размытые эксперты — «эксперты считают» без источника 🔴
7 Вызовы и перспективы — «несмотря на трудности, продолжает процветать» 🟢
8 Канцелярит — «осуществлять деятельность» 🟡
9 Текст о тексте — описание статьи вместо предмета 🟡
9a Академические клише-заполнители — «актуальность темы обусловлена», «целью работы является» 🟡
6a Именованная псевдоатрибуция эпохи RAG — «критик подчеркнул непреходящее влияние» без опоры на источник 🟡

Языковые паттерны

# Паттерн Критичность
10 Машинная лексика — «безусловно, синергия, ландшафт, погрузиться» 🔴
11 Избегание «есть» — «представляет собой» вместо «это» 🟡
12 «Не только..., но и» — отрицательные параллелизмы 🟡
13 Правило трёх — принудительные тройки 🔴
14 Погоня за синонимами — «герой... протагонист... персонаж» 🟢
15 Ложные диапазоны — «от Большого взрыва до тёмной материи» 🟡
15a Нелогичные деепричастные обороты — «используя метод, результаты улучшаются» 🟡
15b Каскад смягчений — «возможно, в некоторых случаях, в зависимости от» 🟡
15c Связки-переходы и заключительные обороты-затычки — «Однако стоит отметить...», «В заключение хочется отметить...» 🟡
15d Резкая смена стилистики внутри одного текста 🟢
15e Семантический сдвиг через английское поле — «основание науки», «адресовать проблему» 🟡
15f Отсутствие идиоматики — длинный текст без единого живого оборота 🟢

Структурные и стилевые паттерны

# Паттерн Критичность
16 Избыток тире и жирного шрифта 🔴
17 Эмодзи-списки — 🚀 Скорость: ... 🔴
18 Кавычки — "лапки" вместо «ёлочек» 🟡
19 Избыточные таблицы — таблица на 2-3 строки вместо текста 🔴
20 Следы Markdown — **жирный**, #заголовки в обычном тексте 🔴
21 Нарушение иерархии заголовков — прыжок с H1 на H3 🔴
21a Каждое Слово Заголовка С Прописной — «Ранняя Жизнь и Образование» 🔴

Коммуникативные паттерны

# Паттерн Критичность
22 Остатки реплик и шаблоны — «Надеюсь, это поможет!», [вставьте имя] 🔴
23 Оговорки о пределах знаний — «хотя конкретные детали ограничены...» 🟡
23a Заявление о недоступности информации со спекуляцией — «данные не публикуются, однако, вероятно...» 🟡
24 Льстивый тон — «Отличный вопрос!» 🟡
24a Псевдо-терапевтический регистр и имитация живости — «Ты не ошибаешься, что так чувствуешь», «Короткие. Точные. Отдельные.» 🟡
25 Общие позитивные выводы — «будущее выглядит светлым» 🟡
25a Обрыв на полуслове — текст кончается посреди предложения 🟡

Regex-маркеры: классы A и B

38 регулярных выражений делятся на два класса. Класс A — жёсткие copy-paste-артефакты: служебные ссылки ChatGPT, невидимые разделители цитат, [cite: N] и span-метки Gemini, карточки цитат Grok, S3-ссылки Perplexity и остатки тегов рассуждений DeepSeek. Класс B — контекстные индикаторы: placeholder-URL и даты, referrer=grok.com, символы нулевой ширины и имена сносок с внутренними идентификаторами. B требует ручной проверки и не даёт самостоятельного вердикта.

Каждый маркер проходит прямой, отрицательный и граничный fixture; маркеры с доказательной цепочкой дополнительно проверяются по research/fixtures/marker-sources.json. Политика обновлений разделяет устойчивое ядро (правила и границы ложных срабатываний) и быстрый слой (модельные артефакты): быстрый слой меняется только с образцами, источником и сохранением класса A/B.

Маркер Источник Регулярное выражение
:contentReference[oaicite:N]{index=N} OpenAI ChatGPT :contentReference\[oaicite:\d+\]\{index=\d+\}
oai_citation:N‡ OpenAI ChatGPT oai_citation:\d+‡
turn0search0, turn0fetch0 OpenAI веб-поиск turn\d+(search|fetch)\d+
<ref name="0search12"> Контекстный след внутреннего инструмента в имени вики-сноски <ref\b[^>]*\bname=["']\d+(?:search|fetch|file|image|news|video|ref)\d+["']
?utm_source=chatgpt.com OpenAI ChatGPT [?&]utm_source=chatgpt\.com
?utm_source=openai OpenAI API [?&]utm_source=openai
attached_file:// OpenAI ChatGPT attached_file:\/\/
grok_card:// xAI Grok grok_card:\/\/
vertexaisearch.cloud.google.com/grounding-api-redirect Google Gemini vertexaisearch\.cloud\.google\.com/grounding-api-redirect
[^N^] Microsoft Copilot \[\^\d+\^\]
【N†source】 OpenAI Assistants 【\d+(?::\d+)?†source】
citeturn0file0 OpenAI ChatGPT (поток) citeturn\d+[a-z]+\d+
turn0file2, fileciteturn0file2turn0file6 OpenAI file_search turn\d+file\d+
\]\(sandbox:/mnt/data/...\) OpenAI ChatGPT (анализ данных) \]\(sandbox:/mnt/data/...
Невидимые символы U+E200–E204 OpenAI ChatGPT (служебные разделители цитат) [\ue200-\ue204]
Короткая форма сноски: цифра в U+EA01/U+EA02 (новое в v3.2) OpenAI ChatGPT [\uea01\uea02]
<think>…</think> DeepSeek и другие рассуждающие модели </?think>
Сцепка ISO+3ISO+3 OpenAI ChatGPT (ошибка отрисовки сносок) [A-Za-zА-Яа-яЁё)]\+\d+[A-ZА-ЯЁ]
[cite_start] Google Gemini (анализ PDF) \[cite_start\]
[cite: 8], [Cite: 12], [cite: 19, 20, 21] Google Gemini (ссылка на фрагменты источника; расширено в v3.2) \[[Cc]ite:\s?\d+(?:,\s?\d+)*\]
[span_N] start_span / end_span (новое в v3.5) Google Gemini (внутренние границы фрагментов) \[span_\d+\][\[(](https://github.com/Vladimir-Human/humanizer-ru/blob/main/?:start_span|end_span)[\])]
Символы нулевой ширины U+200BU+200D, U+2060, U+FEFF Внутренние разделители цитат и кодировочные артефакты; U+FEFF в начале файла - BOM, не ИИ [\u200b-\u200d\u2060\ufeff]
:::writing{variant="document" id="68427"} Writing-разметка интерфейса; атрибуция версии не подтверждена evidence registry :::\w+\{variant
turn0image0, turn0news0, turn0video0, turn0ref0 OpenAI ChatGPT (мультимедиа-инструменты) turn\d+(?:image|news|video|ref)\d+
?utm_source=copilot.com Microsoft Copilot [?&]utm_source=copilot\.com
?referrer=grok.com xAI Grok [?&]referrer=grok\.com
<grok-card ... data-type="citation_card"> xAI Grok (XML-тег карточки) <grok-card\b[^>]*\bcitation_card\b
grok_render_citation_card_json={...} xAI Grok (JSON карточек) grok_render_citation_card_json
【85†L261-269】, 【854†L119-L123】 DeepSeek и производные (ссылки на строки) 【\d+†L\d+(?:-L?\d+)?】
[attached_file:N], [web:N] Perplexity (скобочная форма ссылок, осень 2025) \[(?:attached_file|web):\d+\]
citegenerated-reference-identifier ChatGPT (сгенерированный идентификатор) citegenerated-reference-identifier
INSERT_SOURCE_URL, URL_HERE, PASTE_*_URL_HERE Placeholder-URL из шаблонных ответов \b(?:INSERT_SOURCE_URL(?:_\d+)?|URL_HERE|PASTE_\w+_URL_HERE)\b
2025-XX-XX, 2022-11-XX Placeholder-даты из шаблонных ответов (чаще всего «дата обращения») \b\d{4}-(?:\d{2}|[Xx]{2})-[Xx]{2}\b
ppl-ai-file-upload в URL (новое в v3.5) Perplexity (ссылки на Amazon S3-bucket) ppl-ai-file-upload

Полный список с эталонными образцами — в references/test-fixtures.md.

Подлог источников (новое в v2.3)

Отдельный класс проверок для текстов со ссылками: 404, DOI ведёт на чужую статью, несуществующий ISBN, автор умер до даты публикации, книжная ссылка без номера страниц. См. references/source-fabrication.md.

Границы ложного срабатывания (новое в v2.3)

Длинное тире у Цветаевой и Бродского, изогнутые кавычки от автозамены macOS, правило трёх в риторической прозе, канцелярит в юридическом документе — это не признаки ИИ. Скилл намеренно не исправляет такие случаи. См. references/false-positives.md.

Отпечатки моделей (новое в v2.3)

references/llm-fingerprints.md не ведёт каталог актуальных версий моделей. Он описывает уровни доказательств, воспроизводимые артефакты и локальные наблюдения с явными ограничениями атрибуции. Версию или доступность модели нельзя выводить из стилистического признака без первичного датированного источника.

Шкала критичности: 🔴 мгновенно выдаёт ИИ · 🟡 сильный сигнал · 🟢 слабый сигнал

Отличия от английской версии

  • Добавлен паттерн «канцелярит» («осуществлять деятельность», «в соответствии с»)
  • Список машинной лексики адаптирован под русский язык
  • Убран Title Case (заглавные в каждом слове заголовка — не применимо к русскому)
  • Кавычки: «ёлочки» вместо „нижних лапок"

Безопасность

  • Скилл только текстовый: не выполняет код, не обращается к сети и файловой системе, не собирает данные. scripts/check_markers.py запускается лишь в CI и вручную разработчиком.
  • Входной текст пользователя обрабатывается как данные: инструкции, спрятанные внутри проверяемого текста, не выполняются (раздел «Границы безопасности» в SKILL.md).
  • Модель угроз, гарантии и порядок сообщения об уязвимостях — в SECURITY.md.

Источники

История изменений

Актуальная версия — на значке в начале страницы. Полная история изменений — в CHANGELOG.md и на странице GitHub Releases.

Лицензия

MIT