notebooklm
Google NotebookLM 자동화 — 비디오/오디오/슬라이드 생성, 소스 관리, 다운로드 (일반 계정)
Google NotebookLM 자동화 (일반 계정)
notebooklm-py를 사용해 Google NotebookLM의 모든 기능을 프로그래밍 방식으로 제어합니다.
전제 조건
| 항목 | 설명 |
|------|------|
| notebooklm-py v0.3.4+ | ~/.hermes/venv-notebooklm/에 설치됨 |
| Python 3.13 | venv 전용 (시스템 패키지와 격리) |
| 구글 로그인 | ~/.hermes/venv-notebooklm/bin/activate && notebooklm login |
| 인증 파일 | ~/.notebooklm/storage_state.json |
인증
source ~/.hermes/venv-notebooklm/bin/activate
notebooklm login # 브라우저 로그인
notebooklm auth check --test # 인증 상태 확인
기본 사용법
모든 notebooklm 명령어는 반드시 venv 활성화 후 실행:
source ~/.hermes/venv-notebooklm/bin/activate
노트북 관리
notebooklm create "제목" # 노트북 생성 (ID 반환)
notebooklm list # 노트북 목록
notebooklm use # 현재 노트북 설정
notebooklm delete # 노트북 삭제
소스 추가
# URL
notebooklm source add "https://example.com"YouTube 영상
notebooklm source add "https://youtube.com/watch?v=xxx"로컬 파일 (PDF, 텍스트, 마크다운)
notebooklm source add "./paper.pdf"인라인 텍스트
notebooklm source add "요약할 텍스트 내용" --title "제목"웹 리서치 자동 수집 (시간 걸림, 2~5분)
notebooklm source add-research "검색어" --mode deep소스 목록 확인
notebooklm source list
콘텐츠 생성
비디오 (YouTube 업로드용)
# Video Overview (빠름, ~5-10분)
notebooklm generate video "설명" --style whiteboard --language ko --wait
notebooklm download video ./output.mp4Cinematic Video (Veo 3, ~30-40분, AI Ultra 필요)
notebooklm generate cinematic-video "설명" --language ko --wait
notebooklm download cinematic-video ./output.mp4
비디오 스타일: auto, classic, whiteboard, kawaii, anime, watercolor, retro-print, heritage, paper-craft
비디오 포맷: explainer (기본), brief, cinematic
오디오 (팟캐스트)
notebooklm generate audio "설명" --format deep-dive --language ko --wait
notebooklm download audio ./podcast.mp3
오디오 포맷: deep-dive (기본), brief, critique, debate
오디오 길이: short, default, long
슬라이드 덱
notebooklm generate slide-deck "설명" --format detailed --language ko --wait
notebooklm download slide-deck ./slides.pdf # PDF
notebooklm download slide-deck ./slides.pptx # PPTX
기타 콘텐츠
# 인포그래픽 (PNG)
notebooklm generate infographic --orientation portrait --wait
notebooklm download infographic ./info.png마인드맵 (JSON)
notebooklm generate mind-map --wait
notebooklm download mind-map ./mindmap.json퀴즈
notebooklm generate quiz --difficulty hard --wait
notebooklm download quiz --format markdown ./quiz.md플래시카드
notebooklm generate flashcards --quantity more --wait
notebooklm download flashcards --format json ./cards.json리포트
notebooklm generate report --format blog-post --wait
notebooklm download report ./report.md데이터 테이블 (CSV)
notebooklm generate data-table "비교 항목" --wait
notebooklm download data-table ./data.csv
채팅
notebooklm ask "질문"
YouTube 업로드 파이프라인 (자동 노트북 정리 포함)
무료 계정은 최대 5개 노트북 제한이 있으므로, 업로드 완료 후 노트북을 자동 삭제합니다.
# 1. 노트북 생성 + 소스 추가
NOTEBOOK_ID=$(notebooklm create "주제")
notebooklm use $NOTEBOOK_ID
notebooklm source add "https://url1.com"
notebooklm source add "https://url2.com"2. 비디오 생성 (한국어)
notebooklm generate video "한국어로 흥미롭게 설명해주세요" --style whiteboard --language ko --wait3. 다운로드
notebooklm download video /tmp/video.mp44. YouTube 업로드 (youtube-uploader 스킬 사용)
cd /path/to/youtube-uploader/scripts
python3 upload.py /tmp/video.mp4 --title "제목" --description "설명" --category 28 --privacy public5. 노트북 삭제 (무료 계정 5개 제한 관리)
notebooklm delete $NOTEBOOK_ID
⚠️ 필수: 비디오 다운로드를 완료한 후에만 삭제하세요. 생성 콘텐츠는 다운로드 전에 노트북 삭제하면 유실됩니다.
🚨 장애 처리 정책 (중요)
비디오 오버뷰/팟캐스트 생성 장애 발생 시:
- 재시도 금지 — 장애 감지 시 즉시 중단
- 소스를 NotebookLM 노트북에 추가해둔 상태로 유지
- 주인님에게 텔레그램으로 알림 — 어떤 노트북/소스에서 장애 발생했는지 명시
- 알림에 추천 프롬프트 포함 — 주인님이 NotebookLM에서 직접 생성할 때 사용할 프롬프트 제공 (아래 프롬프트 템플릿 참고)
- 주인님이 직접 해당 노트북에서 생성 후, 편집/업로드를 ICBM2에 요청
- 야간 크론잡에서도 동일 — 장애 시 텔레그램 메시지 남기고 대기
알림 메시지 형식 (텔레그램)
⚠️ NotebookLM 생성 장애📝 노트북: {notebook_title} ({notebook_id})
🔧 작업: {video_overview / audio_podcast}
📋 소스: {소스 목록 요약}
❌ 오류: {에러 내용}
— 아래 프롬프트를 NotebookLM에서 직접 실행해주세요 —
{추천 프롬프트}
완료되면 편집/업로드 요청해주세요!
추천 프롬프트 템플릿
비디오 오버뷰용:
이 소스들을 바탕으로 한국어로 흥미롭게 설명하는 비디오 오버뷰를 만들어주세요. 전문적이면서도 일반인이 이해하기 쉬운 톤으로, 핵심 내용을 논리적으로 전달해주세요.
오디오 팟캐스트용 (deep-dive):
이 소스들을 바탕으로 한국어 심층 팟캐스트를 만들어주세요. 두 진행자가 자연스럽게 대화하듯, 핵심 내용을 분석하고 의견을 나누는 형식으로 만들어주세요. 흥미로운 인사이트와 실용적인 정보를 포함해주세요.
오디오 팟캐스트용 (brief):
이 소스들의 핵심 내용을 한국어로 짧게 요약하는 브리프 팟캐스트를 만들어주세요. 빠르고 명확하게 전달해주세요.
⚠️ 프롬프트는 콘텐츠 타입(ai_news, github_trending 등)에 맞게 문맥을 추가해서 제공할 것
주요 함정
| 문제 | 해결 |
|------|------|
| 일일 쿼터 제한 (cinematic-video) | --retry 5 추가, 1~24시간 대기 |
| 비디오 생성 타임아웃 | --wait 없이 생성 후 download video로 폴링 |
| Video Overview pending 멈춤 (2026-04-19~) | NotebookLM 서버 측 장애. Video Overview 완전 불가 (GitHub main 최신 업데이트로도 해결 안 됨). --wait --retry 5 옵션 있으나 서버 문제로 무용. 업데이트: pip install git+https://github.com/teng-lin/notebooklm-py.git. 노트북 55개 제한 있음. Audio deep-dive 간헐적 타임아웃, brief/short만 안정. 22:15/23:15 크론잡을 Video→Podcast+Manim으로 대체 운영 중. podcast_manim_pipeline.py --type daily_tech/ai_deep_review |
| 타임아웃 후 노트북에 오디오가 이미 완성되어 있을 수 있음 | extract_source_data_from_notebook()으로 기존 노트북 소스 fulltext에서 실제 데이터 읽어 Manim/출처에 재사용. source fulltext 명령 사용 |
| 팟캐스트 내용 ≠ Manim/출처 불일치 | 수집 data 딕셔너리 대신 노트북 소스 fulltext에서 실제 제목/URL을 읽어와 사용. 오디오 재사용 시 필수 |
| YouTube 제목 덮어쓰기 버그 | 출처 빌드 루프에서 title = item.get("title")이 YouTube 제목 덮어씀 → item_title, item_url, item_source 지역 변수명 사용 |
| stdout 버퍼링으로 프로세스误kill | 백그라운드 프로세스는 PYTHONUNBUFFERED=1+-u 써도 Manim 단계 출력이 버퍼링됨. 폴링 중엔 in_progress만 반복해서 새 출력 없음 — kill하지 말고 기다릴 것 |
| 소스 처리 안 됨 | URL 추가 후 source list로 ready 상태 확인 |
| 소스 JSON 파싱 실패 | source list --json은 {sources:[...]} 형태, 최상위 배열 아님 |
| 폰트 경로 오류 | macOS 폰트는 .otf가 아닌 .ttc(TrueType Collection) — AppleSDGothicNeo.ttc |
| 인증 만료 | notebooklm login 재실행 |
| venv 미활성화 | 모든 명령어 앞에 source ~/.hermes/venv-notebooklm/bin/activate 필수 |
| httpx 충돌 | 시스템 Python이 아닌 반드시 venv 사용 |
| stdout 버퍼링 (파이프라인) | PYTHONUNBUFFERED=1 또는 python3 -u 사용 |
| 숏츠 길이 약간 초과 | 60초 초과 약간 허용됨 (주인님 명시) |
🎯 주인님이 직접 YouTube 업로드를 요청할 때
주인님이 대화에서 "유튜브에 올려줘", "영상 만들어줘" 등으로 YouTube 업로드를 요청하면, 반드시 먼저 형식을 선택하도록 물어봐라.
선택지
| 항목 | 비디오 오버뷰 | 팟캐스트 |
|------|-------------|---------|
| 엔진 | NotebookLM Video Overview | Edge TTS + Manim v2 |
| 형식 | 화이트보드 애니메이션 영상 | 남녀 2인진 대화 + Manim 배경 |
| 목소리 | 1인 내레이션 (NotebookLM 기본) | SunHi(여) + InJoon(남) 교차 |
| 길이 | 5~10분 (소스 양에 따라) | 5~7분 |
| 장점 | 시각적 설명 강점, 자연스러운 흐름 | 팟캐스트 느낌, 남녀 대화로 생동감 |
| 단점 | 목소리 선택 불가, NotebookLM 의존 | Manim 배경이 단순 |
| 적합한 주제 | 기술 설명, 튜토리얼, 리뷰 | 뉴스 분석, 트렌드 토크, 의견 교환 |
물어보는 방식
영상 형식을 선택해주세요:- 🎬 비디오 오버뷰 — NotebookLM 화이트보드 애니메이션 (5~10분)
- 🎙️ 팟캐스트 — 남녀 2인진 대화 + Manim (5~7분)
주인님이 선택하면 해당 형식에 맞는 파이프라인을 실행한다.
⚠️ 크론잡에는 영향 없음 — 크론잡은 각각 고정 형식으로 이미 설정됨
YouTube 자동화 파이프라인
~/.hermes/scripts/notebooklm_youtube_pipeline.py — NotebookLM → YouTube 일일 자동 업로드 시스템
일반 영상 (Video Overview)
python3 ~/.hermes/scripts/notebooklm_youtube_pipeline.py --mode video --type daily_tech
python3 ~/.hermes/scripts/notebooklm_youtube_pipeline.py --mode video --type ai_deep_review
파이프라인: 콘텐츠 수집 → 노트북 생성 → 소스 추가 → Video Overview 생성(whiteboard/ko) → MP4 다운로드 → YouTube 업로드 → 노트북 삭제
팟캐스트+Manim 일반 영상 (Audio Podcast 남녀 2인진 + Manim 애니메이션)
python3 ~/.hermes/scripts/podcast_manim_pipeline.py --type ai_news
python3 ~/.hermes/scripts/podcast_manim_pipeline.py --type github_trending
파이프라인: 콘텐츠 수집 → 노트북 생성 → 소스 추가 → Audio Podcast(deep-dive/long/ko, 남녀 2인진) → MP3 다운로드 → Manim 스크립트 자동 생성 → Manim 렌더링 → 팟캐스트 오디오+Manim 영상 합성(ffmpeg) → YouTube 업로드 → 노트북 삭제
숏츠 (Audio Podcast → 60초 영상)
python3 ~/.hermes/scripts/notebooklm_youtube_pipeline.py --mode shorts --type ai_news
파이프라인: 콘텐츠 수집 → 노트북 생성 → 소스 추가 → Audio Podcast(brief/short/ko) → MP3 다운로드 → 60초 트리밍 → 배경 이미지 합성(한글 폰트=AppleSDGothicNeo.ttc) → Shorts MP4 → YouTube 업로드 → 노트북 삭제
콘텐츠 타입
| 타입 | 모드 | 스케줄 | 설명 |
|------|------|--------|------|
| ai_news | podcast_manim | 00:15 | AI 뉴스 심층 팟캐스트 (남녀 2인진+Manim) |
| github_trending | podcast_manim | 01:15 | GitHub 트렌딩 분석 팟캐스트 (남녀 2인진+Manim) |
| daily_tech | podcast_manim | 22:15 | 데일리 테크 브리핑 (HN + Reddit) |
| ai_deep_review | podcast_manim | 23:15 | AI 심층 리뷰 (HN AI + Reddit r/artificial, r/MachineLearning, r/LocalLLaMA + TechCrunch AI) |
| ai_news | shorts | 02:15 | AI 뉴스 속보 |
공통 옵션
--no-upload # 업로드 생략 (테스트용)
--no-cleanup # 노트북 삭제 생략
의존성
- notebooklm-py venv:
~/.hermes/venv-notebooklm/ - Pillow (배경 이미지): hermes-agent venv에서 sys.path injection
- Manim Community Edition:
pip install manim(podcast_manim 모드) - ffmpeg / ffprobe: 시스템
- YouTube 업로드:
~/.hermes/skills/creative/youtube-uploader/scripts/upload.py
스크립트
~/.hermes/scripts/notebooklm_youtube_pipeline.py— Video Overview + Shorts 파이프라인~/.hermes/scripts/podcast_manim_pipeline.py— Podcast+Manim 일반 영상 파이프라인
한계
- 비공식 API — 구글이 언제든 변경 가능
- cinematic-video는 Google AI Ultra 구독 필요 (일일 쿼터 있음)
- 무료 계정은 최대 5개 노트북 — 파이프라인은 생성 후 자동 삭제
- 생성 시간: video ~5-10분, cinematic ~30-40분, audio ~3-5분