YouTube ๊ตฌ๋ ์ฑ๋์ AI๋ก ์๋ ๋ถ๋ฅํ๊ณ ์ต๊ทผ 3์ผ ์์์ ํ๋์ ๋ณด์ฌ์ฃผ๋ ์น ์ฑ.
- Google OAuth ๋ก๊ทธ์ธ โ YouTube ๊ตฌ๋ ๊ถํ ํฌํจ
- AI ์นดํ ๊ณ ๋ฆฌ ๋ถ๋ฅ โ Gemini๊ฐ ์ฑ๋์ ๊ณ์ธตํ ์นดํ ๊ณ ๋ฆฌ๋ก ์๋ ๋ถ๋ฅ (์: IT/Tech > AI)
- ์ต๊ทผ 3์ผ ์์ โ ๊ตฌ๋ ๋๊ธฐํ ์ ์ต๊ทผ 3์ผ ์์ ์๋ ์์ง
- ๊ณ์ธตํ ์ฌ์ด๋๋ฐ โ ๋ถ๋ชจ/์์ ์นดํ ๊ณ ๋ฆฌ, ์ฑ๋ ์ ํ์, ์ ๊ธฐ/ํผ์น๊ธฐ
- ์ฑ๋ ๋ฐ๋ก๊ฐ๊ธฐ โ ์ฑ๋๋ช ํด๋ฆญ ์ YouTube ์ ํญ ์คํ
| ๊ตฌ๋ถ | ๊ธฐ์ |
|---|---|
| ํ๋ฐํธ์๋ | Next.js 16, TypeScript, Tailwind CSS, NextAuth |
| ๋ฐฑ์๋ | FastAPI, Python 3.11+, SQLite / Turso |
| AI | Google Gemini (gemini-3-flash-preview) |
| ์ธ์ฆ | Google OAuth 2.0 (youtube.readonly) |
- Python 3.11+
- Node.js 18+
- Google Cloud ํ๋ก์ ํธ (OAuth 2.0 ํด๋ผ์ด์ธํธ + YouTube Data API v3 ํ์ฑํ)
- Gemini API ํค (์ ๋ฃ ํฐ์ด ๊ถ์ฅ)
cd backend
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txtbackend/.env ํ์ผ ์์ฑ:
GOOGLE_CLIENT_ID=your_client_id
GOOGLE_CLIENT_SECRET=your_client_secret
GEMINI_API_KEY=your_gemini_key
JWT_SECRET_KEY=your_random_secret_32chars
NEXTAUTH_SYNC_SECRET=your_sync_secret
DATABASE_URL=sqlite:///./tubedigest.db์คํ:
uvicorn main:app --port 8003cd frontend
npm installfrontend/.env.local ํ์ผ ์์ฑ:
GOOGLE_CLIENT_ID=your_client_id
GOOGLE_CLIENT_SECRET=your_client_secret
NEXTAUTH_SECRET=your_nextauth_secret
NEXTAUTH_URL=http://localhost:3000
NEXT_PUBLIC_API_URL=http://localhost:8003
NEXTAUTH_SYNC_SECRET=your_sync_secret์คํ:
npm run dev- OAuth 2.0 ํด๋ผ์ด์ธํธ ์์ฑ (์น ์ ํ๋ฆฌ์ผ์ด์ )
- ์น์ธ๋ ๋ฆฌ๋๋ ์
URI:
http://localhost:3000/api/auth/callback/google - YouTube Data API v3 ํ์ฑํ
- OAuth ๋์ ํ๋ฉด โ ํ ์คํธ ์ฌ์ฉ์ ์ถ๊ฐ
http://localhost:3000์ ์- Google๋ก ๋ก๊ทธ์ธ ํด๋ฆญ
- ๊ตฌ๋ ๋๊ธฐํ ๋ฒํผ ํด๋ฆญ โ Gemini AI๊ฐ ์ฑ๋ ๋ถ๋ฅ + ์ต๊ทผ ์์ ์์ง
- ์ข์ธก ์นดํ ๊ณ ๋ฆฌ ์ฌ์ด๋๋ฐ์์ ์ํ๋ ์นดํ ๊ณ ๋ฆฌ ์ ํ
TubeDigest/
โโโ backend/ # FastAPI ๋ฐฑ์๋
โโโ frontend/ # Next.js ํ๋ฐํธ์๋
โโโ docs/
โ โโโ PROGRESS.md # ๊ฐ๋ฐ ์งํ ์ด๋ ฅ
โโโ CHANGELOG.md # ๋ณ๊ฒฝ ์ด๋ ฅ
โโโ CLAUDE.md # AI ๊ฐ๋ฐ ๊ฐ์ด๋
โโโ README.md
CHANGELOG.md ์ฐธ์กฐ
docs/PROGRESS.md ์ฐธ์กฐ