humanizer

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Humanizer: Remove AI writing patterns

Humanizer:移除AI写作模式

Edit text so it sounds like a real person wrote it: clearer rhythm, stronger specificity, less filler, and no chatbot artifacts. Keep the original meaning, facts, and intent.
编辑文本使其听起来像是真人撰写:节奏更清晰、表述更具体、冗余内容更少,且无聊天机器人痕迹。保留原文的含义、事实和意图。

Quick quality checklist

快速质量检查清单

  • name
    matches folder name exactly (
    humanizer
    )
  • Examples are copy-paste runnable (Bash + Node.js)
  • Rewrites preserve factual claims and scope
  • Output includes rewritten text and optional concise change summary
  • No invented facts, citations, or sources
  • name
    需与文件夹名称完全匹配(
    humanizer
  • 示例可直接复制运行(Bash + Node.js)
  • 改写内容需保留事实声明和范围
  • 输出包含改写后的文本,可选简洁的变更摘要
  • 不得编造事实、引用或来源

When to use

使用场景

  • User asks to “humanize”, “de-AI”, “make this sound natural”, or “remove AI tone”
  • Draft sounds generic, inflated, formulaic, or overly polished
  • Content has chatbot artifacts (hedging, servile tone, boilerplate intros/outros)
  • You need a tighter, more direct style without changing factual claims
  • 用户要求“人性化处理”“去AI化”“让文本更自然”或“移除AI语气”时
  • 草稿内容听起来通用、浮夸、刻板或过度修饰时
  • 内容存在聊天机器人痕迹(含糊其辞、讨好语气、模板化开头/结尾)时
  • 需要更紧凑、直接的风格,但不改变事实声明时

Required tools / APIs

所需工具/API

  • No external API required
  • Optional local tools for batch editing:
    • rg
      (ripgrep) for pattern detection
    • node
      (v18+) for scripted rewrite pipelines
Install options:
bash
undefined
  • 无需外部API
  • 可选本地工具用于批量编辑:
    • rg
      (ripgrep)用于模式检测
    • node
      (v18+)用于脚本化改写流水线
安装选项:
bash
undefined

Ubuntu/Debian

Ubuntu/Debian

sudo apt-get install -y ripgrep nodejs npm
sudo apt-get install -y ripgrep nodejs npm

macOS

macOS

brew install ripgrep node
undefined
brew install ripgrep node
undefined

Skills

技能说明

basic_usage

basic_usage(基础用法)

Use this flow for single passages:
  1. Identify AI-patterns in the input
  2. Rewrite sentences to simpler constructions
  3. Replace vague claims with specific details when provided
  4. Keep tone aligned to the user’s context (formal/casual/technical)
  5. Return the rewritten text
Bash (pattern scan):
bash
cat 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|—|[“”]"
Node.js (simple rule-based humanizer):
javascript
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));
针对单段文本使用以下流程:
  1. 识别输入文本中的AI模式
  2. 将句子改写为更简单的结构
  3. 若有提供具体细节,用其替换模糊表述
  4. 保持与用户语境匹配的语气(正式/随意/技术向)
  5. 返回改写后的文本
Bash(模式扫描):
bash
cat 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|—|[“”]"
Node.js(基于规则的简单人性化处理工具):
javascript
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();
}

// 使用示例:
// const fs = require('node:fs');
// const input = fs.readFileSync('input.txt', 'utf8');
// console.log(humanizeText(input));

robust_usage

robust_usage(进阶用法)

Use this for long drafts and production outputs:
  • Do a first pass for pattern detection
  • Do a second pass for structure/rhythm (mix short + long sentences)
  • Remove claims without support ("experts say", "observers note") unless sourced
  • Prefer plain verbs (
    is/are/has
    ) over inflated alternatives
  • Keep uncertainty only where uncertainty is real
Bash (batch rewrite starter):
bash
#!/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"
Node.js (pipeline with validation):
javascript
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);
});
针对长草稿和生产级输出使用以下流程:
  • 第一遍进行模式检测
  • 第二遍调整结构/节奏(混合长短句)
  • 移除无依据的声明(如“专家表示”“观察人士指出”),除非有来源支撑
  • 优先使用平实动词(
    is/are/has
    )而非浮夸替代词
  • 仅在确实存在不确定性时保留模糊表述
Bash(批量改写入门脚本):
bash
#!/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"
Node.js(带验证的流水线工具):
javascript
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);
});

Pattern checklist

模式检查清单

Scan and remove these classes when they appear:
  1. Significance inflation and legacy framing
  2. Notability/media name-dropping without context
  3. Superficial
    -ing
    chains
  4. Promotional/advertisement wording
  5. Vague attribution ("experts say")
  6. Formulaic “challenges/future prospects” sections
  7. Overused AI vocabulary (e.g., pivotal, underscores, tapestry)
  8. Copula avoidance (
    serves as
    ,
    stands as
    instead of
    is
    )
  9. Negative parallelism (
    not just X, but Y
    )
  10. Rule-of-three overuse
  11. Excessive synonym cycling
  12. False ranges (
    from X to Y
    without meaningful scale)
  13. Em-dash overuse
  14. Mechanical boldface emphasis
  15. Inline-header bullet artifacts
  16. Title Case heading overuse where sentence case fits
  17. Emoji decoration in formal content
  18. Curly quotes when straight quotes are expected
  19. Chatbot collaboration artifacts
  20. Knowledge-cutoff disclaimers left in final copy
  21. Sycophantic/servile tone
  22. Filler phrase bloat
  23. Excessive hedging
  24. Generic upbeat conclusions with no substance
出现以下类型的内容时,需扫描并移除:
  1. 夸大重要性和陈旧框架
  2. 无上下文地提及知名人士/媒体
  3. 表面化的-ing链式结构
  4. 推广/广告用语
  5. 模糊归因(如“专家表示”)
  6. 刻板的“挑战/未来展望”章节
  7. 过度使用的AI词汇(如pivotal、underscores、tapestry)
  8. 避免使用系动词(用
    serves as
    stands as
    替代
    is
  9. 否定平行结构(
    not just X, but Y
  10. 过度使用“三法则”
  11. 过度循环使用同义词
  12. 虚假范围(无合理尺度的
    from X to Y
  13. 过度使用破折号
  14. 机械性加粗强调
  15. 内嵌标题项目符号痕迹
  16. 在适合使用句子大小写的地方过度使用标题大小写
  17. 正式内容中使用表情符号装饰
  18. 在应使用直引号的地方使用弯引号
  19. 聊天机器人协作痕迹
  20. 最终文本中遗留的知识截止日期免责声明
  21. 谄媚/讨好的语气
  22. 冗余短语膨胀
  23. 过度含糊其辞
  24. 无实质内容的通用积极结论

Output format

输出格式

Return:
  • rewritten_text
    (string, required): final humanized draft
  • changes
    (array of strings, optional): 3-8 concise bullets on major edits
  • warnings
    (array of strings, optional): unresolved vagueness or missing source details
Example:
json
{
  "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 shape:
json
{
  "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."
}
返回内容:
  • rewritten_text
    (字符串,必填):最终的人性化处理草稿
  • changes
    (字符串数组,可选):3-8条关于主要编辑的简洁要点
  • warnings
    (字符串数组,可选):未解决的模糊点或缺失的来源细节
示例:
json
{
  "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"
  ]
}
错误格式:
json
{
  "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."
}

Rate limits / Best practices

速率限制/最佳实践

  • Use a maximum of 2 rewrite passes (pattern pass + voice pass) to avoid over-editing
  • Keep domain terms and named entities unchanged unless the user asks for simplification
  • Preserve formatting intent (headings, bullets, quote blocks) unless clearly broken
  • If source claims are vague, keep wording conservative and surface a warning instead of inventing specifics
  • Read output aloud mentally: if rhythm sounds robotic, vary sentence length and cadence
  • 最多使用2次改写流程(模式检测+语气调整),避免过度编辑
  • 保留领域术语和命名实体,除非用户要求简化
  • 保留格式意图(标题、项目符号、引用块),除非格式明显损坏
  • 若来源声明模糊,保持措辞保守并给出警告,而非编造细节
  • 默读输出内容:若节奏听起来机械,调整句子长度和节奏

Agent prompt

Agent提示词

text
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.
text
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.

Troubleshooting

故障排除

Rewrite feels too flat
  • Symptom: Text is clean but soulless
  • Fix: Add natural opinion/stance where context allows; vary rhythm and sentence length
Meaning drifted from original
  • Symptom: New version sounds better but changes claims
  • Fix: Re-run with strict requirement: preserve factual claims and scope sentence-by-sentence
Output still sounds AI-generated
  • Symptom: Frequent abstract words and formulaic transitions remain
  • Fix: Run pattern scan first, then rewrite only flagged spans; avoid global synonym swaps
改写内容过于平淡
  • 症状:文本简洁但缺乏生气
  • 解决方法:在上下文允许的情况下加入自然的观点/立场;调整节奏和句子长度
含义偏离原文
  • 症状:新版本听起来更好,但改变了原文声明
  • 解决方法:严格按照“逐句保留事实声明和范围”的要求重新改写
输出仍带有AI生成痕迹
  • 症状:仍频繁出现抽象词汇和刻板过渡
  • 解决方法:先进行模式扫描,仅改写标记的片段;避免全局同义词替换

Validation workflow

验证流程

Use this quick gate before returning output:
  1. Compare original vs rewritten sentence-by-sentence for factual equivalence
  2. Verify no unsupported new specifics were introduced
  3. Check for leftover chatbot artifacts (
    I hope this helps
    ,
    Let me know if
    )
  4. Ensure rhythm variety (not all sentences same length)
  5. Return
    warnings
    for unresolved ambiguities
返回输出前使用以下快速检查步骤:
  1. 逐句比较原文与改写内容的事实一致性
  2. 确认未引入无依据的新细节
  3. 检查是否遗留聊天机器人痕迹(如
    I hope this helps
    Let me know if
  4. 确保节奏多样(并非所有句子长度相同)
  5. 对未解决的歧义返回
    warnings

See also

另请参阅

  • ../web-interface-guidelines-review/SKILL.md — Improve clarity and structure of user-facing copy
  • ../json-and-csv-data-transformation/SKILL.md — Transform and validate large text datasets before rewrite passes
  • ../web-interface-guidelines-review/SKILL.md — 提升用户端文案的清晰度和结构
  • ../json-and-csv-data-transformation/SKILL.md — 在改写前转换和验证大型文本数据集

Reference

参考资料