Humanizer-ru — очеловечивание русского ИИ-текста
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, 43 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. Правило одно для любых скиллов: сначала прочитать, потом ставить.
- Откройте
SKILL.mdиreferences/прямо на GitHub и убедитесь, что содержимое вас устраивает. - Ставьте только выпуски со страницы Releases (аннотированные теги вида
vX.Y.Z), а не произвольное состояние ветки. - После распаковки убедитесь, что внутри лишь
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 (Веб-интерфейс)
- Откройте страницу Releases этого репозитория, выберите свежий выпуск и скачайте приложенный к нему архив
humanizer-ru.zip. Это собранный архив скилла — состав перечислен в шаге 0.Source code (zip), который GitHub добавляет к каждому выпуску, — полное дерево репозитория вместе с.github/,research/иtests/; он нужен только тем, кто собирается запускать валидаторы. - Зайдите в аккаунт Claude.ai и перейдите в Settings > Skills.
- Нажмите 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.14.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.14.0 --depth 1 https://github.com/Vladimir-Human/humanizer-ru.git ~/.agents/skills/humanizer-ru
Второй способ — бандл из подкаталога dsh/. Его ставит менеджер плагинов, профиль создаётся при первом обращении, pnpm нужен на PATH:
dsh plugin --profile web add "github:Vladimir-Human/humanizer-ru#path:/dsh"
В бандле лежит копия SKILL.md и references/; гейт check_bundle_sync.py держит её равной источнику. Снять бандл: dsh plugin --profile web remove humanizer-ru-dsh.
Команда берёт ветку по умолчанию. Закрепить тег и подкаталог одной строкой не выходит: pnpm молча отбрасывает подкаталог, ставит репозиторий целиком обычной зависимостью и возвращает 0, а профиль остаётся без слоя. Проверено на dsh 0.1.0-rc.6.
Порядок поиска скилла в dsh (ближайший каталог побеждает): <проект>/.dsh/skills, <проект>/.agents/skills, ~/.dsh/skills, ~/.agents/skills. Каталог ~/.claude/skills dsh не сканирует: скилл, установленный туда по инструкции для Claude Code выше, в dsh не виден.
Использование
В Claude Code или другом агенте:
/humanizer-ru [вставьте текст]
Или напрямую:
Очеловечь этот текст: [ваш текст]
CI-гейт для своих репозиториев
Репозиторий поставляет переиспользуемый composite action в каталоге action/.
Он гоняет по вашим файлам ровно те же скрипты, что и CI этого проекта, —
на Python со стандартной библиотекой, без внешних сервисов и без передачи
текста куда-либо за пределы раннера GitHub Actions. Для работы нужен только
permissions: contents: read (действие выполняет checkout и читает файлы).
Минимальный workflow в вашем репозитории, например .github/workflows/humanizer.yml:
name: humanizer-ru
on:
push:
paths: ['content/**/*.md', 'docs/**/*.md']
pull_request:
paths: ['content/**/*.md', 'docs/**/*.md']
workflow_dispatch:
permissions:
contents: read
jobs:
humanizer:
name: Следы машинной генерации
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: Vladimir-Human/humanizer-ru/action@v3.14.0
with:
files: 'content/**/*.md docs/**/*.md' # bash-глоб(ы)
genre: neutral # для режима soft-threshold
fail-on: class-a # или soft-threshold
ref: '' # checkout вашего репозитория (пусто — HEAD)
Входы action:
| Вход | По умолчанию | Что делает |
|---|---|---|
files |
**/*.md |
Файлы для проверки: один bash-глоб или несколько через пробел. Внутри действие включает globstar и nullglob, поэтому **/*.md заходит в подкаталоги. |
genre |
neutral |
Жанр для мягких признаков: neutral, fiction, legal, academic, marketing, chat. Используется только при fail-on: soft-threshold. |
fail-on |
class-a |
class-a — жёсткий regex-слой (check_markers.py --scan, любой маркер = код возврата 1); soft-threshold — счётчик мягких признаков (scan_soft_signals.py --fail-at 3). |
ref |
пусто | Ref вашего репозитория для checkout. Пусто — текущий HEAD (для pull_request — merge-коммит по умолчанию). |
Версия action закрепляется не входом ref, а строкой uses: Vladimir-Human/humanizer-ru/action@v3.14.0.
Вход ref управляет тем, какое состояние проверяемого репозитория сканируется.
Ограничения и политика безопасности:
permissions: contents: read; действие ничего не публикует и не комментирует.- Текст не покидает раннер: скрипты из
action/../scriptsзапускаются локально и не открывают сеть. - Внутри только
python3стандартной библиотеки и официальныйactions/checkout(закреплён по SHA).
Что выбрать для гейта:
class-a— конвейерный минимум: ловите служебные ссылки и артефакты из интерфейсов (ppl-ai-file-upload,[citation:3], невидимые разделители и т.п.). Совпадение — повод снять маркер или проверить происхождение.soft-threshold— лингвистическая сигнализация:--fail-at 3роняет гейт, когда в тексте 3 и более мягких признаков. Одного-двух не хватает: скрипт специально считает паттерны консервативно, вердикт об авторстве не выносит.
Демо regex-слоя: онлайн или demo/index.html офлайн — текст не отправляется на сервер.
Что делает
Прогоняет русский текст по 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). Читаемость оценивает своя панель судей, но её числа мы держим при себе: панель односемейная, а позиционный шум описан в прогонах.
Доли „0 из N“ публикуются с доверительным интервалом: 0 ложных срабатываний на 11 человеческих текстах — наблюдение 0/11, а не гарантированный ноль: Wilson 95% CI равен [0%; 25.9%]. Интервалы пересчитывает и сверяет scripts/check_confidence.py.
Архитектура
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/)
├── GOVERNANCE.md # Роли, права выпуска, dormant-политика
├── CODE_OF_CONDUCT.md / CONTRIBUTING.md
├── docs/
│ └── FRAMEWORK.md # Публичная методология проверяемости
├── scripts/
│ ├── check_markers.py # Прогон regex-маркеров, режим --scan
│ ├── check_spec.py # Валидатор спецификации Agent Skills
│ ├── check_fixture_sources.py # Валидатор реестра источников
│ ├── check_link_rot.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_adversarial.py # Гейт adversarial-FP корпуса
│ ├── check_perf.py # Скорость выражений на большом входе
│ ├── check_release.py # Сборка и проверка релизного архива
│ ├── check_bundle_sync.py # Синхронность вендора бандла dsh/
│ ├── check_pkg_sync.py # Синхронность PyPI-пакета с корневыми скриптами
│ ├── export_markers.py # Генератор machine-readable реестра markers.v1.json
│ ├── check_markers_export.py # Гейт синхронности markers.v1.json
│ ├── filemarks/ # Слой A/B и метаданные файлов (inspect/clean)
│ ├── scan_soft_signals.py # Счётчик мягких признаков
│ ├── check_json_output.py # UTF-8 машиночитаемого stdout
│ ├── check_confidence.py # Wilson CI для долей лидерборда
│ ├── threshold_sweep.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 ChatGPT | oaicite:\d+ |
oai_citation:N‡ |
OpenAI ChatGPT | oai_citation:\d+‡ |
attributableIndex в JSON |
Внутреннее поле разметки JSON-ответов при использовании инструментов | \battributableIndex\b |
turn0search0 |
OpenAI веб-поиск | turn\d+search\d+ |
turn0fetch0 |
OpenAI загрузка страниц | turn\d+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 и другие рассуждающие модели | (?m)^\s*</?think>|</think>\s*$ |
Сцепка ISO+3ISO+3 |
OpenAI 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+200B–U+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, 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+\] |
[citation:3] |
Perplexity и другие поисковые ИИ | \[citation:\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(?: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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file humanizer_ru-3.14.0.tar.gz.
File metadata
- Download URL: humanizer_ru-3.14.0.tar.gz
- Upload date:
- Size: 86.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2e35eb2dc2767d58524914fd66e981e8ee98f29afc352449183a878d7118979
|
|
| MD5 |
95dc708037e02772133600ff2bf17154
|
|
| BLAKE2b-256 |
8d77f0c57ad4101af74b6a54d4969ccc1a09280dfd3fd7d70750fb4759d8936f
|
File details
Details for the file humanizer_ru-3.14.0-py3-none-any.whl.
File metadata
- Download URL: humanizer_ru-3.14.0-py3-none-any.whl
- Upload date:
- Size: 51.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c0763c9f1bd6b5e67ef9b50eb2592f9aa8823629d809c8cf02a23772f34baf4
|
|
| MD5 |
251be92a0cf25cd0d09fb2a2a1348f24
|
|
| BLAKE2b-256 |
26c2a47098f3e23dfaecf8e58bdebea26457d4a4c73e3a718968662876237112
|