ai-humanizer
Reduce the AI-detection score of English text without changing what it says.
This is detector-guided surgical paraphrase: a detector tells you which
sentences read as AI, you rewrite only those, you re-check, you loop. Everything
not flagged stays byte-for-byte. Every protected term survives verbatim.
This skill is self-contained Node (no API key, no install): the detector is the
keyless ZeroGPT endpoint, and the agent running this skill is the rewriter —
you replace what used to be a separate paraphrase API.
The one idea that makes this work
AI detectors do not key on "Furthermore / Moreover / plays a crucial role".
That folklore is wrong and was disproven on real data (a Band-9 IELTS sample full
of "Firstly/Furthermore/Consequently" scored 19.6%; a polished clinical review
with none of them scored 100%). The real signal is lexical predictability —
how default, high-probability, and smooth each next word is. Fluency is the
tell. Polished, frictionless prose is what reads as AI.
So you lower the score by making flagged sentences less predictable and less
smooth while keeping them correct and meaning-identical:
- Replace the highest-probability wording with precise, lower-frequency
alternatives an expert in the field would actually reach for.
- Prefer longer, idea-dense sentences with stacked subordinate clauses. Do
not chop everything into short punchy sentences — that is its own AI tell.
- Allow slight roughness: passive voice, a parenthetical wedged mid-clause,
a clunky author-first opener. Real human writing under deadline is not perfectly
smooth. (See
reference/principles.md for the evidence behind every claim here.)
For academic content the path to a low score is more precision, not more
casual. Do not "explain it to a friend." That is the opposite of what works.
Workflow
Work on a file. Keep the original untouched; write iterations to new files so you
can roll back and so the before/after diff is exact.
SKILL_DIR below = the directory containing this file.
0. Gather inputs
- The draft (a
.txt/.md file, or save the user's pasted text to one).
- Optional — a detector report PDF (Turnitin, GPTZero, Originality.ai). If
given, read it natively and extract: (a) the real AI %, (b) the exact
sentences/spans it highlights. Those highlights override ZeroGPT's — Turnitin
is the ground truth; ZeroGPT is only a free proxy. See "Reading reports" below.
- Optional — user-supplied protected terms. Add to the protected list as-is.
1. Build the protected-term list
Two layers, union them:
node SKILL_DIR/scripts/terms.mjs extract <draft> → numbers, %, currency,
years, [refs], (Author, 2024) citations, quoted passages. Deterministic.
- You scan the draft for domain entities the regex can't catch — named
methods/theorems/laws, standards (ISO 9001, RFC 7231), drugs/genes/species,
org/product/dataset names, units & inline notation (kPa, O(n log n), p<0.05),
and terms of art whose meaning is fixed by the field. The test is not
"could this be paraphrased" — it is "would a casual paraphrase lose
field-specific meaning?".
p-value passes; team performance does not. When
unsure, exclude — over-protecting freezes the sentence and blocks the rewrite.
2. Baseline detect
node SKILL_DIR/scripts/detect.mjs <draft> → { fake, flagged:[...] }.
Record fake as the before score. flagged is your attack list. If a
Turnitin PDF was provided, use its highlighted sentences as the attack list
instead (or in addition).
3. Rewrite ONLY the flagged sentences (you are the rewriter)
For each flagged sentence, produce one replacement following the surgical
rules (next section). Do not touch unflagged sentences. Do not change paragraph
structure, headings, or list markers. Apply each replacement by locating the
exact original substring and swapping it — surrounding markdown stays intact.
4. Re-detect and loop
Run detect.mjs on the rewrite. Then:
- If
fake < target, stop (success). Default target 20; but see
"Calibration" — for academic prose, matching the human 0–50% band is the real
goal, and < 20 is not always reachable or necessary.
- If it dropped but is still above target, take the new
flagged list and loop
(step 3). Keep the best-scoring version across rounds — a later round can
over-rewrite and regress; never return something worse than a previous round.
- Cap at ~5 rounds. If two consecutive rounds don't improve, stop and report
honestly (see "Known limits" — some topics are detector-saturated).
- A sentence still flagged after a round: on the retry, tell yourself explicitly
"the previous rewrite of this sentence was still flagged — go further, change
the structure not just a word." Escalate aggressiveness across rounds.
5. Verify term preservation (hard gate)
node SKILL_DIR/scripts/terms.mjs verify <orig-draft> <final> <terms.json>
(pass the union list from step 1 as a JSON file). If missing is non-empty, the
rewrite dropped a protected term — redo those specific sentences keeping the
term character-for-character. Do not ship with a non-empty missing.
6. Report
Show the user a compact before/after:
- AI score: before% → after% (and the Turnitin number if available).
- Term preservation: N/N kept (from step 5).
- A short diff of what changed — original vs rewritten for each flagged
sentence, so they can see meaning was preserved. Keep unchanged text out of it.
Surgical rewrite rules
Apply liberally to flagged sentences. A timid rewrite leaves the signal in place.
DO
- Restructure the opener: lead with a subordinate clause, an adverbial, the
named author, or the object — not the topic noun. Passive voice is fine here.
- Merge related sentences into longer idea-dense ones; split only when a
sentence truly holds two unrelated ideas. Bias toward longer, not shorter.
- Substitute non-protected vocabulary for precise, lower-frequency words a
domain expert would use ("yields outcomes" → "produced larger effect sizes").
- Cut empty scaffolding: "in order to" → "to"; "It is important to note
that" → state the claim; "as can be seen" → drop.
- Vary openers across a set — three sentences starting "The/This/It" must
become three different structures.
- Allow slight awkwardness. Smoothness is the AI tell.
PHRASE BAN — cut every instance (these are the high-yield AI tells)
- "stands as a testament" / "plays a crucial/vital/pivotal role" / "in today's
[adj] landscape" / "in the realm of" / "marks a pivotal moment".
- "serves as" / "stands as" / "boasts" / "features" → "is" / "has".
- "It is important/worth noting that" / "It should be noted that" → delete, assert.
- Trailing -ing fake-depth clauses: "..., highlighting X." / "..., reflecting
Y." / "..., underscoring Z." — cut or fold into the main clause.
- High-frequency AI words: delve, foster, leverage, navigate, facilitate,
underscore, showcase, harness, unveil, embark, encompass, intricate,
multifaceted, robust (non-statistical), comprehensive, holistic, seamless,
pivotal, paradigm, synergy, transformative, groundbreaking, vibrant, profound,
remarkable, compelling, noteworthy, unprecedented, realm, myriad, plethora,
tapestry, testament, interplay.
- Stacked transitions: at most ONE of {Moreover/Furthermore/Additionally/
Therefore/Thus/Hence/Consequently} per rewritten set — but do not fear formal
connectives themselves; one is fine, a pile is the tell.
- "Not only X, but Y" / rhetorical questions to the reader / "the future looks bright".
HARD CONSTRAINTS (non-negotiable)
- Every protected term that was in the original sentence appears verbatim in
your rewrite. No synonyms, no inflections, no deletion.
- Add no claim, statistic, methodology detail, qualifier, or framing not in
the source. Lowering the score must never invent content.
- Do not switch register to blog/casual ("the takeaway", "Honestly,", "Look,",
contractions) — that fails academic register and trades one tell for another.
DO NOT (these were tried and backfired — see principles.md):
- Don't paste "human writing samples" as style anchors — the model mimics their
surface instead of attacking the signal (cost 23 points in testing).
- Don't add a long numbered rulebook — too many rules paralyze the rewrite into
near-identical copies. Keep the active instruction set tight.
Reading detector reports (PDF)
When the user provides a Turnitin / GPTZero / Originality.ai PDF:
- Read it natively. Pull the headline AI % and every highlighted span.
- Use the highlighted spans as the attack list in step 3 (they are
ground-truth flags, better than ZeroGPT's proxy flags).
- After rewriting, you usually cannot re-run Turnitin yourself — report the
ZeroGPT before/after as the proxy, and tell the user to re-submit to Turnitin
for the real number. Be explicit that ZeroGPT is a proxy, not Turnitin.
Calibration & honesty
- ZeroGPT is a free proxy. Turnitin is the ground truth. Never promise a
Turnitin number from a ZeroGPT number.
- Real human academic prose scores 0–50%, not 0 (a confirmed-human 2018 BERT
abstract scored 50% on ZeroGPT). The honest target is "indistinguishable from
the human distribution," not zero. Don't burn rounds chasing 0.
- Best-of-N beats one shot. Score variance is dominated by sampling, not by
the text — the same input can swing 0–52% across attempts. When a sentence is
stuck, generating 2–3 independent rewrites and keeping the lowest-scoring one is
the single most reliable lever.
Known limits (state these plainly; don't pretend)
- Detector-saturated topics — clinical SSRI/CBT, monetary policy/QE, common
legal/historical essays — lock at 50–100% AI even for genuinely human prose,
because those prompts flood the detector's training set. If a topic won't drop
below ~50 after 3 rounds, say so and recommend manual editing rather than
promising < 20.
- ZeroGPT truncates beyond ~14k chars;
detect.mjs auto-chunks longer docs but
the aggregate score is approximate.
- A free proxy can disagree with Turnitin by 20+ points in either direction.
1---2name: ai-humanizer3description: Lower the AI-detection score of English text (essays, papers, reports) while preserving every key term, number, citation, and the original logic. Uses a keyless ZeroGPT script as the objective baseline and the running agent itself as the rewriter — no API key. Reads Turnitin/GPTZero PDF reports for ground-truth scores. Use when the user wants to "降AI率 / 降低AI率 / 去AI味 / humanize AI text / bypass AI detector / lower Turnitin AI score / make this read human / reduce GPTZero score", or hands over a draft plus a detector report and asks to bring the AI percentage down without changing the meaning.4---56# ai-humanizer78Reduce the AI-detection score of English text **without** changing what it says.9This is detector-guided surgical paraphrase: a detector tells you *which*10sentences read as AI, you rewrite only those, you re-check, you loop. Everything11not flagged stays byte-for-byte. Every protected term survives verbatim.1213This skill is self-contained Node (no API key, no install): the detector is the14keyless ZeroGPT endpoint, and **the agent running this skill is the rewriter** —15you replace what used to be a separate paraphrase API.1617## The one idea that makes this work1819AI detectors do **not** key on "Furthermore / Moreover / plays a crucial role".20That folklore is wrong and was disproven on real data (a Band-9 IELTS sample full21of "Firstly/Furthermore/Consequently" scored 19.6%; a polished clinical review22with none of them scored 100%). The real signal is **lexical predictability** —23how default, high-probability, and *smooth* each next word is. **Fluency is the24tell.** Polished, frictionless prose is what reads as AI.2526So you lower the score by making flagged sentences **less predictable and less27smooth** while keeping them correct and meaning-identical:2829- Replace the highest-probability wording with **precise, lower-frequency**30 alternatives an expert in the field would actually reach for.31- Prefer **longer, idea-dense sentences** with stacked subordinate clauses. Do32 **not** chop everything into short punchy sentences — that is its own AI tell.33- Allow **slight roughness**: passive voice, a parenthetical wedged mid-clause,34 a clunky author-first opener. Real human writing under deadline is not perfectly35 smooth. (See `reference/principles.md` for the evidence behind every claim here.)3637For academic content the path to a low score is **more precision, not more38casual**. Do not "explain it to a friend." That is the opposite of what works.3940## Workflow4142Work on a file. Keep the original untouched; write iterations to new files so you43can roll back and so the before/after diff is exact.4445`SKILL_DIR` below = the directory containing this file.4647### 0. Gather inputs48- The draft (a `.txt`/`.md` file, or save the user's pasted text to one).49- **Optional — a detector report PDF** (Turnitin, GPTZero, Originality.ai). If50 given, **read it natively** and extract: (a) the real AI %, (b) the exact51 sentences/spans it highlights. Those highlights override ZeroGPT's — Turnitin52 is the ground truth; ZeroGPT is only a free proxy. See "Reading reports" below.53- **Optional — user-supplied protected terms.** Add to the protected list as-is.5455### 1. Build the protected-term list56Two layers, union them:571. `node SKILL_DIR/scripts/terms.mjs extract <draft>` → numbers, %, currency,58 years, `[refs]`, `(Author, 2024)` citations, quoted passages. Deterministic.592. **You** scan the draft for **domain entities** the regex can't catch — named60 methods/theorems/laws, standards (ISO 9001, RFC 7231), drugs/genes/species,61 org/product/dataset names, units & inline notation (kPa, O(n log n), p<0.05),62 and terms of art whose meaning is fixed by the field. The test is **not**63 "could this be paraphrased" — it is "would a casual paraphrase lose64 field-specific meaning?". `p-value` passes; `team performance` does not. When65 unsure, exclude — over-protecting freezes the sentence and blocks the rewrite.6667### 2. Baseline detect68`node SKILL_DIR/scripts/detect.mjs <draft>` → `{ fake, flagged:[...] }`.69Record `fake` as the **before** score. `flagged` is your attack list. If a70Turnitin PDF was provided, use its highlighted sentences as the attack list71instead (or in addition).7273### 3. Rewrite ONLY the flagged sentences (you are the rewriter)74For each flagged sentence, produce one replacement following **the surgical75rules** (next section). Do not touch unflagged sentences. Do not change paragraph76structure, headings, or list markers. Apply each replacement by locating the77exact original substring and swapping it — surrounding markdown stays intact.7879### 4. Re-detect and loop80Run `detect.mjs` on the rewrite. Then:81- If `fake` < **target**, stop (success). Default target **20**; but see82 "Calibration" — for academic prose, matching the human 0–50% band is the real83 goal, and < 20 is not always reachable or necessary.84- If it dropped but is still above target, take the new `flagged` list and loop85 (step 3). **Keep the best-scoring version across rounds** — a later round can86 over-rewrite and regress; never return something worse than a previous round.87- Cap at **~5 rounds**. If two consecutive rounds don't improve, stop and report88 honestly (see "Known limits" — some topics are detector-saturated).89- A sentence still flagged after a round: on the retry, tell yourself explicitly90 *"the previous rewrite of this sentence was still flagged — go further, change91 the structure not just a word."* Escalate aggressiveness across rounds.9293### 5. Verify term preservation (hard gate)94`node SKILL_DIR/scripts/terms.mjs verify <orig-draft> <final> <terms.json>`95(pass the union list from step 1 as a JSON file). If `missing` is non-empty, the96rewrite dropped a protected term — **redo those specific sentences** keeping the97term character-for-character. Do not ship with a non-empty `missing`.9899### 6. Report100Show the user a compact before/after:101- **AI score: before% → after%** (and the Turnitin number if available).102- **Term preservation: N/N kept** (from step 5).103- A short **diff** of what changed — original vs rewritten for each flagged104 sentence, so they can see meaning was preserved. Keep unchanged text out of it.105106## Surgical rewrite rules107108Apply liberally to flagged sentences. A timid rewrite leaves the signal in place.109110**DO**111- **Restructure the opener**: lead with a subordinate clause, an adverbial, the112 named author, or the object — not the topic noun. Passive voice is fine here.113- **Merge** related sentences into longer idea-dense ones; **split** only when a114 sentence truly holds two unrelated ideas. Bias toward longer, not shorter.115- **Substitute non-protected vocabulary** for precise, lower-frequency words a116 domain expert would use ("yields outcomes" → "produced larger effect sizes").117- **Cut empty scaffolding**: "in order to" → "to"; "It is important to note118 that" → state the claim; "as can be seen" → drop.119- **Vary openers** across a set — three sentences starting "The/This/It" must120 become three different structures.121- **Allow slight awkwardness.** Smoothness is the AI tell.122123**PHRASE BAN — cut every instance (these are the high-yield AI tells)**124- "stands as a testament" / "plays a crucial/vital/pivotal role" / "in today's125 [adj] landscape" / "in the realm of" / "marks a pivotal moment".126- "serves as" / "stands as" / "boasts" / "features" → "is" / "has".127- "It is important/worth noting that" / "It should be noted that" → delete, assert.128- Trailing **-ing fake-depth clauses**: "..., highlighting X." / "..., reflecting129 Y." / "..., underscoring Z." — cut or fold into the main clause.130- High-frequency AI words: *delve, foster, leverage, navigate, facilitate,131 underscore, showcase, harness, unveil, embark, encompass, intricate,132 multifaceted, robust (non-statistical), comprehensive, holistic, seamless,133 pivotal, paradigm, synergy, transformative, groundbreaking, vibrant, profound,134 remarkable, compelling, noteworthy, unprecedented, realm, myriad, plethora,135 tapestry, testament, interplay.*136- Stacked transitions: at most ONE of {Moreover/Furthermore/Additionally/137 Therefore/Thus/Hence/Consequently} per rewritten set — but do not fear formal138 connectives themselves; one is fine, a pile is the tell.139- "Not only X, but Y" / rhetorical questions to the reader / "the future looks bright".140141**HARD CONSTRAINTS (non-negotiable)**142- Every protected term that was in the original sentence appears **verbatim** in143 your rewrite. No synonyms, no inflections, no deletion.144- Add **no** claim, statistic, methodology detail, qualifier, or framing not in145 the source. Lowering the score must never invent content.146- Do not switch register to blog/casual ("the takeaway", "Honestly,", "Look,",147 contractions) — that fails academic register and trades one tell for another.148149**DO NOT** (these were tried and backfired — see principles.md):150- Don't paste "human writing samples" as style anchors — the model mimics their151 surface instead of attacking the signal (cost 23 points in testing).152- Don't add a long numbered rulebook — too many rules paralyze the rewrite into153 near-identical copies. Keep the active instruction set tight.154155## Reading detector reports (PDF)156157When the user provides a Turnitin / GPTZero / Originality.ai PDF:1581. Read it natively. Pull the **headline AI %** and every **highlighted span**.1592. Use the highlighted spans as the attack list in step 3 (they are160 ground-truth flags, better than ZeroGPT's proxy flags).1613. After rewriting, you usually **cannot** re-run Turnitin yourself — report the162 ZeroGPT before/after as the proxy, and tell the user to re-submit to Turnitin163 for the real number. Be explicit that ZeroGPT is a proxy, not Turnitin.164165## Calibration & honesty166167- **ZeroGPT is a free proxy. Turnitin is the ground truth.** Never promise a168 Turnitin number from a ZeroGPT number.169- **Real human academic prose scores 0–50%, not 0** (a confirmed-human 2018 BERT170 abstract scored 50% on ZeroGPT). The honest target is "indistinguishable from171 the human distribution," not zero. Don't burn rounds chasing 0.172- **Best-of-N beats one shot.** Score variance is dominated by sampling, not by173 the text — the same input can swing 0–52% across attempts. When a sentence is174 stuck, generating 2–3 independent rewrites and keeping the lowest-scoring one is175 the single most reliable lever.176177## Known limits (state these plainly; don't pretend)178179- **Detector-saturated topics** — clinical SSRI/CBT, monetary policy/QE, common180 legal/historical essays — lock at 50–100% AI even for genuinely human prose,181 because those prompts flood the detector's training set. If a topic won't drop182 below ~50 after 3 rounds, say so and recommend manual editing rather than183 promising < 20.184- ZeroGPT truncates beyond ~14k chars; `detect.mjs` auto-chunks longer docs but185 the aggregate score is approximate.186- A free proxy can disagree with Turnitin by 20+ points in either direction.