Spaces:
Sleeping
Sleeping
metadata
title: YouTube Video Analyzer
emoji: ๐ฅ
colorFrom: blue
colorTo: purple
sdk: docker
pinned: false
license: mit
๐ฅ YouTube Video Analyzer
์ ํ๋ธ ์์์ ์๋ง์ ์ฃผ์ ๋ณ๋ก ๋ถ๋ฆฌํ๊ณ AI๋ก ์์ฝํ๋ ์๋น์ค์ ๋๋ค.
๐ ์ฃผ์ ๊ธฐ๋ฅ
1. ์ธ๊ทธ๋จผํธ ๋ถ๋ฆฌ
- ruptures PELT ์๊ณ ๋ฆฌ์ฆ: ํต๊ณ์ ๋ณํ์ ํ์ง๋ก ๋์ฃผ์ ๋ถ๋ฆฌ
- ์๋ฏธ ์ ์ฌ๋ ๋ถ์: Sentence Transformers๋ก ์์ฃผ์ ์ ๋ฐ ๋ถํ
- ํ์์คํฌํ ๋งคํ: ๊ฐ ์ธ๊ทธ๋จผํธ์ ์์ ์์ ์๊ฐ ์ ๊ณต
2. AI ์์ฝ
- Gemini 2.0 Flash Lite: Google์ ์ต์ ๊ฒฝ๋ AI ๋ชจ๋ธ ์ฌ์ฉ
- ์ฃผ์ ๋ผ๋ฒจ๋ง: 2-5๋จ์ด๋ก ํต์ฌ ์ฃผ์ ์ถ์ถ
- ์ค๋งํธ ํํฐ๋ง: ์๋ฏธ ์๋ ์งง์ ๋ฆฌ์ก์ ์๋ ์ ์ธ
๐ API ๋ฌธ์
์ด ์คํ์ด์ค๊ฐ ์คํ๋๋ฉด ์๋์ผ๋ก Swagger UI๊ฐ ์ ๊ณต๋ฉ๋๋ค:
- API ๋ฌธ์:
/docs - ํฌ์ค ์ฒดํฌ:
/health - API ์ ๋ณด:
/info
๐ฏ ์ฌ์ฉ ๋ฐฉ๋ฒ
GET ์์ฒญ ์์
/process?youtube_url=https://youtube.com/watch?v=VIDEO_ID&mode=summary&penalty=5.0&threshold=90&gemini_api_key=YOUR_KEY
POST ์์ฒญ ์์
{
"youtube_url": "https://youtube.com/watch?v=VIDEO_ID",
"mode": "summary",
"penalty": 5.0,
"threshold": 90,
"gemini_api_key": "your_gemini_api_key"
}
โ๏ธ ํ๋ผ๋ฏธํฐ ๊ฐ์ด๋
Penalty (๋์ฃผ์ ๋ถ๋ฆฌ)
- 1.0-3.0: ๋งค์ฐ ์ธ๋ฐํ ๋ถ๋ฆฌ (๋ง์ ์ฃผ์ )
- 5.0: ๊ท ํ์กํ ๋ถ๋ฆฌ (๊ธฐ๋ณธ๊ฐ)
- 7.0-10.0: ํฐ ์ฃผ์ ๋จ์ ๋ถ๋ฆฌ
- 15.0-30.0: ๋งค์ฐ ํฐ ๋ฉ์ด๋ฆฌ๋ก ๋ถ๋ฆฌ
Threshold (์์ฃผ์ ๋ถ๋ฆฌ)
- 70-80: ์ธ๋ฐํ ๋ถ๋ฆฌ
- 85-92: ๊ท ํ์กํ ๋ถ๋ฆฌ (๊ถ์ฅ)
- 90: ๊ธฐ๋ณธ๊ฐ
- 95-98: ํฐ ๋ฉ์ด๋ฆฌ ๋ถ๋ฆฌ
๐ง ๊ธฐ์ ์คํ
- youtube-transcript-api: ์๋ง ์ถ์ถ
- ruptures: ํต๊ณ์ ๋ณํ์ ํ์ง
- sentence-transformers: ๋ฌธ์ฅ ์๋ฒ ๋ฉ
- google-generativeai: AI ์์ฝ
- FastAPI: REST API ์๋ฒ
๐ง ๋ฌธ์ ํด๊ฒฐ
DNS/๋คํธ์ํฌ ์ค๋ฅ
ํ๊น ํ์ด์ค ์คํ์ด์ค ํ๊ฒฝ์์ ์ธ๋ถ ๋คํธ์ํฌ ์ ๊ทผ์ ์ ํ์ด ์์ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ:
- ์ฌ์๋ ๋ก์ง: ์ฝ๋์ ์๋ ์ฌ์๋ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์ต๋๋ค (์ต๋ 3ํ)
- ํ์์์: ๊ฐ ์๋๋ง๋ค ๋๊ธฐ ์๊ฐ์ด ์ฆ๊ฐํฉ๋๋ค (2์ด, 4์ด, 6์ด)
- ๋์: ๋ก์ปฌ์์ Docker๋ฅผ ์คํํ๊ฑฐ๋, ๋ค๋ฅธ ํด๋ผ์ฐ๋ ํ๊ฒฝ ์ฌ์ฉ
๋ก์ปฌ ์คํ ๋ฐฉ๋ฒ
# Docker๋ก ์คํ
docker build -t youtube-analyzer .
docker run -p 7860:7860 youtube-analyzer
# ๋๋ ์ง์ ์คํ
pip install -r requirements.txt
uvicorn app:app --host 0.0.0.0 --port 7860
๐ ๋ผ์ด์ ์ค
MIT License