Humanizer-ru — очеловечивание русского ИИ-текста
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. Правило одно для любых скиллов: сначала прочитать, потом ставить.
- Откройте
SKILL.mdиreferences/прямо на GitHub и убедитесь, что содержимое вас устраивает. - Ставьте только выпуски со страницы Releases (подписанные теги вида
vX.Y.Z), а не произвольное состояние ветки. - После распаковки убедитесь, что внутри лишь
SKILL.md,README.md,SECURITY.md,LICENSE,references/,scripts/check_markers.pyи.github/— ничего исполняемого при установке.
1. Claude.ai (Веб-интерфейс)
- Откройте страницу Releases этого репозитория, выберите свежий выпуск и скачайте архив
Source code (zip). - Зайдите в аккаунт Claude.ai и перейдите в Settings > Skills.
- Нажмите 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+200B–U+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
No comments yet
Be the first to share your take.