Notebooklm
Acceso completo a Google NotebookLM — crear cuadernos, añadir fuentes, generar podcasts, vídeos, infografías, presentaciones, quizzes, mapas mentales, informes y más. Funciona en Claude Code en Mac, Linux y Windows. Activar con /notebooklm, "instala notebooklm", "crea un podcast sobre X", "genera una infografía", "busca en profundidad sobre X", "añade estas fuentes a NotebookLM", "lista mis cuadernos".From its SKILL.md
npx -y skills add Carlos-Vera/BrainClaude --skill notebooklmAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
15.5 KB, ~4.5k tokens by cl100k_base, as published. Nobody here has run it
NotebookLM — Acceso completo desde Claude
Acceso programático completo a Google NotebookLM, incluyendo funciones no disponibles en la interfaz web. Crea cuadernos, añade fuentes (URLs, YouTube, PDFs, audio, vídeo, imágenes), chatea con el contenido, genera todos los tipos de artefactos y descarga los resultados.
ENTORNO — Ejecutar al inicio de cada activación
Antes de cualquier comando, detectar el sistema operativo y configurar la ruta correcta:
if [ -f "$HOME/.notebooklm-venv/bin/notebooklm" ]; then
# Mac / Linux
NLM="$HOME/.notebooklm-venv/bin/notebooklm"
VENV_PYTHON="$HOME/.notebooklm-venv/bin/python3"
OS_FAMILY="unix"
echo "Sistema: Mac/Linux"
elif [ -f "$HOME/.notebooklm-venv/Scripts/notebooklm.exe" ]; then
# Windows
NLM="$HOME/.notebooklm-venv/Scripts/notebooklm.exe"
VENV_PYTHON="$HOME/.notebooklm-venv/Scripts/python.exe"
OS_FAMILY="windows"
echo "Sistema: Windows"
else
echo "NotebookLM no está instalado. Ejecuta el Step 0 (instalación) primero."
exit 1
fi
# Verificar autenticación
$NLM auth check
Si auth falla: Ejecutar el Step 0 completo (instalación y login).
A partir de aquí, todos los comandos usan $NLM en lugar de notebooklm directamente. Esto garantiza que funcione en Mac, Linux y Windows.
Verificación de integridad del CLI (antes del primer uso de la sesión)
Antes de ejecutar $NLM por primera vez en una sesión, confirmar que el binario es legítimo:
- Verificar que vive dentro del venv esperado (
~/.notebooklm-venv/...). Si$NLMapunta a otra ubicación, avisar al usuario antes de continuar. - Confirmar que el paquete está instalado ahí:
$VENV_PYTHON -m pip show notebooklm-py - Si el binario existe pero
pip showno listanotebooklm-py— NO ejecutarlo y avisar al usuario de que el binario podría no ser legítimo.
Step 0: Instalación (solo primera vez)
Ejecutar solo cuando notebooklm no está instalado ni autenticado.
Comprobar versión de Python
notebooklm-py requiere Python 3.10+:
python3 --version
Si Python es inferior a 3.10, instalar una versión compatible:
macOS (Homebrew):
brew install [email protected]
Usar /opt/homebrew/bin/python3.12 (Apple Silicon) o /usr/local/bin/python3.12 (Intel) para el venv.
Linux (apt):
sudo apt update && sudo apt install -y python3.12 python3.12-venv
Instalar la CLI
# Seleccionar Python correcto
PYTHON=$(command -v python3.12 2>/dev/null || command -v python3.11 2>/dev/null || command -v python3.10 2>/dev/null || command -v python3)
# Verificar que es 3.10+
$PYTHON -c "import sys; assert sys.version_info >= (3,10), f'Python {sys.version} es demasiado antiguo — necesita 3.10+'; print(f'Usando Python {sys.version}')"
# Crear venv e instalar
$PYTHON -m venv ~/.notebooklm-venv
~/.notebooklm-venv/bin/pip install --quiet --upgrade pip
~/.notebooklm-venv/bin/pip install "notebooklm-py[browser]"
~/.notebooklm-venv/bin/playwright install chromium
En Windows, el venv usa
~/.notebooklm-venv/Scripts/en lugar debin/. Ajustar las rutas depip/playwrighten consecuencia.
Verificar que funciona:
~/.notebooklm-venv/bin/notebooklm --help
Autenticar
IMPORTANTE: El comando notebooklm login requiere input interactivo en el terminal. La herramienta bash de Claude Code NO admite input interactivo, por lo que notebooklm login fallará. Usar siempre este script personalizado de login.
Decirle al usuario:
Voy a abrir una ventana del navegador. Inicia sesión en tu cuenta de Google y ve a notebooklm.google.com. Tómate el tiempo que necesites, esperaré a que me confirmes antes de cerrar.
Escribir y ejecutar el script de login:
# Obtener carpeta temporal compatible con Mac y Windows
TMPDIR_PATH=$(python3 -c "import tempfile; print(tempfile.gettempdir())")
LOGIN_SCRIPT="$TMPDIR_PATH/nlm_login.py"
LOGIN_OUTPUT="$TMPDIR_PATH/nlm_login_output.txt"
cat > "$LOGIN_SCRIPT" << 'PYEOF'
import json, time, tempfile
from pathlib import Path
from playwright.sync_api import sync_playwright
STORAGE_PATH = Path.home() / ".notebooklm" / "storage_state.json"
PROFILE_PATH = Path.home() / ".notebooklm" / "browser_profile"
SIGNAL_FILE = Path(tempfile.gettempdir()) / "nlm_save_signal"
SIGNAL_FILE.unlink(missing_ok=True)
STORAGE_PATH.parent.mkdir(parents=True, exist_ok=True)
print("Abriendo navegador para login de Google...")
print("Inicia sesión y ve a notebooklm.google.com")
with sync_playwright() as p:
browser = p.chromium.launch_persistent_context(
user_data_dir=str(PROFILE_PATH),
headless=False,
args=["--disable-blink-features=AutomationControlled"],
)
page = browser.pages[0] if browser.pages else browser.new_page()
page.goto("https://notebooklm.google.com/")
print("Navegador abierto. Esperando señal de guardado...")
while not SIGNAL_FILE.exists():
time.sleep(1)
print("Señal recibida. Capturando sesión...")
storage = browser.storage_state()
with open(STORAGE_PATH, "w") as f:
json.dump(storage, f)
cookie_names = [c["name"] for c in storage.get("cookies", [])]
print(f"Guardadas {len(cookie_names)} cookies: {cookie_names}")
browser.close()
SIGNAL_FILE.unlink(missing_ok=True)
print(f"Autenticación guardada en: {STORAGE_PATH}")
PYEOF
# Ejecutar con el Python del venv (tiene Playwright instalado)
$VENV_PYTHON "$LOGIN_SCRIPT" > "$LOGIN_OUTPUT" 2>&1 &
echo "Login iniciado (PID=$!). El navegador debería abrirse en unos segundos..."
Esperar ~10 segundos y preguntar al usuario si ve el navegador y está dentro.
Cuando el usuario confirme que está en la página de NotebookLM, guardar la sesión:
python3 -c "import tempfile; from pathlib import Path; (Path(tempfile.gettempdir()) / 'nlm_save_signal').touch()"
sleep 8
cat "$LOGIN_OUTPUT"
Verificar autenticación:
$NLM auth check
$NLM list
Si la autenticación es correcta (cookie SID presente), endurecer los permisos del archivo de credenciales (solo Mac/Linux) y limpiar temporales:
# Restringir permisos del storage_state (solo Unix; en Windows se omite)
if [ "$OS_FAMILY" = "unix" ]; then
chmod 600 ~/.notebooklm/storage_state.json
fi
# Limpiar archivos temporales del login
python3 -c "
import tempfile, os
tmp = tempfile.gettempdir()
for f in ['nlm_login.py', 'nlm_login_output.txt', 'nlm_save_signal']:
path = os.path.join(tmp, f)
if os.path.exists(path):
os.unlink(path)
print('Limpieza completada.')
"
Confirmar al usuario que NotebookLM está configurado y listo.
Si la autenticación falla (cookie SID ausente), el usuario no completó el login. Borrar el perfil e intentarlo de nuevo:
rm -rf ~/.notebooklm/browser_profile ~/.notebooklm/storage_state.json
Volver al inicio del script de login.
Cuándo se activa esta skill
Explícito: "/notebooklm", "usa notebooklm", "instala notebooklm", o cualquier mención de la herramienta por nombre
Por intención — reconocer peticiones como:
- "Crea un podcast sobre [tema]"
- "Resume estas URLs/documentos"
- "Genera un quiz sobre mi investigación"
- "Convierte esto en un audio"
- "Crea flashcards para estudiar"
- "Genera un vídeo explicativo"
- "Haz una infografía"
- "Crea un mapa mental de los conceptos"
- "Descarga el quiz en markdown"
- "Añade estas fuentes a NotebookLM"
- "Haz una búsqueda profunda sobre [tema]"
- "Lista mis cuadernos" / "Muéstrame mis notebooks"
Reglas de autonomía
Recordar: Usar siempre $NLM (detectado en la sección ENTORNO) en lugar de notebooklm directamente.
Ejecutar automáticamente (sin confirmación):
$NLM status— ver contexto activo$NLM auth check— verificar autenticación$NLM list— listar cuadernos$NLM source list— listar fuentes$NLM artifact list— listar artefactos$NLM language list— listar idiomas disponibles$NLM language get— ver idioma actual$NLM language set— cambiar idioma$NLM artifact wait— esperar a que un artefacto esté listo$NLM source wait— esperar a que una fuente se procese$NLM research status— ver estado de investigación$NLM research wait— esperar resultado de investigación$NLM use <id>— establecer cuaderno activo$NLM create— crear cuaderno$NLM ask "..."— consultas de chat (sin--save-as-note)$NLM history— ver historial (solo lectura)$NLM source add— añadir fuentes
Preguntar antes de ejecutar:
$NLM delete— destructivo$NLM generate *— proceso largo, puede fallar$NLM download *— escribe en el sistema de archivos$NLM ask "..." --save-as-note— escribe una nota$NLM history --save— escribe una nota
Referencia rápida
| Tarea | Comando |
|---|---|
| Listar cuadernos | $NLM list |
| Crear cuaderno | $NLM create "Título" |
| Establecer cuaderno activo | $NLM use <notebook_id> |
| Ver cuaderno activo | $NLM status |
| Añadir URL | $NLM source add "https://..." |
| Añadir archivo | $NLM source add ./archivo.pdf |
| Añadir YouTube | $NLM source add "https://youtube.com/..." |
| Listar fuentes | $NLM source list |
| Esperar procesamiento de fuente | $NLM source wait <source_id> |
| Investigación web (rápida) | $NLM source add-research "consulta" |
| Investigación web (profunda) | $NLM source add-research "consulta" --mode deep --no-wait |
| Ver estado de investigación | $NLM research status |
| Esperar investigación | $NLM research wait --import-all |
| Chat | $NLM ask "pregunta" |
| Chat (fuentes específicas) | $NLM ask "pregunta" -s src_id1 -s src_id2 |
| Chat (con referencias) | $NLM ask "pregunta" --json |
| Chat (guardar como nota) | $NLM ask "pregunta" --save-as-note |
| Ver historial de conversación | $NLM history |
| Guardar historial como nota | $NLM history --save |
| Ver texto completo de fuente | $NLM source fulltext <source_id> |
| Generar podcast | $NLM generate audio "instrucciones" |
| Generar vídeo | $NLM generate video "instrucciones" |
| Generar informe | $NLM generate report --format briefing-doc |
| Generar quiz | $NLM generate quiz |
| Generar flashcards | $NLM generate flashcards |
| Generar infografía | $NLM generate infographic |
| Generar mapa mental | $NLM generate mind-map |
| Generar presentación | $NLM generate slide-deck |
| Revisar una diapositiva | $NLM generate revise-slide "prompt" --artifact <id> --slide 0 |
| Ver estado de artefactos | $NLM artifact list |
| Esperar artefacto | $NLM artifact wait <artifact_id> |
| Descargar audio | $NLM download audio ./output.mp3 |
| Descargar vídeo | $NLM download video ./output.mp4 |
| Descargar presentación (PDF) | $NLM download slide-deck ./slides.pdf |
| Descargar presentación (PPTX) | $NLM download slide-deck ./slides.pptx --format pptx |
| Descargar informe | $NLM download report ./informe.md |
| Descargar mapa mental | $NLM download mind-map ./mapa.json |
| Descargar tabla de datos | $NLM download data-table ./datos.csv |
| Descargar quiz | $NLM download quiz quiz.json |
| Descargar flashcards | $NLM download flashcards cards.json |
| Listar idiomas | $NLM language list |
| Cambiar idioma | $NLM language set es |
Tipos de generación
Todos los comandos generate admiten:
-s, --sourcepara usar fuentes específicas en lugar de todas--languagepara fijar el idioma de salida (por defecto 'en', usar 'es' para español)--jsonpara salida legible por máquina--retry Npara reintentar automáticamente si hay límite de tasa
| Tipo | Comando | Opciones | Descarga |
|---|---|---|---|
| Podcast | generate audio | --format [deep-dive|brief|critique|debate], --length [short|default|long] | .mp3 |
| Vídeo | generate video | --format [explainer|brief], --style [auto|classic|whiteboard|kawaii|anime|watercolor|retro-print|heritage|paper-craft] | .mp4 |
| Presentación | generate slide-deck | --format [detailed|presenter], --length [default|short] | .pdf / .pptx |
| Revisar diapositiva | generate revise-slide "prompt" --artifact <id> --slide N | --wait, --notebook | (descarga el deck actualizado) |
| Infografía | generate infographic | --orientation [landscape|portrait|square], --detail [concise|standard|detailed] | .png |
| Informe | generate report | --format [briefing-doc|study-guide|blog-post|custom], --append "instrucciones extra" | .md |
| Mapa mental | generate mind-map | (síncrono, instantáneo) | .json |
| Tabla de datos | generate data-table | descripción requerida | .csv |
| Quiz | generate quiz | --difficulty [easy|medium|hard], --quantity [fewer|standard|more] | .json/.md/.html |
| Flashcards | generate flashcards | --difficulty [easy|medium|hard], --quantity [fewer|standard|more] | .json/.md/.html |
Flujos comunes
Investigación a Podcast
$NLM create "Investigación: [tema]"$NLM source addpor cada URL o documento- Esperar:
$NLM source list --jsonhasta que todos tengan status=READY $NLM generate audio "Enfócate en [ángulo específico]"$NLM artifact listpara ver el estado$NLM download audio ./podcast.mp3cuando esté listo
Investigación profunda
$NLM create "Research: [tema]"$NLM source add-research "[consulta]" --mode deep --no-wait$NLM research wait --import-all$NLM ask "Resume los hallazgos principales"
Análisis de documentos
$NLM create "Análisis: [proyecto]"$NLM source add ./doc.pdf(o URLs)$NLM ask "Resume los puntos clave"- Continuar el chat según necesidad
Presentación desde fuentes
$NLM create "Presentación: [tema]"- Añadir fuentes con
$NLM source add $NLM generate slide-deck --format detailed$NLM download slide-deck ./presentacion.pptx --format pptx
Formatos de salida (--json)
// $NLM list --json
{"notebooks": [{"id": "...", "title": "...", "created_at": "..."}]}
// $NLM source list --json
{"sources": [{"id": "...", "title": "...", "status": "ready|processing|error"}]}
// $NLM artifact list --json
{"artifacts": [{"id": "...", "title": "...", "type": "Audio Overview", "status": "in_progress|pending|completed|unknown"}]}
Manejo de errores
| Error | Causa | Acción |
|---|---|---|
| Error de auth/cookie | Sesión caducada | Volver al script de login personalizado (Step 0 → Autenticar) |
| "No notebook context" | Cuaderno no establecido | Ejecutar $NLM use <id> |
| Rate limiting | Límite de Google | Esperar 5-10 min y reintentar |
| Descarga falla | Generación incompleta | Comprobar $NLM artifact list para ver el estado |
notebooklm no encontrado | CLI no instalada | Ejecutar el Step 0 |
Limitaciones conocidas
- La generación de audio, vídeo, quiz, flashcards, infografías y presentaciones puede fallar por límites de tasa de Google
- Tiempos de generación orientativos: audio 10-20 min, vídeo 15-45 min, quiz/flashcards 5-15 min
- Esta es una API no oficial — Google puede hacer cambios sin previo aviso
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.