취향 토너먼트로 AI 캐릭터를 설계하는 웹앱 만들기
글소개
“좋아하는 연예인·인플루언서를 이상형 월드컵처럼 고른 뒤, 그 취향으로 나만의 AI 모델을 설계하고 싶다”는 생각에서 시작했습니다.
문제는 두 가지였습니다.
1. 후보 사진이 비거나 단체 사진이 섞이면 토너먼트 경험이 깨짐
2. AI 모델 이름 추천이 성격·비주얼·목소리 선택과 무관해 보임
그래서 128강 토너먼트 → 최종 8인 → 성격/비주얼/목소리 설정 → 이름·설계서 생성까지 한 흐름으로 웹앱을 만들고, 이미지·이름 품질을 다듬은 뒤 Vercel에 배포했습니다.
프로덕션: https://ai-muse-tournament.vercel.app
한국여성잡지 - 스크린샷
---
진행 방법
- Hermes Agent / JAVIS: 요구사항 정리, TDD, 리팩터, 배포
- React + TypeScript + Vite, Vitest
- Wikidata / Wikimedia Commons 공식 API: 공개 인물·자유 라이선스 사진
- YuNet + SFace: 얼굴 검출·동일인 군집·프로필 적합도
- GitHub + Vercel: private 저장소 연동 후 프로덕션 배포
1. 토너먼트 + 설계 스튜디오
핵심 프롬프트:
text
20대 초반 여성 AI 모델을 만들 거야.
유명한 연예인·인플루언서로 최소 128강 토너먼트를 해서 최종 8명을 뽑고,
그 8명을 바탕으로 AI 모델 이름·성격·비주얼·목소리 설계서를 만드는 웹앱을 만들어줘.구현한 흐름:
- 글로벌/한국, 여성/남성 후보 풀
- 128→64→32→16→최 종 8, 키보드·터치, 이어하기
- 성격 핵심 2+보조, 비주얼 핵심+보조, 음색·말투 선택
- 이름 추천 → 페르소나/이미지 프롬프트 → JSON 설계서 다운로드
2. 사진은 파이프라인으로 선택
JSON에는 이미지 파일이 아니라 Commons URL·얼굴 초점·attribution만 저장했습니다.
- 공식 API만, 자유 라이선스만 자동 채택
- 인물(Q5) 검증, maxlag/캐시/락 대응
- 단일 얼굴·정면·상반신 우선
- 실패 시 primary → 다른 fallback → 이니셜 카드
- 랜딩은 이미지 있는 후보만 최대 7명
3. 이름 추천을 선택 의미에 묶기
초기에는 한자 음절 우연 일치로 온안 같은 비이름, 또는 미니멀의 소 때문에 밝은 소연이 나왔습니다.
피드백:
text
선택한 성격·비주얼·목소리 방향이 이름 추천의 기반이 되어야 하는데
무작위로 나오는 것 같아.차분·논리 + 에디토리얼 + 담백/또렷 조합에서는 노아(이슬)·아린(우아)처럼 무관한 뜻이 섞였습니다.
수정 원칙:
1. 실제 사람 이름만 (한자만 이어 붙인 비이름 금지)
2. 선택 한자/의미와 맞는 이름만 점수화
3. 카드 뜻·설명도 선택 항목에서만 생성
4. “다른 이름”은 관련 풀만 순환, 무관 이름으로 채우지 않음
예시: 유연+차분 → 유안(柔安), 논리+차분 → 지안(智安)
한자가 적혀 있는 웹사이트
4. 배포
bash
npm test && npm run build
git push origin main
vercel deploy --prod프로덕션: https://ai-muse-tournament.vercel.app
최종결과물
다온
---
결과와 배운 점
배운 점과 꿀팁
1. 이미지 품질은 UI 패치보다 데이터 계약(attribution·검증·fallback)이 먼저다.
2. 이름 추천의 “랜덤 느낌”은 score 0 패딩·무관 variation 순환에서 온다. 의미 연결이 본체다.
3. 사용자 선택 조합을 fixture로 넣는 TDD + 스크린샷 재현이 회귀를 줄인다.
4. 한국 여성 풀은 128 고정이 아니라 141처럼 여유를 둬야 시드마다 구성이 달라진다.
시행착오
- 동명이인(시연·영훈 등)을 버그로 오인 → 서로 다른 QID
- 레거시 갱신 스크립트가 attribution 없는 JSON을 덮을 수 있어 쓰기 차단
- 관련 이름 부족 시 제외 이름을 다시 넣어 같은 5개 반복 → 관련 풀만 유지
- Vercel 로그아웃 → device login 후 Git 연동·프로덕션 배포
앞으로
- 설계서 → 실제 이미지 생성(ComfyUI/API)
- 결과 공유 링크
- “선택 → 한자 → 이름” 근거 UI 정리
---
도움 받은 글 (옵션)
- Wikimedia Commons / Wikidata 공식 API 문서
- 지피터스 자동화·사례 글의 “실사용 흐름 남기기” 형식