Skip to main content

Humanizer-ru — нормализация и диагностика русского текста

License: MIT Версия Regex checks Skills.sh Догфудинг

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, только с другими признаками).
  • Кавычки: «ёлочки» вместо „нижних лапок“.

Источники

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

История изменений — в 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)

Source distribution for humanizer-ru 3.16.9
File Size Uploaded
humanizer_ru-3.16.9.tar.gz 72.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for humanizer-ru 3.16.9
File Interpreter ABI Platform
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
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page