숭실대학교 Learning X(canvas.ssu.ac.kr) 강의 영상을 자동으로 재생·변환·요약하여 웹 대시보드에서 학기 / 과목 / 주차별 마크다운 형식으로 열람할 수 있는 개인 학습 서비스입니다.
로그인 (Learning X 계정)
└── 메인 대시보드
├── [자동 모드 ON/OFF 토글]
│ ├── (ON) 현재 재생 중인 강의 상태 표시
│ └── (ON) 다음 실행 스케줄 표시
└── 학기 선택 (예: 2026년 1학기 / 2026년 2학기)
└── 과목 목록
└── 주차별 강의 요약 (마크다운 렌더링)
강의 영상 백그라운드 재생 → Whisper STT → Gemini 요약 → 마크다운 저장 → 웹 열람
| 기능 | 설명 |
|---|---|
| LMS 연동 로그인 | Learning X 계정(학번/비밀번호)으로 인증 |
| 학기·과목·강의 스크래핑 | 로그인 후 전체 강의 목록 자동 수집 |
| 백그라운드 재생 | 영상·소리 출력 없이 강의 자동 재생 (출석 처리) |
| 로컬 STT | faster-whisper로 오프라인 음성 텍스트 변환 |
| AI 요약 | Gemini API로 강의 내용 자동 요약 |
| 마크다운 대시보드 | 학기 → 과목 → 주차 계층으로 요약 열람 |
| 자동 모드 | 스케줄에 따라 미시청 강의를 자동으로 재생·변환·요약 |
| 실시간 상태 표시 | 현재 재생 중인 강의 및 다음 스케줄을 대시보드에 표시 |
로그인 후 표시되는 메인 페이지에서 다음 정보를 확인하고 제어할 수 있습니다.
| 상태 | 동작 |
|---|---|
| OFF | 자동 실행 없음. 학기·과목 탐색 및 요약 열람만 가능 |
| ON | 설정된 스케줄에 따라 미시청 강의 자동 처리 시작 |
- 현재 재생 중인 강의 — 과목명, 강의명, 파이프라인 단계 (
재생 중/STT 변환 중/요약 중) - 다음 스케줄 — 다음 자동 실행 예정 시각 및 처리 대상 강의 수
자동 모드 스케줄 기본값: KST 09:00 / 13:00 / 18:00 / 23:00
study-dashboard/
├── backend/
│ ├── api/ # REST / WebSocket 라우터
│ ├── core/ # 설정, 인증, 암호화
│ ├── scraper/ # 과목·강의 스크래핑
│ ├── player/ # 백그라운드 재생
│ ├── converter/ # mp4 → mp3 (ffmpeg)
│ ├── stt/ # faster-whisper STT
│ └── summarizer/ # Gemini 요약
├── frontend/
│ └── src/
│ ├── pages/ # Login, Semesters, Courses, Summary
│ └── components/
├── data/
│ └── summaries/ # 마크다운 요약 파일 저장 경로
└── docker-compose.yml
| 항목 | 설명 |
|---|---|
| 숭실대 Learning X 계정 | 학번 + 비밀번호 |
| Docker | 컨테이너 실행 환경 |
| Google API 키 | Gemini 요약 사용 시 필요 — 발급 방법 |
git clone https://github.com/HelloJamong/study-dashboard.git
cd study-dashboarddocker compose up --build브라우저에서 http://localhost:3000 접속 후 Learning X 계정으로 로그인합니다.
계정, Gemini API 키, 다운로드/STT/텔레그램 옵션은 웹 대시보드의 설정 화면에서 저장합니다.
이 프로젝트는 .env 파일을 사용하지 않습니다. 설정은 SQLite DB(data/app.db)에 저장됩니다.
학번/비밀번호는 자동 로그인 방지를 위해 DB에 저장하지 않고 현재 세션 메모리에만 유지하며,
API 키/텔레그램 토큰은 암호화되어 DB에 저장됩니다.
Docker 실행 시 다운로드 경로는 컨테이너 /download로 고정됩니다.
기본 compose 설정은 저장소의 ./download 폴더를 컨테이너 /download에 마운트합니다.
faster-whisper는 INT8 양자화를 적용하므로 openai-whisper 대비 모델 파일 크기가 약 절반입니다.
| 모델 | 크기 (INT8) | 정확도 |
|---|---|---|
| tiny | ~39MB | 낮음 |
| base | ~74MB | 보통 (기본값) |
| small | ~122MB | 좋음 |
| medium | ~385MB | 높음 |
| large | ~750MB | 최고 |
Learning X 구조 분석, 재생/다운로드 구현 방식, 셀렉터 정의 등 기술 문서는 아래를 참고하세요.
- 본 서비스는 개인 학습 목적으로만 사용하세요.
- Learning X 서비스 약관을 준수하여 사용하시기 바랍니다.
- 학번, 비밀번호는 현재 로그인 세션 메모리에만 유지되며 DB에 저장되지 않습니다.
.secret_key와data/app.db는 절대 외부에 공유하지 마세요.
본 프로젝트는 개인 학습 편의를 위해 제작된 비공식 도구입니다.
- 본 프로젝트의 사용으로 인해 발생하는 학사 불이익, 계정 제재, 데이터 손실 등 모든 결과에 대한 책임은 전적으로 사용자 본인에게 있습니다.
- 개발자는 어떠한 법적·도의적 책임도 지지 않습니다.
- 본 프로젝트는 Claude AI를 활용하여 개발되었습니다.