gn-voice는 AI가 쓴 한국어 초안을 특정 개인의 문체로 다시 쓰는 Claude Code 스킬이다. 재작성의 기준은 저자가 실제로 발행한 글 144편이다. 이 코퍼스를 형태소 분석기 kiwipiepy와 세종 품사 태그셋으로 분석해 종결어미 비율, 문장부호 밀도, 개행 리듬을 수치화했고, 장르 팩마다 해당 실측치를 함께 적어 두었다. 재작성 결과가 이 분포 안에 들어오는지를 검증기가 판정한다.
입력 글은 세 축으로 분류된다. 채널과 길이 축은 답글(중앙값 57자), 스레드 단문(209자), 연쇄 스레드(400~2,800자), 장문(1,500자 이상)의 네 구간을 나눈다. 레지스터 축은 반말과 음슴체, 존댓말 혼용, 문어 해라체를 구분하며, 개조식 명사 종결은 어느 장르에서도 생성하지 않는 제거 대상으로 다룬다. 워싱 수준 축은 AI 특유의 흔적만 걷어내는 L0부터 은어와 느낌표 연타까지 쓰는 L3까지 네 단계로 강도를 정한다.
장르 팩은 13종이다. 본인 코퍼스에 근거한 7종이 스레드 잡담(chat), 답글(reply), 에세이(essay), 강의(lecture), 비즈 메모(biz-s), 비즈 설명(biz-l), 칼럼(column)을 맡고, 검증된 장르 규범을 정리한 6종이 연설문, 설명문, 논설문, 판매 카피, 바이럴 포스트, 명수필을 맡는다. 어느 팩을 적용할지는 화계 비율, 자기지칭 밀도, 글자수를 읽는 결정 트리가 정하며, 판별 기준은 references/voice-core.md에 공개되어 있다.
검증은 두 단계로 이루어진다. verify_style.py는 결과물의 문체 지표가 실제 코퍼스의 분포 안에 있는지 확인한다. 이 검사에는 하한선이 있어서, 문장 길이의 변동계수가 실측 범위 아래로 내려간 지나치게 고른 글은 통과하지 못한다. gate_fidelity.py는 원문과 결과물의 수치와 고유명사를 전수 대조해 변조와 누락과 날조를 잡아낸다.
루트의 SKILL.md와 references/ 폴더가 스킬 본체다. agents/에는 재작성을 수행하는 전용 에이전트 두 개가 있다. gn-voice-monolith는 원문의 명제를 그대로 유지하는 윤문을, gn-voice-composer는 아이디어를 재구성하는 집필을 담당한다. corpus/에는 저자의 글 144편이 원문으로 들어 있고, analysis/quant/에 그 정량 분석 결과가, style-profile/axes-matrix.md에 3축 분류의 기준 문서가 있다. examples/에는 AI 초안 9편과 각 장르의 완성본, 검증 보고서(REPORT.md)가 함께 있어 재작성 전후를 대조해 볼 수 있다.
git clone https://github.com/kimsh-1/gn-voice.git
cd gn-voice && bash install.sh설치 스크립트는 스킬과 에이전트 정의를 ~/.claude 아래에 심링크로 연결한다. 사용은 Claude Code 대화에서 자연어로 한다. 글을 붙여 넣고 문체 변환을 요청하면 rewrite 모드가, 아이디어를 주고 집필을 요청하면 compose 모드가 실행된다. 장르는 --style 옵션으로 고정할 수 있고, 워싱 강도는 --wash, 표현 장치의 수위는 --clean으로 조절한다.
저장소에 분석 파이프라인이 포함되어 있으므로, corpus/를 다른 사람의 글로 교체하면 같은 구조를 새 문체로 재구축할 수 있다. fingerprint.py가 코퍼스를 다시 분석하고, make_slim.py가 런타임 검증 밴드를 다시 만든다. 이후 장르 팩에 적힌 실측치를 새 값으로 갱신하면 된다.
python scripts/fingerprint.py --corpus gn
python scripts/make_slim.pycorpus/와 장르 팩에 인용된 글은 모두 저자 공냥이(@specal1849)의 저작물이다. 명수필 팩(wm-prose)의 인용문은 이효석, 이상, 김유정 등 1926년에서 1943년 사이에 작고한 저자들의 글로, 저작권 보호 기간이 만료된 퍼블릭 도메인 저작물이다.
