728x90

- 공식 NotebookLM Enterprise API는 엔터프라이즈급 인증·권한·감사(로그)·조직 관리와 함께 노트북 관리, 소스 추가(여러 타입), 오디오 오버뷰 등 핵심 기능을 REST/공식 클라이언트로 제공합니다.
notebooklm-py(teng-lin)는 비공식 Python CLI/라이브러리로, UI·내부 RPC를 활용해 UI에서 가능한 많은 기능(및 UI에 노출되지 않는 내보내기/배치 기능)을 프로그래매틱하게 구현합니다. 다만 내부(문서화되지 않은) 엔드포인트를 사용하므로 변경·중단 리스크가 있습니다.- 실무 권장: PoC/개발은
notebooklm-py로 빠르게 검증 → 프로덕션(민감데이터·규모 운영)은 NotebookLM Enterprise 공식 API + 서비스계정/조직 IdP로 전환.
공식 API(NotebookLM Enterprise) — 무엇이 제공되는가
- 노트북 관리 (notebooks API)
- 메서드:
notebooks.create,notebooks.get,notebooks.listRecentlyViewed,notebooks.delete,notebooks.share등. - 사용 사례: 프로젝트 단위 노트북 생성/목록 조회/삭제·공유.
- 메서드:
- 소스 관리 (sources API)
- 지원 소스 타입: Google Docs/Slides, 업로드 파일(PDF/DOCX/TXT 등), 웹 URL, YouTube 등.
- 기능: 단건 추가, 배치 추가(여러 파일/URL), 소스 업데이트/삭제, 일부 경우 인덱싱(처리) 대기 옵션.
- Audio Overview (오디오 개요)
- 기능: 노트북에서 요약/구성된 팟캐스트 스타일 오디오 생성(생성·삭제 등 관리). 노트북 당 한 번의 오디오 개요 등 제한 언급.
- 엔터프라이즈 통제
- 조직·프로젝트 연동, IdP 통합(SSO), 권한·라이선스 관리, DPA/계약 관련 규정 적용 가이드. (엔터프라이즈 문서 전반)
참고: 공식 문서는 기능별, 엔드포인트별 예시(Request/Response)·인증(서비스 계정/OAuth)·쿼터·제한을 제공하므로, 실제 구현 시 해당 문서의 “Before you begin / Authentication / Quotas” 섹션을 따르는 것이 필수입니다.
비공식 라이브러리 notebooklm-py — 무엇을 더 해주는가 (핵심 기능)
- 주요 기능: 노트북 CRUD, 소스 추가(파일/URL/YouTube/Drive), 질의(chat/ask), 다양한 아티팩트(오디오·슬라이드·퀴즈·마인드맵 등) 생성·대기·다운로드, 대량 배치 업로드, 소스 전체 텍스트 추출, 포맷별 익스포트.
- 자동화 편의성: CLI와 Python API가 제공되어 즉시 스크립트·파이프라인으로 연동 가능. (예:
notebooklm login,notebooklm create,notebooklm source add,notebooklm ask,notebooklm generate audio,notebooklm download) - 리스크: 내부 비공개/문서화되지 않은 RPC를 호출하므로 Google 측 API 변경 시 동작 불능 가능. 인증은 브라우저 세션/쿠키·토큰을 활용하는 편의 방식이 많아 조직적 제어가 어렵습니다.
300x250
기능 맵핑 — 공식 API와 비공식 클라이언트의 차이(표)
- 노트북 생성/삭제/목록: 공식 / 비공식
- 소스 추가(단건/배치, Drive, YouTube, URL, 파일): 공식 / 비공식 (더 많은 포맷·배치·자동화 옵션)
- 질의(chat/ask): 공식(문서 기반 지원, 엔터프라이즈용 엔드포인트) / 비공식 (UI 동작과 유사한 상호작용 API 제공)
- 아티팩트 생성(오디오 등): 공식(오디오 오버뷰 명시) / 비공식 (오디오뿐 아니라 슬라이드·퀴즈·마인드맵 등 다양한 포맷 생성·다운로드 편의 제공)
- 대량 익스포트(PPTX/퀴즈 JSON 등): 공식(문서화된 범위 제한 가능) 제한적 / 비공식 광범위 (UI 기능 포함 거의 대부분)
구체적인 사용 예제 — 공식 API*와 *notebooklm-py (실전 코드/명령)
주: 아래 예제는 개념·구성·파라미터 흐름을 보여주기 위한 샘플입니다. 실사용 시 공식 문서의 최신 엔드포인트·파라미터를 확인하시고, 서비스 계정·토큰으로 인증하세요.
A. 공식 API — REST 호출 예시 (개념적)
- 인증:
Authorization: Bearer <ACCESS_TOKEN>(서비스 계정이나 OAuth2 토큰)
- 노트북 생성 (예시)
curl -X POST "https://notebooklm.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global/notebooks" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title":"My Research Notebook",
"metadata": { "emoji":"🧠" }
}'
응답: notebook 리소스 JSON — name(resource id), notebookId 포함
- 소스 추가 (URL)
curl -X POST "https://notebooklm.googleapis.com/v1/{notebook_name}/sources:batchAdd" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"requests": [
{ "addUrlRequest": { "url": "https://en.wikipedia.org/wiki/Artificial_intelligence", "displayName":"AI - Wiki" } }
]
}'
배치형 추가/인덱싱 지연 옵션 등 문서 참조
- 오디오 오버뷰 생성 (개념)
curl -X POST "https://notebooklm.googleapis.com/v1/{notebook_name}/audioOverview" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"voice":"alloy","instructions":"Make it brief and engaging."}'
생성 후 상태 확인 API로 완료 대기/다운로드
실제 엔드포인트 URL 패턴/파라미터는 공식 문서의 각 페이지(노트북 관리, 소스 관리, audio overview)를 참조하세요.
B. notebooklm-py(비공식) — Python 사용 예시 (실전형)
- 설치:
pip install notebooklm-py또는 GitHub 소스. - 간단한 흐름(로그인 → 노트북 생성 → URL 추가 → 질의 → 오디오 생성→다운로드):
import asyncio
from notebooklm import NotebookLMClient
async def demo():
# local storage에 로그인 정보가 저장되어 있어야 함 (notebooklm login 명령으로 세션 획득)
async with await NotebookLMClient.from_storage() as client:
nb = await client.notebooks.create("My Research")
print("Notebook ID:", nb.id)
# URL 소스 추가 (wait=True: 인덱싱 완료 대기)
await client.sources.add_url(nb.id, "https://en.wikipedia.org/wiki/Artificial_intelligence", wait=True)
# 질의 (chat/ask)
resp = await client.chat.ask(nb.id, "Summarize the major topics in this source.")
print("Answer:", resp.answer)
# 오디오 생성 & 대기 & 다운로드
task = await client.artifacts.generate_audio(nb.id, instructions="Summarize as an engaging 3-minute podcast")
await client.artifacts.wait_for_completion(nb.id, task.task_id)
await client.artifacts.download_audio(nb.id, "ai_overview.mp3")
asyncio.run(demo())
- CLI 예:
notebooklm login,notebooklm create "Title",notebooklm source add URL,notebooklm ask "질의",notebooklm generate audio --wait,notebooklm download audio ./file.mp3.
실무 전개(도입) 권장 절차 — 단계별
- 개념검증(PoC)
- 목적: 자동 소스 수집·인덱싱, 질의응답 정확도 확인, 아티팩트(오디오/PPTX/퀴즈) 출력물 형식 확인.
- 방법:
notebooklm-py로 내부(비민감) 문서·웹 URL을 업로드 → 자동 요약·오디오 생성 → 결과 포맷 확인.
- 보안·거버넌스 검토
- 확인: DPA·계약, 데이터 저장 위치(지역), 로그 보존 정책, IdP/서비스계정 인증 방식.
- 조치: 민감데이터 업로드 금지 또는 익명화/마스킹, 감사 로그 연동(가급적 중앙 SIEM).
- 프로덕션 아키텍처 설계
- 권장: 공식 NotebookLM Enterprise API + 서비스계정 기반 백엔드 파이프라인.
- 보완:
notebooklm-py에서 유용한 “내보내기/익스포트” 기능이 필요하면, PoC 결과를 바탕으로 내부 변환/포맷터 모듈로 대체.
- 마이그레이션·자동화
- 배치 파이프라인: 파일 업로드→소스 추가→인덱스 완료 대기→질의/아티팩트 생성→다운로드/보관(객체 스토리지)
- 모니터링: 처리 실패·API 에러 감지, E2E 헬스체크(예: 샘플 질의 성공/응답시간) 설정.
보안·운영 체크리스트 (구체적)
- 인증/키 관리
- 서비스 계정 사용(권장), 최소 권한 권한 부여(least privilege).
- 로컬에 토큰·쿠키를 저장하는 비공식 툴 사용 금지/격리.
- 데이터 분류·정책
- 업로드 전 데이터 분류(민감/비민감) → 민감데이터는 전처리(마스킹/익명화) 또는 업로드 금지.
- 감사·로깅
- API 호출 로그, 누가 어떤 노트북(또는 소스)을 생성/삭제/질의했는지 SIEM에 연동.
- 오디오 등 생성물의 접근 제어(공개 링크 허용 시 만료·권한 검토).
- 변경 감지·회복 계획
- 비공식 API 사용 시 엔드포인트 변경 감지(헬스체크) → 공식 API로 재구성 계획 마련.
- 규정·계약
- 엔터프라이즈 계약(DPA 포함) 적용 여부 확인(특히 EU/국내 규정에 영향).
차이점 때문에 생기는 운영 리스크와 대응 방안
- 리스크1 — 공식 문서화 없는 엔드포인트 의존: Google이 내부 API 변경하면 자동화 파이프라인 중단.
- 대응: PoC용으로만 한정, 운영은 공식 API 사용. 자동화된 E2E 헬스·알람 구성.
- 리스크2 — 브라우저 세션 기반 인증(비공식 도구): 세션 탈취·환경 의존성 문제.
- 대응: 서비스 계정(공식) 또는 별도 격리된 자동화 계정 사용. 로컬 세션 파일에 대한 접근 통제.
- 리스크3 — 민감 데이터 유출 가능성(아티팩트 공유): 오디오/노트북 공유 링크로 노출.
- 대응: 공유 링크 기본 비활성화, 만료·권한 정책 적용, 공유 이벤트 감사.
실무 예시: "사내 문서 폴더 → NotebookLM로 자동 수집 → 요약·오디오 생성 → S3에 저장" (아키텍처·단계)
- 트리거: Google Drive 동기화(혹은 파일 업로드 이벤트)
- 수집: 백엔드(서비스계정)에서 파일 메타 확인 → NotebookLM(공식 API)로 소스 추가(배치)
- 인덱싱 대기:
sources:batchAdd후 상태 모니터링 → 인덱스 완료 시 다음 단계. - 처리: 자동 질의(요약/FAQ/오디오 생성) API 호출(오디오 overview 등).
- 저장: 생성된 아티팩트(예: mp3, PPTX, JSON)를 내부 객체 스토리지(S3/GS)로 저장하고 접근권한 관리.
- 감사: 모든 호출·파일 이벤트를 SIEM에 전송(누가 업로드했고 누가 다운로드했는지 기록).
권장 템플릿 코드(프로덕션 준비용, 의사 코드)
- 목표: 서비스 계정 기반으로 NotebookLM 공식 API를 호출해 배치 업로드 → 오디오 생성 → 완료 시 S3 업로드
# (의사코드) - 실제 엔드포인트/라이브러리 함수는 공식 문서 확인 필요
from google.auth import default
import requests, boto3, time
creds, project = default(scopes=['https://www.googleapis.com/auth/cloud-platform'])
token = creds.token or creds.refresh(Request()) # google-auth 사용 패턴
HEADERS = {"Authorization": f"Bearer {token}", "Content-Type":"application/json"}
# 1) 노트북 생성
resp = requests.post(
f"https://notebooklm.googleapis.com/v1/projects/{PROJECT_NUMBER}/locations/global/notebooks",
headers=HEADERS, json={"title":"Auto Notebook"}
)
nb = resp.json()
# 2) 파일 배치 업로드 (파일 업로드 → sources.batchAdd)
# ... 업로드 로직 (multipart upload로 파일 업로드 후 sources API에 파일 reference 추가)
# 3) 오디오 생성 요청
audio_req = requests.post(f"https://notebooklm.googleapis.com/v1/{nb['name']}/audioOverview",
headers=HEADERS, json={"voice":"alloy","instructions":"Short briefing"})
task = audio_req.json()
# 4) 상태 폴링, 완료되면 artifact URL 획득 → S3 업로드
while True:
status = requests.get(f"https://notebooklm.googleapis.com/v1/{nb['name']}/audioOverview", headers=HEADERS).json()
if status.get("state") == "COMPLETED": break
time.sleep(5)
artifact_url = status["output"]["gcsUri"] # 예시
# S3 업로드/다운로드 등 처리
실제 코드는 공식 문서의 request/response 필드명을 그대로 사용해야 하므로, 배포 전 문서의 최신 스펙을 확인하세요.
추가 자료·오픈소스 참고
teng-lin/notebooklm-py(비공식 Python 클라이언트·CLI).- PyPI 배포 페이지(패키지 버전·릴리스 노트).
notebooklm-rest-api(notebooklm-py 기반 REST 래퍼) — 내부 PoC·서비스화 참고.- NBLM (Rust/Python) 문서화 프로젝트 — API 참조 예제.
권장 실무 체크리스트
PoC:notebooklm-py로 비민감 데이터로 기능·포맷 검증.인증설계: 서비스 계정 + 최소권한 정책 설계(프로덕션은 공식 API 사용).거버넌스: DPA/규정 검토, 민감데이터 업로드 금지·익명화 절차 문서화.모니터링: 헬스체크·E2E 테스트·알람 구성(비공식 사용 시 필수).마이그레이션계획: 비공식 의존 기능을 공식 API로 재구현할 때의 우선순위·ROI 문서화.
추천 액션 (빠르게 시작할 3가지)
- PoC 스크립트 요청: 내부(비민감) PDF/URL을
notebooklm-py로 배치 업로드 → 자동 요약→오디오 생성→다운로드 예제 스크립트. - 공식 API 검증: 귀사 GCP 프로젝트에서 NotebookLM Enterprise 라이선스·서비스 계정으로 간단한 노트북 생성·소스 추가·오디오 생성(REST 예제)을 직접 실행해 보시길 권장합니다.
- 보안 검토: 민감데이터 업로드 통제·로그 수집·서비스 계정 정책을 먼저 확정하세요.
728x90
그리드형(광고전용)
댓글