Source profileQuality 74/100Review permissions

K-Dense-AI/scientific-agent-skills/skills/open-notebook/SKILL.md

open-notebook

Self-hosted, open-source alternative to Google NotebookLM 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 16+

Source repository stars
31,966
Declared platforms
0
Static risk flags
3
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

Self-hosted, open-source alternative to Google NotebookLM for AI-powered research and document analysis. Supports 16+

Best for

  • 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 fro…

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills --skill "skills/open-notebook"
Safe inspection promptEditorial

Inspect the Agent Skill "open-notebook" from https://github.com/K-Dense-AI/scientific-agent-skills/blob/e7ac42510774624f327003c95b6650e2883bc01d/skills/open-notebook/SKILL.md at commit e7ac42510774624f327003c95b6650e2883bc01d. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Quick Start

    Deploy Open Notebook using Docker Compose:

    Docker Desktop installedAPI key for at least one AI provider (or local Ollama for free local inference)- Docker Desktop installed - API key for at least one AI provider (or local Ollama for free local inference)
  2. 02

    Prerequisites

    Docker Desktop installed

    Docker Desktop installedAPI key for at least one AI provider (or local Ollama for free local inference)- Docker Desktop installed - API key for at least one AI provider (or local Ollama for free local inference)
  3. 03

    Installation

    Deploy Open Notebook using Docker Compose:

    Deploy Open Notebook using Docker Compose:
  4. 04

    Download the docker-compose file

    curl -o docker-compose.yml https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml

    curl -o docker-compose.yml https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml
  5. 05

    Set the required encryption key

    export OPENNOTEBOOKENCRYPTIONKEY="your-secret-key-here"

    export OPENNOTEBOOKENCRYPTIONKEY="your-secret-key-here"

Permission review

Static risk signals and limitations

Network access

medium · line 31

The documentation includes network, browsing, or remote request actions.

curl -o docker-compose.yml https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml

Runs scripts

medium · line 37

The documentation asks the agent to run terminal commands or scripts.

docker-compose up -d

Network access

medium · line 59

The documentation includes network, browsing, or remote request actions.

BASE_URL = "http://localhost:5055/api"

Sends data out

high · line 62

The documentation includes sending, uploading, or posting data to a remote service.

response = requests.post(f"{BASE_URL}/credentials", json={

Sends data out

high · line 70

The documentation includes sending, uploading, or posting data to a remote service.

response = requests.post(

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score74/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars31,966SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
K-Dense-AI/scientific-agent-skills
Skill path
skills/open-notebook/SKILL.md
Commit
e7ac42510774624f327003c95b6650e2883bc01d
License
MIT
Collected
2026-07-28
Default branch
main
View the original SKILL.md

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)
  • Complete data sovereignty through self-hosting
  • Open source and fully extensible (MIT license)

Repository: https://github.com/lfnovo/open-notebook

Quick Start

Prerequisites

  • Docker Desktop installed
  • API key for at least one AI provider (or local Ollama 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 key
export OPEN_NOTEBOOK_ENCRYPTION_KEY="your-secret-key-here"

# Launch the services
docker-compose up -d

Access the application:

Configure AI Provider

After startup, configure at least one AI provider:

  1. Navigate to Settings > API Keys in the UI
  2. Add credentials for your preferred provider (OpenAI, Anthropic, etc.)
  3. Test the connection and discover available models
  4. Register models for use across the platform

Or configure via the REST API:

import requests

BASE_URL = "http://localhost:5055/api"

# Add a credential for an AI provider
response = requests.post(f"{BASE_URL}/credentials", json={
    "provider": "openai",
    "name": "My OpenAI Key",
    "api_key": "sk-..."
})
credential = response.json()

# Discover available models
response = requests.post(
    f"{BASE_URL}/credentials/{credential['id']}/discover"
)
discovered = response.json()

# Register discovered models
requests.post(
    f"{BASE_URL}/credentials/{credential['id']}/register-models",
    json={"model_ids": [m["id"] for m in discovered["models"]]}
)

Core Features

Notebooks

Organize research into separate notebooks, each containing sources, notes, and chat sessions.

import requests

BASE_URL = "http://localhost:5055/api"

# Create a notebook
response = requests.post(f"{BASE_URL}/notebooks", json={
    "name": "Cancer Genomics Research",
    "description": "Literature review on tumor mutational burden"
})
notebook = response.json()
notebook_id = notebook["id"]

Sources

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 file
with open("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 16+ AI providers through the Esperanto library:

ProviderLLMEmbeddingSpeech-to-TextText-to-Speech
OpenAIYesYesYesYes
AnthropicYesNoNoNo
Google GenAIYesYesNoYes
Vertex AIYesYesNoYes
OllamaYesYesNoNo
GroqYesNoYesNo
MistralYesYesNoNo
Azure OpenAIYesYesNoNo
DeepSeekYesNoNoNo
xAIYesNoNoNo
OpenRouterYesNoNoNo
ElevenLabsNoNoYesYes
PerplexityYesNoNoNo
VoyageNoYesNoNo

Environment Variables

Key configuration variables for Docker deployment:

VariableDescriptionDefault
OPEN_NOTEBOOK_ENCRYPTION_KEYRequired. Secret key for encrypting stored credentialsNone
SURREAL_URLSurrealDB connection URLws://surrealdb:8000/rpc
SURREAL_NAMESPACEDatabase namespaceopen_notebook
SURREAL_DATABASEDatabase nameopen_notebook
OPEN_NOTEBOOK_PASSWORDOptional password protection for the UINone

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
  • /api/notes - Note management
  • /api/chat/sessions - Chat session management
  • /api/chat/execute - Chat message execution
  • /api/search - Full-text and vector search
  • /api/podcasts - Podcast generation and management
  • /api/transformations - Content transformation pipelines
  • /api/models - AI model configuration and discovery
  • /api/credentials - Provider credential management

For complete API reference with all endpoints and request/response formats, see references/api_reference.md.

Architecture

Open Notebook uses a modern stack:

  • Backend: Python with FastAPI
  • Database: SurrealDB (document + relational)
  • AI Integration: LangChain with the Esperanto multi-provider library
  • Frontend: Next.js with React
  • Deployment: Docker Compose with persistent volumes

Important Notes

  • Open Notebook requires Docker for deployment
  • At least one AI provider must be configured for AI features to work
  • For free local inference without API costs, use Ollama
  • The OPEN_NOTEBOOK_ENCRYPTION_KEY must be set before first launch and kept consistent across restarts
  • All data is stored locally in Docker volumes for complete data sovereignty

Alternatives

Compare before choosing

Computed 9531,966

K-Dense-AI/scientific-agent-skills

simpy

Build, inspect, test, and analyze bounded process-based discrete-event simulations with SimPy, including events, resources, interrupts, monitoring, replications, warm-up, and reproducible output analysis.

Computed 9337,126

github/awesome-copilot

mcp-implementation-security-review

Review the implementation source code of MCP (Model Context Protocol) servers, clients, and tool handlers against a security baseline — authentication, sessions, rate limiting, input-schema validation, official-SDK usage, RCE vectors, and the OWASP MCP Top 10 — producing a report with file/line evidence. Use this skill when: - Reviewing an MCP server implementation for security before release - Checking a server against the baseline controls (MCP-01 to MCP-05) and the OWASP MCP Top 10 - Auditing

Computed 86234,327

affaan-m/ECC

django-verification

Verification loop for Django projects: migrations, linting, tests with coverage, security scans, and deployment readiness checks before release or PR.

Computed 8610,762

Jeffallan/claude-skills

kubernetes-specialist

Use when deploying or managing Kubernetes workloads. Invoke to create deployment manifests, configure pod security policies, set up service accounts, define network isolation rules, debug pod crashes, analyze resource limits, inspect container logs, or right-size workloads. Use for Helm charts, RBAC policies, NetworkPolicies, storage configuration, performance optimization, GitOps pipelines, and multi-cluster management.