Humanizer-ru — нормализация и диагностика русского текста
English version → README.en.md (документация; продукт русскоязычный)
Скилл и набор команд для русского текста: находит артефакты копипасты и следы машинной генерации, нормализует типографику без правки смысла. Переписывание «гпт-шного» текста — по явной просьбе, без заявлений о качестве результата. Для текста не на русском, исходного кода, юридических документов и художественной прозы не предназначен.
Что это на практике: текст, вставленный из чат-бота, несёт служебные метки,
невидимые символы и машинную типографику; скилл снимает этот слой и
показывает, где он был. Числа проекта — в реестре фактов eval/facts/,
машинный интерфейс — в contract.v1.json.
До:
🚀 Инновации: Мы добавили пакетную обработку, горячие клавиши и офлайн-режим. Это безусловно является свидетельством нашего стремления к качеству. Кроме того, эти функции обеспечивают бесшовный, интуитивно понятный и мощный пользовательский опыт — гарантируя эффективность. Эксперты считают, что это революция.
После:
Мы добавили пакетную обработку, горячие клавиши и офлайн-режим.
Скилл убирает штампы, но не дописывает факты за автора: в варианте «После»
нет ничего, чего не было бы в исходнике. Собственные тексты проекта проходят
его же гейты мягкого слоя (самопроверка в check_all).
Что ему давать
Дайте скиллу готовый фрагмент русского текста. Он найдёт следы генерации и
по просьбе перепишет текст. SKILL.md — инструкция агента: её подгружают на
задачу анализа или правки вместе со справочниками из references/.
PERSONA.md — другое: короткие правила живого тона для диалога, а не для
проверки текста.
Установка за 30 секунд
npx skills add https://github.com/Vladimir-Human/humanizer-ru --skill humanizer-ru
Если нужен не скилл для агента, а команды в терминале — пакет из PyPI:
pip install humanizer-ru
Попробовать до установки: онлайн-демо
или demo/index.html офлайн — текст обрабатывается в браузере и не покидает
машину. Демо показывает только детерминированный слой поиска артефактов;
переписывает агент со скиллом, а не браузер.
Установка вручную
Ставьте выпуск со страницы Releases (архив humanizer-ru.zip, состав —
SKILL.md, оба README, CHANGELOG.md, PERSONA.md, обе SECURITY,
PRIVACY_POLICY.md, LICENSE, gemini-extension.json, references/,
scripts/, knowledge/ и каталоги плагин-манифестов; исполняемого кода при
установке нет). Загрузка в Claude.ai: Settings → Skills → Upload skill.
Клон с закреплением на теге:
git clone --branch v3.16.9 --depth 1 https://github.com/Vladimir-Human/humanizer-ru.git ~/.claude/skills/humanizer-ru
DeepSeek Harness (dsh): глобально — тот же клон в ~/.agents/skills, либо
бандл dsh plugin --profile web add "github:Vladimir-Human/humanizer-ru#path:/dsh".
Порядок поиска в dsh: .dsh/skills и .agents/skills проекта, затем
~/.dsh/skills и ~/.agents/skills; ~/.claude/skills не сканируется, а
pnpm в команде add молча игнорирует подкаталог.
Использование
В агенте: /humanize [текст] (правка), /audit [текст] (проверка без
правки) или прямо: «Очеловечь этот текст: …». Команды пакета:
humanizer-polish— типографическая нормализация (--diff,--dry-run,--in-place,--json); идемпотентна, буквы и цифры не трогает.humanizer-detect— частота связок со статусом домена; вердикта об авторстве нет, ответ градуированный.humanizer-markers— поиск артефактов копипасты (классы A и B).humanizer-scan— счётчик мягких признаков, калибрует объём правки.
Машинный интерфейс (схемы выводов, коды выхода, «когда не использовать»):
contract.v1.json; вход для агентов — llms.txt.
Что делает
Прогоняет русский текст по 58 паттернам машинного письма (25 базовых и 33
расширения для русского). Всего в скилле 58 паттернов и 40 проверяемых
regex-маркеров классов A и B; у 38 из 40 маркеров полная запись
доказательств в research/fixtures/marker-sources.json. Опирается на
Wikipedia:Signs of AI writing
и Википедия:Признаки сгенерированности текста.
Маркеры ловят следы чат-интерфейсов и копирования: текст, который прошёл через чат-бот, был скопирован или отредактирован машиной с настройками по умолчанию. Они не определяют факт генерации: отсутствие маркеров не доказывает авторство человека, наличие указывает на путь текста.
Детектор частоты связок работает в домене «чистая проза, инструкции»; для
эссе не валидирован, для веб-текста с артефактами неприменим, статус домена
обязателен в каждом выводе. Мягкие признаки вердикта об авторстве не дают —
только калибруют объём правки (Главное правило в SKILL.md).
Свой репозиторий можно проверять в CI: переиспользуемый экшен action/
гоняет те же скрипты, вход fail-on: class-a или soft-threshold,
permissions: contents: read, текст не покидает раннер. Пример вызова — в
action/action.yml.
Regex-маркеры: классы A и B
Класс A — жёсткие артефакты копипасты: служебные ссылки и метки цитирования
чат-интерфейсов. Класс B — контекстные индикаторы: невидимые символы,
скрытая раскладка, placeholder-поля; одного совпадения B недостаточно.
Класс маркеров — copypaste_artifacts; ретайр маркера возможен только по
провалу на своём классе, статусы и даты — в markers.v1.json.
Архитектура
Короткая карта; подробности в самих каталогах:
SKILL.md+references/— текстовое ядро скилла (карта, 13 справочников).scripts/— валидаторы и инструменты: полировка, детекторы, гейты (список в каталоге и вcontract.v1.json).src/humanizer_ru/— PyPI-пакет (зеркала скриптов, точки входа).eval/— харнесы оценки: нейтральный корпус, слепые прогоны, реестр фактов.research/— реестр доказательств маркеров, фикстуры, протоколы.tests/fixtures/— образцы маркеров и полировки.action/,demo/,dsh/— CI-экшен, браузерное демо, бандл dsh.
Полный чек-лист — одна команда: python scripts/check_all.py — 85 гейтов полного чек-листа (81 в --quick). Юнит-тесты — python -m unittest discover -s tests.
Содержательные паттерны
Усреднение, раздувание значимости, размытые эксперты, канцелярит, псевдоатрибуция — references/content-patterns.md.
Языковые паттерны
Машинная лексика, «не только…, но и», правило трёх, смягчающие каскады, кальки — references/language-patterns.md.
Структурные и стилевые паттерны
Избыток тире и жирного, эмодзи-списки, следы разметки, прыжки заголовков — references/structural-style-patterns.md.
Коммуникативные паттерны
Остатки реплик чата, льстивый тон, псевдотерапевтический регистр, ложные альтернативы — references/communication-patterns.md.
Подлог источников
404, DOI на чужую статью, несуществующий ISBN, автор умер до публикации — references/source-fabrication.md.
Границы ложного срабатывания
Длинное тире в художке, автозамена кавычек, канцелярит в договоре — не признаки машинного текста — references/false-positives.md.
Отпечатки моделей
Уровни доказательств привязки приметы к модели; версия модели из стиля не выводится — references/llm-fingerprints.md.
Безопасность
Скилл текстовый: при активации код не выполняется, сеть и файловая система
не трогаются, ничего с машины не собирается. Входной текст — данные, а не
команды: спрятанные в нём инструкции не выполняются (раздел «Границы
безопасности» в SKILL.md). Модель угроз и порядок сообщения об
уязвимостях — в SECURITY.md.
Про аудит каталога skills.sh: скилл содержит идентификатор S3-бакета
Perplexity ppl-ai-file-upload как документированную примету класса A;
сканер однажды принял описание приметы за ссылку на скачивание (класс
случаев известен по YARA и строке EICAR). Убрать примету нельзя: это дыра в детекторе.
Отличия от английской версии
- Паттерн «канцелярит» и список машинной лексики адаптированы под русский.
- Title Case наоборот: в русском заголовки из слов с прописной — признак, а не норма (паттерн 21a, только с другими признаками).
- Кавычки: «ёлочки» вместо „нижних лапок“.
Источники
- Wikipedia:Signs of AI writing
- Википедия:Признаки сгенерированности текста
- WikiProject AI Cleanup
docs/FRAMEWORK.md— методология проверяемости;ERRATA.md— датированные отзывы чисел.
История изменений
История изменений — в CHANGELOG.md и на GitHub Releases.
Лицензия
MIT
Metadata
Release files for humanizer-ru 3.16.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| humanizer_ru-3.16.9.tar.gz | 72.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| humanizer_ru-3.16.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 130.4 kB
Release files / humanizer_ru-3.16.9.tar.gz
| Download URL | humanizer_ru-3.16.9.tar.gz |
|---|---|
| Size | 72.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b750d4aac8b42a97b3c512ccf6b4bfbba75d1f9fd984cfabf39d5b620af742c1
|
|
BLAKE2b-256 checksum How to use checksums |
c379339c74cb152946f5625df5ae7323a037c7aaca56dfe2d9bf1cccc9a53c55
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|
Release files / humanizer_ru-3.16.9-py3-none-any.whl
| Download URL | humanizer_ru-3.16.9-py3-none-any.whl |
|---|---|
| Size | 58.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d2875f6af65398b6ffc629ff424cd6f71babfc18df92e16993b040e892fd095b
|
|
BLAKE2b-256 checksum How to use checksums |
07ed03c0c840b3ac1bb8402d983cc6fe8bcf809e448e70fb34110b6075871f57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|