Run Open Notebook, a self-hosted open-source alternative to Google NotebookLM with a full REST API, for AI-powered research and document analysis. Use when organizing research materials into notebooks, ingesting diverse content sources (PDFs, videos, audio, web pages, Office documents), generating AI-powered notes and summaries, creating multi-speaker podcasts from research, chatting with documents using context-aware AI, searching across materials with full-text and vector search, or running custom content transformations. Supports 18+ AI providers including OpenAI, Anthropic, Google, Ollama, LM Studio, Groq, and Mistral with complete data privacy through self-hosting. For a one-shot file-to-Markdown conversion (no notebook, chat, or search), use alterlab-markitdown instead. Part of the AlterLab Academic Skills suite.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
La commande reste sur une seule ligne. Faites défiler horizontalement pour la vérifier avant de la copier.
Vous préférez une copie locale ? Téléchargez les fichiers actuellement disponibles dans SkillsMP.
Explorateur de fichiers
10 fichiers
Affichage de SKILL.md
SKILL.md
Instructions source · Aperçu en lecture seule
name
alterlab-open-notebook
description
Run Open Notebook, a self-hosted open-source alternative to Google NotebookLM with a full REST API, for AI-powered research and document analysis. Use when organizing research materials into notebooks, ingesting diverse content sources (PDFs, videos, audio, web pages, Office documents), generating AI-powered notes and summaries, creating multi-speaker podcasts from research, chatting with documents using context-aware AI, searching across materials with full-text and vector search, or running custom content transformations. Supports 18+ AI providers including OpenAI, Anthropic, Google, Ollama, LM Studio, Groq, and Mistral with complete data privacy through self-hosting. For a one-shot file-to-Markdown conversion (no notebook, chat, or search), use alterlab-markitdown instead. Part of the AlterLab Academic Skills suite.
license
MIT
allowed-tools
Read Write Edit Bash(python:*)
compatibility
Requires a self-hosted Open Notebook instance (Docker Compose) plus an AI provider API key (OpenAI/Anthropic/Google/Groq/Mistral) or a local Ollama; set OPEN_NOTEBOOK_ENCRYPTION_KEY and OPEN_NOTEBOOK_PASSWORD
metadata
{"skill-author":"AlterLab","version":"1.0.0"}
Open Notebook
Overview
Open Notebook is an open-source, self-hosted alternative to Google's NotebookLM that enables researchers to organize materials, generate AI-powered insights, create podcasts, and have context-aware conversations with their documents — all while maintaining complete data privacy.
Unlike Google's Notebook LM, which has no publicly available API outside of the Enterprise version, Open Notebook provides a comprehensive REST API, supports 16+ AI providers, and runs entirely on your own infrastructure.
Key advantages over NotebookLM:
Full REST API for programmatic access and automation
Choice of 16+ AI providers (not locked to Google models)
Multi-speaker podcast generation with 1-4 customizable speakers (vs. 2-speaker limit)
Docker with Docker Compose v2 (OrbStack or Docker Desktop both work; docker compose must be available)
API key for at least one AI provider (or local Ollama / LM Studio for free local inference)
Installation
Deploy Open Notebook using Docker Compose:
# Download the docker-compose file
curl -o docker-compose.yml https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml
# Set the required encryption keyexport OPEN_NOTEBOOK_ENCRYPTION_KEY="your-secret-key-here"# Launch the services (v2 syntax; OrbStack/Docker Desktop both expose this)
docker compose up -d
Ingest diverse content types including PDFs, videos, audio files, web pages, and Office documents. Sources are processed for full-text and vector search.
# Add a web URL source
response = requests.post(f"{BASE_URL}/sources", data={
"url": "https://arxiv.org/abs/2301.00001",
"notebook_id": notebook_id,
"process_async": "true"
})
source = response.json()
# Upload a PDF filewithopen("paper.pdf", "rb") as f:
response = requests.post(
f"{BASE_URL}/sources",
data={"notebook_id": notebook_id},
files={"file": ("paper.pdf", f, "application/pdf")}
)
Notes
Create and manage notes (human or AI-generated) associated with notebooks.
# Create a human note
response = requests.post(f"{BASE_URL}/notes", json={
"title": "Key Findings",
"content": "TMB correlates with immunotherapy response in NSCLC...",
"note_type": "human",
"notebook_id": notebook_id
})
Context-Aware Chat
Chat with your research materials using AI that cites sources.
# Create a chat session
session = requests.post(f"{BASE_URL}/chat/sessions", json={
"notebook_id": notebook_id,
"title": "TMB Discussion"
}).json()
# Send a message with context from sources
response = requests.post(f"{BASE_URL}/chat/execute", json={
"session_id": session["id"],
"message": "What are the key biomarkers for immunotherapy response?",
"context": {"include_sources": True, "include_notes": True}
})
Search
Search across all materials using full-text or vector (semantic) search.
# Vector search across the knowledge base
results = requests.post(f"{BASE_URL}/search", json={
"query": "tumor mutational burden immunotherapy",
"search_type": "vector",
"limit": 10
}).json()
# Ask a question with AI-powered answer
answer = requests.post(f"{BASE_URL}/search/ask/simple", json={
"query": "How does TMB predict checkpoint inhibitor response?"
}).json()
Podcast Generation
Generate professional multi-speaker podcasts from research materials with 1-4 customizable speakers.
# Generate a podcast episode
job = requests.post(f"{BASE_URL}/podcasts/generate", json={
"notebook_id": notebook_id,
"episode_profile_id": episode_profile_id,
"speaker_profile_ids": [speaker1_id, speaker2_id]
}).json()
# Check generation status
status = requests.get(f"{BASE_URL}/podcasts/jobs/{job['job_id']}").json()
# Download audio when ready
audio = requests.get(
f"{BASE_URL}/podcasts/episodes/{status['episode_id']}/audio"
)
Content Transformations
Apply custom AI-powered transformations to content for summarization, extraction, and analysis.
# Create a custom transformation
transform = requests.post(f"{BASE_URL}/transformations", json={
"name": "extract_methods",
"title": "Extract Methods",
"description": "Extract methodology details from papers",
"prompt": "Extract and summarize the methodology section...",
"apply_default": False
}).json()
# Execute transformation on text
result = requests.post(f"{BASE_URL}/transformations/execute", json={
"transformation_id": transform["id"],
"input_text": "...",
"model_id": "model_id_here"
}).json()
Supported AI Providers
Open Notebook supports 18+ AI providers through the Esperanto library. A representative subset:
Provider
LLM
Embedding
Speech-to-Text
Text-to-Speech
OpenAI
Yes
Yes
Yes
Yes
Anthropic
Yes
No
No
No
Google GenAI
Yes
Yes
Yes
Yes
Vertex AI
Yes
Yes
No
Yes
Ollama
Yes
Yes
No
No
LM Studio
Yes
Yes
Yes
Yes
Groq
Yes
No
Yes
No
Mistral
Yes
Yes
Yes
Yes
Azure OpenAI
Yes
Yes
Yes
Yes
DeepSeek
Yes
No
No
No
xAI
Yes
No
No
Yes
OpenRouter
Yes
Yes
No
No
ElevenLabs
No
No
Yes
Yes
Voyage
No
Yes
No
No
LM Studio is reached via the OpenAI-compatible provider, so it inherits the full capability set. For the full provider matrix see the upstream README.
Environment Variables
Key configuration variables for Docker deployment:
Variable
Description
Default
OPEN_NOTEBOOK_ENCRYPTION_KEY
Required. Secret key for encrypting stored credentials
None
SURREAL_URL
SurrealDB connection URL
ws://surrealdb:8000/rpc
SURREAL_NAMESPACE
Database namespace
open_notebook
SURREAL_DATABASE
Database name
open_notebook
OPEN_NOTEBOOK_PASSWORD
Optional password protection for the UI
None
API Reference
The REST API is available at http://localhost:5055/api with interactive documentation at /docs.
Core endpoint groups:
/api/notebooks - Notebook CRUD and source association
/api/sources - Source ingestion, processing, and retrieval