[Gemini ํด์ปคํค] Creator Hub: AI๋ก YouTube ์ ์ฑ ๋๊ธ์ ์๋ ๋ถ์ํ๋ ํ์คํ ์๋น์ค
์ง๋ 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 ์์ด๋๊ณผ ์ธํ๋ฃจ์ธ์๋ฅผ ๋์์ผ๋ก ํ ์ฌ์ด๋ฒ ๋ถ๋ง์ ์ด๋ฏธ ์ฌ๊ฐํ ์ฌํ ๋ฌธ์ ๋ก ๋๋๋์๊ณ , ์์ฒ์์ ์๋ง ๊ฐ์ ๋ฌํ๋ ๋๊ธ์ ์๋์ผ๋ก ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๊ธฐ์กด ๋๊ธ ํํฐ๋ง ๋๊ตฌ๋ค์ ๋๋ถ๋ถ ์์ด ๊ธฐ๋ฐ์ ๋จ์ ํค์๋ ๋งค์นญ์ ์์กดํฉ๋๋ค. ํ์ง๋ง ํ๊ตญ์ด ์ธํฐ๋ท ๋ฌธํ์๋ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ํ์งํ ์ ์๋ ๊ณ ์ ํ ํจํด์ด ์กด์ฌํฉ๋๋ค.
- ์ด์ฑ ์์ค: โใ ใ โ, โใ ในโ โ ์์๋ง์ผ๋ก ์์ค์ ํํ
- ๋ณํ ์์ค: โ์1๋ฐโ, โ์จ๋น โ, โใ r๋ณดโ โ ์ซ์๋ ์๋ฌธ์ ์์ด ํํฐ ํํผ
- ๋ฐ์ด๋ฒ/๋๋ ค๊น๊ธฐ: โ์ ์ง์ง ์ํ์ ๋ค~ใ ใ โ โ ํ๋ฉด์ ์ผ๋ก๋ ์นญ์ฐฌ์ด์ง๋ง ์ค์ ๋ก๋ ์กฐ๋กฑ
- K-POP ํฌ๋ค ์์ด: โ๋น ์์ดโ, โ์ฌ์ํฌโ, โํ๋โ โ ํน์ ๋ฌธํ๊ถ์์๋ง ํต์ฉ๋๋ ๊ณต๊ฒฉ ํํ
์ด๋ฐ ๋ฐฐ๊ฒฝ์์ Creator Hub๋ Google Gemini Hackathon์ K-POP ร Social Good ร AI ์นดํ ๊ณ ๋ฆฌ ์ถํ์์ผ๋ก ๊ธฐํ๋์์ต๋๋ค. ํ๊ตญ์ด ๋งฅ๋ฝ์ ๊น์ด ์ดํดํ๊ณ , ํฌ๋ฆฌ์์ดํฐ์๊ฒ ์ค์ง์ ์ธ ๋์ ๋ฐฉ์๊น์ง ์ ์ํ๋ ๊ฒ์ด ํต์ฌ ๋ชฉํ์ ๋๋ค.
์๋น์ค ํ๋์ ๋ณด๊ธฐ
Creator Hub์ ์ฌ์ฉ ํ๋ฆ์ ๋จ์ํฉ๋๋ค.
1
2
3
4
5
6
7
8
9
10
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[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(๋ง๋ฌด๋ฆฌ)์ ๊ท ๋ฑํ๊ฒ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๊ธ์ด ์์ ์ค๋ฐ~ํ๋ฐ ๋ด์ฉ์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋ถ๋ถ๋ง ์๋ผ๋ด๋ฉด ํต์ฌ ๋ด์ฉ๊ณผ ๊ฒฐ๋ก ์ด ๋๋ฝ๋ฉ๋๋ค.
ํ๊ตญ์ด ์ ์ฑ ๋๊ธ ํ์ง์ ์ด๋ ค์๊ณผ ํด๊ฒฐ
Rule ์์ง (korean_profanity.py)
15๊ฐ์ ์ ๊ท์ ๊ท์น์ด 10๊ฐ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ปค๋ฒํฉ๋๋ค.
| ๊ท์น | ํ์ง ๋ฐฉ์ | ์์ |
|---|---|---|
| ์ด์ฑ ์์ค | ํ๊ธ ์๋ชจ ์กฐํฉ ์ ๊ท์ | ใ ใ , ใ ใน, ใฑใ ใฒ |
| ๋ณํ ์์ค | ์ซ์/์๋ฌธ ํผํฉ ํจํด | ์1๋ฐ, ์จ๋น , ใ r๋ณด |
| ๋ฐ์ด๋ฒ/๋น๊ผผ | ใ ๋ฐ๋ณต(10๊ฐ+) + ๋ฌผ๊ฒฐ(~) ํจํด | โ์ํ์ ๋ค~ใ ใ ใ โ |
| ์ํ ํํ | ํญ๋ ฅ/์ ์ ๊ด๋ จ ํค์๋ | ์ฃฝ์ด, ์ฐพ์๊ฐ๋ค, ์ ์ |
| ํฌ๋ค๊ฐ๋ฑ | K-POP ํฌ๋ค ์ฉ์ด | ๋น ์์ด, ์ฌ์ํฌ, ํ๋ |
| ์ฑ๋ณํ์ค | ์ฑ๋ณ ๋นํ ํํ | ํ๋จ์ถฉ, ๊น์น๋ |
| ๊ด๊ณ /์คํธ | URL ํจํด + ํ๋ณด ํค์๋ | ๋งํฌ, ๊ตฌ๋ ํด์ฃผ์ธ์ |
์คํ ๋ฐฉ์ง ๋ฉ์ปค๋์ฆ๋ ๊ตฌํ๋์ด ์์ต๋๋ค. โ์ฃฝ์ด๋ ์ ํดโ๋ ๊ด์ฉ๊ตฌ์ด๋ฏ๋ก THREAT์์ ์ ์ธํ๊ณ , โํ๋จ๋โ์ ์ง๋ช ์ด๋ฏ๋ก HATE_SPEECH์์ ์ ์ธํฉ๋๋ค. ๋ํ ใ 5๊ฐ๋ ์ผ๋ฐ์ ์ธ ์์์ด์ง๋ง 10๊ฐ ์ด์์ด๋ฉด ์กฐ๋กฑ์ผ๋ก ๋ถ๋ฅํฉ๋๋ค.
Gemini AI๋ Rule์ด ์ก์ง ๋ชปํ๋ ๋งฅ๋ฝ ์์กด์ ํํ์ ๋ด๋นํฉ๋๋ค. ์์ ์๋ง์ ๋งฅ๋ฝ์ผ๋ก ์ ๊ณตํ์ฌ ๋๊ธ์ ์๋๋ฅผ ํ์ ํ๊ณ , ์ฑ์ ๋์ํ(SEXUAL)์ฒ๋ผ Rule ์์ง์ ๊ท์น์ด ์๋ ์นดํ ๊ณ ๋ฆฌ๋ ํ์งํฉ๋๋ค.
10๋ ๋ ์ฑ ์นดํ ๊ณ ๋ฆฌ ๋ถ๋ฅ ์ฒด๊ณ
Creator Hub๋ ๋จ์ํ ๊ธ์ /๋ถ์ ๋ถ๋ฅ๊ฐ ์๋, 5๋ ๋๋ฉ์ธ โ 10๊ฐ ์ธ๋ถํ ์นดํ ๊ณ ๋ฆฌ ๊ตฌ์กฐ๋ก ์ ์ฑ ๋๊ธ์ ๋ถ๋ฅํฉ๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 ๊ฒฐ๊ณผ๋ฅผ ํฉ์ฐํ๋ ๊ณต์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
merged_score=round(ai_scoreร0.7+rule_scoreร0.3)\text{merged\_score} = \text{round}(\text{ai\_score} \times 0.7 + \text{rule\_score} \times 0.3)merged_score=round(ai_scoreร0.7+rule_scoreร0.3)
final_score=minโก(maxโก(merged_score,ย ai_scoreโ10),ย 100)\text{final\_score} = \min(\max(\text{merged\_score},\ \text{ai\_score} - 10),\ 100)final_score=min(max(merged_score,ย ai_scoreโ10),ย 100)
AI 70% / Rule 30%์ธ ์ด์ : Gemini๋ ๋ฌธ๋งฅ๊ณผ ๋ฐ์ด๋ฒ์ ์ดํดํ๋ฏ๋ก ์ฃผ๋์ ์ญํ ์ ๋งก๊ณ , Rule์ ๋ช ํํ ํจํด์ ๋ํ ํ์ค์ฑ์ 30% ๋ฐ์ํฉ๋๋ค.
AI ํํ์ ๋ณด์ฅ์ด ํ์ํ ์ด์ ๋ ์์ต๋๋ค. Rule ์ ์๊ฐ 0์ธ๋ฐ AI๊ฐ 80์ ์ด๋ฉด, ๋จ์ ๊ฐ์คํฉ์ฐ์ 80ร0.7+0ร0.3=5680 \times 0.7 + 0 \times 0.3 = 5680ร0.7+0ร0.3=56์ด ๋ฉ๋๋ค. ํํ์ ์ด ์์ผ๋ฉด AI๊ฐ โ๋งค์ฐ ์ํโ์ผ๋ก ํ๋จํ ๋๊ธ์ด moderate๋ก ํํฅ๋๋ ๋ฌธ์ ๊ฐ ์๊น๋๋ค. maxโก(56,80โ10)=70\max(56, 80-10) = 70max(56,80โ10)=70์ผ๋ก ๋ณด์ ํ์ฌ AI ํ๋จ์ด ํฌ๊ฒ ๊น์ด์ง ์๋๋ก ํฉ๋๋ค.
์นดํ ๊ณ ๋ฆฌ๋ final_categories=unique(ai_categoriesโชrule_categories)\text{final\_categories} = \text{unique}(\text{ai\_categories} \cup \text{rule\_categories})final_categories=unique(ai_categoriesโชrule_categories)๋ก ํฉ์ฐํฉ๋๋ค. 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 ํ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
1
2
3
4
prompts/templates/
โโโ comment_tagging_system.md โ ์์คํ
ํ๋กฌํํธ (82์ค)
โโโ comment_analysis_user.md โ ์ ์ ํ๋กฌํํธ (์๋ง ๋งฅ๋ฝ ํฌํจ)
โโโ comment_analysis_user_no_context.md โ ์ ์ ํ๋กฌํํธ (๋งฅ๋ฝ ์์)
์์คํ ํ๋กฌํํธ๋ ์ญํ ์ ์, 10๊ฐ ์นดํ ๊ณ ๋ฆฌ์ ์ ํํ ๋ฒ์์ ๊ตฌ๋ถ ๊ธฐ์ค, ํ๊ตญ์ด ํนํ ๊ท์น(์ด์ฑ ์์คยท๋ณํ ํจํดยท๋ฐ์ด๋ฒ ํ์ง ์ง์นจ), ์ ์ ๋ถ์ฌ ๊ธฐ์ค, ๊ตฌ์กฐํ ์ถ๋ ฅ ์คํค๋ง๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
Gemini์ ์ถ๋ ฅ์ Pydantic ๋ชจ๋ธ(CommentTagging)๋ก ๊ฐ์ ๋ JSON ํ์์
๋๋ค.
1
2
3
4
5
6
7
{
"toxicity_score": 55,
"toxicity_level": "moderate",
"categories": ["PROFANITY", "BLAME"],
"explanation": "์ด์ฑ ์์ค(ใ
ใ
)๊ณผ ๋ฅ๋ ฅ ๋นํ๊ฐ ๊ฒฐํฉ๋ ์
์ฑ ๋๊ธ",
"suggestion": "๋๊ธ ์จ๊ธฐ๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค"
}
ํ๋กฌํํธ๋ฅผ .md ํ์ผ๋ก ๋ถ๋ฆฌํ๋ฉด ์ฝ๋ ์์ ์์ด ํ๋กฌํํธ ํ๋์ด ๊ฐ๋ฅํ๋ฉฐ, LRU ์บ์๋ก ํ
ํ๋ฆฟ ํ์ผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋์ด I/O ์ค๋ฒํค๋๋ ์ค์
๋๋ค.
๊ฒฐ๊ณผ ๋์๋ณด๋
๋ถ์์ด ์๋ฃ๋๋ฉด /result/[id] ํ์ด์ง์์ ๋ค์ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ScoreGauge: SVG ๊ธฐ๋ฐ ๋ฐ์ ๊ฒ์ด์ง๋ก ์ ์ฒด ๋ ์ฑ ์ ์(0~100)๋ฅผ ์๊ฐํ. Framer Motion์ผ๋ก ์ ์๊ฐ ์ฌ๋ผ๊ฐ๋ ์ ๋๋ฉ์ด์ ์ ๊ตฌํํฉ๋๋ค.
- CategoryChart: 10๊ฐ ์นดํ ๊ณ ๋ฆฌ๋ณ ๋ถํฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋๋ ์ฐจํธ.
- CommentCard: ๊ฐ ์ ์ฑ ๋๊ธ์ ๋ ์ฑ ์ ์ ํ๋ก๊ทธ๋ ์ค ๋ฐ, ์นดํ ๊ณ ๋ฆฌ ๋ฑ์ง, AI ์ค๋ช , ๋์ ์ ์์ ํฌํจํฉ๋๋ค.
- AI ์ธ์ฌ์ดํธ: Gemini๊ฐ ์์ฑํ ์ ์ฒด ๋๊ธ ๋ถ์๊ธฐ ์ข ํฉ ๋ถ์ ํ ์คํธ.
- ShareButton: ๊ณ ์ URL๋ก ํ/์์์ฌ์ ๋ฆฌํฌํธ๋ฅผ ๊ณต์ ํฉ๋๋ค.
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๋ก ๋งฅ๋ฝ์ ์ ํ๋๋ฅผ ๋์ด๋ ์ด์ค ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ๋ ์ด ๋ฌธ์ ์ ๋ํ ์ค์ฉ์ ์ธ ๋ต์ ๋๋ค.
๋๊ธ ๋ถ์์ด๋ผ๋ ์ข์ ๋ฌธ์ ์์ ์ถ๋ฐํ์ง๋ง, ํ๊ตญ์ด ํนํ ํ ์คํธ ๋ถ๋ฅยท์จํจ๋ก์ง ์ค๊ณยทํ๋กฌํํธ ์์ง๋์ด๋ง์ ๊ด์ฌ ์๋ ๋ถ๋ค์๊ฒ๋ ์ฐธ๊ณ ๊ฐ ๋ ์ ์๋ ํ๋ก์ ํธ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ๐พ