Clone how a real person thinks while writing — then coach them to write better. Deterministic style-fingerprint machinery (corpus stats, genre profiling, outline gates, pre-publish gate) around any drafting model.

실제 사람이 글을 쓸 때의 사고 과정을 복제하고 — 같은 기계로 그 사람이 글을 더 잘 쓰도록 코칭한다.
“내 문체로 써줘” 류의 프롬프트 대부분은 어휘만 흉내 내다가 어색한 골짜기에 빠집니다. 단어는 비슷한데 생각의 결이 다르기 때문입니다. clone-n-write는 과정을 겨냥합니다 — 저자가 방향을 고르고, 장르별로 개요를 짜고, 자기 발행글에서 차용하며 초고를 쓰고, 스스로 퇴고하는 그 과정을 — 그리고 표면 문체는 마지막에 감이 아니라 코드로 검증합니다.
저자의 발행글 새 초고
│ │
▼ ▼
build_corpus.py ──▶ 코퍼스 + 장르별 type_profiler.py (장르 판별)
│ 통계 (비공개, │
│ gitignore) ▼
│ outline-playbooks.md
│ (산문보다 개요 먼저 — 하드 게이트)
│ │
│ ▼
└──────────▶ quant_scorer.py ◀── 초고 ──▶ rewrite_loop.py
(3축 지문 채점, (황금 앵커 기준)
대역 + 왜 + 코칭) │
▼
gate.py
(발행 전 4축 게이트:
어미 분포 · 차용 인용 ·
원본 출처 · AI 상투어 2단)
같은 중립 원고 1편을 서로 다른 두 저자의 문체로 변환하고, 각 저자의 코퍼스에서 잰 지문 대역(밴드)으로 교차 채점한 결과:
| 저자 A 지문 점수 | 저자 B 지문 점수 | |
|---|---|---|
| 원본 (중립 리포트체) | 65.1 | 53.1 |
| 저자 A 문체 변환 | 89.5 (실글 상위 22%) | 70.0 |
| 저자 B 문체 변환 | 83.5 | 89.4 (실글 상위 17%) |
각 변환본이 목표 저자 지문에서 최고점 + 교차 지문에서 하락 — 판별이 성립합니다. 1차 초안은 "합니다체 54.5% (저자 대역 상한 30%)"로 반려됐고 — AI 특유의 격식 도배였습니다 — 진단문의 코칭대로 고친 v2가 수렴했습니다. 측정 → 반려 → 코칭 → 수렴 루프가 실제로 돕니다.
이후 참고 선학습 블라인드 A/B 판정단(실글 15편 학습 → 클론 글 vs 일반 생성 글, “둘 다 아니다” 허용)으로 합격 시험을 돌렸습니다: 8라운드 수리 루프 끝에 신규 생성 세트 91.8%, 재생성 세트 89.9% · 쌍 다수결 19/20(95%). 사후 수리는 85%대에서 천장을 쳤고, 배운 규칙을 생성에 내장해야 90%를 넘었습니다 — 전 과정 기록은 docs/making-of.md에 있습니다.
위 매트릭스의 실제 산출물 그대로입니다. 원본은 테스트용으로 생성한 중립 원고이고, 아래 두 변환본도 전부 파이프라인 산출물입니다(저자의 실제 발행글·코퍼스는 이 레포에 없습니다).
원본 — 중립 리포트체 (양쪽 지문 65.1 / 53.1점)
AI 도구를 처음 도입하는 사용자는 대체로 세 가지 시행착오를 겪는다. 첫째, 완성된 결과물을 한 번에 얻으려는 기대 때문에 프롬프트를 길고 모호하게 작성하는 경향이 있다. 요구사항이 명확하지 않은 상태에서 도구에 모든 판단을 위임하면 결과물의 품질은 오히려 낮아진다. 둘째, 결과물을 검증하지 않고 그대로 사용하는 문제가 있다. (…) 결국 AI 도구 활용의 성패는 도구의 성능보다 사용자의 운용 방식에 달려 있다.
저자 A 문체 변환 — 89.5점, 실글 상위 22% (문장 단위 사고 전개 · 절제된 격식 · 독자에게 질문)
AI 도구를 처음 쓰는 분들, 넘어지는 지점이 비슷합니다.
첫 번째. 첫 시도에 완성본을 기대하는 것. 프롬프트는 긴데 정작 요구사항이 없는 경우. 내가 뭘 원하는지 정리가 안 된 채로 판단을 통째로 맡기면 결과물은 오히려 나빠져요.
두 번째, 검증 없이 그대로 쓰는 습관. AI는 그럴듯하게 틀린 말을 한다. 중요한 자료일수록 출처 확인이 먼저.
마지막이 제일 아까운 경우. 한 번 실패하고 도구 자체를 접어버리는 것. 도구마다 성격을 파악하는 시간이 필요하고, 작은 일부터 맡겨보면서 범위를 넓히는 쪽이 경험상 가장 빨랐다.
결국 성패는 도구 성능이 아니라 쓰는 사람의 운용 방식. 여러분은 어느 지점에서 멈추셨나요?
저자 B 문체 변환 — 89.4점, 실글 상위 17% (초단문 행갈이 · 후킹 첫줄 · 리스트 · 붙여쓰기 이완)
AI 처음쓰는 사람들 90%가 밟는 지뢰 3개
오늘도 주변에서 봤다1.첫판에 완성본 뽑으려함
프롬프트만 길게씀 요구사항은 없음
그러면 AI가 알아서 해주냐?
안해준다 결과물만 산으로간다2.검증안하고 그대로씀
AI는 그럴듯하게 거짓말한다
중요한자료면 출처확인 무조건해라3.한번 망하고 바로 접음
이게 제일아깝다
도구는 원래 손에 익는시간이 필요함
작은일부터 시켜보면 각이나온다결론
성능차이가 아니라 운용차이다
도구탓 그만하고 작은거부터 돌려보셈
같은 내용이 완전히 다른 두 글이 됐습니다 — 문장 호흡(저자 A 문장당 7.9어절 vs 저자 B 4.2어절), 종결 습관(절제된 격식 혼합 vs 음슴·구종결 64%), 독자를 대하는 방식(질문을 건넴 vs 리스트로 후킹)까지. 이 차이는 전부 각 저자의 코퍼스에서 측정된 대역이고, 변환은 그 대역에 수렴할 때까지 반려·코칭을 반복한 결과입니다.
저자 A 변환의 1차 초안은 게이트에서 이렇게 반려됐습니다(실측 로그):
[어미 분포] 합니다체 54.5% · 이 저자 대역 상한 30% → 반려
왜 : AI가 격식을 흉내 낼 때 나오는 전형적인 "합니다 도배".
이 저자의 실지문은 구 단위로 끊는 명사 종결이 절반 이상이고,
합니다는 절제해서 씁니다
코칭 : 격식 종결의 절반을 명사 종결·구 단위 행갈이로 바꾸세요
이 코칭대로 고친 v2가 위의 89.5점입니다. "감으로 비슷하게"가 아니라 — 측정이 반려하고, 진단이 고칠 방향을 말하고, 재채점이 수렴을 확인합니다.
채점기는 72/100 같은 점수를 내지 않습니다. 저자의 실제 코퍼스에서 측정한 장르별 지문 대역을 읽고, 지표마다 진단문을 냅니다:
[문장 리듬] 당신의 변동계수 0.91 · 이 장르 대역 0.55–0.72
왜 : 이 저자는 중간 길이 호흡으로 씁니다. 길고-짧음이 널뛰면 "AI 목소리"로 읽힙니다
코칭 : 가장 긴 문장 3개를 쪼개세요. 긴 문장은 문단당 1개까지만
[질문 비율] 당신의 0% · 대역 4–11%
왜 : 수사적 질문은 이 저자가 화제를 독자에게 건네는 방식입니다
코칭 : 도입부의 단정 하나를 질문으로 바꿔 보세요
대역 + 왜 + 코칭 — 전부 측정 데이터에서 나오고, 일반적인 "글쓰기 요령"에서 나오지 않습니다.
gate.py의 두 모드 — 목적이 다르면 잣대도 다르다| 모드 | 언제 | 무엇이 다른가 |
|---|---|---|
--mode copy (기본) |
저자 모방 충실도가 목표일 때 — 그 사람 명의로 나갈 글 | 저자의 실제 습관은 일반 작문 규범에 어긋나도 허용. AI 상투어 검사도 "저자 코퍼스에 실제로 없는 표현"만 하드 차단(2단: 코퍼스 0회 = 즉시 반려 / 저자도 쓰는 표현 = 빈도 상한만) |
--mode universal |
보편적으로 좋은 글이 목표일 때 — 명의 없는 일반 원고 | 더 엄격한 일반 규범 적용. 저자 습관 면책이 없음 |
python3 gate.py draft.md # copy 모드 (기본)
python3 gate.py draft.md --mode universal # 보편 윤문 모드
python3 gate.py draft.md --ts 2026-07-03T12:00:00+09:00 # 실행 시각 스탬프
# 산출: draft.md.stylegate.json (pass 여부 + 축별 판정 + 사유)
type_profiler.py의 장르 프로파일같은 저자라도 장르마다 지문이 다릅니다(사색글과 정보글의 어미 분포는 서로 다른 사람 수준으로 갈립니다). 프로파일은 코퍼스에서 장르별로 캘리브레이션하며, 판별은 선언된 라벨이 아니라 어미 분포 최근접(nearest-centroid) 으로 합니다:
python3 type_profiler.py # 데모: 샘플 문장의 장르 판별 + 대역 이탈 진단
rewrite_loop.py의 합성 판정정량(어미·연결·시그니처 3축) + 정성(다중 심사: 독자 시점·페르소나·사실 구조)을 합성해 "다음에 어느 축을 고칠지"를 지시합니다:
python3 rewrite_loop.py # 데모: 합성 점수 + 다음 퇴고 가이드
| 파일 | 역할 |
|---|---|
skill/SKILL.md |
8단계 집필 파이프라인 정본 (장르 판별 → 개요 → 개요 승인 게이트 → 차용 초고 → 4렌즈 리뷰 → 정량 패스 → 최종 게이트) |
skill/outline-playbooks.md |
장르별 개요 템플릿 + “산문보다 개요 먼저” 하드 게이트 + 4렌즈(구조/독자/회의론자/목소리) 리뷰 |
skill/gate.py |
발행 전 4축 게이트 — 어미 분포 가드 · 차용 인용 확인 · 원본 출처(저자 발행본 유래) · AI 상투어 2단 검출 |
skill/build_corpus.py |
저자 발행글 → 코퍼스 + 장르별 통계 증류 (소스는 각자 지정, 코퍼스는 비공개 유지) |
skill/type_profiler.py |
어미 분포 기반 장르 판별 (표준 라이브러리만, 형태소 분석기 불요) |
skill/quant_scorer.py · rewrite_loop.py |
정량 3축 채점 + 황금 앵커 기준 퇴고 루프 |
skill/band_scorer.py |
코퍼스 대역 지문 채점기 — raw 점수 + 저자 실글 분포 백분위 + 실글 p25 캘리브레이션 컷 + 과잉 전형성 경고 + 표본 부족 시 판정 거부 |
skill/connective_lib.py |
연결 조직 패턴(예고·회수·수미상관) + 합성 예문 |
skill/check_endings.py · humanize_whitelist.py · check_corpus_phrases.py |
보조 가드: 어미 카운터 · 윤문 시 시그니처 보호 · 연어 기반 봇 말투 검출 |
skill/multibot_judge.py |
다중 심사 프롬프트 빌더 (사실검증 / 독자 시점 / 문체 역할) |
skill/test_*.py |
실행 가능한 스펙 9종 |
전부 Python 표준 라이브러리입니다. 도구 자체는 API를 호출하지 않습니다 — 초고를 쓰는 모델이 무엇이든, 그 둘레의 결정론적 검증 층입니다.
cd skill
for t in test_*.py; do python3 "$t"; done # 9종 전부 green
build_corpus.py를 저자의 발행글(AI 초안 ❌)에 연결해 실행 → corpus/ 생성(이 레포에선 gitignore).type_profiler.PROFILESBOT_AUTHOR_HINTS·AUTHOR_NAME_HINTS·PERSONA_VAULT_ROOTquant_scorer.py+check_endings.py — 대역 대비 진단) → 8. 최종 게이트(gate.py).python3 gate.py my-draft.md --mode copy
cat my-draft.md.stylegate.json # pass: true 여야 발행
# 밴드 구축 (저자 실글 점수 분포까지 캘리브레이션 — 1회)
python3 band_scorer.py build corpus.jsonl author-band.json
# 초고 채점
python3 band_scorer.py score my-draft.txt author-band.json
# → raw 점수 + percentile_vs_author("실글 대비 상위 몇 %") + pass_hint(실글 p25 컷) + over_typical(실글 p90 초과 = 과잉 전형성 경고)
같은 기계를 서로 다른 두 저자 코퍼스(530편/209편)에 적용해 5축으로 공격한 결과를 그대로 적습니다:
band_scorer는 백분위·실글 캘리브레이션 컷·과잉 전형성 경고로 보고합니다 — 점수 하나만 뽑아 쓰지 마세요.multibot_judge)와의 합성 없이 단독 합격 판정에 쓰면 뚫립니다 — 모든 채점 출력에 이 경고가 박혀 있는 이유.insufficient_sample을 반환합니다.build_corpus.py의 위생 게이트(반복 보일러플레이트 줄 검출 + 근사 중복 드롭)가 이 사례에서 나왔고, 새 코퍼스를 물릴 때 빌드 로그의 ⚠️ 위생 경고를 반드시 확인하세요.영문 요약과 원문 문서는 README.en.md에 있습니다.
MIT