Skip to content

Phase 1: 백엔드 NotebookLM 서비스 + 인증 + 팟캐스트 API #6

@inbeomheo

Description

@inbeomheo

Parent PRD

#5

What to build

nlm CLI를 subprocess로 래핑하는 NotebookLM 서비스를 만든다. 첫 요청 시 노트북 존재 여부를 확인하고, 없으면 자동 생성한다. 콘텐츠 생성 요청이 오면 자막 텍스트를 소스로 추가(URL 기준 중복 체크)하고, nlm audio create를 실행하여 artifact_id를 반환한다.

4개 API 엔드포인트 구현:

  • POST /api/notebooklm/generate — type, source_text, url을 받아 콘텐츠 생성 시작
  • GET /api/notebooklm/status/<artifact_id> — 생성 진행 상태 폴링
  • GET /api/notebooklm/download/<artifact_id> — 완성 파일 다운로드 (Phase 4에서 완성, 여기선 스텁)
  • GET /api/notebooklm/auth-checknlm login --check 결과 반환

노트북 ID와 URL→source_id 매핑은 data/notebooklm_state.json에 저장하여 재사용.

이 Phase 완료 시 curl로 팟캐스트 생성 요청 → 상태 폴링 → 완료 확인까지 가능해야 한다.

Acceptance criteria

  • POST /api/notebooklm/generate 호출 시 노트북 자동 생성 + 소스 추가 + 팟캐스트 생성 시작, artifact_id 반환
  • GET /api/notebooklm/status/<artifact_id> 호출 시 in_progress / completed / failed 상태 반환
  • 동일 YouTube URL로 재요청 시 소스 중복 추가 없이 기존 source_id 재사용
  • GET /api/notebooklm/auth-check 호출 시 인증 상태 + 계정 이메일 반환
  • 인증 만료 시 적절한 에러 메시지 반환 (nlm login 안내 포함)
  • notebooklm_service.py 단위 테스트 — subprocess mock으로 노트북 생성/소스 추가/생성/상태 폴링 검증

Blocked by

None - can start immediately

User stories addressed

  • User story 1 (팟캐스트 생성)
  • User story 12 (노트북 자동 생성/재사용)
  • User story 13 (자막 소스 자동 추가, 중복 방지)
  • User story 17 (인증 안내)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions