# Open Notebook > Alternativa autoalojada y de código abierto a Google NotebookLM para investigación y análisis de documentos con IA: organiza notebooks, ingiere PDFs, vídeo, audio y webs, genera resúmenes, podcasts multi-voz y chat contextual. Fuente: https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/open-notebook Markdown: https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/open-notebook.md Repositorio: https://github.com/K-Dense-AI/scientific-agent-skills Autor: K-Dense-AI Licencia: MIT Actualizado: hace 28 días Coste de contexto: 156 tok instalada, 2.5k tok al activarse, 14.2k tok con todos los archivos del bundle Bundle: 8 archivos, 55 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add K-Dense-AI/scientific-agent-skills --skill open-notebook --agent claude-code # Cursor npx -y skills add K-Dense-AI/scientific-agent-skills --skill open-notebook --agent cursor # Codex npx -y skills add K-Dense-AI/scientific-agent-skills --skill open-notebook --agent codex # Gemini CLI npx -y skills add K-Dense-AI/scientific-agent-skills --skill open-notebook --agent gemini # Windsurf npx -y skills add K-Dense-AI/scientific-agent-skills --skill open-notebook --agent windsurf # Cline npx -y skills add K-Dense-AI/scientific-agent-skills --skill open-notebook --agent cline ``` ## Qué hace - Organiza materiales de investigación en notebooks con fuentes, notas y sesiones de chat, vía una REST API en localhost:5055/api - Ingiere PDFs, vídeos, audio, páginas web y documentos Office, procesándolos para búsqueda de texto completo y vectorial - Genera notas y resúmenes con IA, y permite chatear con los documentos citando fuentes desde el contexto del notebook - Crea podcasts multi-voz (de 1 a 4 hablantes) a partir del material investigado - Ejecuta transformaciones de contenido personalizadas y se conecta a más de 16 proveedores de IA (OpenAI, Anthropic, Google, Ollama, Groq, Mistral...) ## Cuándo usarla - Se quieren organizar materiales de investigación en notebooks - Se necesita ingerir fuentes diversas como PDFs, vídeos, audio, páginas web o documentos Office - Se quiere generar notas, resúmenes o podcasts con IA, o chatear con documentos con contexto - Se necesita buscar en el material con búsqueda de texto completo o vectorial, o aplicar transformaciones de contenido ## Qué la activa - "Crea un notebook y añade este PDF como fuente" - "Genera un podcast con dos voces a partir de este notebook de investigación" - "Busca en mis fuentes qué dice sobre la carga mutacional tumoral" ## Antes de instalar - Necesita Docker Desktop, una API key de al menos un proveedor de IA (u Ollama local gratis) y la variable OPEN_NOTEBOOK_ENCRYPTION_KEY fijada antes del primer arranque. - Necesita en el PATH: curl - Variables de entorno: OPEN_NOTEBOOK_URL - makes network requests - reads environment config ## Archivos - SKILL.md — 10 KB - references/api_reference.md — 10 KB - references/architecture.md — 7 KB - references/configuration.md — 5 KB - references/examples.md — 8 KB - scripts/chat_interaction.py — 6 KB - scripts/notebook_management.py — 4 KB - scripts/source_ingestion.py — 5 KB ## SKILL.md Reproducido tal cual desde K-Dense-AI/scientific-agent-skills bajo MIT. Esta sección es el documento original y está en inglés. # 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: ```bash # 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: - **Frontend UI:** http://localhost:8502 - **REST API:** http://localhost:5055 - **API Documentation:** http://localhost:5055/docs ### 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: ```python 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. ```python 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. ```python # 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. ```python # 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. ```python # 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. ```python # 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. ```python # 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. ```python # 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: | Provider | LLM | Embedding | Speech-to-Text | Text-to-Speech | |----------|-----|-----------|----------------|----------------| | OpenAI | Yes | Yes | Yes | Yes | | Anthropic | Yes | No | No | No | | Google GenAI | Yes | Yes | No | Yes | | Vertex AI | Yes | Yes | No | Yes | | Ollama | Yes | Yes | No | No | | Groq | Yes | No | Yes | No | | Mistral | Yes | Yes | No | No | | Azure OpenAI | Yes | Yes | No | No | | DeepSeek | Yes | No | No | No | | xAI | Yes | No | No | No | | OpenRouter | Yes | No | No | No | | ElevenLabs | No | No | Yes | Yes | | Perplexity | Yes | No | No | No | | Voyage | No | Yes | No | No | ## 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 - `/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 ## Dónde encaja - Categoría: [Investigación](https://skillsagentes.com/categorias/investigacion.md) — Investigación estructurada, búsqueda de fuentes y síntesis. - Creador: [K-Dense-AI](https://skillsagentes.com/creators/k-dense-ai.md) — 163 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Citation Management](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/citation-management.md): Gestión integral de citas académicas: busca en OpenAlex, PubMed y Google Scholar, extrae metadatos precisos, valida citas y genera entradas BibTeX correctamente formateadas. - [Scientific Slides](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/scientific-slides.md): Crea decks de diapositivas y presentaciones para charlas de investigación: PowerPoint, presentaciones de conferencia, seminarios, defensas de tesis. Da estructura, plantillas, guía de tiempos y validación visual. - [Literature Review](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/literature-review.md): Realiza revisiones bibliográficas sistemáticas y completas usando varias bases académicas (PubMed, arXiv, bioRxiv, Semantic Scholar). Genera markdown y PDF con citas verificadas en varios estilos (APA, Nature, Vancouver). - [Infographics](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/infographics.md): Crea infografías profesionales con Nano Banana Pro AI y refinamiento iterativo inteligente. Usa Gemini 3.6 Flash para revisar la calidad e integra investigación con Perplexity Sonar. Soporta 10 tipos, 8 estilos y paletas para daltonismo. - [Latex Posters](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/latex-posters.md): Crea pósteres de investigación profesionales en LaTeX con beamerposter, tikzposter o baposter, para conferencias y comunicación científica: layout, colores, columnas múltiples e integración de figuras. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)