Strip the AI packaging. Keep the meaning.
Try it in the browser — no install
Paste AI-sounding text → patina rewrites it in place, keeps the facts (the "30 templates" number survives), and drops the deterministic AI signal 100 → 0 (MPS 100 / Fidelity 75).
patina is a deterministic, pattern-based humanizer for Korean, English, Chinese, and Japanese. It finds AI-sounding phrasing and rewrites it without changing the claim, numbers, polarity, or causation — built for allowed AI-assisted drafting, not for evading detectors.
- Auditable, not a black box — 184 named patterns drive every edit;
--diffshows exactly what changed and why. - Meaning survives, verified — every rewrite is gated by meaning-preservation (MPS) and fidelity floors; drifted rewrites are retried or rolled back.
- Three independent axes — Document Type owns genre, Persona owns voice, Register owns delivery. Omit any axis to preserve the source.
- Every surface — agent skill (Claude Code · Codex · Cursor · OpenCode), Node CLI, and a browser playground.
- Honest about limits — scores are editing signals, not authorship proof; our own pre-registered study publishes where rewriting fails alongside where it works.
Browser — nothing to install. Open patina.vibetip.help and paste text. Rewrites run server-side with the MPS/fidelity gates; API mode forwards your own key per request (never stored or logged).
Agent skill — paste this into Claude Code, Codex CLI, Cursor, or any agent:
Install patina by following https://raw.githubusercontent.com/devswha/patina/main/INSTALLATION.md
Then use it:
/patina --lang en
[paste your text here]
CLI — Node >= 18:
npx patina-cli --lang en input.txt # rewrite
npx patina-cli doctor # check backends and keysA logged-in codex, claude, or gemini CLI works with no API key: add --backend codex-cli. Full install options: INSTALLATION.md.
patina does not infer one axis from another. Omit Persona and Register to keep the source voice and register.
| Axis | Controls | Does not control | Select with |
|---|---|---|---|
| Document Type | Genre, purpose, structural conventions, pattern policy | Voice, casual/professional delivery, meaning floors | --document-type · config document-type · Playground "Document Type" |
| Persona | Reusable voice fingerprint: vocabulary, rhythm, explanation habits | Genre, pattern policy, register, meaning floors | --persona · config persona · Playground "Persona" |
| Register | casual or professional delivery |
Genre, persona identity, pattern policy | --register · config register · Playground "Register" |
Meaning preservation is the outer guard; an explicit value never fills an omitted axis.
patina input.txt # rewrite with defaults
patina --audit input.txt # detect patterns only
patina --score --offline --exit-on 30 input.txt # deterministic CI gate, no API key
patina --diff input.txt # pattern-by-pattern changes
patina --verify input.txt # rewrite + MPS/fidelity floor check
patina --document-type email --register professional input.txt
patina persona new my-voice --from-sample past-posts.txt # learn a reusable voice
patina --persona my-voice draft.md
patina --batch docs/*.md --outdir cleaned/patina --help prints the full flag list. CI wrapper for GitHub Actions: devswha/patina-action — plus pre-commit, static-site, Docker, and release integrations.
Project config lives in .patina.yaml:
version: "7.0.0"
language: ko # ko | en | zh | ja
document-type: default # genre/purpose + pattern policy
persona: # optional reusable voice; omit to preserve source
register: # casual | professional; omit to preserve source| 184 patterns | 37 rewrite-capable + 9 score-only viral-hook per language (46 each across KO/EN/ZH/JA) — see the full 184-pattern catalog in PATTERNS.md |
| Modes | rewrite · verify · audit · score · diff |
| Calibration | 67.3% editing-hotspot catch [63.5–71.0%] across GPT-5.5 / Claude Sonnet 4.6 / Gemini 2.5 Pro (n=600, KO+EN); 16.0% false positives [11.6–21.7%] on KO+EN human controls (n=200) |
| License | MIT |
Scores are editing signals with false positives and false negatives, not proof of authorship. See Ethics.
- Cookbook — common recipes · CLI contract — flags, gates, exit codes
- Before/After gallery (한국어) · Pattern catalog
- Architecture · Configuration & authentication
- Benchmarks · Research · FAQ (한국어)
- Contributing (한국어) · Changelog
MIT. See LICENSE and NOTICE. Inspired by oh-my-zsh, Wikipedia's "Signs of AI writing", and blader/humanizer.
