Open Notebook
Self-hosted research platform (MIT license) — organizes PDFs, videos, audio, web pages, and text into searchable notebooks with AI-powered chat. NotebookLM alternative with full data ownership.
Features
- Multi-format ingestion: PDFs, URLs, YouTube videos, audio files, raw text
- AI chat: Query notebooks in natural language with source citations
- Podcast generation: Multi-speaker audio synthesis from notebook content
- Full-text + vector search: Semantic and keyword search across all sources
- 16+ AI providers: OpenAI, Anthropic, Ollama, Gemini, and more
- REST API: Full API on port 5055 for programmatic access
Deployment
# Docker Compose (recommended)
git clone https://github.com/open-notebook/open-notebook
cd open-notebook
cp .env.example .env
# Edit .env: set AI provider API keys
docker compose up -d
# API available at: http://localhost:5055
Scripts
Three scripts are available for programmatic interaction:
| Script |
Purpose |
scripts/notebook_management.py |
Create, list, update, delete notebooks |
scripts/source_ingestion.py |
Add URLs, text, or file uploads |
scripts/chat_interaction.py |
Chat, search, and query notebooks |
Quick Start
# Create a notebook
python3 scripts/notebook_management.py \
--url http://localhost:5055 \
--action create \
--name "Alzheimer's Research"
# Add sources
python3 scripts/source_ingestion.py \
--url http://localhost:5055 \
--notebook-id <id> \
--action add-url \
--source "https://pubmed.ncbi.nlm.nih.gov/12345678/"
# Chat with notebook
python3 scripts/chat_interaction.py \
--url http://localhost:5055 \
--notebook-id <id> \
--question "What are the main amyloid beta mechanisms described?"
API Overview
Base URL: http://localhost:5055/api
| Method |
Endpoint |
Description |
| GET |
/notebooks |
List all notebooks |
| POST |
/notebooks |
Create notebook |
| GET |
/notebooks/{id} |
Get notebook details |
| PUT |
/notebooks/{id} |
Update notebook |
| DELETE |
/notebooks/{id} |
Delete notebook |
| POST |
/notebooks/{id}/sources |
Add source |
| GET |
/notebooks/{id}/sources |
List sources |
| DELETE |
/notebooks/{id}/sources/{source_id} |
Remove source |
| POST |
/notebooks/{id}/chat |
Chat with notebook |
| POST |
/notebooks/{id}/search |
Search sources |
| POST |
/notebooks/{id}/podcast |
Generate podcast |
Use Cases for Scientific Research
- Literature organization: Ingest papers by topic, chat to synthesize findings
- Protocol documentation: Store lab protocols with AI-powered Q&A
- Grant writing: Organize references and query for supporting evidence
- Multi-paper synthesis: "What do these 50 papers say about mechanism X?"
- Podcast summaries: Generate audio summaries of research notebooks
1---2name: open-notebook3description: Open Notebook4---5# Open Notebook67Self-hosted research platform (MIT license) — organizes PDFs, videos, audio, web pages, and text into searchable notebooks with AI-powered chat. NotebookLM alternative with full data ownership.89## Features1011- **Multi-format ingestion**: PDFs, URLs, YouTube videos, audio files, raw text12- **AI chat**: Query notebooks in natural language with source citations13- **Podcast generation**: Multi-speaker audio synthesis from notebook content14- **Full-text + vector search**: Semantic and keyword search across all sources15- **16+ AI providers**: OpenAI, Anthropic, Ollama, Gemini, and more16- **REST API**: Full API on port 5055 for programmatic access1718## Deployment1920```bash21# Docker Compose (recommended)22git clone https://github.com/open-notebook/open-notebook23cd open-notebook24cp .env.example .env25# Edit .env: set AI provider API keys26docker compose up -d2728# API available at: http://localhost:505529```3031## Scripts3233Three scripts are available for programmatic interaction:3435| Script | Purpose |36|--------|---------|37| `scripts/notebook_management.py` | Create, list, update, delete notebooks |38| `scripts/source_ingestion.py` | Add URLs, text, or file uploads |39| `scripts/chat_interaction.py` | Chat, search, and query notebooks |4041## Quick Start4243```bash44# Create a notebook45python3 scripts/notebook_management.py \46 --url http://localhost:5055 \47 --action create \48 --name "Alzheimer's Research"4950# Add sources51python3 scripts/source_ingestion.py \52 --url http://localhost:5055 \53 --notebook-id <id> \54 --action add-url \55 --source "https://pubmed.ncbi.nlm.nih.gov/12345678/"5657# Chat with notebook58python3 scripts/chat_interaction.py \59 --url http://localhost:5055 \60 --notebook-id <id> \61 --question "What are the main amyloid beta mechanisms described?"62```6364## API Overview6566Base URL: `http://localhost:5055/api`6768| Method | Endpoint | Description |69|--------|----------|-------------|70| GET | `/notebooks` | List all notebooks |71| POST | `/notebooks` | Create notebook |72| GET | `/notebooks/{id}` | Get notebook details |73| PUT | `/notebooks/{id}` | Update notebook |74| DELETE | `/notebooks/{id}` | Delete notebook |75| POST | `/notebooks/{id}/sources` | Add source |76| GET | `/notebooks/{id}/sources` | List sources |77| DELETE | `/notebooks/{id}/sources/{source_id}` | Remove source |78| POST | `/notebooks/{id}/chat` | Chat with notebook |79| POST | `/notebooks/{id}/search` | Search sources |80| POST | `/notebooks/{id}/podcast` | Generate podcast |8182## Use Cases for Scientific Research8384- **Literature organization**: Ingest papers by topic, chat to synthesize findings85- **Protocol documentation**: Store lab protocols with AI-powered Q&A86- **Grant writing**: Organize references and query for supporting evidence87- **Multi-paper synthesis**: "What do these 50 papers say about mechanism X?"88- **Podcast summaries**: Generate audio summaries of research notebooks