Back to home

Vladimir-Human

humanizer-ru

Скилл для ИИ-агентов: находит и убирает следы машинной генерации из русского текста. 38 паттернов, 39 regex-маркеров с реестром доказательств, слепые парные прогоны, файловый слой снятия C2PA/EXIF/XMP | Russian AI-writing humanizer skill with file metadata cleaning

Stars
100
Language
Python
Created
Jan 21, 2026
Updated
Aug 15, 2026

Introduction

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

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

English version → README.en.md

Скилл для ИИ-агентов: находит и убирает следы машинной генерации в русскоязычном тексте. Переписывает «гпт-шный» текст по-человечески, не искажая смысла, и не трогает живое: ложное срабатывание здесь дороже пропуска.

Здесь 38 паттернов (25 базовых и 13 расширений) и 39 проверяемых regex-маркеров классов A и B. Проверки гоняет CI. Каталог skills.sh сообщает об успешных проверках Gen Agent Trust Hub и Socket; про красную плашку Snyk — в разделе «Безопасность».

До:

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

После:

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

Скилл убирает штампы, но не дописывает факты за автора. В примере выше всё из варианта «После» уже было в исходнике.

Что ему давать

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

Одноимённые проекты — не путать

В GitHub есть другие репозитории с именем humanizer-ru, не связанные с этим проектом. Позиции у них разные:

ПроектФокусПозиция по детекторам
Vladimir-Human/humanizer-ru — этот проектРедактор русского текста: 38 паттернов, 39 regex-маркеров с реестром доказательств 37/39, 36 CI-гейтов, слепые парные прогоныДетекторы не обходим и текст под них не подгоняем; цель — естественный текст, а не зелёный вердикт детектора
smixs/humanizer-ruСкилл «humanizer & detector»: правка и проверка одним инструментом
ilyautov/humanizer-ruСкилл-гуманизатор; в описании заявлена подгонка под то, что меряют GPTZero, DivEye, RuBERT (perplexity и burstiness)Обход детекторов заявлен открыто в описании
blader/humanizerАнглоязычный скилл того же жанра, опубликован на три дня раньше

Мы не аффилированы ни с одним из них. Декларация этого проекта: «не средство обхода детекторов»; подробнее — в разделе «Безопасность».

Установка за 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. Для команд — свой путь, через администратора организации (см. раздел 2).

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

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

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

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

  1. Откройте страницу Releases этого репозитория, выберите свежий выпуск и скачайте приложенный к нему архив humanizer-ru.zip. Это собранный архив скилла — состав перечислен в шаге 0. Source code (zip), который GitHub добавляет к каждому выпуску, — полное дерево репозитория вместе с .github/, research/ и tests/; он нужен только тем, кто собирается запускать валидаторы.
  2. Зайдите в аккаунт Claude.ai и перейдите в Settings > Skills.
  3. Нажмите Upload skill и выберите скачанный архив.

Примечание. В humanizer-ru.zip файл SKILL.md лежит в корне архива, поэтому переупаковка не нужна. Она может понадобиться, только если вы взяли Source code (zip): там всё вложено в папку вида humanizer-ru-<номер версии>.

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

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

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

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

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

mkdir -p ~/.claude/skills
git clone --branch v3.13.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 секунд» выше.

4. DeepSeek Harness (dsh)

dsh ищет скиллы в собственных каталогах. Проверено с dsh 0.1.0-rc.6. Это developer preview: ломающие изменения обещаны, поэтому для другой версии сверяйтесь с её документацией.

Глобальная установка (все проекты и агенты профиля):

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

Порядок поиска скилла в dsh (ближайший каталог побеждает): <проект>/.dsh/skills, <проект>/.agents/skills, ~/.dsh/skills, ~/.agents/skills. Каталог ~/.claude/skills dsh не сканирует: скилл, установленный туда по инструкции для Claude Code выше, в dsh не виден.

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

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

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

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

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

Что делает

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

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

С версии 3.8 мягкий слой стал счётным. scripts/scan_soft_signals.py находит кандидатов по четырём категориям признаков, считает каждый паттерн один раз на текст и применяет пороги дерева решений; жанровые исключения берутся из references/false-positives.md. Скрипт печатает цитаты и рекомендацию объёма правки, вердикта об авторстве не даёт — Главное правило остаётся за агентом. На человеческом контрольном корпусе скрипт молчит: единичные литературные тире и повторы отсекают жанровые исключения. На выводах русских моделей он находит кандидатов там, где regex-слой ничего не видит. Наружу идут только механические оси: снятие маркеров, чистота фактов, ложные правки (LEADERBOARD.md). Читаемость оценивает своя панель судей, но её числа мы держим при себе: панель односемейная, а позиционный шум описан в прогонах.

Архитектура

humanizer-ru/
├── SKILL.md                  # Карта, дерево решений, чек-лист
├── CHANGELOG.md              # Полная история версий
├── LEADERBOARD.md            # Механические оси: прогоны детекторов
├── PERSONA.md                # Компактные правила живого диалога
├── README.md / README.en.md  # Описание проекта (рус/англ)
├── SECURITY.md / SECURITY.en.md
├── CITATION.cff                # Карточка цитирования
├── LICENSE                     # MIT
├── dsh/                        # Бандл для DeepSeek Harness (вендор SKILL.md + references/)
├── CODE_OF_CONDUCT.md / CONTRIBUTING.md
├── docs/
│   └── FRAMEWORK.md            # Публичная методология проверяемости
├── scripts/
│   ├── check_markers.py          # Прогон regex-маркеров, режим --scan
│   ├── check_spec.py             # Валидатор спецификации Agent Skills
│   ├── check_fixture_sources.py  # Валидатор реестра источников
│   ├── count_style_markers.py    # Счётчик стилевых нарушений
│   ├── check_docs.py             # Согласованность документации
│   ├── check_examples.py         # Гейт честности примеров До/После
│   ├── check_readme_parity.py    # Паритет и правдивость витрины RU/EN
│   ├── check_own_style.py        # Порог мягких признаков на свою прозу
│   ├── check_reference_maps.py   # Карты разбитых справочников
│   ├── check_budget.py           # Бюджет контекста по спецификации
│   ├── check_corpus.py           # Регрессия корпусов валидации
│   ├── check_perf.py             # Скорость выражений на большом входе
│   ├── check_release.py          # Сборка и проверка релизного архива
│   ├── check_bundle_sync.py      # Синхронность вендора бандла dsh/
│   ├── filemarks/                # Слой A/B и метаданные файлов (inspect/clean)
│   ├── scan_soft_signals.py      # Счётчик мягких признаков
│   └── check_all.py              # Весь релизный чек-лист одной командой
├── eval/
│   ├── run_eval.py               # Нейтральный корпус для любого скилла
│   ├── blind_eval.py             # Слепая парная оценка эффекта
│   ├── HOW-TO-RUN.md             # Протокол прогона и границы метрик
│   ├── README.md                 # Карта eval и словарь метрик
│   ├── manifest.v1.json          # Схема нейтрального корпуса
│   ├── runs/                     # Парные прогоны (10 записей; см. runs/README.md)
│   └── results/                  # Отчёты прогонов целиком, включая
│                                 #   метрики не в пользу скилла
├── .github/workflows/        # CI: regex-check, self-scan, no-anglicisms,
│                             #     validators, docs-check, release-check
├── references/               # 11 справочников; два разбиты на части (16 файлов)
├── research/                 # Протоколы, реестр, аудит и BACKLOG.md
└── 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Каждое Слово Заголовка С Прописной — «Ранняя Жизнь и Образование»высокая
21bРаздел-пересказ в конце текста — «Вкратце», «Подводя итоги», дублирование уже сказанногосредняя

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

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

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

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

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

  • Скилл только текстовый: не выполняет код, не обращается к сети и файловой системе, не собирает данные. scripts/check_markers.py запускается лишь в CI и вручную разработчиком.
  • Текст пользователя скилл читает как данные: команды, спрятанные внутри, он не выполняет (раздел «Границы безопасности» в SKILL.md).
  • Модель угроз, гарантии и порядок сообщения об уязвимостях — в SECURITY.md.
  • Про красную плашку Snyk на витрине skills.sh. Автоматический аудит помечает скилл кодом E005 «подозрительная ссылка на скачивание». Срабатывание ложное: сканер видит идентификатор S3-бакета Perplexity ppl-ai-file-upload — это документированная примета класса A, по которой скилл распознаёт машинную генерацию, — и принимает описание приметы за инструкцию скачать файл. Скилл ничего не скачивает: переход по ссылкам из проверяемого текста запрещён разделом «Границы безопасности» в SKILL.md. Тот же класс ложных срабатываний известен по наборам правил YARA и по тестовой строке EICAR: инструмент, который ищет признак, обязан этот признак содержать. Два других аудитора каталога дают PASS. Убрать примету ради вердикта мы не будем — это дыра в детекторе.

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

39 регулярных выражений делятся на два класса. Класс A — жёсткие copy-paste-артефакты: служебные ссылки ChatGPT, [cite: N] и span-метки Gemini, карточки цитат Grok, S3-ссылки Perplexity и остатки тегов рассуждений DeepSeek. Класс B — контекстные индикаторы: placeholder-URL и даты, referrer=grok.com, невидимые разделители цитат из области частного использования (U+E200–E204), короткая форма сноски (U+EA01/U+EA02 вокруг цифры), символы нулевой ширины, невидимая раскладка (наборные пробелы, мягкий перенос, вариационные селекторы вне эмодзи) и имена сносок с внутренними идентификаторами (<ref name="0searchN">). B требует ручной проверки и не даёт самостоятельного вердикта.

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

Полная запись доказательств — неизменяемая ссылка на источник, дата обращения, дословный образец, класс доказательства и fixture — есть у 37 из 39 маркеров. Остальные закрыты только фикстурами.

МаркерИсточникРегулярное выражение
:contentReference[oaicite:N]{index=N}OpenAI ChatGPT:contentReference\[oaicite:\d+\]\{index=\d+\}
oaicite:7 (усечённая форма метки)OpenAI ChatGPToaicite:\d+
oai_citation:N‡OpenAI ChatGPToai_citation:\d+‡
attributableIndex в JSONВнутреннее поле разметки JSON-ответов при использовании инструментов\battributableIndex\b
turn0search0OpenAI веб-поискturn\d+search\d+
turn0fetch0OpenAI загрузка страницturn\d+fetch\d+
<ref name="0search12">Контекстный след внутреннего инструмента в имени вики-сноски<ref\b[^>]*\bname=["']\d+(?:search|fetch|file|image|news|video|ref)\d+["']
?utm_source=chatgpt.comOpenAI ChatGPT[?&]utm_source=chatgpt\.com
?utm_source=openaiOpenAI API[?&]utm_source=openai
attached_file://OpenAI ChatGPTattached_file:\/\/
grok_card://xAI Grokgrok_card:\/\/
vertexaisearch.cloud.google.com/grounding-api-redirectGoogle Geminivertexaisearch\.cloud\.google\.com/grounding-api-redirect
[^N^]Microsoft Copilot\[\^\d+\^\]
【N†source】OpenAI Assistants【\d+(?::\d+)?†source】
citeturn0file0OpenAI ChatGPT (поток)citeturn\d+[a-z]+\d+
turn0file2, fileciteturn0file2turn0file6OpenAI file_searchturn\d+file\d+
\]\(sandbox:/mnt/data/...\)OpenAI ChatGPT (анализ данных)\]\(sandbox:/mnt/data/
Невидимые символы U+E200–E204OpenAI ChatGPT (служебные разделители цитат)[\ue200-\ue204]
Короткая форма сноски: цифра в U+EA01/U+EA02 (новое в v3.2)OpenAI ChatGPT[\uea01\uea02]
<think>…</think>DeepSeek и другие рассуждающие модели(?m)^\s*</?think>|</think>\s*$
Сцепка ISO+3ISO+3OpenAI ChatGPT (ошибка отрисовки сносок)[A-Za-z\u0410-\u042f\u0430-\u044f\u0401\u0451)]\+\d+(?=[A-Z\u0410-\u042f\u0401][A-Za-z\u0410-\u042f\u0430-\u044f\u0401\u0451&.\-]*(?: [A-Z\u0410-\u042f\u0401][A-Za-z\u0410-\u042f\u0430-\u044f\u0401\u0451&.\-]*){0,3}\+\d)
[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+\][\[(](?:start_span|end_span)[\])]
Символы нулевой ширины U+200BU+200D, U+2060, U+FEFFВнутренние разделители цитат и кодировочные артефакты; U+FEFF в начале файла — BOM, не ИИ[\u200b\u200c\u2060\ufeff]|(?<![\U0001f000-\U0001faff\u2600-\u27bf\ufe0f\U0001f1e6-\U0001f1ff])\u200d(?![\U0001f000-\U0001faff\u2600-\u27bf\ufe0f\U0001f1e6-\U0001f1ff])
:::writing{variant="document" id="68427"}Writing-разметка интерфейса; атрибуция версии не подтверждена evidence registry:::\w+\{variant
turn0image0, turn0news0, turn0video0, turn0ref0OpenAI ChatGPT (мультимедиа-инструменты)turn\d+(?:image|news|video|ref)\d+
?utm_source=copilot.comMicrosoft Copilot[?&]utm_source=copilot\.com
?referrer=grok.comxAI 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+\]
[citation:3]Perplexity и другие поисковые ИИ\[citation:\d+\]
citegenerated-reference-identifierChatGPT (сгенерированный идентификатор)citegenerated-reference-identifier
INSERT_SOURCE_URL, URL_HERE, PASTE_*_URL_HEREPlaceholder-URL из шаблонных ответов\b(?:INSERT_SOURCE_URL(?:_\d+)?|URL_HERE|PASTE_\w+_URL_HERE)\b
2025-XX-XX, 2022-11-XXPlaceholder-даты из шаблонных ответов (чаще всего «дата обращения»)\b(?:19|20)\d{2}-(?:0[1-9]|1[0-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 не ведёт каталог актуальных версий моделей. Он описывает уровни доказательств, воспроизводимые артефакты и локальные наблюдения с явными ограничениями атрибуции. Версию или доступность модели нельзя выводить из стилистического признака без первичного датированного источника. Там же собраны ручные мягкие сигналы русских моделей — GigaChat, Алисы и YandexGPT: они помечены как наблюдения без корпусного подтверждения, регулярных выражений для них нет.

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

Источники

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

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

Лицензия

MIT