humanizer-ru is an open-source toolkit designed to detect and normalize traces in Russian text produced by copy-pasting from chat interfaces, with optional support for English text. The project emphasizes "verifiable hygiene," that is, cleaning up insertion traces through deterministic rules and public benchmark data, but it does not make authorship judgments.
Purpose The tool is mainly intended for editors, teachers, developers, and AI assistant users who need to check whether text contains machine-generated traces. It can help scan text before publication, set up check gates in CI pipelines, or be used in agent environments through MCP integration. Its core goal is not to determine authorship, but to identify and clean up artifacts caused by copy-pasting.
Main capabilities
- humanizer-markers: scans text for traces and outputs locations and categories (Category A for hard copy-paste artifacts, Category B for contextual indicators such as invisible characters and hidden layout). Return code rc=1 means traces were found, rc=0 means no traces, rc=2 means the input is unreadable.
- humanizer-clean: safely cleans text, supports --in-place cleaning while preserving a .bak backup, and can remove Category A invisible marks and visible artifacts outside protected areas (code, frontmatter, URLs, HTML attributes, ZWJ emoji clusters). It does not rewrite style or meaning.
- humanizer-scan: evaluates soft signs of machine writing, used to calibrate editing effort, without giving conclusions.
- humanizer-facts: compares facts before and after cleaning, such as numbers, dates, URLs, names, quotations, negation, and modality, ensuring the lost and changed fields are empty.
- humanizer-polish: normalizes typography without changing meaning, supports --preserve-markup and --typographic modes for markup text.
- humanizer-report: generates a cleaning report, including fact verification.
- Supports processing English or mixed-language input via --language en or --language auto; the Russian configuration profile remains the default.
- Provides a browser demo (no installation required, text does not leave the browser), MCP integration (via uvx or pip install humanizer-ru), and agent client skill installation.
Usage Users can operate it through command-line tools, for example: humanizer-markers --scan file.md scans for traces; humanizer-clean --in-place file.md performs cleanup; humanizer-facts diff before.txt after.txt --no-additions verifies facts. The project also provides MCP configuration, a browser demo, Claude.ai and Claude Code skill installation, and text packages for agent clients that support agentskills.io (such as opencode, DeepSeek Harness). For detailed commands and modes, see docs/USAGE.md.
Applicable scenarios
- Editors and teachers: check texts for insertion traces before publication.
- Development and CI: set up check gates in the pipeline to prevent artifacts inserted by chat interfaces from entering the codebase.
- AI assistant users: perform the same checks in agent environments via MCP integration.
- Scenarios that need to handle Russian or English texts and want to keep the text style and meaning unchanged.
Limitations
- The tool does not determine authorship; it only detects traces.
- There are theoretical limitations to detection for rewritten texts, natural and fluent machine text without traces, short texts, watermarked texts without watermarks, etc. Relevant citations are provided in the project documentation.
- Cleanup does not rewrite style or meaning, but users need to manually check the results.
- humanizer-polish cannot be used on Markdown and markup text unless --preserve-markup mode is used.
- The project explicitly does not claim to be leading among similar tools, and provides benchmark testing and threat model documentation.
- Projects with the same name exist, but this project's verification method is different; it is recommended to choose based on the verification method rather than stars.
The project contains 40 regular expression markers and 58 machine writing patterns, of which 38 markers have documented evidence. On 12,314 non-bearing texts, type A false positives were 0, and type B false positives were 8 (0.00065), with confidence intervals provided. The tool runs fully offline, and texts do not leave the user's machine.