내 글은 22점이었다. AI 냄새 나는 일본어를 고쳐주는 yomiyasu
機械翻訳 / Machine-translated
GitHub에 공개된 지 2일 만에 스타가 1,000개를 넘긴 Agent Skill이 있다. yomiyasu(よみやす). AI가 쓴 일본어를 읽기 쉽게 다시 고쳐주기 위한 것이다. 함께 제공되는 채점 스크립트에 내 글 28편을 돌려봤더니 최저 22점이 나왔다.
오가 아이이치로(@oga_aiichiro)씨가 개인적으로 만든, AI 생성 일본어를 퇴고하기 위한 Agent Skill. MIT 라이선스. 대상은 기술 글이나 설계 문서, PR 설명문 등 실무 문장이다. Codex, Claude Code, Cursor에서 동작한다. 설치는 한 줄이면 된다.
초안을 넘겨 "이 문장을 읽기 쉽게 해줘"라고 요청한다. 용도는 tech, business, essay 세 가지. 생략하면 자동으로 판별한다.
공개일은 9월 30일. 10월 2일 기준으로 v1.0.2까지 업데이트가 이루어졌다. README 마지막에는 이런 문구가 있다. "이 README는 'yomiyasu'를 사용하여 작성되었습니다."
"이 단어를 쓰지 마라"는 목록을 건네는 방식이 먼저 떠오른다. 오가씨는 Zenn의 해설 글에서 이 방법의 한계를 밝히고 있다.
단어를 금지하면, AI는 다른 단어로 바꿔 표현한다.
| 금지한 단어 | AI가 바꿔 쓴 단어 |
|---|---|
| 手触り(감촉) | 実態(실태) |
| 地味に効く(은근히 효과 있다) | 効果を発揮する(효과를 발휘하다) |
| 〜側に倒す(〜쪽으로 기울이다) | 〜の方針に寄せる(〜방침에 맞추다) |
문장의 골격은 바뀌지 않는다. "좀 더 인간미 있는 문장으로"라고 부탁하면, 이번엔 真理(진리), 境地(경지), 美学(미학)같은 거창한 단어를 꺼낸다.
오가씨가 기존의 AI 냄새 대책 스킬 5개의 본문을 조사한 결과, 금지 대상이어야 할 "効く(효과 있다)"가 합계 28회 사용되어 있었다. LLM은 프롬프트의 문체를 본보기로 삼는다. 지시문이 비유투성이라면 출력에도 새어 나온다.
오가씨가 처음에 작성한 정규 표현은 "握る(쥐다)", "倒す(쓰러뜨리다)", "壊れる(망가지다)"를 글자 그대로만 걸러냈다. 그 결과, "コンビニでお握りを買って食べました(편의점에서 주먹밥을 사서 먹었습니다)", "お腹を壊してしまいました(배탈이 나버렸습니다)"까지 검출했다. 일상어와 관용구로 만든 경계값 테스트 48개 중 46개, 95.8%에서 오검출이 발생했다. 앞뒤 단어를 확인하는 조건을 추가해 오검출을 0건으로 만들었다고 한다.
그렇다면, 이런 표현은 AI 등장 이후 얼마나 늘었을까. 사카세가와짱씨가 Qiita에 게재된 70,524편 중 50,731편을 선별해 분석했다. 집계한 이유는 서두에 이렇게 적혀 있다.
다만, 이런 건 감으로만 말하면 대개 빗나가기 마련이라, 2019년부터 2026년까지 각 연도 8월에 Qiita에 게재된 글을 모두 모아 실제로 세어봤습니다.
| 지표 | AI 이전(2019〜2022년) | 2026년 |
|---|---|---|
| 굵은 글자(1,000자당) | 1.26개 | 3.83개(약 3배) |
| 목록 사용 비율 | 8.9% | 16.4%(약 1.8배) |
| "効く"를 포함한 글 | 2.0% | 22.3% |
| "壊れる"를 포함한 글 | 0.8% | 13.1% |
| "静か"를 포함한 글 | 0.1% | 4.9% |
주의사항이 있다. "AI가 쓴 문장이 늘어난 것과, 인간의 글쓰기 방식이 바뀐 것은 구별할 수 없습니다." 표의 수치는 Qiita에 게재된 글 전체의 변화를 나타낸다.
한편, AI스러운 표현의 대표로 꼽혀온 "しましょう(〜합시다)"는 오히려 줄고 있었다. 특정 단어만 추적해서는 포착할 수 없는 변화가 일어나고 있다.
Kiminori Yokoi씨(@nasuvitz)의 슬라이드 "AI 냄새 나는 문장이란 무엇인가"가 10월 2일 기준으로 7만 회 이상 표시되었다. AI 냄새 나는 문장의 정의를 이렇게 적고 있다.
"불필요한 대비·부정·유보로 시작해, 핵심 문장을 직접적으로 쓰지 않는 문장", "추상어나 비유적 동사를 남발해 무엇을 하는 것인지 모호한 문장".
불쾌한 이유는, 서로 다른 사람이 쓴 것이어야 할 문장에 같은 버릇이 반복해서 나오기 때문이다. "모두가 같은 대필 작가에게 쓰게 한 것처럼 느껴진다."
yomiyasu의 README는 이 슬라이드를 원칙 수립의 참고로 삼았다고 밝히고 있다. 7가지 변환 원칙의 핵심은, 문장마다 "누가·무엇을·어떻게 했다"를 다시 써 넣는 것. 비유적 동사를 실제 동작으로 되돌리는 것. 원문에 없는 정보를 덧붙이지 않는 것.
슬라이드의 수정 예시를 인용한다.
「判断に迷うものは、残さない側に倒します。」(판단이 애매한 것은 남기지 않는 쪽으로 기울입니다.)
→「採否を判断できない項目は、原則として除外します。」(채택 여부를 판단할 수 없는 항목은 원칙적으로 제외합니다.)
누가 무엇을 하는지가 보이는 문장이 되었다.
공개 다음 날 v1.0.1에서는, 고친 결과 의미가 바뀌는 문제가 수정되었다.
원문 「単にメッセージを流すだけでは、背後でデータが静かに壊れます。」(단순히 메시지를 흘려보내기만 하면, 뒤에서 데이터가 조용히 손상됩니다.)
수정 후 「単にメッセージを送るだけでは、気づかないうちに裏でデータの整合性が失われます。」(단순히 메시지를 보내기만 하면, 알아차리지 못하는 사이에 뒤에서 데이터 정합성이 사라집니다.)
나쁜 수정 방식으로 꼽힌 것은 "〜おそれがあります(〜할 우려가 있습니다)"라며 제멋대로 추량으로 약화시키는 패턴이다. 원문이 단언하고 있다면 단언한 채로 고친다. "骨が折れる(뼈 빠지게 힘들다)"처럼 예전부터 정착된 관용구는 바꾸지 않는다. 기준은 "그 표현을 AI가 퍼지기 전 인간의 문장에서도 자연스럽게 볼 수 있는가 여부".
v1.0.2에서는, 퇴고 중에 "〜が大切です(〜이 중요합니다)", "〜する必要があります(〜할 필요가 있습니다)"가 추가되는 문제도 금지되었다. 출력은 "다시 쓴 본문", "바꾼 부분", "남긴 AI스러운 부분", "작성자에게 확인하고 싶은 점" 의 4부 구성이 되었다.
함께 제공되는 yomiyasu_lint.py를, miraipage에 공개한 내 글 28편에 돌려봤다. 100점 만점의 감점 방식으로, 굵은 글자 빈도, 목록 비율, 비유 동사 등을 검사한다. Python 표준 라이브러리만으로 동작한다.
중앙값은 84점. 100점은 2편뿐으로, 둘 다 700자 미만의 짧은 글. 최저는 22점, 그다음이 43점이었다.
22점은 9월 15일에 공개한 「로봇 펫을 만든다. 부품이 결정될 때까지, AI에게 두 번 속았다」(약 4,800자). 지적 사항은 18건. 가장 많은 것은 영단어 앞뒤 반각 스페이스로 10건. 그 외에 AではなくB(A가 아닌 B) 구문 4건, 土台(토대) 3건, 굵은 글자 빈도 초과 1건.
반각 스페이스는 오가씨의 해설 글이 수정 대상 중 하나로 꼽은 것이다. 일본어와 영단어 사이에 기계적으로 들어가는 공백을 가리킨다. 굵은 글자는 25회로, 1,000자당 5.21개. 사카세가와짱씨의 조사에 나온 2026년 Qiita의 3.83개보다 많다.
土台 3건은 로봇의 받침대라는 말 그대로의 의미로 쓴 부분이다. 스크립트도 "글자 그대로의 의미나 필요한 문맥을 담고 있는 경우에는 남겨도 됩니다"라고 출력한다. 채택 여부는 작성자가 결정하는 구조로 되어 있다.
스크립트에 걸리지 않은 부분도 있다. 같은 글에 "네 번째가 제일 효과 있다고 생각한다", "임베디드로 시간이 녹는 건"이라고 썼다. 사카세가와짱씨의 조사에서 급증이 확인된 "効く(효과 있다)" 그 자체다.
같은 9월 15일에 공개한 「Anthropic 공식 문서에서 배우는 Claude Code의 글로벌 메모리 설정」은 89점. 이 글에서는 Claude Code의 공통 설정에 "직접 말할 수 있는 것을 비유로 바꿔 말하지 않는다"는 규칙을 추가한 이야기를 썼다.
그 규칙을 추가한 같은 날, 다른 글에서 "제일 효과 있다"고 썼던 셈이다. 규칙을 쓰는 것과, 나온 문장을 측정하는 것은 별개의 작업이었다.
laiso씨는 "왜 AI 냄새를 없애고 싶은가?"에서, 없애려는 동기를 두 가지로 나눈다. "진짜로 내용을 확인하고 자신의 책임으로 삼는 것"과 "확인한 것처럼 보여 추궁받지 않으려는 것". 어휘나 기호만 없애는 도구는 후자에 가깝다고 쓰고 있다.
불쾌함의 정체에 대해서는 이렇게 말한다. "화가 나는 건, 제대로 시간을 들여 읽었는데 내용이 얕았을 때."
미나미 켄타로씨(ktrmnm)도 같은 문제를 쓰고 있다. 냄새를 없애도, 글을 낸 사람이 내용을 이해하고 책임을 질 수 있는가는 별개의 문제다. 고정된 규칙으로 계속 냄새를 없애는 것도 어렵다. 모델마다 버릇이 다르고, 수 주에서 수개월 단위로 업데이트되기 때문이다.
미나미씨는 AI slop이나 workslop이라는 말을, 한마디로 "우리 시간 낭비하게 하지 마라"는 의미의 말이라고 정리한다.
yomiyasu 자체도 v1.0.2에서 출력에 "작성자에게 확인하고 싶은 점"을 포함하게 되었다. 확인하는 것은 인간 쪽이고, 그것은 문체를 고쳐도 남는 일이다.
Claude Code라면 한 줄로 설치된다.
npx skills add nanaism/yomiyasu
업데이트는 npx skills update yomiyasu. 플러그인으로도 설치할 수 있다. 채점 스크립트는 python3 scripts/yomiyasu_lint.py article.md로 동작한다. --strict를 붙이면 경고 시 종료 코드 1을 반환하므로 CI에도 통합할 수 있다.
AI 문체를 고치는 스킬을 여러 개 동시에 활성화하면 지시가 충돌한다. 사용한다면 하나로 좁힌다.
이 글도 Claude에게 초안을 작성하게 하고, yomiyasu의 채점 스크립트를 돌린 뒤 공개했다. 처음에는 53점이었다. 지적 사항 10건은 모두, 검출 대상 표현을 예시로 인용한 부분이었다. 스크립트는 표, 인용 블록, 코드 표기 안을 검사하지 않는다. 예시를 그쪽으로 옮겼더니 100점이 되었다.