한국어 AI 상투 문체를 찾고, 원문의 사실과 목소리를 보존해 다시 쓰는 agent skill.
Slop Sensor는 이번 글에서는, 단순히 A를 넘어 B, ~을 통해 ~할 수 있습니다, 출처 없는 권위, 억지 삼단 구성, 균일한 종결처럼 한국어에서 반복되는 패턴을 문맥과 함께 점검한다. 금지어를 일괄 삭제하지 않고 일반 글, 기술 문서, 학술·법률·보험 문서, 마케팅과 고객 응대의 차이를 적용한다.
Slop Sensor는 AI 작성 탐지기나 표절 판정기가 아니다. 참고문이 있으면 로컬 표면 중복을 비교하지만, 상용 표절 데이터베이스와 법적 판단을 대체하지 않는다.
English README — click to expand
An agent skill that finds formulaic Korean AI prose and rewrites it while preserving the source's facts and voice.
Slop Sensor audits recurring Korean patterns such as canned openings, inflated contrasts, unsupported authority, forced three-part lists, and monotonous sentence endings. It does not blindly delete banned words. Its rules adapt to general, technical, academic, legal, insurance, marketing, and customer-support writing.
Slop Sensor is neither an AI-content detector nor a plagiarism verdict. When a reference text is provided, it can measure local surface overlap, but it does not replace a commercial plagiarism database or legal review.
Directly translating English anti-slop rules into Korean can over-correct omitted subjects, passive constructions, honorifics, and established document conventions. This project instead follows six principles:
- Detect clusters of repeated patterns rather than isolated words.
- Lock facts, numbers, dates, quotations, citations, technical terms, and uncertainty before editing.
- Prefer an author's writing samples over generic style rules.
- Rebuild the order of claims and evidence instead of swapping synonyms sentence by sentence.
- Document counterexamples and register-specific exclusions for every pattern.
- Never present a heuristic score as an AI probability or plagiarism probability.
The installable package is available at dist/slop-sensor.skill. To let Codex discover the skill automatically:
cp -R slop-sensor ~/.codex/skills/Example prompts:
Use $slop-sensor to audit this Korean draft without rewriting it.
Use $slop-sensor to rewrite this report while preserving every number and citation.
Use $slop-sensor to compare this source and draft for local surface overlap.
| Mode | Output |
|---|---|
| Audit | Reports pattern IDs, evidence spans, and priorities without changing the text. |
| Rewrite | Returns a revised draft and a short change summary after an internal audit. |
| Compare | Compares preserved information and surface overlap between two texts. |
| Embedded | Returns only the final prose when another workflow invokes the skill. |
The checker requires Ruby 2.6 or later and uses only the standard library.
ruby slop-sensor/scripts/slop_sensor.rb audit draft.md
ruby slop-sensor/scripts/slop_sensor.rb audit --json draft.md
ruby slop-sensor/scripts/slop_sensor.rb audit --register insurance policy.md
ruby slop-sensor/scripts/slop_sensor.rb overlap source.md candidate.mdSupported registers: general, blog, business, technical, academic, legal, insurance, marketing, and customer-support.
Version 0.2 is measured on 60 hand-written, public synthetic cases. These results do not represent performance on real user documents.
| Metric | Result |
|---|---|
| Positive / negative cases | 36 / 24 |
| Precision | 87.8% |
| Recall | 100.0% |
| F1 | 93.5% |
| False-positive rate on negative cases | 20.8% |
All five false positives are documented in evals/BENCHMARK.md. Run the validation suite with:
ruby scripts/run_evals.rb
ruby scripts/benchmark.rbA pull request that only adds banned words is not enough. A pattern proposal should include:
- At least three public or anonymized positive examples
- At least two natural counterexamples that must be preserved
- Applicable and excluded registers, plus expected false positives
- Before-and-after examples that preserve meaning
- Positive and negative evaluation cases
See CONTRIBUTING.md for the full contribution process.
Project code is released under the MIT License. The taxonomy and editing workflow were informed by hardikpandya/stop-slop, blader/humanizer, and the user-provided demi.skill. Derivative notes and licenses are preserved in THIRD_PARTY_NOTICES.md and third_party/.
영어권 anti-slop 규칙을 한국어에 그대로 옮기면 주어 생략, 피동 표현, 존댓말과 문서 관습을 과도하게 고치기 쉽다. Slop Sensor는 다음 원칙으로 범위를 좁혔다.
- 단일 단어보다 반복되는 패턴 군집을 본다.
- 사실, 숫자, 날짜, 인용, 출처, 전문용어와 불확실성을 잠근다.
- 작성자 샘플이 있으면 일반 규칙보다 샘플을 우선한다.
- 문장별 동의어 치환 대신 주장과 근거의 순서를 다시 구성한다.
- 각 패턴에 반례와 문체별 제외 조건을 둔다.
- 점수를 AI 확률이나 표절 확률로 표현하지 않는다.
설치 가능한 패키지는 dist/slop-sensor.skill에 있다.
Codex가 자동으로 발견하도록 폴더를 복사할 수도 있다.
cp -R slop-sensor ~/.codex/skills/호출 예시:
Use $slop-sensor to audit this Korean draft without rewriting it.
Use $slop-sensor to rewrite this report while preserving every number and citation.
Use $slop-sensor to compare this source and draft for local surface overlap.
한국어로 바로 요청해도 된다.
이 글에서 AI 티가 나는 부분만 근거와 함께 찾아줘.
숫자와 인용은 유지하고 자연스러운 보고서 문체로 고쳐줘.
참고문과 초안을 비교해서 표현 중복을 줄여줘.
Slop Sensor는 네 가지 모드를 제공한다.
| 모드 | 결과 |
|---|---|
| 감사 | 원문을 바꾸지 않고 패턴 ID, 근거 구간과 수정 우선순위를 제시한다. |
| 수정 | 내부 감사를 거친 수정본과 짧은 변경 요약을 제공한다. |
| 비교 | 원문·수정문 또는 참고문·작성문의 보존 정보와 표면 중복을 비교한다. |
| 내장 | 다른 작업에서 호출될 때 최종 문장만 반환한다. |
수정 전:
이번 글에서는 FAQ 자동화 사례를 살펴보겠습니다. 또한 이 시스템을 통해 월 1,200건의 반복 문의를 처리할 수 있습니다. 이는 고객 경험을 혁신한다는 점에서 큰 의미가 있습니다.
수정 후:
FAQ 자동화 시스템은 월 1,200건의 반복 문의를 처리한다. 고객 경험이 달라졌다는 근거는 원문에 없다.
Ruby 2.6 이상과 표준 라이브러리만 사용한다.
문서 감사:
ruby slop-sensor/scripts/slop_sensor.rb audit draft.md
ruby slop-sensor/scripts/slop_sensor.rb audit --json draft.md
ruby slop-sensor/scripts/slop_sensor.rb audit --register insurance policy.md지원하는 문체 이름:
general, blog, business, technical, academic,
legal, insurance, marketing, customer-support
참고문과 수정문의 로컬 표면 중복 비교:
ruby slop-sensor/scripts/slop_sensor.rb overlap source.md candidate.md출력 지표:
token_4gram_candidate_containment: 수정문의 4어절 묶음 중 참고문에도 있는 비율char_12gram_jaccard: 정규화한 12글자 묶음의 자카드 유사도
인용문, 고유명사와 반복되는 전문용어가 많으면 정상적으로 높아질 수 있다.
v0.2는 직접 작성한 공개용 합성 문장 60개로 검사기 동작을 측정한다. 실제 사용자 문서 성능을 대표하지 않는다.
| 지표 | 결과 |
|---|---|
| 양성 / 음성 케이스 | 36 / 24 |
| 정밀도 | 87.8% |
| 재현율 | 100.0% |
| F1 | 93.5% |
| 음성 케이스 오탐률 | 20.8% |
오탐 5건도 숨기지 않고 evals/BENCHMARK.md에 기록했다. 현재 남은 문제는 근거가 붙은 학술 표현, 실제 세 가지 요건, 근거 있는 전망 문장과 작성자의 대시 문체를 정규식만으로 구분하기 어렵다는 점이다.
검증 명령:
ruby scripts/run_evals.rb
ruby scripts/benchmark.rbslop-sensor/
├── SKILL.md
├── agents/openai.yaml
├── references/
│ ├── patterns.yml
│ ├── registers.md
│ ├── rubric.md
│ ├── examples.md
│ └── sources.md
└── scripts/slop_sensor.rb
evals/
├── cases.yml
├── corpus.yml
└── BENCHMARK.md
scripts/
├── run_evals.rb
└── benchmark.rb
새로운 금지어만 추가하는 PR은 받지 않는다. 패턴 제안에는 다음 자료가 필요하다.
- 공개 가능하거나 익명화한 문제 사례 3개 이상
- 자연스럽고 유지해야 하는 반례 2개 이상
- 적용·제외 문체와 예상 오탐
- 의미를 보존한 수정 전후 예시
- 양성·음성 평가 케이스
자세한 기준은 CONTRIBUTING.md에 있다. 패턴 제안용 GitHub Issue 양식과 PR 체크리스트도 포함한다.
- 작성 동의와 익명화 절차를 거친 실제 한국어 문서 평가셋 구축
- 학술 인용, 실제 요건 나열과 작성자 고유 문체를 구분하는 문맥 검사 개선
- 형태소 분석기를 선택적으로 사용하는 확장 검사기 검토
- 블라인드 전후 문장 선호도와 의미 보존 평가 추가
프로젝트 코드는 MIT License로 배포한다. 분류 방식과 편집 절차를 설계할 때 hardikpandya/stop-slop, blader/humanizer을 참고했다. 자세한 파생 관계와 라이선스 고지는 THIRD_PARTY_NOTICES.md와 third_party/에 보존한다.