브라우저에서 영상을 업로드하면 자막 교정 · 장면 분석 · 금칙 검수를 거쳐 검색 가능한 영속 아카이브로 색인하는 웹서비스입니다.
- 🎬 브라우저 업로드 + 실시간 진행률 프로그래스 바
- 🧠 OpenAI GPT-5.5 — 자막 교정 / 장면 분석(Vision) / 금칙 검수(Vision) / 자연어 쿼리 분해
- 🔢 임베딩
text-embedding-3-small - 💾 이중 저장: SQLite(FTS5 전문검색) + ChromaDB(벡터, 영속)
- 🔍 하이브리드 검색 4종 모드:
hybrid | keyword | vector | filter - ⭐ 결과마다 출처(keyword/vector/both)와 "왜 나왔는지" 설명 반환
- 📄 영상별 운영 절차서(.md) 자동 생성
- 📨 텔레그램 색인 완료 알림
영상을 업로드하면 진행률 바와 함께 색인되고, 아카이브 목록에 금칙 검수 결과·운영절차서 링크가 표시됩니다.
검색 결과마다 분석 당시 캡쳐한 프레임 썸네일, 출처 배지(keyword/vector/both), 그리고 "왜 나왔는지" 설명이 함께 표시됩니다.
위 스크린샷은 개인정보 보호를 위해 합성 테스트 영상(컬러바/테스트 패턴)으로 생성한 것입니다.
- 결과 영속 —
data/하위 파일(SQLite·Chroma·업로드·절차서)로 재시작 후에도 유지 - API 키/토큰은
.env에서만 로드 - 한 단계가 실패해도 가능한 범위까지 색인 (
pipeline._safe단계별 try/except) - GPT/임베딩 호출 키는 사용 시점 지연 초기화 (
app/clients.py@lru_cache)
- ffmpeg / ffprobe 설치 및 PATH 등록 (프레임·오디오 추출에 필수)
- Windows:
winget install Gyan.FFmpeg또는 https://ffmpeg.org 다운로드
- Windows:
- Python 3.11+
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env # 그리고 .env 에 OPENAI_API_KEY 입력
python run.py브라우저에서 http://127.0.0.1:8000 접속.
app/
config.py 설정(경로/모델명) · 디렉터리 보장
clients.py OpenAI/Chroma 지연 초기화
database.py SQLite 스키마 + FTS5 + 조회
video.py ffmpeg 프레임/오디오 추출
analysis.py 전사·자막교정·장면분석·금칙검수 (GPT-5.5)
embeddings.py 임베딩 + Chroma 색인/질의
search.py 4모드 하이브리드 검색 + 출처/이유 설명
manual.py 운영 절차서(.md) 생성
notify.py 텔레그램 알림
progress.py 업로드/색인 진행 추적
pipeline.py 색인 오케스트레이션(부분 실패 허용)
main.py FastAPI 라우트
static/index.html 업로드 진행률 + 검색 UI
.env의GPT_MODEL/VISION_MODEL은 실제 사용 가능한 모델명으로 교체할 수 있습니다.- 비용 제어:
FRAME_INTERVAL_SECONDS,SCENE_MAX_FRAMES,PROHIBITED_MAX_FRAMES조정.

