Open Notebook이란?
Google NotebookLM은 Google이 제공하는 AI 리서치 어시스턴트로, PDF, 문서, 웹페이지를 업로드하여 이러한 자료와 대화하거나 요약을 생성하고 팟캐스트까지 만들 수 있습니다. 하지만 치명적인 단점이 있습니다: 모든 데이터가 Google 클라우드에 저장된다는 점, 그리고 Google 고유의 Gemini 모델만 사용할 수 있다는 것입니다.
Open Notebook은 개발자 lfnovo가 주도하는 완전 오픈소스이며 자체 호스팅 가능한 NotebookLM 대안입니다. 핵심 철학은 이렇습니다: 지식 관리는 대기업에 독점되어서는 안 되며, 프라이버시를 희생해서도 안 됩니다.
2026년 6월 현재, Open Notebook은 GitHub에서 26,000개 이상의 스타를 획득했으며 매일 수백 개의 스타가 증가하고 있는, 현재 가장 핫한 오픈소스 AI 도구 중 하나입니다.
Open Notebook vs Google NotebookLM 핵심 비교
| 기능 | Open Notebook | Google NotebookLM |
|---|---|---|
| 배포 방식 | Docker 자체 호스팅 / 로컬 실행 | Google 클라우드 (자체 호스팅 불가) |
| 데이터 프라이버시 | 데이터는 완전히 자신의 관리 하에 있음 | 데이터는 Google 서버에 저장됨 |
| AI 모델 선택 | 18개 이상 제공업체 (OpenAI, Anthropic, Ollama, DeepSeek 등) | Google Gemini만 사용 가능 |
| 팟캐스트 생성 | 1~4명의 커스텀 캐릭터, 스크립트 제어 가능 | 고정 2인 Deep Dive 형식 |
| API 접근 | 완전한 REST API (localhost:5055/docs) | 공개 API 없음 |
| 콘텐츠 변환 | 커스텀 + 내장된 다양한 변환 액션 | 제한된 내장 옵션 |
| 비용 | AI 호출 비용만 지불 (로컬 Ollama는 무료) | 무료 티어 + 월간 구독 |
| 확장성 | 오픈소스 코드, 자유롭게 수정 및 통합 가능 | 클로즈드 시스템, 커스터마이징 불가 |
| 라이선스 | Apache 2.0 | 독점 소프트웨어 |
이 비교에서 알 수 있듯이, Open Notebook의 핵심 우위는 데이터 주권과 유연성에 있습니다. 프라이버시를 중시하는 연구자, 기업 개발자, 커스터마이즈된 워크플로우가 필요한 사용자에게는 NotebookLM보다 더 적합한 선택지입니다.
왜 Open Notebook을 선택해야 할까?
1. 프라이버시 우선: 당신의 데이터는 당신이 주인
NotebookLM을 사용할 때 업로드한 모든 PDF, 노트, 대화 기록은 Google의 서버에 저장됩니다. 기밀 정보, 학술 연구, 개인 민감 정보를 포함하는 콘텐츠의 경우 이는 보안상의 우려가 될 수 있습니다.
Open Notebook은 자체 호스팅 아키텍처를 채택하여 모든 데이터가 자신의 머신이나 서버에 저장됩니다. 백엔드 데이터베이스로 SurrealDB를 사용함으로써 데이터 저장 위치와 접근 권한을 완전히 통제할 수 있습니다.
2. 18개 이상 AI 모델 제공업체 지원
Open Notebook은 Esperanto 라이브러리를 통해 주요 AI 제공업체에 대한 통합된 접근을 구현합니다:
| 제공업체 | LLM | Embedding | STT | TTS |
|---|---|---|---|---|
| OpenAI | ✅ | ✅ | ✅ | ✅ |
| Anthropic (Claude) | ✅ | ❌ | ❌ | ❌ |
| Google (Gemini) | ✅ | ✅ | ✅ | ✅ |
| Ollama (로컬) | ✅ | ✅ | ❌ | ❌ |
| DeepSeek | ✅ | ❌ | ❌ | ❌ |
| Groq | ✅ | ❌ | ✅ | ❌ |
| Mistral | ✅ | ✅ | ✅ | ✅ |
| Azure OpenAI | ✅ | ✅ | ✅ | ✅ |
| OpenRouter | ✅ | ✅ | ❌ | ❌ |
| xAI | ✅ | ❌ | ❌ | ✅ |
| LM Studio (호환 엔드포인트) | ✅ | ✅ | ✅ | ✅ |
즉, 다음과 같은 선택이 가능합니다: - Ollama로 로컬 실행하여 Llama 3 또는 Qwen 모델을 사용해 제로 API 비용의 완전 오프라인 사용 - Groq로 초고속 추론 획득 (빠른 질의응답에 적합) - DeepSeek로 가성비 좋은 중국어 이해력 확보 - 언제든지 제공업체를 전환하여 벤더 락인 회피
3. 전문가급 팟캐스트 생성
Open Notebook의 팟캐스트 생성 기능은 NotebookLM보다 훨씬 유연합니다:
- 1~4명 스피커: 각 역할의 목소리, 톤, 전문 지식을 커스터마이즈 가능
- Episode Profiles: 각 에피소드의 주제, 스타일, 대상 청중 정의
- 스크립트 미리보기 및 편집: 오디오 생성 전 스크립트 검토 및 수정 가능
- 다국어 지원: 영어, 중국어, 일본어, 포르투갈어 등 다수 언어 지원
반면, NotebookLM의 Podcast 기능은 고정된 2인 대화 (남성 1명, 여성 1명) 형식으로 스타일이 단일하며 커스터마이즈가 불가능합니다.
4. 완전한 REST API
Open Notebook은 완전한 REST API를 제공합니다 (기본적으로 http://localhost:5055/docs에서 접근 가능):
- Notebook 생성 및 관리
- 다양한 유형의 소스 파일 업로드 및 처리 (PDF, 동영상, 웹페이지 등)
- AI 기반 노트 생성 및 콘텐츠 변환 실행
- 채팅 히스토리 및 컨텍스트 쿼리
이를 통해 Open Notebook을 기존 워크플로우에 쉽게 통합할 수 있습니다. 예를 들어: - Slack/Discord 토론을 자동으로 Notebook에 아카이브 - 특정 웹사이트를 정기적으로 크롤링하여 요약 생성 - CI/CD 파이프라인과 통합하여 기술 문서 요약 자동 생성
빠른 시작: 5분 만에 Open Notebook 배포
Open Notebook의 공식 권장 배포 방식은 Docker Compose를 사용하는 것이며, 전체 과정은 두 줄의 명령어로 완료됩니다.
사전 요구사항
- Docker Desktop 설치 및 실행 완료
- 최소 4GB 사용 가능한 디스크 공간 (SurrealDB 데이터 및 로컬 캐시용)
- AI 제공업체의 API Key 하나 (또는 Ollama 로컬 모델 사용 시 불필요)
Step 1: docker-compose.yml 다운로드
curl -o docker-compose.yml https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml
또는 수동으로 docker-compose.yml 파일 생성:
services:
surrealdb:
image: surrealdb/surrealdb:v2
command: start --log info --user root --pass root rocksdb:/mydata/mydatabase.db
user: root
ports:
- "8000:8000"
volumes:
- ./surreal_data:/mydata
restart: always
open_notebook:
image: lfnovo/open_notebook:v1-latest
ports:
- "8502:8502" # Web UI
- "5055:5055" # REST API
environment:
- OPEN_NOTEBOOK_ENCRYPTION_KEY=change-me-to-a-secret-string
- SURREAL_URL=ws://surrealdb:8000/rpc
- SURREAL_USER=root
- SURREAL_PASSWORD=root
- SURREAL_NAMESPACE=open_notebook
- SURREAL_DATABASE=open_notebook
volumes:
- ./notebook_data:/app/data
depends_on:
- surrealdb
restart: always
중요: OPEN_NOTEBOOK_ENCRYPTION_KEY를 자신만의 비밀 문자열로 변경하세요. 예를 들어 my-super-secret-key-2026. 이 키는 데이터베이스에 저장된 민감 정보 (API Key 등) 를 암호화하는 데 사용됩니다.
Step 2: 서비스 시작
docker compose up -d
SurrealDB 초기화를 위해 15~20초 기다린 후 브라우저에서 다음 주소로 접속하세요:
http://localhost:8502
Open Notebook의 로그인/등록 화면이 표시되어야 합니다.
Step 3: API Key 설정
- 첫 접속 시 관리자 계정 생성을 요청받습니다
- 로그인 후 Settings → API Keys로 이동
- Add Credential 클릭
- AI 제공업체 선택 (예: OpenAI, Anthropic, Google 등)
- API Key를 붙여넣고 Save 클릭
- Test Connection으로 연결 상태 확인
- Discover Models로 사용 가능한 모델 목록 자동 가져오기
- Register Models로 등록 완료
API Key가 없다면 다음 플랫폼에서 얻을 수 있습니다: - OpenAI - Anthropic - Google AI Studio - Groq (무료 티어 있음)
Ollama로 제로 비용 로컬 실행
완전 무료로 오프라인 사용을 원한다면 Ollama와 함께 사용할 수 있습니다:
# Ollama 설치 (macOS/Linux)
curl -fsSL https://ollama.ai/install.sh | sh
# 경량 모델 pull
ollama pull llama3.2:3b
# Ollama 서비스 시작
ollama serve
그런 다음 Open Notebook의 API Keys 설정에서:
1. 자격 증명 추가, 제공업체로 Ollama 선택
2. URL에 http://host.docker.internal:11434 입력 (Docker 내부에서 호스트 머신 접근)
3. 연결 테스트 및 모델 등록
이렇게 하면 TTS 팟캐스트 생성을 제외한 Open Notebook의 모든 기능을 어떤 API 비용도 지불하지 않고 사용할 수 있습니다.
핵심 기능 실전
첫 번째 Notebook 생성
Open Notebook에 로그인한 후 좌측 상단의 + New Notebook 버튼을 클릭하세요:
- Notebook 이름: 예시 「2026 AI 기술 트렌드 연구」
- 설명 (선택사항): 이 Notebook의 용도 간단히 설명
- 기본 모델 선택: 등록된 모델 중 기본 채팅 모델 선택
- Create 클릭
각 Notebook은 독립적인 지식 베이스입니다. 서로 다른 프로젝트마다 다른 Notebook을 생성할 수 있습니다. 예를 들어: - 「Python 학습 노트」 - 「경쟁사 분석 보고서」 - 「제품 요구사항 문서 라이브러리」
콘텐츠 소스 (Sources) 추가
Open Notebook은 다양한 유형의 콘텐츠 소스를 지원합니다. 이것이 가장 강력한 기능 중 하나입니다.
지원되는 소스 유형
| 유형 | 포맷 | 설명 |
|---|---|---|
| PDF 문서 | .pdf |
학술 논문, 전자책, 보고서 |
| 텍스트 파일 | .txt, .md |
노트, 코드 스니펫, 로그 |
| Office 문서 | .docx, .pptx |
Word 문서, PowerPoint 프레젠테이션 |
| 웹페이지 링크 | URL | 자동 크롤링 및 본문 추출 |
| YouTube 동영상 | YouTube URL | 자동 자막 변환 (STT 설정 필요) |
| 오디오 파일 | .mp3, .wav |
회의 녹음, 팟캐스트 (STT 설정 필요) |
PDF 추가 예시
- Notebook 페이지에서 Add Source 클릭
- Upload File 선택
- PDF 파일 드래그 앤 드롭 또는 선택 (예: arXiv 논문)
- 처리 완료 대기 (시스템이 자동으로 텍스트 추출 및 벡터 임베딩 생성)
- Sources 목록에서 처리 상태 및 글자 수 통계 확인 가능
웹페이지 링크 추가 예시
- Add Source → Web Page 클릭
- URL 붙여넣기, 예:
https://arxiv.org/abs/2401.12345 - Open Notebook이 자동으로 페이지를 크롤링하여 본문 추출
- 페이지에 유료 장벽이나 anti-scraping 메커니즘이 있는 경우 수동으로 내용을 복사하여 붙여넣어야 할 수 있음
지식 베이스와 대화하기 (Chat)
소스 파일을 추가한 후 AI와 대화를 시작할 수 있습니다.
Notebook 페이지 우측에는 Chat 패널이 있습니다:
-
컨텍스트 범위 선택: - 「All Sources」: 모든 소스 파일 기반으로 답변 - 「Selected Sources」: 선택한 몇 개 파일만으로 답변 - 「Notes Only」: 수동으로 작성한 노트만으로 답변
-
질문 입력, 예:
이 논문의 핵심 기여점은 무엇인가요? 한국어로 세 가지 핵심 포인트를 요약해주세요. -
인용 확인: AI의 답변에는 출처 인용이 첨부되며, 인용을 클릭하면 원문의 해당 위치로 이동 가능
-
노트로 저장: AI의 답변이 가치 있다면 Save as Note를 클릭하여 영구 노트로 저장
AI 보조 노트 생성
실시간 대화 외에도 Open Notebook은 배치 노트 생성을 지원합니다:
- Notebook 페이지에서 Generate Notes 클릭
- 처리할 소스 파일 선택 (복수 선택 가능)
- 노트 템플릿 선택: - Summary: 전체 요약 생성 - Key Points: 핵심 요점 추출 - Q&A: 자주 묻는 질문 및 답변 생성 - Custom: 커스텀 프롬프트
- Generate 클릭, AI 처리 완료 대기
- 생성된 노트는 좌측 Notes 패널에 나타나며 추가 편집 가능
콘텐츠 변환 (Transformations)
Content Transformations는 Open Notebook의 고급 기능으로, 소스 파일에 커스텀 AI 처리 액션을 실행할 수 있습니다.
예를 들어, 다음과 같은 Transformation을 생성할 수 있습니다: - 모든 기술 문서를 한국어로 번역 - 회의 기록에서 Action Items 추출 - 긴 블로그 글을 500자 요약으로 압축
설정 단계:
1. Settings → Transformations로 이동
2. New Transformation 클릭
3. 이름과 프롬프트 템플릿 정의, 예:
다음 기술 문서를 한국어로 번역하세요. 전문 용어의 정확성을 유지하세요:
{{content}}
4. 저장 후 임의의 소스 파일에서 우클릭하여 해당 Transformation을 선택하면 바로 실행됩니다
팟캐스트 생성: 노트를 오디오 프로그램으로 변환
Open Notebook의 팟캐스트 생성 기능은 가장 특징적인 기능 중 하나입니다. 임의의 Notebook 콘텐츠를 전문적인 다인 대화 팟캐스트로 변환할 수 있습니다.
팟캐스트 역할 설정
- Settings → Podcast Profiles로 이동
- New Profile 클릭
- 역할 정의: - 진행자: 주제 안내, 질문 담당 - 전문가 A: 기술 세부 사항 심층 설명 담당 - 전문가 B: 다른 관점 제공 또는 반박 의견 담당 - (선택사항) 내레이터: 오프닝 소개 및 엔딩 요약 담당
각 역할은 다음을 설정할 수 있습니다: - 목소리 유형: 남성/여성/중성 - 말 속도: 느림/보통/빠름 - 톤 스타일: 격식있는/캐주얼/유머러스/진지함 - TTS 제공업체: OpenAI, ElevenLabs, Google 등
팟캐스트 생성
- Notebook 페이지에서 Generate Podcast 클릭
- 포함할 소스 파일 및 노트 선택 (시스템이 자동으로 핵심 콘텐츠 추출)
- 팟캐스트 프로필 선택
- 목표 시간 설정 (예: 10분, 20분)
- Generate Script 클릭하여 스크립트 미리보기
- 스크립트 검토 및 편집 (선택사항)
- Generate Audio 클릭하여 오디오 합성 시작
- 완료 후 MP3 파일 다운로드 또는 온라인 재생 가능
실제 적용 사례
- 학습 복습: 일주일간의 학습 노트를 출퇴근 시간에 들을 팟캐스트로 변환
- 지식 공유: 팀 내부 교육용 오디오 자료 생성
- 콘텐츠 재활용: 블로그 글을 팟캐스트로 변환하여 Spotify/Apple Podcasts에 게시
- 언어 학습: 목표 언어로 팟캐스트 생성, 듣기 연습
REST API 실전: 워크플로우 자동화
Open Notebook은 완전한 REST API를 제공하며, 기본적으로 http://localhost:5055에서 실행됩니다. API 문서는 Swagger UI를 통해 접근 가능합니다: http://localhost:5055/docs
인증
모든 API 요청은 Header에 API Token을 포함해야 합니다:
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
http://localhost:5055/api/notebooks
Settings → API Keys에서 API Token을 생성할 수 있습니다.
주요 API 예시
1. 모든 Notebook 나열
curl -H "Authorization: Bearer $TOKEN" \
http://localhost:5055/api/notebooks
응답:
{
"notebooks": [
{
"id": "nb_abc123",
"title": "2026 AI 기술 트렌드 연구",
"created_at": "2026-06-07T10:00:00Z",
"source_count": 5,
"note_count": 12
}
]
}
2. 새 Notebook 생성
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title": "새 제품 조사", "description": "경쟁사 분석 자료 라이브러리"}' \
http://localhost:5055/api/notebooks
3. 소스 파일 업로드
curl -X POST -H "Authorization: Bearer $TOKEN" \
-F "file=@research-paper.pdf" \
-F "notebook_id=nb_abc123" \
http://localhost:5055/api/sources/upload
4. 채팅 요청 시작
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notebook_id": "nb_abc123",
"message": "이 논문의 핵심 관점을 요약하세요",
"model": "gpt-4o",
"temperature": 0.7
}' \
http://localhost:5055/api/chat
Python 클라이언트 예시
import requests
BASE_URL = "http://localhost:5055/api"
TOKEN = "your_api_token_here"
headers = {"Authorization": f"Bearer {TOKEN}"}
# 모든 Notebook 가져오기
response = requests.get(f"{BASE_URL}/notebooks", headers=headers)
notebooks = response.json()["notebooks"]
for nb in notebooks:
print(f"Notebook: {nb['title']} ({nb['source_count']} sources)")
# 새 Notebook 생성
new_nb = requests.post(
f"{BASE_URL}/notebooks",
headers=headers,
json={"title": "테스트 Notebook", "description": "API 테스트"}
)
print(f"Created: {new_nb.json()['id']}")
REST API를 통해 Open Notebook을 기존 자동화 워크플로우에 통합할 수 있습니다. 예를 들어: - RSS 구독에서 최신 기사를 정기적으로 크롤링하여 요약 생성 - Slack 채널 토론을 자동으로 Notebook에 아카이브 - CI/CD 파이프라인과 통합하여 코드 변경의 기술적 영향 분석 자동 생성
고급 설정
공개 배포 시 비밀번호 보호
Open Notebook을 공용 인터넷 서버에 배포하는 경우 비밀번호 보호를 활성화하는 것이 좋습니다:
docker-compose.yml에 환경 변수 추가:
open_notebook:
environment:
- OPEN_NOTEBOOK_PASSWORD=my-secure-password
서비스 재시작 후 Web UI 접근 시 비밀번호 입력이 필요합니다.
커스텀 도메인 및 HTTPS
Nginx 리버스 프록시를 사용하여 커스텀 도메인과 HTTPS를 구현할 수 있습니다:
server {
listen 443 ssl;
server_name notebook.example.com;
ssl_certificate /etc/letsencrypt/live/notebook.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/notebook.example.com/privkey.pem;
location / {
proxy_pass http://localhost:8502;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /api/ {
proxy_pass http://localhost:5055/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
데이터 백업
Open Notebook의 데이터는 두 디렉토리에 저장됩니다:
- ./surreal_data/: SurrealDB 데이터베이스 파일
- ./notebook_data/: 업로드된 소스 파일 및 캐시
이 두 디렉토리를 정기적으로 백업하면 됩니다:
# 백업 생성
tar czf open-notebook-backup-$(date +%Y%m%d).tar.gz \
surreal_data/ notebook_data/
# 백업 복원
tar xzf open-notebook-backup-20260607.tar.gz
자주 발생하는 문제 해결
1. Docker 컨테이너 시작 후 Web UI에 접근 불가
증상: docker compose up -d 성공했지만 http://localhost:8502에 접근 불가
해결 방법:
# 컨테이너 상태 확인
docker compose ps
# 로그 확인
docker compose logs open_notebook
docker compose logs surrealdb
# SurrealDB가 준비되지 않은 경우 30초 대기 후 재시도
docker compose restart
2. API Key 테스트 연결 실패
증상: Settings에서 OpenAI/Anthropic 연결 테스트 시 오류 표시
해결 방법: - API Key가 올바르고 만료되지 않았는지 확인 - 네트워크 연결 확인 (일부 지역에서는 프록시 필요) - Docker 로그에서 SSL 또는 타임아웃 오류 확인 - 호스트 머신에서 직접 API를 호출하여 Key 유효성 검증 시도
3. Ollama 모델 발견 불가
증상: Ollama 자격 증명 추가 후 Discover Models가 빈 목록 반환
해결 방법:
# Ollama가 실행 중인지 확인
ollama list
# Docker 내부에서 연결 테스트
docker exec -it <open_notebook_container_id> curl http://host.docker.internal:11434/api/tags
# 연결 실패 시 Docker 네트워크 설정 확인
# macOS/Docker Desktop은 기본적으로 host.docker.internal 지원
# Linux는 추가 설정이 필요할 수 있음
4. PDF 처리 실패 또는 내용이 비어 있음
증상: PDF 업로드 후 Source가 처리 완료로 표시되지만 글자 수가 0
해결 방법: - PDF가 스캔본이 아닌지 확인 (스캔본은 OCR 필요, Open Notebook은 현재 미지원) - 다른 PDF 리더로 열어 텍스트 복사 가능 여부 확인 - Docker 로그에서 메모리 부족 오류 확인 - 대용량 파일 (>50MB) 은 Docker 메모리 제한을 늘려야 할 수 있음
5. 팟캐스트 생성 오디오 품질 저하
증상: 생성된 팟캐스트의 음성이 기계적이고 부자연스러움
해결 방법: - 더 고품질의 TTS 제공업체로 전환 (예: ElevenLabs) - 역할 프로필에서 말 속도와 톤 파라미터 조정 - 선택한 TTS 모델이 대상 언어를 지원하는지 확인 - API 할당량이 충분한지 확인
요약
Open Notebook은 현재 가장 성숙한 오픈소스 NotebookLM 대안으로, 다음과 같은 측면에서 Google의 네이티브 제품을 능가합니다:
- 데이터 주권: 자체 호스팅 아키텍처로 연구 데이터 완전 프라이버시 보장
- 모델 자유: 18개 이상 AI 제공업체 지원, 벤더 락인 회피
- 기능 풍부: 전문가급 팟캐스트 생성, REST API, 커스텀 변환 액션
- 비용 통제 가능: 로컬 Ollama 옵션으로 제로 API 비용 실현
- 오픈소스 투명성: Apache 2.0 라이선스, 커뮤니티 주도 개발
프라이버시를 중시하는 연구자, 커스터마이즈된 워크플로우가 필요한 개발자, 또는 단순히 대기업 독점에서 벗어나고 싶은 지식 근로자에게 Open Notebook은 시간을 투자해 학습할 가치가 있는 도구입니다.
다음 단계 행동: - GitHub 저장소 방문하여 최신 진행 상황 확인 - Discord 커뮤니티에 가입하여 다른 사용자와 교류 - 공식 문서를 읽어 더 자세한 튜토리얼 얻기 - 로컬에 배포하고 첫 번째 Notebook 생성
이 문서는 Open Notebook v1 버전을 기준으로 작성되었으며, 프로젝트는 지속적으로 업데이트 중입니다. 구체적인 기능은 최신 버전을 기준으로 하세요.