YouTube 영상 URL 하나로 14가지 스타일의 고품질 콘텐츠를 자동 생성하는 AI 콘텐츠 엔진. 5개 AI 프로바이더(Gemini, DeepSeek, Zhipu GLM, Ollama, OpenRouter) 통합, 다국어(한/영/일) 지원, RAG 지식 참조, MCP 자동 발행, 팀 워크스페이스까지.
Flask + Next.js 풀스택 · LiteLLM 멀티프로바이더 · 323개 서비스 · 1,659개 테스트(99.94% pass)
- 14가지 출력 스타일 — 블로그+SEO, 요약, 튜토리얼, Q&A, 앱 아이디어, 요즘IT, 브런치, 네이버 인기글, SNS, 뉴스레터, 쇼노트, Shorts 클립, GEO(AI검색 최적화), AI 코스
- 5개 AI 프로바이더 — Gemini, DeepSeek, Zhipu GLM, Ollama(로컬), OpenRouter(2600+ 모델)
- 다국어 출력 — 한국어, 영어, 일본어
- 4단계 자막 폴백 — youtube-transcript-api → watch 페이지 파싱 → Supadata API → Whisper 로컬 음성인식
- 배치 처리 — 최대 10개 URL 동시 분석
- 멀티스타일 — 1 URL × N 스타일 동시 생성 (사용량 1회 차감)
- 캠페인 팩 — 블로그+SNS+뉴스레터 묶음 자동 생성
- 퓨전 분석 — 다중 소스 교차 분석 콘텐츠
- 파이프라인 자동화 — 자막 추출 → 생성 → SEO 최적화 (SSE 실시간 진행률)
- 소스 인용 모드 — 모든 주장에 [MM:SS] 타임스탬프 인용 + YouTube 링크 변환
- 챕터 자동 분할 — AI가 자막을 주제별 챕터로 분할
- 댓글 병렬 분석 — 메인 콘텐츠와 댓글 요약 동시 생성
- 플랫폼 리라이트 — Twitter/LinkedIn/Instagram/Threads 형식 변환
- 인라인 AI 편집 — 텍스트 선택 영역 부분 재생성 (축약/확장/톤변경/번역)
- 마인드맵 — 콘텐츠 → 마인드맵 마크다운 변환
- QA 게이트 — 발행 전 금칙어/구조/중복/링크 품질 검증
- MCP 자동 발행 — Naver Blog, WordPress 플러그인
- 예약 캘린더 — APScheduler 기반 예약 발행 + 캘린더 UI
- 발행 큐 — 인메모리 큐 + 재시도 정책 (3회, 지수 백오프)
- 팀 워크스페이스 — 멤버 관리 (Owner/Editor/Viewer) + 콘텐츠 승인 플로우
- 채널 모니터링 — YouTube 채널 신규 업로드 자동 감지 (30분 폴링)
- RAG 지식 참조 — ChromaDB 벡터 스토어, 파일 업로드 → 생성 시 자동 주입
- 웹 검색 보강 — Tavily API로 자막 내용을 웹 검색으로 보강
- 멀티에이전트 — Research → Writer → Editor → SEO 파이프라인
- 95개 텍스트 분석 서비스 — 가독성, 구조, 감정, NLP 분석
- 다중 내보내기 — DOCX, PDF, Markdown, TXT, ZIP(전체 패키지)
- 웹훅 알림 — 생성 완료 시 n8n/Make/Zapier 연동
- 외부 서비스 — Slack, Discord, RSS, GitHub 연동
- GraphQL API — 유연한 쿼리 지원
- Python 3.8+
- Node.js 18+
- AI Provider API 키 최소 하나
git clone https://github.com/inbeomheo/insight-engine.git
cd insight-engine
# 가상환경 (권장)
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS/Linux
# 의존성
pip install -r requirements.txt
cd frontend && npm install && cd ..cp .env.example .env.env에 최소 하나의 AI API 키를 설정하세요:
# 최소 하나 필수 — 설정된 프로바이더만 UI에 표시
GEMINI_API_KEY=AIza... # Google Gemini (기본 권장)
DEEPSEEK_API_KEY=sk-... # DeepSeek
ZAI_API_KEY=... # Zhipu AI (GLM)
OLLAMA_BASE_URL=http://localhost:11434 # Ollama (로컬, API 키 불필요)
OPENROUTER_API_KEY=sk-or-... # OpenRouter (2600+ 모델)
# 선택
YOUTUBE_API_KEY=... # 댓글 수집
SUPADATA_API_KEY=... # 자막 백업 서비스
TAVILY_API_KEY=... # 웹 검색 보강전체 환경변수 목록은 .env.example 참조
두 서버 모두 실행해야 합니다:
# 터미널 1 — 백엔드
python app.py # → http://localhost:5001
# 터미널 2 — 프론트엔드
cd frontend && npm run dev # → http://localhost:3000브라우저에서 http://localhost:3000 접속
┌───────────────────────────┐ ┌─────────────────────────┐
│ Next.js 16 Frontend │────▶│ Flask Backend │
│ React 19 + Tailwind v4 │ │ Port 5001 │
│ Zustand + TanStack Query │ │ │
│ Port 3000 │◀────│ LiteLLM Multi-Provider │
└───────────────────────────┘ └────────┬────────────────┘
│
┌──────────────────────┼──────────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ YouTube API │ │ AI Providers │ │ Supabase │
│ Transcript │ │ Gemini,DeepSeek│ │ Auth, DB │
│ Comments │ │ GLM,Ollama,OR │ │ Usage │
└─────────────┘ └──────────────┘ └──────────────┘
insight-engine/
├── app.py # Flask 진입점 (포트 5001)
├── config.py # 프로바이더/스타일/모디파이어 설정
├── requirements.txt # Python 의존성
├── .env.example # 환경변수 템플릿
│
├── routes/ # API 라우트 (13개 모듈)
│ ├── blog_routes.py # 콘텐츠 생성, 파이프라인, MCP, 예약
│ ├── auth_routes.py # 인증, API 키, 사용량, 워크스페이스
│ ├── advanced_routes.py # 멀티스타일, 퓨전, 리라이트, QA
│ ├── export_routes.py # DOCX/MD/TXT/ZIP 내보내기
│ ├── utility_routes.py # 헬스체크, 프로바이더, 캐시
│ ├── analytics_routes.py # 분석 대시보드
│ ├── graphql_routes.py # GraphQL API
│ ├── payment_routes.py # 결제/구독
│ └── ...
│
├── services/ # 비즈니스 로직 (23개 도메인, 323개 파일)
│ ├── core/ # AI, 콘텐츠, 파이프라인, 캐시
│ ├── analysis/ # 텍스트/NLP 분석 (95개)
│ ├── seo/ # SEO 최적화 (28개)
│ ├── quality/ # QA 검증 (14개)
│ ├── content/ # 인용, 리라이트, FAQ (27개)
│ ├── media/ # 이미지, TTS, 썸네일 (15개)
│ ├── transcript/ # Whisper, 챕터, 번역 (6개)
│ ├── agents/ # 멀티에이전트 파이프라인 (12개)
│ ├── analytics/ # 분석 대시보드 (17개)
│ ├── rag/ # ChromaDB 벡터 스토어 (9개)
│ ├── mcp/ # MCP 플러그인 (6개)
│ ├── platform/ # 웹훅, RSS, 채널 모니터링 (11개)
│ ├── data/ # Supabase, 스케줄, 알림 (33개)
│ ├── integrations/ # Slack, Discord (7개)
│ ├── payment/ # 결제/구독 (9개)
│ ├── export/ # DOCX, EPUB (5개)
│ ├── auth/ # 인증/OAuth (2개)
│ ├── usage/ # 사용량 관리 (5개)
│ ├── finetune/ # AI 파인튜닝 (3개)
│ └── exceptions/ # 에러 처리
│
├── prompts/ # 프롬프트 시스템 v3.4
│ ├── base.py # 기본 프롬프트 (Chain-of-Thought)
│ └── styles/ # 14개 UI 스타일 + 4개 내부 스타일
│
├── frontend/ # Next.js 16 + Tailwind v4 + shadcn
│ ├── app/ # App Router 페이지
│ ├── components/ # React 컴포넌트
│ ├── hooks/ # 커스텀 훅
│ ├── stores/ # Zustand 상태 관리
│ └── lib/ # API, 타입, 유틸
│
├── tests/ # 271개 단위 테스트 + E2E
│ ├── test_*.py # pytest 단위 테스트
│ ├── e2e/ # Playwright E2E
│ └── load/ # 부하 테스트
│
└── supabase/schema.sql # DB 스키마
| Provider | Models | Notes |
|---|---|---|
| Gemini (기본) | gemini-3.1-flash-lite | reasoning_effort 지원 |
| DeepSeek | deepseek-chat (V3), deepseek-reasoner (R1) | |
| Zhipu AI | GLM-4.7, GLM-4.5-Air | OpenAI 호환 API |
| Ollama (로컬) | llama3.2, mistral, gemma2 | API 키 불필요 |
| OpenRouter | 2600+ 모델 (Claude, GPT, Llama 등) | 단일 키로 모든 모델 접근 |
| Style | Description |
|---|---|
| Blog+SEO | 검색 최적화 블로그 포스트 |
| Summary | 핵심 요약 |
| Tutorial | 단계별 튜토리얼 |
| Q&A | 질문-답변 형식 |
| App Ideas | 앱/서비스 아이디어 도출 |
| YozmIT | IT 미디어 스타일 |
| Brunch | 에세이/칼럼 |
| Naver Popular | 네이버 인기글 스타일 |
| SNS Post | 소셜 미디어용 |
| Newsletter | 이메일 뉴스레터 |
| Show Notes | 팟캐스트 쇼노트 |
| Shorts Clip | 60초 Shorts 스크립트 (3-5개 클립) |
| GEO | AI 검색엔진 최적화 (citations, entity tags) |
| AI Course | 교육 코스 콘텐츠 |
각 스타일은 독립 프롬프트 + 최적화된 temperature/max_tokens 설정.
| Endpoint | Method | Description |
|---|---|---|
/generate |
POST | 단일 URL 콘텐츠 생성 |
/generate-batch |
POST | 다중 URL 배치 (최대 10개) |
/api/generate-multi |
POST | 1 URL × N 스타일 동시 생성 |
/api/generate-campaign |
POST | 캠페인 팩 생성 |
/api/pipeline |
POST | 파이프라인 자동화 (SSE) |
/api/rewrite |
POST | 플랫폼별 리라이트 |
/api/inline-edit |
POST | 인라인 AI 편집 |
| Endpoint | Method | Description |
|---|---|---|
/api/mindmap |
POST | 마인드맵 생성 |
/api/qa-check |
POST | QA 게이트 검증 |
/api/transcript/<id> |
GET | 자막 워크스페이스 |
/api/export/docx |
POST | DOCX 내보내기 |
/api/export/markdown |
POST | Markdown 내보내기 |
/api/export/zip |
POST | ZIP 패키지 (전체 포맷) |
| Endpoint | Method | Description |
|---|---|---|
/api/mcp/plugins |
GET | MCP 플러그인 목록 |
/api/mcp/publish |
POST | MCP 플러그인 발행 |
/api/schedule |
POST/GET/DELETE | 예약 발행 관리 |
/api/publish-queue |
POST/GET | 발행 큐 관리 |
/api/workspaces |
GET/POST | 워크스페이스 관리 |
| Endpoint | Method | Description |
|---|---|---|
/api/providers |
GET | 사용 가능한 AI 목록 |
/api/providers/validate |
POST | API 키 유효성 검증 |
/api/ollama/health |
GET | Ollama 상태 확인 |
/api/knowledge/upload |
POST | RAG 문서 업로드 |
/api/admin/dashboard |
GET | 운영 대시보드 |
| Variable | Provider | Get Key |
|---|---|---|
GEMINI_API_KEY |
Google Gemini | aistudio.google.com |
DEEPSEEK_API_KEY |
DeepSeek | platform.deepseek.com |
ZAI_API_KEY |
Zhipu AI (GLM) | open.bigmodel.cn |
OLLAMA_BASE_URL |
Ollama (로컬) | http://localhost:11434 |
OPENROUTER_API_KEY |
OpenRouter | openrouter.ai |
OPENAI_API_KEY |
OpenAI | platform.openai.com |
ANTHROPIC_API_KEY |
Anthropic | console.anthropic.com |
| Variable | Description |
|---|---|
YOUTUBE_API_KEY |
YouTube 댓글 수집 |
SUPADATA_API_KEY |
자막 백업 서비스 |
TAVILY_API_KEY |
웹 검색 보강 |
SUPABASE_URL + SUPABASE_ANON_KEY |
클라우드 DB/인증 |
WHISPER_ENABLED |
Whisper 자막 폴백 (true/false) |
RAG_ENABLED |
RAG 지식 참조 (true/false) |
WEBHOOK_URL + WEBHOOK_ENABLED |
웹훅 알림 |
REDIS_URL |
Rate Limiter 저장소 |
YT_HTTP_PROXY / YT_HTTPS_PROXY |
YouTube 차단 우회 프록시 |
전체 목록: .env.example
# 단위 테스트 (271개)
python -m pytest tests/ -v
# E2E 테스트 (Playwright)
cd tests/e2e && npx playwright test --workers=1
# 커버리지
python -m pytest tests/ --cov=. --cov-report=html
# 프론트엔드 타입 체크
cd frontend && npx tsc --noEmitdocker build -t insight-engine .
docker run -p 5001:5001 --env-file .env insight-engine- GitHub 저장소 연결
- Variables 탭에서 환경변수 설정
- 자동 배포
export FLASK_ENV=production
export FLASK_DEBUG=0
gunicorn app:app -b 0.0.0.0:5001| 문제 | 해결 |
|---|---|
| AI 서비스가 표시되지 않음 | .env에 해당 프로바이더 API 키 설정 확인 |
| YouTube 자막 수집 실패 | SUPADATA_API_KEY 설정 또는 프록시(YT_HTTP_PROXY) 사용 |
| 댓글이 수집되지 않음 | YOUTUBE_API_KEY 설정 + YouTube Data API v3 활성화 확인 |
| Ollama 연결 실패 | Ollama 서버 실행 확인 (ollama serve), URL 설정 확인 |
| 프론트엔드 빈 화면 | 백엔드(python app.py)가 실행 중인지 확인 |
Backend: Python 3.8+ · Flask 3.0 · LiteLLM · APScheduler · ChromaDB · faster-whisper · Supabase
Frontend: Next.js 16 · React 19 · TypeScript · Tailwind CSS v4 · Zustand · TanStack Query · shadcn/ui · Radix UI
Testing: pytest (271 tests) · Playwright E2E · MSW
MIT License