지난 2월 28일, 서울 세빛둥둥섬에서 Google Gemini 3 Seoul Hackathon이 열렸습니다. 전 세계 개발자들이 하루 동안 Gemini AI를 활용해 엔터테인먼트, 하드 테크, 사회적 선(Social Good) 세 가지 주제 중 하나로 프로젝트를 만들고 겨루는 행사였습니다. 오전 10시 오프닝부터 오후 5시 제출 마감까지, 약 7시간 안에 아이디어를 현실로 만들어야 했습니다.
사실 처음엔 해커톤 자체에 큰 기대 없이 갔습니다. 워낙 고수들도 많고 하다 보니, "구글 해커톤이라니 재밌겠다" 싶어서 어떤 사람들이 오나 구경가야지~ 하는 가벼운 마음으로 참가 신청을 했는데, 막상 현장에서 옆에 앉은 분들이 제가 가져온 주제에 관심을 가져주시면서 자연스럽게 팀이 꾸려졌습니다. 그렇게 생각지도 못한 방향으로 프로젝트가 시작됐습니다.
저희 팀이 선택한 카테고리는 Entertainment × Social Good × AI였습니다. 주제를 고민하다 자연스럽게 크리에이터 문제로 시선이 향했습니다.
YouTube 크리에이터라면 누구나 한 번쯤 악성 댓글 때문에 지친 경험이 있을 것입니다. 댓글창을 여는 것 자체가 두려운 날도 있고, 수천 개의 댓글 속에서 어디서부터 대응해야 할지 막막할 때도 있습니다. 이 문제를 AI로 해결하기 위해 Creator Hub를 만들었습니다.

Creator Hub는 YouTube 영상 URL 하나만 입력하면 댓글 수집부터 AI 분석, 리포트 생성까지 전 과정을 자동화하는 서비스입니다. Google Gemini AI와 한국어 특화 규칙 엔진을 결합하여, 기존 필터로는 탐지하기 어려운 한국어 악성 댓글까지 정확하게 식별합니다. 이 글에서는 서비스의 기획 배경부터 핵심 기술 구현까지 전체 과정을 소개합니다.
한국콘텐츠진흥원 조사에 따르면, 한국 크리에이터의 68%가 악성 댓글로 인한 정신적 스트레스를 경험하고 있습니다. K-POP 아이돌과 인플루언서를 대상으로 한 사이버 불링은 이미 심각한 사회 문제로 대두되었고, 수천에서 수만 개에 달하는 댓글을 수동으로 모니터링하는 것은 현실적으로 불가능합니다.
기존 댓글 필터링 도구들은 대부분 영어 기반의 단순 키워드 매칭에 의존합니다. 하지만 한국어 인터넷 문화에는 이런 방식으로 탐지할 수 없는 고유한 패턴이 존재합니다.
이런 배경에서 Creator Hub는 Google Gemini Hackathon의 K-POP × Social Good × AI 카테고리 출품작으로 기획되었습니다. 한국어 맥락을 깊이 이해하고, 크리에이터에게 실질적인 대응 방안까지 제시하는 것이 핵심 목표입니다.
Creator Hub의 사용 흐름은 단순합니다.
YouTube URL 입력
│
▼
댓글 수집 (YouTube Data API v3, 최대 100개)
│
▼
이중 분석 (Rule 엔진 + Gemini AI)
│
▼
결과 대시보드 (독성 점수, 카테고리 분포, 대응 제안, AI 인사이트)
분석 결과는 고유 URL로 생성되어 팀이나 소속사와 공유할 수 있습니다. API 키는 서버에 영구 저장되지 않으며, 사용자가 직접 관리합니다.
Creator Hub는 프론트엔드와 백엔드를 모두 포함하는 풀스택 서비스입니다.
프론트엔드는 Next.js 16(App Router), React 19, TypeScript, Tailwind CSS v4, Framer Motion으로 구성됩니다. 백엔드는 FastAPI, LangGraph, LangChain, Gemini 2.5 Flash, Pydantic v2, Python 3.12+를 사용합니다. 외부 API로는 YouTube Data API v3, YouTube Transcript API, Google Gemini API를 연동합니다.
왜 Next.js 16인가: App Router의 서버 컴포넌트로 초기 로딩 성능을 최적화하고, API Routes로 프론트엔드와 백엔드를 단일 프로젝트에서 관리할 수 있어 해커톤 환경에서의 빠른 프로토타이핑에 최적이었습니다.
왜 LangGraph인가: 분석 파이프라인의 각 단계(수집 → 필터링 → 분석 → 검증)를 독립 노드로 분리하고, 조건부 분기(안전한 댓글은 AI 호출 스킵)를 선언적으로 정의할 수 있습니다. 상태 머신 기반으로 에러 핸들링과 폴백 로직도 깔끔하게 구현됩니다.
Creator Hub의 가장 중요한 기술적 차별점은 Rule 엔진과 Gemini AI를 결합한 이중 분석 파이프라인입니다.
두 계층은 서로 다른 강점을 갖습니다.
Rule 엔진은 밀리초 단위로 동작하고 API 비용이 없으며, 명확한 패턴(초성 욕설, 변형 욕설 등)에 대해 높은 정확도를 보입니다. 단, 반어법이나 맥락 의존 표현은 탐지할 수 없습니다.
Gemini AI는 문맥 이해, 반어법·은유 탐지, 문화적 맥락 파악이 가능합니다. 단, API 비용이 발생하고 응답에 수 초가 소요됩니다.
이 둘을 조합하면 정확도를 유지하면서 API 비용을 40~60% 절감할 수 있습니다. 일반적인 YouTube 영상에서 댓글의 40~60%는 건전한 내용입니다. Rule 엔진이 이런 댓글을 사전에 걸러내면, 100개 댓글 기준 100번 대신 40~60번만 Gemini API를 호출하게 됩니다.
[1] fetch_transcript ── YouTube 자막 수집 (한국어 우선)
│
[2] fetch_comments ─── YouTube Data API v3, 최대 100개, 관련도순
│
[3] prescreen ─────── Rule Engine (15개 정규식 규칙)
│
├─ score < 20 (safe, 40~60%)
│ → LLM 호출 없이 바로 validate
│
└─ score ≥ 20 (suspect, 40~60%)
│
[4] analyze ──────── Gemini LLM
│ 자막 맥락 + 댓글, 구조화 JSON 출력
│
[5] validate ─────── 교차검증 + 최종 태깅
최종 점수: AI×0.7 + Rule×0.3
카테고리: AI + Rule의 Union
같은 "빨갱이"라는 단어도 정치 토론 영상에서는 인용이지만, 아이돌 무비에서는 혐오 표현입니다. Gemini에게 영상 자막을 맥락으로 제공함으로써 이런 판단이 가능해집니다.
자막이 긴 경우에는 최대 2000자로 제한하되, 3등분 균등 샘플링을 적용합니다. 앞 1/3(도입부), 중간 1/3(핵심 내용), 끝 1/3(마무리)을 균등하게 가져오는 것은 댓글이 영상 중반~후반 내용에 반응하는 경우가 많기 때문입니다. 앞부분만 잘라내면 핵심 내용과 결론이 누락됩니다.
korean_profanity.py)15개의 정규식 규칙이 10개 카테고리를 커버합니다.
| 규칙 | 탐지 방식 | 예시 |
|---|---|---|
| 초성 욕설 | 한글 자모 조합 정규식 | ㅅㅂ, ㅈㄹ, ㄱㅅㄲ |
| 변형 욕설 | 숫자/영문 혼합 패턴 | 시1발, 씨빠, ㅂr보 |
| 반어법/비꼼 | ㅋ 반복(10개+) + 물결(~) 패턴 | "잘하신다~ㅋㅋㅋ" |
| 위협 표현 | 폭력/신상 관련 키워드 | 죽어, 찾아간다, 신상 |
| 팬덤갈등 | K-POP 팬덤 용어 | 빠순이, 사생팬, 탈덕 |
| 성별혐오 | 성별 비하 표현 | 한남충, 김치녀 |
| 광고/스팸 | URL 패턴 + 홍보 키워드 | 링크, 구독해주세요 |
오탐 방지 메커니즘도 구현되어 있습니다. "죽어도 안 해"는 관용구이므로 THREAT에서 제외하고, "한남동"은 지명이므로 HATE_SPEECH에서 제외합니다. 또한 ㅋ 5개는 일반적인 웃음이지만 10개 이상이면 조롱으로 분류합니다.
Gemini AI는 Rule이 잡지 못하는 맥락 의존적 표현을 담당합니다. 영상 자막을 맥락으로 제공하여 댓글의 의도를 파악하고, 성적 대상화(SEXUAL)처럼 Rule 엔진에 규칙이 없는 카테고리도 탐지합니다.
Creator Hub는 단순한 긍정/부정 분류가 아닌, 5대 도메인 → 10개 세분화 카테고리 구조로 악성 댓글을 분류합니다.
VERBAL_ABUSE (언어적 폭력)
└── PROFANITY ──────────── 욕설/비속어
PERSONAL_TARGETING (개인 공격)
├── BLAME ──────────────── 비난/비방
├── MOCKERY ────────────── 조롱/비꼼
└── PERSONAL_ATTACK ────── 인신공격
GROUP_TARGETING (집단 공격)
├── HATE_SPEECH ────────── 혐오 표현
├── DISCRIMINATION ─────── 차별
└── FAN_WAR ────────────── 팬덤 갈등/안티
BEHAVIORAL (위협적 행동)
├── THREAT ─────────────── 위협/협박
└── SEXUAL ─────────────── 성희롱
CONTENT_ABUSE (콘텐츠 악용)
└── SPAM ───────────────── 스팸/광고
하나의 댓글에 여러 카테고리가 동시에 탐지될 경우 심각도가 추가로 상승합니다. 예를 들어 "ㅅㅂ 찾아간다"는 PROFANITY(35점) + THREAT(65점)가 결합되어 AMPLIFIES 보너스(+20)가 적용되고, 최종 점수는 85점(critical)이 됩니다.
독성 수준은 0~100점을 기준으로 safe(0~19), mild(20~39), moderate(40~59), severe(60~79), critical(80~100)의 5단계로 구분됩니다.
suspect 댓글에 대해 Rule과 LLM 결과를 합산하는 공식은 다음과 같습니다.
AI 70% / Rule 30%인 이유: Gemini는 문맥과 반어법을 이해하므로 주도적 역할을 맡고, Rule은 명확한 패턴에 대한 확실성을 30% 반영합니다.
AI 하한선 보장이 필요한 이유도 있습니다. Rule 점수가 0인데 AI가 80점이면, 단순 가중합산은 이 됩니다. 하한선이 없으면 AI가 "매우 위험"으로 판단한 댓글이 moderate로 하향되는 문제가 생깁니다. 으로 보정하여 AI 판단이 크게 깎이지 않도록 합니다.
카테고리는 로 합산합니다. AI 카테고리를 우선 배치하고 Rule이 추가로 잡은 카테고리를 뒤에 붙인 뒤 중복을 제거합니다.
몇 가지 구체적인 예시로 로직을 확인할 수 있습니다.
| 댓글 | Rule | AI | 최종 |
|---|---|---|---|
| "ㅅㅂ 진짜 못하네" | score=35, [PROFANITY] | score=55, [PROFANITY, BLAME] | score=49, moderate |
| "와 잘하신다~ㅋㅋ" | score=30, [MOCKERY] | score=45, [MOCKERY] | score=41, moderate |
| "영상 잘 봤습니다" | score=0 (safe → LLM 스킵) | — | score=0, safe |
| "죽여버린다 ㅋㅋ" | score=65, [THREAT] | score=75, [THREAT, MOCKERY] | score=72, severe |
| "몸매 ㄷㄷ 직캠 더" | score=0 (Rule 규칙 없음) | score=60, [SEXUAL] | score=50, moderate |
Gemini AI의 분석 품질은 프롬프트에 크게 좌우됩니다. Creator Hub는 프롬프트를 코드에서 완전히 분리하여 .md 파일로 관리합니다.
prompts/templates/
├── comment_tagging_system.md ← 시스템 프롬프트 (82줄)
├── comment_analysis_user.md ← 유저 프롬프트 (자막 맥락 포함)
└── comment_analysis_user_no_context.md ← 유저 프롬프트 (맥락 없음)
시스템 프롬프트는 역할 정의, 10개 카테고리의 정확한 범위와 구분 기준, 한국어 특화 규칙(초성 욕설·변형 패턴·반어법 탐지 지침), 점수 부여 기준, 구조화 출력 스키마로 구성됩니다.
Gemini의 출력은 Pydantic 모델(CommentTagging)로 강제된 JSON 형식입니다.
{
"toxicity_score": 55,
"toxicity_level": "moderate",
"categories": ["PROFANITY", "BLAME"],
"explanation": "초성 욕설(ㅅㅂ)과 능력 비하가 결합된 악성 댓글",
"suggestion": "댓글 숨기기를 권장합니다"
}
프롬프트를 .md 파일로 분리하면 코드 수정 없이 프롬프트 튜닝이 가능하며, LRU 캐시로 템플릿 파일을 메모리에 올려두어 I/O 오버헤드도 줄입니다.
분석이 완료되면 /result/[id] 페이지에서 다음 정보를 확인할 수 있습니다.
K-POP 뮤직비디오를 분석한 데모 결과 예시는 다음과 같습니다. 전체 독성 점수 35/100(mild), 카테고리 분포로 FAN_WAR 8건·MOCKERY 5건·PERSONAL_ATTACK 3건이 탐지되었으며, AI 인사이트로 "팬덤 갈등 댓글이 주를 이루며, 특정 멤버에 대한 인신공격이 발견됩니다"가 생성되었습니다.
Creator Hub는 크리에이터의 악성 댓글 모니터링 시간을 90% 절감하고, 건강한 댓글 문화 조성에 기여하는 것을 목표로 합니다. K-POP 소속사 입장에서는 아이돌 온라인 평판 관리 도구로 활용 가능하며, 사이버 불링 조기 탐지 및 대응 체계로서의 사회적 가치도 있습니다.
향후 로드맵으로는 현재 인메모리 저장소를 Vercel KV/Firebase로 전환하는 영구 저장소 구현, 채널 단위 전체 영상 댓글 일괄 분석, 신규 댓글 자동 감지 알림 시스템, 일본어·영어 다국어 확장, PDF/CSV 리포트 내보내기를 계획하고 있습니다.
Creator Hub는 한국어의 복잡한 인터넷 언어 문화를 AI가 얼마나 정확하게 이해할 수 있는지에 대한 도전이기도 합니다. Rule 엔진으로 비용 효율성을 확보하고, Gemini AI로 맥락적 정확도를 높이는 이중 파이프라인 구조는 이 문제에 대한 실용적인 답입니다.
댓글 분석이라는 좁은 문제에서 출발했지만, 한국어 특화 텍스트 분류·온톨로지 설계·프롬프트 엔지니어링에 관심 있는 분들에게도 참고가 될 수 있는 프로젝트라고 생각합니다.
읽어주셔서 감사합니다 🐾