# task-932.1 완료 보고서: 자막 없는 유튜브 영상 내용 추출 + 요약

## SCQA

**S**: InsuWiki 유튜브 요약 기능은 자막(caption) 기반으로 동작하며, 현재 3단계 폴백(YouTube 자막 → Whisper STT API → 제목+설명)이 구현되어 있다.

**C**: 자막 미제공 영상(https://www.youtube.com/watch?v=dCIc9mkFCLw)에서 내용 추출이 필요했고, 서버 환경에서 로컬 Whisper 모델을 활용한 음성→텍스트 변환 파이프라인을 검증해야 했다.

**Q**: yt-dlp + faster-whisper 조합으로 자막 없는 유튜브 영상에서 한국어 텍스트를 정확히 추출하고 요약할 수 있는가?

**A**: 성공적으로 추출 완료. 2시간 16분 영상에서 3,849개 세그먼트(132KB 텍스트)를 추출했으며, 언어 감지 확률 100%로 한국어 인식. GPU float16 미지원으로 CPU+int8 모드(base 모델)로 fallback 실행. InsuWiki에는 이미 Whisper STT 폴백이 구현되어 있어 추가 통합 방안 3건 제안.

---

## 작업 내용

### Phase 1: 환경 조사 및 설치
- ffmpeg v7.0.2 (설치 완료 확인)
- yt-dlp 2026.03.03 (설치 완료 확인)
- GPU: NVIDIA GTX 1060 6GB, CUDA 12.2 확인
- faster-whisper 1.2.1 설치 완료 (pip install)

### Phase 2: 오디오 추출 + 텍스트 변환
- yt-dlp로 WebM 오디오 다운로드 → WAV 변환 (1.5GB)
- faster-whisper base 모델, CPU+int8 모드 실행 (GPU float16 미지원으로 자동 fallback)
- 총 3,849 세그먼트 추출, 0.00s ~ 8,199.48s 전체 커버
- 언어 감지: 한국어 (확률 1.00)

### Phase 3: 요약

#### 영상 정보
- 제목: "암 사용설명서 | 이론·실무·화법까지 오늘 강의로 초고수가 될 수 있다"
- 채널: 정작톱 (보험 전문가 유튜브 채널)
- 길이: 2시간 16분 40초
- 내용: 보험설계사 대상 암보험 실무 교육 라이브 방송

#### 핵심 요약
보험 전문 유튜버 "정작톱"이 보험설계사(골드회원) 대상으로 진행한 암보험 실무 교육 라이브 방송. 진단서와 조직검사 결과지의 차이, 형태학적 분류 번호(ICD-O)의 중요성, 가입 시점별 보장 차이, 분쟁 사례 및 화법집까지 포괄하는 심층 강의.

#### 설계사 고객 상담 활용 포인트
1. **조직검사 결과지 > 진단서**: 보험사는 주치의 진단서가 아니라 조직검사 결과지의 병리소견으로 보험금 지급 판단
2. **형태학적 분류 번호(5번째 숫자)**: 0=양성, 1=경계성, 2=제자리암, 3=일반암, 6=전이암 — 숫자에 따라 보험금 크게 달라짐
3. **가입 시점 중요**: 같은 종양도 질병분류체계 개정(3~5년 주기)에 따라 일반암/유사암/경계성종양으로 분류가 달라짐
4. **유사암 보완 필요성**: 과거 보험은 유사암이 일반암에 종속되어 소액만 보장 → 별도 유사암 보완 필요
5. **원발암 규정**: 전이암이 확인되어도 보험사는 원발 부위만 인정 (갑상선암 + 림프전이 = 갑상선암으로만 처리)
6. **2020년 이후 약관 변경**: 진단 시점의 질병분류체계만 적용 (과거 가입 시점 불인정)
7. **작성자 불이익 원칙**: 약관에 설명이 없으면 계약자에게 유리하게 해석 (대법원 판례)

#### 언급된 보험 상품 / 보험사
- 라이나생명 통합재경(통합제자리암·경계성종양) — 이번 달까지 판매
- 제자리암 8,000만원 + 경계성종양 1억원 = 1억 8,000만원 플랜
- 전이암 생활비, 종신 직접치료 100만원
- 알뜰플랜(10년 고지형, 표준체) — 3,103원~5,369원대 보험료

#### 수치/금액 정보
- 통합재경 플랜: 제자리암 8,000만원 + 경계성종양 1억원
- 알뜰플랜 보험료: 약 3,103원~5,369원 (연령/성별별 상이)
- 형태학적 분류 개정 주기: 3~5년
- 대장용종 하이그레이드 → 유사암 또는 일반암 청구 가능

#### 약관과 다를 수 있는 내용
- 표재성 방광암: 병리소견은 제자리암(T.A 침윤 없음)이나 임상의가 일반암으로 진단서 작성하는 경우 있음
- 2008년 전후로 표재성 방광암의 분류가 일반암 → 유사암으로 변경
- 갑상선 경계성종양: 과거 약관에서는 일반암으로 인정되었으나 현재는 경계성종양으로 분류

#### 주제별 섹션 흐름
1. (00:00~10:00) 방송 인트로, 골드회원 인사, 에이전트 AI와 보험업 미래
2. (10:00~30:00) 진단서 vs 조직검사 결과지 차이, 병리소견의 중요성
3. (30:00~50:00) 형태학적 분류 번호(ICD-O) 체계 설명, 양성/경계성/제자리/일반/전이
4. (50:00~80:00) 가입 시점별 보장 차이, 유사암 종속 문제, 원발암 규정
5. (80:00~100:00) 갑상선암 분쟁사례, 배데스타 시스템, 표재성 방광암
6. (100:00~120:00) 대법원 판례(작성자 불이익 원칙), 대장용종 하이그레이드
7. (120:00~137:00) 화법집 소개, TNM 병기, 설계 플랜 소개, 마무리

### Phase 4: InsuWiki 적용 방안

#### 현재 InsuWiki 유튜브 요약 구현 상태
- 위치: `/home/jay/projects/insuwiki/functions/src/crawlYoutubeChannels.ts`
- Whisper STT 모듈: `/home/jay/projects/insuwiki/functions/src/whisperStt.ts`
- 현재 3단계 폴백이 이미 구현되어 있음:
  1. YouTube InnerTube API로 자막 추출
  2. OpenAI Whisper API로 STT (OPENAI_API_KEY 필요, 25MB 제한)
  3. 제목+설명 기반 요약 (최종 폴백)

#### 개선 제안 3건

**1. YouTube 자동생성 자막 활용 (우선순위 높음)**
- 현재 `vssId?.startsWith('a.')`로 자동생성 자막을 필터링하고 있음
- 자동생성 자막도 한국어 인식 품질이 개선되었으므로, 공식 자막이 없을 때 자동생성 자막을 2순위 폴백으로 활용 가능
- 수정 위치: `crawlYoutubeChannels.ts:306` 필터 조건

**2. 로컬 Whisper 모델 도입 (비용 절감)**
- 현재 OpenAI Whisper API는 25MB 파일 크기 제한 + 유료 API 비용 발생
- 이번 검증에서 faster-whisper base 모델이 CPU에서도 2시간 영상 전체를 정상 처리함을 확인
- 서버에 faster-whisper를 설치하고, OpenAI API 호출 전 로컬 처리를 시도하는 방식으로 비용 절감 가능
- 단, 처리 시간이 길어질 수 있으므로 비동기 큐(youtube_summary_queue) 활용 권장

**3. 영상 길이 기반 모델 선택 전략**
- 30분 미만: base 모델 (빠름, CPU 가능)
- 30분~2시간: small 모델 (GPU 권장)
- 2시간 이상: 오디오 분할 후 처리 또는 OpenAI API 폴백

---

## 산출물

| # | 파일 | 경로 | 크기 |
|---|------|------|------|
| 1 | 오디오 파일 | `/home/jay/workspace/teams/dev4/task-932.1/audio.wav` | 1.5GB |
| 2 | 전체 텍스트 | `/home/jay/workspace/teams/dev4/task-932.1/transcript.txt` | 132KB (3,848줄) |
| 3 | 타임스탬프 포함 텍스트 | `/home/jay/workspace/teams/dev4/task-932.1/transcript_timestamped.txt` | 218KB (3,849줄) |
| 4 | 보고서 | `/home/jay/workspace/memory/reports/task-932.1.md` | 본 파일 |

---

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **GPU float16 미지원** — GTX 1060이 CUDA float16 compute를 완전히 지원하지 않아 실행 에러 발생 → CPU+int8(base 모델)로 자동 fallback 적용, 정상 변환 완료
2. **faster-whisper 설치 시 시스템 패키지 충돌** — `--break-system-packages` 옵션으로 해결
3. **Whisper segments 제너레이터 1회 소비 문제** — 리스트로 변환 후 파일 저장과 화면 출력을 분리 처리

### 범위 외 미해결 (1건)
1. **Whisper base 모델의 음성 인식 정확도 한계** — 일부 전문용어(형태학적 분류, 배데스타 시스템 등)에서 오인식 발생. 범위 외 사유: small/medium 모델 사용 시 GPU VRAM 부족, 모델 업그레이드는 하드웨어 의존

---

## 셀프 QC 체크리스트

- [x] 1. 다른 파일 영향: 없음 (독립 작업, 기존 코드 수정 없음)
- [x] 2. 엣지 케이스: GPU 미지원 시 CPU fallback 정상 동작 확인
- [x] 3. 작업 지시 일치: Phase 1~4 모두 수행, 오디오 파일 미삭제 (제이회장님 확인용)
- [x] 4. 에러 처리/보안: API 키 미노출, 개인정보 미포함
- [x] 5. 테스트 커버리지: 코딩 작업 아님 (도구 실행 + 리서치), 파이프라인 실행 결과로 검증
- [x] 6. 발견 이슈 처리: 3건 자체 해결, 1건 범위 외 명시

---

## QC 자동 검증 결과

코딩 작업이 아닌 도구 실행 + 리서치 작업이므로, `--skip api_health` 및 코드 관련 verifier는 해당 없음.
보고서 파일 존재 및 크기 검증만 수행.
