Forked from altra/humanize
README.md
Detects AI-generated text and rewrites it to sound authentically human β without changing the meaning. Useful for polishing AI-assisted writing before publishing, sending, or presenting.
analyze_and_humanize) detects first, rewrites only if the score is above a thresholdLoad the built plugin folder in LM Studio.
| Field | Default | Description |
|---|---|---|
| Default Tone | casual | Tone used when none is specified in the call. Options: casual, professional, academic, custom |
| AI Score Threshold | 60 | Score (0β100) above which analyze_and_humanize triggers a rewrite |
Kind: Compute
Analyzes text and returns a score from 0 (likely human) to 100 (likely AI) based on five heuristic signals.
| Score range | Verdict |
|---|---|
| 0β30 | Likely human |
| 31β60 | Mixed signals |
| 61β80 | Likely AI |
| 81β100 | Almost certainly AI |
Five signals (with weights):
| Signal | Weight | What it detects |
|---|---|---|
| Flagged phrase density | 30% | AI-specific phrases ("it's worth noting", "delve into", "in conclusion") |
| Sentence burstiness | 25% | Uniform sentence lengths β humans vary far more |
| Transition word density | 20% | Overuse of "moreover", "furthermore", "in addition" |
| Paragraph symmetry | 15% | All paragraphs roughly the same length |
| Average sentence length | 10% | Long, complex sentences throughout |
Detection is probabilistic. False positives are possible, especially for formal or academic writing.
Kind: Scaffold
Returns a rewrite prompt payload for the LLM to perform. Detects AI patterns first, then gives the LLM specific instructions to fix them while preserving all original meaning.
Tone options:
| Tone | Style |
|---|---|
casual | Conversational, contractions, short sentences, first-person |
professional | Clear and direct, authoritative but not stiff, no slang |
academic | Formal but varied, nuanced, avoids LLM academic clichΓ©s |
custom | Provide your own style description in customToneDescription |
Rewrite rules always applied:
Kind: Compute + Scaffold
Convenience tool: detects AI score, then returns a rewrite payload only if the score meets or exceeds the threshold.
Use this for the full detect-then-rewrite flow in one call.
Check if text sounds AI-generated:
"Does this paragraph sound like AI wrote it?"
detect_ai_text(textContent="...") β score: 74, verdict: "likely AI", signals breakdown
Rewrite in professional tone:
"Humanize this email draft in a professional tone"
humanize_text(textContent="...", tone="professional") β rewrite payload β LLM produces rewritten text
Auto detect and rewrite (threshold 60):
"Clean up this blog section"
analyze_and_humanize(textContent="...", tone="casual") β if score β₯ 60, rewrites; if below, leaves as-is
Custom tone for a specific brand voice:
"Rewrite this in our brand voice β dry, technical, no fluff"
humanize_text(textContent="...", tone="custom", customToneDescription="Dry and technical. No filler words. No enthusiasm markers. Direct statements only. Short sentences preferred.") β tailored rewrite
cd humanize-plugin
npm install
npm run build