Loading...
Loading...
Rewrite AI-sounding text into natural, human writing by removing common LLM patterns while preserving meaning and tone.
npx skill4agent add besoeasy/open-skills humanizernamehumanizerrgnode# Ubuntu/Debian
sudo apt-get install -y ripgrep nodejs npm
# macOS
brew install ripgrep nodecat input.txt \
| rg -n -i "\b(additionally|crucial|pivotal|underscores|highlighting|fostering|landscape|testament|vibrant)\b|\b(i hope this helps|let me know if|great question)\b|—|[“”]"function humanizeText(text) {
const replacements = [
[/\bIn order to\b/g, "To"],
[/\bDue to the fact that\b/g, "Because"],
[/\bAt this point in time\b/g, "Now"],
[/\bIt is important to note that\b/g, ""],
[/\bI hope this helps!?\b/gi, ""],
[/\bLet me know if you'd like.*$/gim, ""],
[/\bserves as\b/g, "is"],
[/\bstands as\b/g, "is"],
[/\bboasts\b/g, "has"],
[/—/g, ","],
[/[“”]/g, '"']
];
let output = text;
for (const [pattern, to] of replacements) {
output = output.replace(pattern, to);
}
return output
.replace(/\s{2,}/g, " ")
.replace(/\n{3,}/g, "\n\n")
.trim();
}
// Usage:
// const fs = require('node:fs');
// const input = fs.readFileSync('input.txt', 'utf8');
// console.log(humanizeText(input));is/are/has#!/usr/bin/env bash
set -euo pipefail
in_file="${1:-input.txt}"
out_file="${2:-output.txt}"
sed -E \
-e 's/\bIn order to\b/To/g' \
-e 's/\bDue to the fact that\b/Because/g' \
-e 's/\bAt this point in time\b/Now/g' \
-e 's/\bserves as\b/is/g' \
-e 's/\bstands as\b/is/g' \
-e 's/\bboasts\b/has/g' \
-e 's/[“”]/"/g' \
-e 's/—/,/g' \
"$in_file" > "$out_file"
echo "Rewritten text saved to: $out_file"import fs from "node:fs/promises";
const bannedPatterns = [
/\bI hope this helps\b/i,
/\bLet me know if you'd like\b/i,
/\bGreat question\b/i,
/\bAdditionally\b/g,
/\bcrucial|pivotal|vibrant|testament\b/g
];
function rewrite(text) {
return text
.replace(/\bIn order to\b/g, "To")
.replace(/\bDue to the fact that\b/g, "Because")
.replace(/\bAt this point in time\b/g, "Now")
.replace(/\bserves as\b/g, "is")
.replace(/\bstands as\b/g, "is")
.replace(/\bboasts\b/g, "has")
.replace(/—/g, ",")
.replace(/[“”]/g, '"')
.replace(/\s{2,}/g, " ")
.trim();
}
function validate(text) {
const hits = bannedPatterns.flatMap((pattern) => {
const m = text.match(pattern);
return m ? [pattern.toString()] : [];
});
return { ok: hits.length === 0, hits };
}
async function main() {
const inputPath = process.argv[2] || "input.txt";
const outputPath = process.argv[3] || "output.txt";
const input = await fs.readFile(inputPath, "utf8");
const output = rewrite(input);
const report = validate(output);
await fs.writeFile(outputPath, output, "utf8");
if (!report.ok) {
console.error("Warning: possible AI patterns remain:", report.hits);
process.exitCode = 2;
}
console.log(`Saved: ${outputPath}`);
}
main().catch((err) => {
console.error(err.message);
process.exit(1);
});-ingserves asstands asisnot just X, but Yfrom X to Yrewritten_textchangeswarnings{
"rewritten_text": "The policy may affect outcomes, especially in smaller teams.",
"changes": [
"Removed filler phrase: 'It is important to note that'",
"Replaced vague hedge 'could potentially possibly' with 'may'"
],
"warnings": [
"Claim about impact scale remains unsourced in original text"
]
}{
"error": "input_too_short",
"message": "Need at least one full sentence to humanize reliably.",
"fix": "Provide a longer passage or combine short fragments into a paragraph."
}You have the humanizer skill. When the user asks to make text sound natural:
1) Read the full draft and detect AI writing patterns.
2) Rewrite to preserve meaning, facts, and intended tone.
3) Prefer specific, concrete language over vague significance claims.
4) Remove chatbot artifacts, filler, and over-hedging.
5) Use simple constructions (is/are/has) where they read better.
6) Vary sentence rhythm so the text sounds spoken by a real person.
7) Return the rewritten text. Optionally add a brief bullet summary of key changes.
Never invent facts. If a claim is vague and no source is provided, keep it conservative.I hope this helpsLet me know ifwarnings