[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-784":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":14,"starSnapshotCount":14,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},784,"im-not-ai","epoko77-ai\u002Fim-not-ai","epoko77-ai","AI가 쓴 글이 아닌 것처럼 윤문해주는 스킬",null,"Python",2656,261,6,0,734,964,1575,2202,29.25,"MIT License",false,"main",true,[],"2026-06-12 02:00:18","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fsocial-preview.png\" alt=\"im-not-ai — 한글 AI 티 제거기\" width=\"820\">\n\u003C\u002Fp>\n\n# Humanize KR — 한글 AI 티 제거기 v1.6.1\n\nAI(ChatGPT · Claude · Gemini 등)가 쓴 한글 글을 **내용은 한 글자도 건드리지 않고** 문체 · 리듬 · 표현만 자연스러운 한국어로 되돌리는 Claude Code 스킬입니다. \n\n번역투, 과도한 영어 인용, 기계적 병렬 (\"첫째 · 둘째 · 셋째\"), \"결론적으로 \u002F 시사하는 바가 크다\" 같은 AI 특유 관용구, 피동태 남용, 문두 접속사 남발, 이모지·불릿 남용 등 **10대 카테고리 × 40+ 서브 패턴**을 심각도(S1\u002FS2\u002FS3)로 분류해 스팬 단위로 탐지한 뒤, 윤문합니다. \n\n## 왜 한글 특화인가\n\n영어권 humanizer(QuillBot · Hix · Undetectable AI)는 한국어에 약합니다. 한글 AI 글의 티는 대부분 **영어 번역투**에서 나옵니다. \n\n- \"AI 기술을 **통해** 효율을 높**일 수 있다**\" → \"AI로 효율을 높인다\"\n- \"이에 **있어서** 중요한 **점은**\" → \"여기서 중요한 건\"\n- \"~**에 의해** 생성된\" → \"~가 만든\"\n- \"**결론적으로**, 이는 **시사하는 바가 크다**\" → (삭제)\n\n이 하네스는 그 한글 고유 패턴을 SSOT로 정리하고, 탐지·윤문·내용 감사·자연스러움 검증을 분리된 에이전트로 수행합니다.\n\n## 4대 철칙\n\n1. **의미 불변** — 사실 · 주장 · 수치 · 고유명사 · 직접 인용은 100% 원문 보존.\n2. **근거 기반** — 탐지된 span에만 수술적 수정. 탐지 없는 구간은 건드리지 않음.\n3. **장르 유지** — 칼럼을 문학으로, 리포트를 에세이로 옮기지 않음.\n4. **과윤문 금지** — 변경률 30% 초과 시 경고, 50% 초과 시 강제 중단.\n\n## 아키텍처 (v1.6)\n\n**Fast 모드 (디폴트, 5,000자 이하)**\n\n```\n입력 텍스트\n    ↓\n[humanize-monolith]   ── 한 콜 안에서 탐지 → 윤문 → 자체검증 일괄\n    ↓                     (도구 호출 4~5회 캡, opus, ~3분)\nfinal.md + summary.md\n```\n\n**Strict 모드 (`--strict` 또는 8,000자+ 자동 승급)**\n\n```\n입력 텍스트\n    ↓\n[ai-tell-detector]        ── 탐지 (span · category · severity)\n    ↓\n[korean-style-rewriter]   ── finding 기반 수술적 윤문\n    ↓\n[병렬 검증 팀]\n    ├─ [content-fidelity-auditor]  ── 13항 체크리스트로 의미 동등성 감사\n    └─ [naturalness-reviewer]      ── 탐지 재실행으로 잔존·과윤문 판정\n    ↓\n[오케스트레이터 종합]\n    ├─ accept              → final.md + summary.md\n    ├─ rewrite_round_2     → 2차 윤문 (최대 3회)\n    ├─ rollback_and_rewrite → 문제 edit 롤백\n    └─ hold_and_report     → 사람 검토 권고\n```\n\n## 7인 에이전트\n\n| 에이전트 | 모드 | 역할 |\n|---------|---|------|\n| `humanize-monolith` | **Fast 디폴트** | 단일 호출 윤문 (탐지·윤문·자체검증 일괄, 도구 호출 4~5회 캡) |\n| `ai-tell-detector` | Strict | span 단위 JSON 탐지 리포트 생성 |\n| `korean-style-rewriter` | Strict | finding 기반 수술적 윤문, 변경률 모니터링 |\n| `content-fidelity-auditor` | Strict | 의미 동등성 감사 (13항), 훼손 시 롤백 지시 |\n| `naturalness-reviewer` | Strict | 잔존 AI 티 · 과윤문 · 자연도 판정, 품질 등급 A~D |\n| `korean-ai-tell-taxonomist` | 별도 명령 | 분류 체계(SSOT) 관리, 신규 패턴 심사 승격 |\n| `humanize-web-architect` | 옵션 | Next.js 15 + Vercel 웹 서비스 확장 설계 |\n\n## AI 티 분류 체계 (요약)\n\n| ID | 대분류 | 대표 서브 패턴 |\n|----|-------|---------------|\n| A | 번역투 | \"~를 통해\", \"~에 대해\", \"~에 있어서\", 이중 피동 \"~되어진다\", \"가지고 있다\" |\n| B | 영어 인용·용어 과다 | 과도한 괄호 병기, 번역 가능한 영어 그대로 |\n| C | 구조적 AI 패턴 | 기계적 \"첫째\u002F둘째\u002F셋째\", 과도한 불릿·헤딩·이모지 |\n| D | AI 특유 관용구 | \"결론적으로\", \"시사하는 바가 크다\", \"주목할 만하다\", \"혁신적인\" |\n| E | 리듬 균일성 | 문장 길이 표준편차 낮음, 동일 종결어미 반복 |\n| F | 수식·중복 | \"매우\", \"정말\", 동의어 이중 수식, \"~적\u002F~성\u002F~화\" 남발 |\n| G | Hedging 남용 | \"~할 수 있을 것으로 보인다\" 다중 완곡 |\n| H | 접속사 남발 | 문두 \"또한\u002F따라서\u002F즉\u002F나아가\" 연속 |\n| I | 형식명사 과다 | \"것이다\", \"점\", \"수\", \"바\", \"~할 필요가 있다\" |\n| J | 시각 장식 남용 | 과도한 **볼드**, \"따옴표\", 대시(—) 남발 |\n\n전체 40+ 서브 패턴과 처방: [`ai-tell-taxonomy.md`](.claude\u002Fskills\u002Fhumanize-korean\u002Freferences\u002Fai-tell-taxonomy.md) · [`rewriting-playbook.md`](.claude\u002Fskills\u002Fhumanize-korean\u002Freferences\u002Frewriting-playbook.md)\n\n## 심각도 & 품질 등급\n\n**심각도**\n- **S1 결정적**: 한 번만 나와도 AI 확신. 무조건 제거.\n- **S2 강함**: 1~2회 허용, 3회+ 반복 시 제거.\n- **S3 약함**: 다른 패턴과 중첩될 때만 문제.\n\n**품질 등급 (윤문 후)**\n- **A**: S1 0건, S2 ≤2건, 점수 개선 70%+\n- **B**: S1 0건, S2 ≤4건, 개선 50%+\n- **C**: S1 1~2건 or 과윤문 시그널 2개 → 2차 윤문\n- **D**: S1 3건+ or 심각한 과윤문 → 사람 검토\n\n## 사용법 — 5분이면 따라합니다\n\n### 0. 전제\n\n[Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code)가 설치돼 있어야 합니다. Mac · Windows · Linux 모두 지원합니다.\n\n설치 확인:\n```bash\nclaude --version\n```\n\n> Claude Code는 터미널에서 Claude(Anthropic의 AI)와 대화하며 파일을 같이 편집하는 CLI입니다. 이 리포의 스킬·에이전트는 Claude Code에서만 작동합니다. (웹 버전 Claude.ai나 일반 ChatGPT에서는 안 됩니다.)\n\n### 1. 리포 받기\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fepoko77-ai\u002Fim-not-ai.git\ncd im-not-ai\n```\n\n### 2. 이 폴더 안에서 Claude Code 켜기\n\n```bash\nclaude\n```\n\n> **중요:** 꼭 `im-not-ai` 폴더 **안에서** 실행하세요. 다른 위치에서 켜면 이 리포의 스킬이 로드되지 않아 일반 Claude Code처럼 동작합니다.\n\n### 3. AI가 쓴 한글 글 붙여넣고 부탁하기\n\nClaude Code에서는 세 가지 방법 중 편한 쪽으로 사용합니다. Codex 사용자는 아래 **방법 D**의 community port를 참고하세요.\n\n**방법 A — 자연어 한 문장 (가장 쉬움)**\n\n평소 말투 그대로 쓰면 됩니다:\n\n```\n이 AI 글 자연스럽게 윤문해줘:\n\n[ChatGPT \u002F Claude \u002F Gemini 초안 여기에 붙여넣기]\n```\n\n아래 표현 중 아무거나 쓰면 스킬이 자동 발동합니다:\n- \"AI 티 없애줘\"\n- \"GPT 문체 제거해줘\"\n- \"사람이 쓴 것처럼 윤문해줘\"\n- \"번역투 제거\"\n- \"한글 AI 윤문\"\n\n**방법 B — 슬래시 커맨드** *(v1.2~)*\n\n```\n\u002Fhumanize [윤문할 텍스트 또는 파일 경로]\n```\n\n옵션을 인자 끝에 자연어로 적을 수 있습니다: `장르: 칼럼`, `강도: 적극`, `최소심각도: S1`. 결과가 마음에 안 들면 `\u002Fhumanize-redo \"번역투만 다시\"` 같은 식으로 재실행. 두 커맨드 정의: [`commands\u002F`](.claude\u002Fcommands\u002F)\n\n**방법 C — Plugin \u002F 자동 설치기** *(@gaebalai 포크)*\n\n[`gaebalai\u002Fim-not-ai`](https:\u002F\u002Fgithub.com\u002Fgaebalai\u002Fim-not-ai) 포크가 Claude Code Plugin\u002FMarketplace 규격으로 패키징되어 있습니다. `\u002Fplugin install humanize-korean@epoko77-ai-plugins` 또는 `.\u002Fscripts\u002Finstall.sh --target ~\u002Fmy-project` 한 줄로 설치 가능합니다. 본체 정식 Plugin 지원은 v1.6 검토 중입니다 ([Issue 추적 예정](https:\u002F\u002Fgithub.com\u002Fepoko77-ai\u002Fim-not-ai\u002Fissues)).\n\n**방법 D — Codex Plugin (community)**\n\n[`Squirbie\u002Fim-not-ai-codex`](https:\u002F\u002Fgithub.com\u002FSquirbie\u002Fim-not-ai-codex)에서 Codex Desktop\u002FCLI용 community plugin 포트를 제공합니다. 원본 taxonomy\u002Fplaybook을 유지하고 Codex plugin\u002Fskill 구조에 맞게 어댑터화한 별도 배포판이며, 공식 Claude Code 버전과 분리되어 관리됩니다.\n\n설치:\n\n```bash\ncodex plugin marketplace add Squirbie\u002Fim-not-ai-codex\n```\n\n**방법 E — Web UI (비공식)**\n\nopencode 로 윤문하는 커뮤니티 제작 포트입니다.\n- 접속: [im-not-ai-ocx.illuwa.click](https:\u002F\u002Fim-not-ai-ocx.illuwa.click\u002F)\n\n### 4. 결과 확인\n\nClaude Code가 입력 길이·옵션에 따라 두 모드 중 하나로 처리합니다.\n\n**Fast 모드 (디폴트, 5,000자 이하 · ~3분)** — `humanize-monolith` 한 콜이 메모리 안에서 탐지·윤문·자체검증을 모두 끝냅니다. 산출물은 `_workspace\u002F{실행날짜-번호}\u002F`에 두 파일:\n\n| 파일 | 내용 |\n|------|------|\n| `01_input.txt` | 원문 그대로 |\n| `final.md` | 윤문본 + 본문 끝 `\u003C!-- HUMANIZE-SUMMARY -->` 주석 블록(메트릭·카테고리 탐지 before\u002Fafter·자체검증 6항·등급·주요 변경 하이라이트). HTML 주석이라 마크다운 뷰어·웹 게시·복사 시 본문에만 노출 |\n\n**Strict 모드 (`--strict` 또는 8,000자+ 자동 승급 · 더 정밀)** — 5인 파이프라인이 단계별 산출물을 분리해 저장합니다:\n\n| 파일 | 내용 |\n|------|------|\n| `01_input.txt` | 원문 그대로 |\n| `02_detection.json` | AI 티 탐지 리포트 (위치·종류·심각도) |\n| `03_rewrite.md` | 윤문본 |\n| `04_fidelity_audit.json` | 내용 훼손 감사 결과 |\n| `05_naturalness_review.json` | 자연도 재측정 결과 |\n| `final.md` + `summary.md` | 최종 윤문본 + 점수·주요 변경·등급 요약 |\n\n부분 재실행(\"이 카테고리만 다시\"·\"2차 윤문\")은 strict 모드로 자동 전환됩니다.\n\n### 5. 결과가 맘에 안 들면\n\n그대로 말씀하시면 됩니다. 재실행·수정 명령을 따로 외울 필요 없습니다:\n\n- **\"이 문단만 다시 윤문해줘\"** — 해당 구간만 재시도\n- **\"번역투만 더 손봐줘\"** (또는 \"관용구만 다시\") — 특정 카테고리만 재처리\n- **\"윤문 강도 낮춰줘\"** — 보수적 윤문 (결정적 패턴만 제거)\n- **\"원문 톤을 더 살려줘\"** — 변경률 상한을 낮춰 원문 유지\n- **\"2차 윤문해줘\"** — 현재 결과를 한 번 더 다듬기\n\n### 6. 다른 글로 또 돌리고 싶을 때\n\nClaude Code 세션 안에서 새 글을 붙여넣고 똑같이 부탁하면 됩니다. 실행마다 새 `_workspace\u002F{날짜-번호}\u002F` 폴더가 만들어져 이전 결과와 섞이지 않습니다.\n\n## Do-NOT List (탐지·윤문 대상 제외)\n\n- 수치 · 단위 · 날짜\n- 고유명사 · 인명 · 제품명 · 모델명\n- 큰따옴표 내부 직접 인용\n- 법률 · 규정 조문\n- 학술 개념어 (불가피한 경우)\n\n## 웹 서비스 확장 (옵션)\n\n`humanize-web-architect` 에이전트가 Next.js 15 App Router + Vercel Fluid Compute + AI Gateway 기반 웹앱 설계를 담당한다. UX는 4화면(입력 → 탐지 하이라이트 → 좌우 diff → 윤문본 복사). 상세: [`web-service-spec.md`](.claude\u002Fskills\u002Fhumanize-korean\u002Freferences\u002Fweb-service-spec.md).\n\n로드맵: v0 MVP(익명·단일 호출) → v1(로그인·히스토리) → v2(Pro\u002FTeam · API · 웹훅) → v3(Chrome Extension) → v4(일본어·중국어 확장).\n\n## v1.6 — KatFish·LREAD 외부 연구 통합 + 정량 점수 레이어 (2026-05-07)\n\nv1.5 fast path가 사람 판정 등급 A를 통과해도 **연결어미 뒤 쉼표(C-11)** 같은 한국어 특이 신호를 일관되게 못 잡는 잔존 약점이 있음을 정량으로 확인했습니다. 외부 연구 KatFish(Park et al., 2,094편 코퍼스)와 LREAD(인간 판독 60% → 루브릭 90%)를 검토한 결과, 한국어에서 가장 강한 단일 분리도 신호가 **연결어미 뒤 쉼표 4.84배**(에세이)였습니다.\n\nv1.6은 monolith·5인 에이전트 정의를 무수정한 채 **본진 분류 체계 + 룰북 + 외부 정량 점수 레이어**만 보강한 설계입니다.\n\n**핵심 변경**\n\n- **본진 분류 체계 v1.5.1 → v1.6** — 신규 5건(`C-11` 연결어미 뒤 쉼표 [S1] · `C-12` 쉼표 포함률 [S2] · `E-5` 쉼표 분절 평균 길이 [S2] · `E-6` 쉼표 전후 POS 다양성 [S2, 에세이·뉴스 한정] · `G-3` 안전 균형 lexicon [S2]) + 보강 2건(`D-1` 결산 lexicon 4종 정식 인용 \u002F `F-4` 한자어 명사화 -성·-적·-화 명시)\n- **`quick-rules.md` 보강** — C-11·G-3·F-4·D-1 lexicon 4건을 monolith 슬림 룰북에 박아 윤문 단계에서 직접 처방. 123줄 → 126줄 (+3, +200 토큰)\n- **`metrics.py` 신설** — KatFish baseline 기반 8개 정량 지표(쉼표 포함률·연결어미 쉼표·분절 길이·POS 다양성·결산 lexicon·균형 lexicon·한자어 밀도·어휘 다양성) 표준 라이브러리만으로 계산. z-score + risk_band(low\u002Fmedium\u002Fhigh) 출력\n- **`prepare_monolith_input.py` 신설** — monolith 호출 *전* 외부 사전처리로 점수 산출, 결합 입력 파일에 prepend. **monolith 도구 호출 4회 캡 그대로 보존**(v1.5 1번 철칙)\n- **5인 strict 파이프라인 그대로 유지** — voice profile·candidate pool 재도입 없음\n\n**검증 결과 (run 003~007 5편 일괄, 같은 입력에 v1.5 vs v1.6 두 번 윤문)**\n\n| 지표 | v1.5 | v1.6 | 개선 |\n|---|---|---|---|\n| ending_comma 평균 z | +3.40 | +0.67 | −2.73 (인간 baseline 근접) |\n| risk_band low 도달 | 0\u002F5 | 3\u002F5 | +3 |\n| input 대비 risk_score 감소 | 2\u002F5 | 4\u002F5 | +2 |\n| 등급 A 유지 | 5\u002F5 | 5\u002F5 | 회귀 없음 |\n| 도구 호출 4회 캡 | 5\u002F5 | 5\u002F5 | 보존 |\n\n가장 심한 케이스(run 006 교육 블로그)는 ending_comma_rate 0.500 → 0.120(76% 감소), z=+5.84 → +1.00로 정상 구간에 들어왔습니다. v1.5 회귀에서 5편 중 4편이 *악화*했던 자리에서 v1.6은 5편 전수 개선했습니다.\n\n**한계 — 다음 회차 과제**\n\n- baseline의 lexical_diversity·hanja placeholder는 KatFish 미공개 셀로 보수적 추정값. 한국어 essay 실측 교정 필요\n- 정책·공적 문서(run 007)는 ending_comma z=+2.47 잔존. 장르별 baseline 별도 카탈로그 필요\n- 일부 케이스에서 char_count 증가(쉼표 제거 부작용으로 분절 길이 증가). 룰북에 분절 재조정 가이드 추가 검토\n\n상세 산출물: `_workspace\u002Fv1.6-2026-05-06\u002F01_pattern_candidates.md` · `02_katfish_baseline.json`(`references\u002Fbaseline.json`로 정식 배치) · `03_taxonomy_diff.md` · `04_input_shim_spec.md` · `05_regression_report.md`.\n\n### v1.6.1 hotfix — final.md 통합 산출물 (2026-05-07)\n\nv1.6 5편 일괄 검증 중 sub-agent가 **두 번째 Write를 자체 보수 룰로 회피**하는 패턴이 5\u002F5 재현됨을 확인했습니다(권한 차단 아닌 self-imposed). v1.5 시점에도 같은 현상이 있었고, summary 메타가 응답 인라인으로 전달되어 디스크 산출물에서 누락되는 회귀 위험이 있었습니다.\n\n해결 — **monolith 산출물을 final.md 1개로 통합**:\n\n- final.md 본문 끝에 `\u003C!-- HUMANIZE-SUMMARY ... -->` HTML 주석 블록 1개로 메트릭·카테고리 탐지·자체검증·등급·하이라이트·잔존 finding을 함께 박아 단일 Write로 끝\n- HTML 주석이라 마크다운 뷰어·웹 게시·복사 시 본문에만 노출. 메타 추출은 `grep -A 30 \"HUMANIZE-SUMMARY\"` 또는 간단한 파서로\n- monolith 도구 호출 캡 4회 → **3회**로 자연 절감 (Read 입력 + Read 룰북 + Write final). v1.4 함정 회피 마진 확대\n- `summary.md`(v1.6.0 이전 산출물 또는 외부 도구 산출물)는 그대로 보존, 삭제·갱신 금지\n\n본 변경은 monolith 정의 파일만 수술하고, 5인 strict 파이프라인·`metrics.py`·`prepare_monolith_input.py`·분류 체계는 모두 무수정.\n\n---\n\n## v1.5 — v1.1 베이스라인 + Monolith Fast Path (2026-04-26)\n\nv1.2(voice profile)·v1.3(candidate pool)·v1.4(역할별 모델 분산)이 모두 핫패스 비용을 잡지 못했음이 검증으로 확인됐습니다. 5,000자 입력 윤문 wall-clock이 **25분**까지 늘어났고, v1.4의 모델 다운그레이드로도 detector 1콜이 **8분**이었습니다. 진단 결과 진범은 모델이 아니라 **에이전트 간 컨텍스트 재로드 + 에이전트 내부 도구 호출 chain 누적**이었습니다.\n\nv1.5는 v1.2~v1.4를 모두 폐기하고 **v1.1 단순 구조로 롤백한 뒤 단일 호출 monolith fast path만 추가**한 설계입니다.\n\n**핵심 변경**\n\n- **v1.2~v1.4 폐기 (롤백)** — 5인 에이전트 정의를 v1.1 commit `f25ee64` 시점으로 복원, voice profile·candidate pool 관련 reference 4개 파일 삭제, 권한 위계 §1~§6 절 제거\n- **Monolith Fast Path 신설 (디폴트)** — `humanize-monolith` 에이전트(opus): 한 콜 안에서 탐지·윤문·자체검증 일괄 처리, 도구 호출 4~5회 캡(Read 입력 + Read 룰북 + Write final + Write summary), 5,000자 이하 wall-clock 2~3분 목표\n- **`quick-rules.md` 신설 (~150줄)** — 본진 386줄에서 S1·S2 핵심 패턴만 추린 슬림 룰북. monolith 전용. 자체검증 6항 + 등급 기준 포함\n- **Strict 모드 보존** — v1.1 5인 파이프라인을 `--strict` 또는 8,000자+ 자동 승급으로 그대로 유지. 부분 재실행(\"이 카테고리만 다시\"·\"2차 윤문\")도 strict 자동 전환\n- **분류 체계 본진 보존** — `ai-tell-taxonomy.md`의 v1.2~v1.3.1 발굴 신규 패턴(C-9·C-10·D-7·H-3·I-3·I-4 보강 등) 모두 그대로 유지\n\n**검증 결과 (같은 칼럼 2,604자)**\n\n| 항목 | v1.4 (detector haiku 1콜) | v1.5 (monolith opus 1콜) |\n|---|---|---|\n| Wall-clock | 7분 58초 | **3분 28초** |\n| 도구 호출 | 12회 | **4회** |\n| 토큰 | 113,621 | 68,045 |\n| 윤문 등급 | (단계 1만 끝, 미완) | **A (자체검증 6\u002F6, 변경률 22%)** |\n\n5인 파이프라인 25분 → monolith 3.5분, 약 86% 단축. opus로 격상하고도 도구 호출 chain을 압축한 게 결정적이었습니다.\n\n**호환성 안내**\n\n- v1.3.1 사용자: `author-context.yaml`(voice profile)이 더 이상 작동하지 않습니다. 메인테이너 측 실전 사용 사례가 미확보였고, 필요 시 v1.6에서 monolith 옵션으로 재도입을 검토합니다.\n- 슬래시 커맨드 `\u002Fhumanize`·`\u002Fhumanize-redo`는 그대로. 내부에서 v1.5 fast\u002Fstrict 분기 자동.\n\n**회고**\n\nv1.4 작업은 모델 다운그레이드를 진단의 1순위로 잡았으나, 실측이 그 가설을 부쉈습니다. opus로 격상하고도 도구 호출 chain을 압축하니 더 빨라졌어요 — 모델보다 **에이전트 내부 도구 호출 횟수**가 wall-clock의 진짜 변수였습니다. 이 교훈이 v1.6 이후 설계의 1번 원칙입니다.\n\n**본질 테스트 — 5편 다양성 검증 (2026-04-26)**\n\nv1.5 발행 직후, 메인테이너가 원래 계획했던 본질 테스트(원본 AI 글이 사람 글로 진짜 변하나)를 5편으로 진행했습니다. 회차 1 합성 제조업 칼럼 1편 + 회차 3 Gemini 직접 호출 4편(핀테크 칼럼·제조 리포트·교육 블로그·헬스케어 정책)으로 모델·장르·길이 다양성을 확보.\n\n| run | 입력 | 길이 | 변경률 | 등급 |\n|---|---|---|---|---|\n| 003 | 합성 제조 칼럼 | 716자 | 14% | **A** |\n| 004 | Gemini 핀테크 칼럼 | 2,725자 | 18% | **A** |\n| 005 | Gemini 제조 리포트 | 2,572자 | 18% | **A** |\n| 006 | Gemini 교육 블로그 | 2,445자 | 22% | **A** |\n| 007 | Gemini 헬스케어 정책 | 2,316자 | 18% | **A** |\n\n**5편 모두 등급 A · 자체검증 6\u002F6 통과 · 변경률 안전 구간(10~25%).** Gemini 시그니처(C-10 콜론 헤딩 · D-7 변환 공식 · D-4 hype 어휘 · J-2 따옴표 강조 · J-1 마크다운 ** 강조 · G-1 미래 단정 · I-4 권고형 결말)가 4개 장르 모두에서 일관되게 제거됐고, 고유명사·수치·인용은 100% 보존됐습니다.\n\n**가속 효과 누적**: v1.3.1로 5편 직렬 처리 추정 약 125분 → v1.5 monolith 병렬 약 7분(병렬 효과 포함). **94% 단축, 17~18배 가속.** 메모리에 가설로 박아둔 \"wall-clock 1\u002F7로 줄어 7배 샘플 처리 가능\"이 실측에서 18배로 확인됐습니다.\n\n관련 PR: [#13](https:\u002F\u002Fgithub.com\u002Fepoko77-ai\u002Fim-not-ai\u002Fpull\u002F13) · 태그: [`v1.5.0`](https:\u002F\u002Fgithub.com\u002Fepoko77-ai\u002Fim-not-ai\u002Freleases\u002Ftag\u002Fv1.5.0)\n\n## v1.3.1 hotfix — 회차 3 Gemini 직접 호출 검증 + 본진 신규 2건·보강 3건 (2026-04-25)\n\nv1.3 발행 직후, 사용자께서 직접 Gemini API 키를 제공해 회차 3 진짜 외부 데이터 검증을 진행했습니다. Gemini Pro 2.5 직접 호출 4편(약 10,058자, 자연 prompt만 사용)에서 본진 신규 2건과 보강 3건을 추가로 영구 반영하고, 회차 2 hold 후보의 모델 분산 검증을 마쳤습니다.\n\n**본진 신규 2건 (Gemini-우세 시그니처)**\n\n- **C-10 콜론 부제 헤딩 공식** \"X: Y\" 또는 \"X: A에서 B로\" — Gemini가 헤딩에 거의 자동으로 콜론을 사용하는 시그니처 (8회·3파일·3도메인 분산)\n- **D-7 변환 공식** \"X에서 Y로 \u002F X을 넘어 Y로\" — 패러다임 전환·진화·고도화를 표현할 때 자동 등장 (7회·2파일·2도메인)\n\n**본진 보강 3건**\n\n- **D-4 hype 어휘 셋 확장** — 본진 \"혁신적·획기적·전례 없는\"에 Gemini 어휘 추가: \"압도적·막강한·폭발적·파격적·대대적·강력한·치열한·뜨거운\"\n- **J-2 빈도 임계 명시** — 한 문서에 따옴표 강조 어휘 5회 초과 시 S2 강화 (Gemini 한 문서 17~33회 사례)\n- **I-4 권고형 결말 변종 추가** — 본진 \"~할 필요가 있다\"에 정책·보고서 결말 \"~해야 한다·~해야 합니다\" 변종 추가, 한 문서 5회 초과 임계\n\n**회차 2 hold 후보 검증 결과 — GPT vs Gemini 모델 시그니처 차이**\n\n| 회차 2 hold 후보 | GPT 빈도 | Gemini 빈도 | 결론 |\n|---|---|---|---|\n| \"결국\" 문두 단언 | 9+ | 1 | **GPT-우세 시그니처** |\n| \"X은 A가 아니라 B다\" 부정-긍정 대구 | 7+ | 2 | **GPT-우세 시그니처** |\n| 5~8개 영역 콤마 빠른 나열 | 4 | 0 | **GPT-특유 가능성 매우 강함** |\n\n회차 2 hold 후보 3건이 Gemini에서 거의 재현되지 않았다는 사실은 **분류 체계에 \"모델 우세 분포\" 메타데이터 차원 도입 필요성**을 시사합니다(v1.4 검토 사항). 회차 4에서 국내 모델·Claude 데이터로 모델 분포를 확정한 뒤 결정합니다.\n\n**회차 1·2·3 누적 결과 — v1.2 신규 0건이 v1.3.1에서 신규 3·보강 6건으로**\n\n| 회차 | 데이터 | 본진 신규 | 본진 보강 | 누적 효과 |\n|------|--------|----------|----------|----------|\n| 1 | Claude 합성 샘플 2건 | C-9 (1) | I-2 (1) | 인프라 검증 |\n| 2 | 뉴스핌 외부 GPT 2건 | 0 | I-3·H-3 (2) | Gate 1.3 보호장치 검증 |\n| 3 | Gemini 직접 호출 4건 | C-10·D-7 (2) | D-4·J-2·I-4 (3) | 모델 분산 확보 + GPT\u002FGemini 차이 발견 |\n| **합계** | 8건 (3 모델 × 다양 장르) | **3건** | **6건** | v1.2 멈춤 → v1.3.1 풍부 |\n\n전체 v1.3.1 변경 이력: [`ai-tell-taxonomy.md` 버전 관리](.claude\u002Fskills\u002Fhumanize-korean\u002Freferences\u002Fai-tell-taxonomy.md#버전-관리)\n\n## v1.3 — 서브 패턴 발굴 운영 체계 + 본진 신규 1건·보강 3건 (2026-04-25)\n\n**에이전트들이 실전에서 만난 미분류 의심 패턴을 단일 풀에 누적·점검·승격하는 운영 인프라**를 도입하고, 발행 전 두 회차의 파일럿(회차 1 합성 샘플 인프라 검증 + 회차 2 외부 매체 진짜 GPT 출력 분석)에서 본진 신규 1건(`C-9` 숫자 괄호 인덱싱) + 본진 보강 3건(`I-2` 결합형 · `I-3` 결말 변종 · `H-3` 메타 진입 변종)을 영구 반영하고 hold 4건을 풀에 누적했습니다. v1.1까지는 패턴 추가가 사람의 1회성 결정이었고, v1.2에서는 voice profile 권한 위계가 들어왔다면, v1.3은 **분류 체계 자체가 시간을 따라 자라나는 구조**를 만듭니다.\n\nv1.3은 v1.2와 **하위 호환**입니다 — 에이전트 입출력 변경 없음, voice profile 동작 동일. 본진 신규 1건은 v1.2 이후 멈춰 있던 패턴 발굴이 새 인프라로 깨지는지 검증하는 파일럿 결과이며, 새로 추가된 풀 적재는 부수 효과이고 적재 실패가 메인 파이프라인을 막지 않습니다.\n\n**핵심 변경**\n\n- **Pattern candidates 풀** (`references\u002Fpattern-candidates.md`) — 본진 승격 전 모든 의심 패턴을 누적하는 단일 그릇. 임시 ID(`cand-{대분류}-{YYYY}-{NNN}`), 4상태(pending\u002Fpromoted\u002Frejected\u002Fmerged), 기각 사유 5종 표준 라벨, 90일 미재현 자동 만료\n- **3개 에이전트 풀 적재 채널** — `ai-tell-detector`(미분류 span), `korean-style-rewriter`(윤문 저항·반복 잔존), `naturalness-reviewer`(voice profile 미주입 외부 시각). 각자 적재 트리거·필수 필드·중복 검사 절차 명문화\n- **taxonomist 풀 운영자 역할** — 4가지 trigger(사용자 명시 \u002F pending 10건 임계 \u002F 단일 후보 occurrences ≥ 3 \u002F 외부 PR) 기반 정기 점검. 6단계 점검 절차, `_workspace\u002Ftaxonomy_changelog.md` 회차 기록 표준화\n- **샘플 수집 파이프라인** (`references\u002Fsample-collection.md`) — 4축 다양성 매트릭스(모델·장르·길이·작가), 4종 채널(사용자 자발·합성 샘플·공개 데이터·외부 contributor), 익명화·저작권 5대 정책\n- **승격 자동 검증 체크리스트** (`references\u002Fpromotion-checklist.md`) — 6개 게이트(사전 점검·재현·본진 중복·분류 적합성·처방 적합성·본진 위계). 일부 게이트는 향후 스크립트 자동화 가능\n\n**왜 이 구조인가**\n\nv1.1까지의 패턴 7건 승격은 사람이 한 번에 작업한 결과였습니다. 이후 실전 사용 중 발견되는 의심 패턴이 늘어도 적재할 그릇이 없으면 매번 사람이 \"이번에 뭘 봤지\" 하고 메모해야 합니다. v1.3은 그 메모를 에이전트가 자동으로 풀에 떨어뜨리고, taxonomist가 회차 단위로 정량 게이트를 통과시켜 본진에 반영하는 구조입니다. 분류 체계가 단일 사용자 분포에 좁아지지 않도록 외부 샘플 채널도 함께 정의했습니다.\n\n**발행 전 파일럿 회차 결과**\n\n회차 1(인프라 검증, 합성 샘플 2건) → 본진 신규 1건(C-9 숫자 괄호 인덱싱) · 본진 보강 1건(I-2 결합형) · hold 1건. 인프라 작동 확인.\n\n회차 2(외부 진짜 데이터, 뉴스핌 [AI로 읽는 경제] 시리즈 ① ② — ChatGPT 작성 명시 GPT 출력 약 4,500자) → 본진 보강 2건 + hold 3건:\n\n| 후보 | 결과 | 사유 |\n|------|------|------|\n| \"~라는 뜻이다 \u002F ~다는 뜻이다\" 결말 단언 공식 | **merged → I-3 보강** | Gate 2.2 (본진 변종) — I-3 시그니처 예문에 결말 변종 4건 흡수 |\n| \"이 점에서 \u002F 이 관점에서 \u002F 이 말은\" 메타 진입 | **merged → H-3 보강** | Gate 2.2 (본진 변종) — H-3 시그니처 예문에 결합형 4건 흡수 |\n| \"결국\" 문두 단언 남발 (9회+) | **hold** | Gate 1.3 (분산) — 같은 모델·같은 기자 시리즈, 다음 회차 다른 모델 데이터에서 재현 시 promoted 가능 (강력 후보) |\n| \"X은 A가 아니라 B다\" 부정-긍정 대구 결산 (7회+) | **hold** | 동일 — D-7 신규 등재 자격 충분, 분산 검증 대기 |\n| 5~8개 영역 콤마 빠른 나열 (4회) | **hold** | 동일 |\n\n회차 2의 핵심 발견은 **Gate 1.3 분산 보호장치가 진짜 외부 데이터에서도 정확히 작동했다**는 점입니다. occurrences·source distinct 정량 기준은 모두 통과한 강력 후보 3건이, 같은 모델·같은 기자 시리즈라는 정성 분산 검사로 hold 처리되어 단일 출처 노이즈가 본진을 오염시키지 않았습니다. v1.2 워크플로였다면 5개 후보 모두 reviewer JSON에 기록됐다가 run 종료 후 묻혔을 정보입니다. v1.3에서는 본진 보강 2건이 즉시 영구 반영되고, 강력 후보 3건이 풀에 hold로 누적되어 다음 회차의 자동 승격 트리거가 마련됐습니다.\n\n회차별 점검 로그는 운영 산출물이라 `_workspace\u002Ftaxonomy_changelog.md`에 누적되며 (gitignored), 본진 변경은 [`ai-tell-taxonomy.md` 버전 관리](.claude\u002Fskills\u002Fhumanize-korean\u002Freferences\u002Fai-tell-taxonomy.md#버전-관리)에 영구 기록됩니다.\n\n전체 v1.3 변경 이력: [`ai-tell-taxonomy.md` 버전 관리](.claude\u002Fskills\u002Fhumanize-korean\u002Freferences\u002Fai-tell-taxonomy.md#버전-관리)\n\n## v1.2 — 작가 voice profile (2026-04-25)\n\n작가\u002F책마다 고유한 voice가 일반 분류 패턴과 충돌하는 경우(예: 단단한 서술체 voice의 의도된 종결어미 반복, em-dash 리듬 장치, 책 mandate \"~수 있다 사용 권장\")를 위한 **opt-in 명시 주입** 메커니즘을 추가했습니다. v1.2의 모든 변경은 v1.1과 **하위 호환**입니다 — voice profile 미주입 시 v1.1과 100% 동일하게 동작합니다.\n\n**핵심 변경**\n\n- **권한 위계 §1~§6** 신설 — 객관 분류 우선, voice profile은 opt-in, 무력화 불가 패턴(A-8\u002FC-5\u002FD-1~D-6) 영구 default-on, naturalness-reviewer 분리 검증층 보존 (`ai-tell-taxonomy.md`)\n- **`author-context.yaml`** 스키마 — 패턴 ID 단위 on\u002Foff + 임계 완화(multiplier 캡: 일반 ≤2.0, D-1~D-6 ≤1.5) + Do-NOT 키워드 화이트리스트만 허용 (`references\u002Fauthor-context-schema.md`)\n- **자유 텍스트 mandate 금지** — LLM 자의 해석 차단. 모든 override는 구조화된 필드 단위\n- **Schema validator** — 무력화 불가 disable 거부, multiplier 캡 위반 거부, prompt injection escape character 검증\n- **Telemetry** — `voice_profile_log.json` 발행 (적용·거부·trigger 키워드 추적)\n- **경로 토큰화** — SKILL.md 절대 경로 제거, `_workspace\u002F`는 cwd 기준 (글로벌 설치 지원)\n\n**사용 예시 (단행본 비소설 작가)**\n\n```yaml\n# author-context.yaml — 작업 cwd 또는 _workspace\u002F{run_id}\u002F에 명시 배치\nversion: \"1.0\"\n\nprofile:\n  author: \"Won Seongmuk\"\n  work: \"단행본 비소설 (8.5만 자)\"\n  notes: \"단단한 서술체, em-dash 리듬 장치\"\n\npattern_overrides:\n  - id: \"J-3\"            # em-dash 임계 완화\n    action: \"relax\"\n    multiplier: 2.0\n  - id: \"A-10\"           # \"~수 있다\" 사용 권장 mandate\n    action: \"disable\"\n\ndo_not_extra:            # 작가 고유 표현 보호\n  - \"1인칭 진입\"\n\nreviewer_contract:\n  naturalness_reviewer_voice_blind: true   # §5 강제\n```\n\n**Issue #1 후속 — 외부 contributor**\n\nv1.2는 [Issue #1](https:\u002F\u002Fgithub.com\u002Fepoko77-ai\u002Fim-not-ai\u002Fissues\u002F1)에서 8.5만 자 단행본 비소설 적용 후기·개선 제안 4건을 보내주신 [@simonsez9510](https:\u002F\u002Fgithub.com\u002Fsimonsez9510)의 기여로 시작됐습니다. 그분의 [PR #3](https:\u002F\u002Fgithub.com\u002Fepoko77-ai\u002Fim-not-ai\u002Fpull\u002F3)에서 다운스트림 caller adapter reference (`references\u002Fproposals\u002Fvoice-aware-adapter.md`)와 multiplier 캡·`reviewer_contract` 강제 등 schema 강화 통찰을 받아 메인테이너 schema에 흡수했습니다.\n\n**v1.2 회귀 안전성**\n\nv1.2는 코드 변경이 거의 없고 대부분 문서·정책·schema 추가입니다. voice profile 미주입 모드(default)에서는 v1.1과 동일한 6인 에이전트가 동일한 입출력으로 동작합니다. voice profile 주입 모드는 신기능이라 회귀 대상이 아니며, 외부 회귀 케이스 검증 결과는 v1.2.1에서 별도 hotfix로 반영합니다(외부 케이스 모집은 별도 Issue로 진행 예정).\n\n전체 v1.2 변경 이력: [`ai-tell-taxonomy.md` 버전 관리](.claude\u002Fskills\u002Fhumanize-korean\u002Freferences\u002Fai-tell-taxonomy.md#버전-관리)\n\n---\n\n## 라이선스 & 윤리\n\n- **MIT 라이선스** — [`LICENSE`](LICENSE) 참조. 코드·스킬·에이전트 정의·분류 체계 문서를 포함한 본 리포 전체에 적용됩니다. 외부 패키지 통합·fork·상용 활용 모두 허용되며, 저작권 표기와 라이선스 사본을 함께 배포하면 됩니다.\n- 외부 contribution(PR·Issue 등)은 GitHub 기본 inbound = outbound 원칙에 따라 동일한 MIT 라이선스로 contribution됩니다.\n- 본 도구는 \"AI 탐지기 우회(Undetectable AI)\"가 아니라 **한글 글쓰기 품질 개선**을 목적으로 합니다.\n- 학술 제출·저널리즘 진실성 보증 도구가 아닙니다.\n- 분류 체계(`ai-tell-taxonomy.md`)는 연구·교육·도구 통합 목적 자유 이용 가능합니다(MIT 범위 내).\n\n## 기여\n\n새로운 AI 티 패턴이나 회귀 사례를 발견했다면 [Issue](https:\u002F\u002Fgithub.com\u002Fepoko77-ai\u002Fim-not-ai\u002Fissues)로 보고해 주세요. 실증 사례 2건 이상(가능하면 서로 다른 모델·장르·작가)이 함께면 분류학자 에이전트가 점검 회차에서 본진([`ai-tell-taxonomy.md`](.claude\u002Fskills\u002Fhumanize-korean\u002Freferences\u002Fai-tell-taxonomy.md))으로 승격합니다. v1.3에서 운영했던 candidate pool은 핫패스 비용 문제로 v1.5에서 제거됐고, 외부 보고는 Issue 채널로 단순화됐습니다.\n\n**외부 데이터 raw text 보존 정책 (v1.5~)** — 외부 매체 글(예: 뉴스 기사·블로그)을 검증 데이터로 제출할 때, 직접 raw text 인용이 저작권상 부담스러우면 **분석 노트만 보존하지 말고 안전한 인용 단위(문단 1~2개) + 출처 URL을 같이** 남겨주세요. v1.3 회차 2 뉴스핌 GPT 데이터가 분석 노트만 보존되고 raw text가 떨어져 v1.5 회귀 검증에서 재사용 불가했던 사례가 있었습니다. URL이 만료되면 검증 자산 자체가 사라지므로, fair use 범위의 짧은 인용 + URL 동시 보존이 권장됩니다.\n\n다른 형태(외부 회귀 케이스 제공·슬래시 커맨드·Plugin 통합·다국어 확장 등)도 환영합니다. 자세한 안내와 기여자 명단은 [`CONTRIBUTORS.md`](CONTRIBUTORS.md)를 참고해주세요.\n\n## Contributors\n\nv1.2까지의 외부 기여자: **[@simonsez9510](https:\u002F\u002Fgithub.com\u002Fsimonsez9510)** (Issue #1, PR #3 — 권한 위계 기반 voice profile 도입), **[@gaebalai](https:\u002F\u002Fgithub.com\u002Fgaebalai)** (Issue #5 LICENSE 지적, Issue #6 슬래시 커맨드 reference + 포크 distribution channel). 전체 명단과 기여 내역: [`CONTRIBUTORS.md`](CONTRIBUTORS.md).\n\n---\n\nBuilt with [Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code) + https:\u002F\u002Fgithub.com\u002Frevfactory\u002Fharness 하네스 아키텍처 기반 프로젝트.\n","Humanize KR 是一个专门用于优化韩文AI生成文本的工具，旨在保持原文内容不变的前提下，通过调整文体、节奏和表达方式来去除AI特有的痕迹。该项目采用Python编写，支持检测并修正包括翻译腔、过度使用英文引用、机械性结构等在内的10大类40多种子模式，并根据严重程度分类处理。适用于需要将AI生成的韩语文本自然化而不改变其原意的各种场景，如新闻报道、学术论文或创意写作等。项目遵循四大原则：意义不变、基于证据修改、保持文本风格及避免过度润色，确保输出既自然又忠实于原文。",2,"2026-06-11 02:39:20","CREATED_QUERY"]