
Cloudflare Workers와 Workers AI로 「보케타이(Boket-ai)」라는 Web 서비스를 만들어 보았다
요약
Cloudflare Workers와 Workers AI를 활용하여 생성형 AI 기반의 웹 서비스 '보케타이(Boket-ai)'를 구축한 사례를 소개합니다. Flux 모델과 Gemma 모델을 사용하여 이미지 생성 및 분석 기능을 구현했습니다.
핵심 포인트
- Cloudflare Workers와 Workers AI를 이용한 서버리스 AI 서비스 구축
- Flux 모델을 활용한 Text-to-Image 이미지 생성 구현
- Gemma 모델을 사용하여 이미지 분석 및 JSON 출력 안정성 확보
- 무료 할당량 최적화를 위한 모델 선택 및 비용 관리 전략
서론
생성 AI (Generative AI)가 생성한 이미지로 한마디 농담(보케)을 던지고, 심사까지 해주는 Web 서비스 「보케타이(ボケたい)」를 만들었습니다.
시험 삼아 공개해 보았습니다만, Cloudflare Workers의 무료 플랜으로 구동되고 있어서 아마 제대로 작동하지는 않을 것입니다.
뭐, 마침 좋은 기회이니 어떻게 하면 제대로 작동하는 AI 서비스를 OSS (Open Source Software)로 만들 수 있을지 열심히 노력해 보려고 합니다.
다만 조만간 예고 없이 서비스가 종료될 수도 있으므로, 그렇게 되면 보케타이 각자가 복사하거나 클론하거나 다운로드해서 배포해 주세요.
계기
보케테(bokete)라는 앱이 있습니다.
보케테는 2008년에 시작된 노포 개그 미디어로, 2012년에 Twitter나 facebook, NAVER まとめ 등의 소셜 미디어 (Social Media) 보급에 따라 돌풍을 일으켰습니다.
그런 보케테가 2026년 9월 30일부로 앱 서비스를 종료합니다.
또한, Web 버전도 투고 기능을 종료하고, Flickr 주제의 명예의 전당 보케 열람 전용 사이트가 될 예정입니다.
그런 뉴스를 보고 슬퍼하던 다음 날 아침, 자다 깨서 스마트폰을 만지작거리던 중 문득 ChatGPT에게 이런 주제를 던져보고 싶어졌습니다.
「보케테」 같은 것을 하고 싶다.
이쪽은 실제 ChatGPT 화면입니다.


ㅋㅋㅋㅋ.
엄청나게 재미있잖아.
그래서 생각했습니다.
보케테를 AI 서비스로 만들 수 있지 않을까?
보케타이
보케타이(boket-ai)에서 사용한 기술 스택 (Tech Stack)은 다음과 같습니다.
- TypeScript 7.0
- Hono
- Cloudflare Workers
- Workers AI
보케테 같은 Web 서비스를 이 기술 스택으로 다시 만드는 것만으로도 흐뭇해집니다.
그 외 세부 사양은 GPT-5.6 Sol에 던져서 바이브 코딩 (Vibe Coding)했습니다.
우선, Workers AI에는 하루 10,000 Neurons의 무료 할당량이 있고, 유료 할당량 초과분은 1,000 Neurons당 약 $0.011 정도 드는데, Text-to-Image 모델인 @cf/black-forest-labs/flux-2-klein-9b를 사용하면 한 번에 1,000 Neurons 가까이 소비해 버려서, 무료 할당량으로는 하루에 약 10장밖에 생성할 수 없습니다 (패배).
그래서 @cf/black-forest-labs/flux-2-klein-4b로 변경하여, 무료 할당량으로 다룰 수 있는 횟수를 대폭 늘렸습니다.
또한, 이미지 판정 모델에 대해서도 Image-to-Text 모델인 @cf/moondream/moondream3.1-9B-A2B를 사용하고 있었습니다만, 이는 OCR (Optical Character Recognition)용 모델이라 JSON 출력 능력이 약해서 「통신에 실패했습니다.」 에러가 빈번하게 발생했습니다.
그래서 일본어 농담(보케)과 이미지 양쪽을 모두 이해할 수 있고, JSON 출력에 강한 @cf/google/gemma-4-26b-a4b-it로 변경했습니다.
그 외에는 이미지를 첨부하여 공유할 때 이미지와 텍스트를 나누어 공유하는 방식이었기에, Canvas를 사용하여 이미지와 텍스트를 합성하도록 수정한 것과, 소스 코드 이외의 설정 파일 등을 조금 변경한 정도입니다.
톱 페이지는 이런 느낌입니다.

주제를 내고 버튼을 누르면 이렇게 됩니다.

채점하고 버튼을 누르면 이렇게 됩니다.

이미지를 첨부하여 공유하는 버튼을 누르면 이런 느낌의 이미지를 공유할 수 있습니다.

우선 MVP (Minimum Viable Product)로서는 제법 괜찮은 결과물이 되었기에 그대로 배포했습니다만, 역시 Cloudflare Rate Limiting이나 Turnstile은 도입해야 할 것 같아 여러 가지로 조사하고 있습니다.
그럼, 기왕 보케테에 관한 글을 썼으니, 시(Poem)라도 남겨두도록 하겠습니다.
Ode to yusukebe
지금으로부터 19년 전, 나는 인구가 몇만 명밖에 없는 시골에 살았기 때문에, 학교에서 돌아오면 숙제와 게임 정도밖에 할 일이 없는 나날을 보냈습니다.
부모님은 바쁘시고, 친구와 놀러 갈 만한 장소도 없으니까요.
마침 새로운 가족용 PC로 교체하여 Windows XP와 광회선을 사용할 수 있게 된 것도 있어, 나는 인터넷이라는 것을 본격적으로 시작했습니다. [1]
아무래도 인터넷이라는 것은 프로바이더 (Provider)의 월정액 요금만 지불하면, 나머지는 무료로 게임 공략 사이트를 보거나 프리 게임을 다운로드할 수 있는 모양이라, 나는 게임뿐만 아니라 인터넷이라는 것에 빠지게 되었습니다.
Yahoo! JAPAN와 같은 포털 사이트부터 다양한 사이트를 순회하는, 이른바 인터넷 서핑을 하던 중 하나의 기사를 만났습니다.
당시 인터넷에는 Google Video라는 동영상 공유 서비스가 존재하기도 했고, 니코니코 동화(Niconico Douga)의 임베디드 동영상 플레이어를 사용한 게임 관련 동영상 정리 사이트도 있었지만[2], YouTube가 일본어판 서비스를 막 시작했을 무렵이었기에 인지도가 그리 높지 않았습니다.
그러던 중 YouTube에 투고된 악곡의 PV를 오리콘(Oricon) 랭킹 순으로 게재하는 「CDTube」를 보았을 때는, 무료로 음악 PV를 볼 수 있다니 대단하다! 라며 감동했던 기억이 있습니다.
이렇게 대단한 것을 만드는 사람은 대체 어떤 사람일까? 라는 생각에 ITmedia에 있었던 yusukebe 님의 기사를 읽었던 것 같습니다.
그야말로 「스케베(변태)」 같은 이름(핸들네임)이었기에, 당시 공개되어 있던 스케베한 Web 서비스에서도 도움을 받았습니다. (학생이라면서요?)
그로부터 시간이 흘러 제가 성인이 되었을 무렵에는 스마트폰이 등장하거나 동일본 대지진이 발생하는 등, 인터넷에서는 2ch나 NAVER의 정리 사이트, Twitter의 콘텐츠가 큰 비중을 차지하게 되었는데, 그런 혼돈스러운 인터넷 속에서 점차 「보케테(Bokete)」라는 앱의 소재를 목격하게 되었습니다.

Source: https://prtimes.jp/main/html/rd/p/000000005.000005205.html
보케테는 서비스가 시작되자마자 화제가 된 것이 아니라, 2ch나 NAVER의 정리 사이트, Twitter에 전재된 것을 계기로 인지되어 사용자가 조금씩 늘어가는 느낌이었기에, 어느샌가 yusukebe 님은 「보케테」를 만든 사람으로서 유명해져 갔습니다.
다시 시간이 흘러, 어느덧 저는 OSS를 사용하게 되었고, Mastodon이나 Misskey의 ActivityPub 구현 및 커뮤니티 운영에 관여하게 되었는데, Misskey 커뮤니티에서 한바탕 소동이 있어[3], 일시적으로 Misskey를 떠날 수밖에 없게 되었습니다.
그때 만난 것이 Hono입니다.
당시 Hono는 Cloudflare Workers에서만 사용할 수 있는 Web 애플리케이션 프레임워크였지만, 마침 Deno와 Bun에 대응한다는 것을 알게 되어, 세계 최초로 Hono와 Deno를 이용한 ActivityPub 구현을 만들었습니다.
이 Matchbox를 계기로 저는 yusukebe 님에게 인지되기 시작했습니다.
예를 들어, yusukebe 님이 만든 ActivityPub MVP인 Minidon은 당시의 Matchbox를 포크(Fork)하여 만들어졌습니다.
뭐, 인지된 것은 당시뿐이었고, 지금은 각자 AI 에이전트 개발로 바쁘기 때문에 접점은 별로 없지만, 어느샌가 저는 「Web 서비스를 사용하는 쪽」에서 「Web 서비스를 만드는 쪽」으로, 「OSS를 사용하는 쪽」에서 「OSS를 만드는 쪽」이 되어 있었습니다.
제가 Web 서비스나 OSS를 만들게 된 계기는 yusukebe 님이었습니다.
그런 yusukebe 님이 만든, 웃으며 즐길 수 있는 Web 서비스인 보케테가 끝나가려 하고 있습니다.[4]
이렇게 소박하게 마무리되고, 시대는 변해가는 것이군요.[5]
--
-
물론 Windows XP 이전에도 Windows 98이 있었고, ADSL 회선을 사용할 수 있었던 기억이 나며, 인터넷 자체는 학교 수업에서 해본 기억이 있습니다. 가물가물하지만 ↩︎
-
당시에는 게임 실황 영상이나 RTA 영상을 녹화하여 투고하기 위한 장비나 무료 소프트웨어가 거의 없었기에, 게임기 에뮬레이터를 사용한 TAS 영상 투고가 대부분이었던 것 같습니다. TAS 영상 외에는 개조 마리오 같은 것이 유명하죠! ↩︎
-
당시 Misskey.io는 300명 정도밖에 없었습니다 ↩︎
-
보케테는 오모로키의 카마다고 씨와 둘이서 만든 서비스이며, 보케 열람 전용 사이트로 남을 예정이라고 합니다. 참고로 Hono도 usualoma 씨와 둘이서 만든 Web 애플리케이션 프레임워크입니다 ↩︎
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기