3줄 요약
- 개발자 penpen이 2026년 9월 28일 Zenn의 PrAha 퍼블리케이션에 올린 글이다. 저자가 만든 사이트 Emoji Samurai에서는 「ありがとう」(고마워요)나 「了解」(알겠습니다) 같은 말을 입력하면 AI가 Slack용 커스텀 이모지를 조립해 준다. 저자는 이 사이트에서 쓰는 모델 jev의 사용법과 설계를 글로 공개했다.
- 저자는 이미지 생성 모델에 이모지를 그리게 하지 않았다. 그림은 앱이 그리고, jev에는 글꼴과 글자색, 움직임, 장식, 배경색, 의미가 가까운 말을 선택지 중에서 고르게 했다. jev는 문장을 생성하지 않고 선택지마다 확률을 돌려주는 모델이어서 응답 형식이 매번 같다.
- 저자는 한 번의 호출로 받은 확률을 세 가지 용도로 썼다. 먼저 질문마다 1위만 모은 조합과 2위만 모은 조합을 차례로 만들어 후보를 여러 개 준비했다. 또 의미가 가까운 말의 확률로 프리셋 254개의 순서를 정했고, 글자 사이마다 예 또는 아니요로 답하는 질문을 만들어 줄바꿈 위치를 정했다. 호출 한 번에 드는 비용은 0.03엔 정도라고 한다.
Emoji Samurai와 jev
저자는 이 사이트에 Emoji Samurai라는 이름을 붙였다. 사이트에서는 미리 만들어 둔 이모지를 고르거나 편집기에서 직접 만들 수 있다. 「AIで作る」(AI로 만들기) 페이지에 말을 입력하면 AI가 이모지 후보를 만들어 준다.1 원문은 이 페이지가 어떻게 동작하는지 설명했다.
저자는 jev를 “질문과 선택지를 건네면 선택지마다 확률로 답해 주는 AI"라고 소개했다.2 jev가 받는 질문 형식은 세 가지가 있다.
| 질문 형식 | 답하는 방식 |
|---|---|
choice | 선택지 중 하나를 고른다. 모든 선택지의 확률도 함께 돌려준다 |
noul | 예, 아니요를 0에서 1 사이의 숫자로 돌려준다 |
score | 단계를 정해 점수를 매긴다 |
저자는 jev가 문장을 생성하는 AI와 달리 「고르는 AI」라서 돌아오는 답의 형식이 매번 같다고 설명했다. 또 이 앱에서 jev를 한 번 호출하는 데 0.03엔 정도가 든다며 무척 싸다고 했다.3
그림은 앱이 그리고, jev는 고르기만 한다
저자의 설명에 따르면 이미지 생성 AI에 이모지를 그리게 하면 글자가 뭉개지거나, Slack 커스텀 이모지의 용량 제한인 128KB를 초과하는 일이 생긴다. 그래서 저자는 그림 그리는 일을 앱에 맡기고, jev에는 어떤 글꼴과 색과 움직임을 쓸지만 고르게 했다.
보내는 요청
저자가 보여 준 요청 JSON은 아래와 같다. 저자는 요청이 길어서 일부를 줄여 실었다고 밝혔다. 여기서는 일본어 문자열을 한국어로 옮겼다.
{
"state": {
"text": "ありがとう",
"context": "사용자가 일본어를 쓰는 직장의 Slack에 올릴 커스텀 이모지를 만들려고 한다. (생략) 항목마다 따로 고르지 말고, 조합했을 때 하나의 분위기로 어우러지도록 고른다. (생략) Slack에서 실제로 표시되는 크기는 16×16픽셀 정도로 아주 작다. 작게 표시되어도 읽을 수 있는 것이 가장 중요하다."
},
"questions": {
"font": {
"type": "choice",
"instructions": "글꼴. 16px로 줄어도 읽을 수 있는 글꼴을 우선한다. 귀여우니까 둥근 고딕이라고 단정하지 않는다",
"criteria": {
"M PLUS Rounded 1c": "둥근 고딕. 획 끝이 둥글다. 부드럽고 친근하다. 감사 인사나 대답에 어울린다",
"Dela Gothic One": "아주 굵은 고딕. 멀리서도 눈에 띈다. 힘차고 기세가 있다. 축하나 강조",
"Yuji Boku": "붓글씨. 먹이 갈라진 획과 기세가 있다. 일본풍, 기합"
}
},
"color": { "type": "choice", "instructions": "글자색. (생략)", "criteria": { "...": "..." } },
"motion": { "type": "choice", "instructions": "text의 장면과 기세에 맞는 움직임. (생략)", "criteria": { "...": "..." } }
}
}
state에 무엇을 적을지는 개발자가 자유롭게 정할 수 있다. 이모지로 만들 글자에는 text, 배경 설명에는 context라는 이름을 저자가 직접 붙였다. 저자는 질문을 모두 여섯 개 만들었다.
| 질문 | 고르게 하는 항목 |
|---|---|
font | 글꼴 (16종) |
color | 글자색 (단색 10색과 그라데이션 8종) |
motion | 움직임 (흔들리기, 튀어 오르기, 등장 효과 등) |
decor | 장식 (무지개색, 메탈, 글리치 등. 장식을 쓰지 않아도 된다) |
backdrop | 글자 뒤에 까는 배경색 |
word | 의미가 가까운 말 (관련 프리셋의 순서를 정하는 데 쓴다) |
저자는 선택지 설명에 어떤 모양인지와 함께 어떤 장면에 어울리는지도 적었다. jev는 이 설명을 읽고 고르기 때문에, 설명을 대충 쓰면 답도 대충 나온다고 한다.
context에 “항목마다 따로 고르지 말고 조합했을 때 하나의 분위기로 어우러지도록 고른다"라고 적은 데도 이유가 있다. 질문이 여러 개여도 jev는 한 질문의 답을 정할 때 다른 질문의 답을 참고하지 않는다. 아무 지시 없이 두면 귀여운 계열의 글꼴과 화난 느낌의 색이 함께 선택되는 식으로, 서로 어울리지 않는 조합이 나올 수 있다고 저자는 설명했다.
돌아오는 답
「ありがとう」를 넣었을 때 돌아오는 답의 예는 다음과 같다. 저자가 실제 응답을 줄여서 보여 준 것이다.
{
"model": "jev-1.13.0",
"answers": {
"color": {
"type": "choice",
"choice": "#ff8ba7",
"probabilities": { "#ff8ba7": 0.59, "#22c55e": 0.22, "#1c1c1e": 0.05 },
"confidence": 0.53
},
"word": {
"type": "choice",
"choice": "arigatou",
"probabilities": { "arigatou": 0.49, "kansha": 0.23, "sankyu": 0.2 },
"confidence": 0.47
}
},
"usage": { "input_tokens": 5403, "output_tokens": 2138 }
}
저자는 1위와 함께 2위, 3위의 확률까지 돌아온다는 점을 가장 중요하게 꼽았다. 이 예에서 글자색은 분홍(#ff8ba7)이 0.59, 초록(#22c55e)이 0.22를 받았다. 의미가 가까운 말로는 arigatou(고마워요)가 0.49, kansha(감사)가 0.23, sankyu(땡큐)가 0.2를 받았다.
jev가 말의 의미에서 연상해 효과를 고른다는 점도 저자는 재미있다고 했다. 「うんち」(똥)를 입력하면 jev가 글자가 녹아내리는 효과를 붙여 준다. 저자는 “설사를 연상한 걸까요"라고 덧붙였다.

설계에서 공들인 세 가지
한 번 물어서 후보를 여러 개 만든다
저자는 돌아온 확률로 각 질문의 1위 선택지만 모은 조합, 2위만 모은 조합, 3위만 모은 조합을 차례로 만들었다. jev에 다시 묻지 않아도 모양이 서로 다른 후보를 여러 개 얻을 수 있고, 요금과 대기 시간은 한 번 호출한 만큼만 든다.

저자가 X에 올린 18초 남짓한 데모 영상을 보면, 「神」(신)을 입력하자 사이트가 후보 이모지 여덟 개와 관련 프리셋을 한 화면에 보여 주었다. 위 화면이 그 장면이다. 화면 상단의 안내문은 오른쪽 위의 퍼센트가 높을수록 AI가 그 이모지를 입력한 말과 의미가 가깝다고 판단했다는 뜻이라고 설명한다.
관련 프리셋의 순서도 정한다
저자는 word 질문의 확률을 써서 프리셋 364개를 입력한 말과 의미가 가까운 순서로 정렬했다. 「ありがとう」를 넣으면 ありがとう(고마워요), 感謝(감사), サンキュー(땡큐) 같은 프리셋이 먼저 나온다. 이 순서도 같은 한 번의 응답에서 얻으므로 질문을 늘릴 필요가 없었다.
그런데 jev의 choice는 선택지를 255개까지만 받는다. 프리셋 364개를 그대로 보내면 jev는 7003: User Input Error 오류를 돌려준다. 저자는 「了解」와 「了解です」처럼 의미가 겹치는 프리셋을 빼서 254개로 줄인 다음 전달했다. 이렇게 하면 제외한 프리셋 110개는 jev의 확률을 받지 못한다. 저자는 jev가 앞으로 선택지를 255개보다 많이 받게 되면 프리셋을 전부 보내서 더 정확하게 정렬할 수 있으리라고 기대했다.
줄바꿈 위치도 묻는다
이모지는 크기가 작아서 긴 말을 한 줄에 쓰면 글자가 뭉개져 읽을 수 없다. 따라서 어디서 줄을 바꿀지가 중요하다. 저자는 줄을 바꿀 수 있는 위치마다 “몇 번째 글자 뒤에서 줄을 바꿀까"를 noul 질문으로 만들었다. 「ありがとう」는 다섯 글자여서 글자 사이가 네 곳이고, 질문도 네 개가 된다.
"break_1": {
"type": "noul",
"instructions": "text를 「あ」 뒤에서 줄바꿈할까. 줄을 바꾸면 「あ/りがとう」가 된다"
},
"break_2": {
"type": "noul",
"instructions": "text를 「あり」 뒤에서 줄바꿈할까. 줄을 바꾸면 「あり/がとう」가 된다"
},
"break_3": {
"type": "noul",
"instructions": "text를 「ありが」 뒤에서 줄바꿈할까. 줄을 바꾸면 「ありが/とう」가 된다"
},
"break_4": {
"type": "noul",
"instructions": "text를 「ありがと」 뒤에서 줄바꿈할까. 줄을 바꾸면 「ありがと/う」가 된다"
}
jev는 질문마다 그 위치에서 줄을 바꿀 확률을 돌려준다. 예를 들어 break_3에서 줄을 바꿀 확률만 높으면 이모지는 「ありが/とう」 두 줄이 된다. 이 질문들은 사용자가 입력한 말에 맞춰 Worker(백엔드)가 그때그때 만든다.
저자가 정리한 소감
저자는 jev를 써 본 소감을 세 가지로 정리했다.
- 답의 형식이 매번 같아서 앱에 연동하기 쉽다.
- 선택지 설명을 어떻게 쓰느냐에 따라 답의 품질이 정해진다.
- 확률이 함께 돌아오므로 한 번만 물어도 후보를 많이 만들 수 있다.
만든 이유와 기술 구성
저자는 글 끝에 제작 과정을 기록한 스크랩을 링크했다.4 스크랩에 따르면 저자는 원래 MEGAMOJI라는 이모지 제작 사이트를 애용했다. 하지만 불만도 있었다고 한다. 이모지를 처음부터 직접 만드는 일이 번거로웠고, 여러 개를 한꺼번에 만들 수 없었으며, 글꼴이나 효과를 고르기 전에는 결과를 미리 볼 수 없었다. 저자는 글자를 입력하면 AI가 이모지 후보를 목록으로 만들어 주기를 바랐다.
| 항목 | 내용 |
|---|---|
| 프런트엔드 | Next.js를 정적 export해 Cloudflare Workers에 배포했다 |
| 백엔드 | Hono로 작성해 Cloudflare Workers에 배포했다. 「AI로 만들기」 페이지에서만 쓴다 |
| 남용 방지 | IP 하나당 1분에 세 번으로 요청을 제한하고, 봇 요청을 막으려고 Cloudflare Turnstile을 적용했다 |
| 개발 기간 | 1주일 정도. 그중 30% 정도는 화면 왼쪽 위 사무라이 캐릭터의 움직임을 만드는 데 썼다 |
요청 제한과 Turnstile을 함께 적용한 이유도 스크랩에 적혀 있다. 저자는 호출 한 번에 0.03엔이어도 1만 번이면 300엔이 된다고 계산했고, 그만큼의 요금도 내기 싫어서 할 수 있는 대책을 전부 적용했다고 한다. 코드는 대부분 AI에게 작성하게 했고, 저자는 불안했던 백엔드 코드만 직접 읽어 보고 최소한으로 리팩터링했다. 돌이켜 보니 치명적인 문제도 없었으므로, 그 리팩터링은 시간 낭비였던 것 같다고 적었다.
가장 흥미로운 지점
글을 읽는 동안 나는 「모두 2위인 안」을 계속 생각했다. jev는 질문마다 따로 답을 정하므로, 글꼴의 2위와 색의 2위는 서로를 고려해서 정해진 값이 아니다. 저자는 context에 조화를 요구하는 문장을 적어 이 문제를 완화했다. 이 문장은 모든 질문의 확률에 영향을 준다. 따라서 2위끼리 모은 조합도 어느 정도는 한 분위기를 유지하리라고 기대할 수 있다. 게다가 이 화면에서 사용자는 후보 하나를 골라 편집기에서 고친다. 그렇다면 조합이 완벽하게 어울리는 것보다 후보마다 모양이 서로 다른 것이 더 쓸모 있었을 것이다.
word 질문을 쓰는 방식도 눈여겨볼 만하다. 형식만 보면 이 질문은 의미가 가까운 말 하나를 고르는 분류 질문이다. 그런데 저자는 선택지 254개가 받은 확률을 모두 관련 프리셋의 정렬 순서로 썼다. 분류 질문 하나로 검색 기능까지 만든 셈이다. 그 대신 choice의 선택지 한도인 255개가 곧 정렬할 수 있는 프리셋 수의 한도가 되었다.
출처
penpen, 「選ぶAI「jev」に選択肢を渡したら、Slack絵文字をええ感じに組み立ててくれた」, Zenn (PrAha), 2026년 9월 28일. 원문: https://zenn.dev/praha/articles/z-emoji-samurai
- 사이트: https://emoji-samurai.penpen-dev.com/ja/
- 제작 과정 스크랩: https://zenn.dev/yamadadayo123/scraps/e40e459a903a55
- 이미지: 커버는 Emoji Samurai의 OGP 이미지다. 「神」 결과 화면은 저자의 X 게시물에 올라온 데모 영상의 한 장면이다. 「うんち」 이모지는 원문에서 가져왔다.
Emoji Samurai는 Slack 외에 Teams와 Discord에서도 쓸 수 있는 이모지를 무료로 내려받을 수 있다고 소개한다. 일본어 페이지와 영어 페이지를 따로 제공한다. ↩︎
jev는 TypeSafe AI가 2026년 9월 15일 공개한 판정 모델이다. 모델 발표 내용은 이 서재의 Introducing System One Models & Jev 다이제스트에 정리했다. ↩︎
위 예시 응답의 usage는 입력 5,403토큰, 출력 2,138토큰이다. TypeSafe가 공개한 요금은 입력 100만 토큰당 0.042달러이고 출력은 무료이므로, 이 호출의 요금은 약 0.00023달러다. ↩︎
스크랩은 Zenn에서 작업 메모를 이어서 적는 형식의 글이다. ↩︎
