Skill: abigale-cyber/content-system-humanizer-zh (version 1.0.0)

--- name: humanizer-zh description: Remove obvious AI-writing traces from Chinese text in a constrained way. Use when Codex needs to reduce AI smell without changing facts, data, or the article's core argument. --- # Humanizer ZH This repo-local skill is inspired by `op7418/Humanizer-zh` and `blader/humanizer`, but implemented for the content-system runtime. ## Quick Start ```bash .venv/bin/python -m skill_runtime.cli run-skill humanizer-zh \ --input content-production/drafts/harness-engineering-一人公司-article.md ``` ## What It Does - Detects obvious AI-writing traces in Chinese prose - Applies a surgical rewrite pass on body paragraphs - Preserves facts, numbers, headings, structure, and article intent - Writes a humanized copy plus a JSON report ## Output - `content-production/drafts/<slug>-humanized.md` - `content-production/drafts/<slug>-humanizer-report.json` ## Constraints - Do not invent new facts or sources - Do not flatten strong viewpoints into neutral filler - Do not rewrite headings or titles by default - Do not pretend the text comes from personal experience if it does not

path: README.md
content: # humanizer-zh

`humanizer-zh` 是中文去 AI 味 skill。它不是重写文章，而是在尽量不改事实、结构和观点的前提下，对正文做一轮受约束清洗。

## 这个 skill 能做什么

- 识别中文稿件里的明显 AI 痕迹
- 对正文做“轻手术式”改写
- 保留标题、结构、事实、数字和核心立场
- 输出一份清洗后的稿件
- 输出一份 JSON 报告，说明命中了哪些规则

## 安装

### 基础依赖

```bash
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
```

本 skill 没有额外 CLI 依赖。

## 输入和输出

**输入**

- 任意中文 Markdown 或纯文本
- 常见输入：`content-production/drafts/<slug>-article.md`

**输出**

- `content-production/drafts/<slug>-humanized.md`
- `content-production/drafts/<slug>-humanizer-report.json`

## 使用方法

### 单独运行

```bash
.venv/bin/python -m skill_runtime.cli run-skill humanizer-zh \
  --input content-production/drafts/harness-engineering-一人公司-article.md
```

## 什么时候用

- 主稿已经写完，但你觉得语气太“像 AI”
- 你想保留内容判断，只处理文字表面的机械感
- 你需要一份报告，知道它具体改了哪些地方

## 注意事项

- 它不会替你补事实或新增论据
- 它默认不改标题和章节结构
- 如果主稿本身逻辑有问题，不应把它当成“修文救火工具”

## 相关文件

- [SKILL.md](./SKILL.md)
- [runtime.py](./runtime.py)


path: runtime.py
content: from __future__ import annotations

import re
from pathlib import Path
from typing import Any

from skill_runtime.writing_core import dump_json, humanize_markdown, markdown_title, read_text, write_text


def slug_from_input(path: Path) -> str:
    stem = path.stem
    for suffix in ("-article", "-humanized", "-writing-pack"):
        if stem.endswith(suffix):
            return stem[: -len(suffix)]
    return stem


def run_humanizer_zh(input_path: Path, *, workspace_root: Path) -> dict[str, Any]:
    text = read_text(input_path)
    slug = slug_from_input(input_path)
    drafts_dir = workspace_root / "content-production" / "drafts"
    output_path = drafts_dir / f"{slug}-humanized.md"
    report_path = drafts_dir / f"{slug}-humanizer-report.json"

    result = humanize_markdown(text, mode="surgical")
    write_text(output_path, result["text"])
    dump_json(
        report_path,
        {
            "slug": slug,
            "source_path": str(input_path),
            "output_path": str(output_path),
            "title": markdown_title(text) or re.sub(r"[-_]+", " ", slug),
            "mode": result["mode"],
            "changed_line_count": result["changed_line_count"],
            "ai_trace_risk": result["ai_trace_risk"],
            "pattern_hit_count": result["pattern_hit_count"],
            "pattern_hits": result["pattern_hits"],
            "changes": result["changes"],
        },
    )

    return {
        "slug": slug,
        "output_path": output_path,
        "report_path": report_path,
        "ai_trace_risk": result["ai_trace_risk"],
        "changed_line_count": result["changed_line_count"],
    }


path: skill.json
content: id: humanizer-zh
name: Humanizer ZH
layer: create
executor: humanizer_zh_v1
input_kind: markdown_or_text
output_kind: humanized_markdown
description: Apply a constrained Chinese humanization pass that removes obvious AI-writing traces without changing facts, structure, or core claims.

Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)