Ukrainian Content Editing: 80 Markers, 3 Scales
Ukrainian copy on a bilingual site is often a translation: correct words, Russian syntax, and a tone that reads like a form from 2011. Ukrainian content editing fixes that with a list of patterns, not with taste.
Code: humanizer-ua, MIT licensed.
The skill carries 30 hard bans, 12 normative rules and 80 markers in eight groups. A scanner without dependencies grades a text on three scales: norm, style and structure.
Three scales, because one number lies
A norm score catches a mistake: a dash where a hyphen belongs, a Russian letter, a broken apostrophe. A style score catches канцелярит (bureaucratic padding), calques and clichés. A structure score catches even paragraphs, chat-wrapper openings and a heading repeated in the first sentence.
Norm has a veto. A text with an error does not become clean because its style is perfect, and the scanner states that in its own output.
The bans that do the work
“У сучасному світі” and “варто зазначити” open a paragraph with nothing. “Даний” instead of “цей” is a calque. “Являється” is the Russian verb for “is”. “Відіграє ключову роль” replaces a fact with an evaluation.
Each ban carries a replacement, and the replacement is not another fancy construction. The usual fix is deletion.
Fact-lock before style
Numbers, dates, names, quotes, conditions and modality are frozen. If a rewrite drops “до 5000” or turns “може” into “робить”, the edit fails even if the paragraph reads better.
That rule is what makes the skill usable on a commercial site. An editor who improves the rhythm and loses a figure has damaged the page.
Genre changes the boundary
Eight registers: marketing, expert text, business letter, news, academic, documentation, legal, fiction. What is a defect in a blog post is normal in an academic paper, and the matrix says so instead of applying one standard everywhere.
Legal text gets only factual and language corrections. Fiction keeps the author’s rhythm, repetitions and characters’ speech.
The scanner is a heuristic, and says so
python scan.py article.txt --genre marketing prints three scores, the findings by rule, and a fact-risk line. It needs Python 3.9 and nothing else.
It checks 33 of the 80 markers automatically; the rest the agent reads through the catalogue. A hundred out of a hundred therefore means “clean according to the scanner rules”, and the readme says that in the same breath.
What it refuses to promise
That a text will pass an AI detector. The skill does not insert typos, substitute letters or imitate a human. Its claim is narrower: the text stops sounding like a machine translation of a press release.
That honesty matters for a client, because a vendor promising invisibility sells a lottery ticket with a monthly invoice.
What to check before an edit
Open the text with the scanner and read the three scores before touching a word. A structure score in the eighties with a norm score in the sixties means mistakes first and style after.
Then read the piece aloud. A sentence that makes you stumble is a sentence the scanner will never flag.
Where it fits in a workflow
Before publication, with --genre set to the right register. During a migration, to clean a decade of copy that was translated from Russian. And in CI, where a score below the threshold fails the build.
The repository also gates itself: the audit example in the readme is compared against the real scanner by a script, so documentation cannot drift from behaviour.
Related: ai text humanizer for Russian and English, and content readability for the formula layer that scores the result.
