Source-grounded NotebookLM automation for terminals and AI agents.
notebooklm-skill gives humans and MCP clients one consistent interface for Google
NotebookLM. It creates notebooks from URLs, raw text, and local files; asks grounded
questions with citation metadata; completes fast or deep web research; and generates
or downloads NotebookLM artifacts.
The project is built around notebooklm-py 0.7.x and includes:
- a JSON-first core CLI;
- five end-to-end research pipelines;
- a 13-tool FastMCP server;
- profile-aware authentication and Skill installers;
- one shared compatibility layer, so CLI, pipelines, and MCP use the same behavior.
This is an unofficial integration with NotebookLM's web API. Google can change the service, availability, quotas, or artifact behavior without notice.
The installer creates a dedicated virtual environment, installs Chromium, links five
commands into ~/.local/bin, and installs the Claude Code Skill using the standard
directory layout.
git clone https://github.com/claude-world/notebooklm-skill.git
cd notebooklm-skill
./install.sh
notebooklm-auth setup
notebooklm-skill listEnsure ~/.local/bin is on PATH.
# Persistent virtual environment
python3 -m venv .venv
source .venv/bin/activate
python -m pip install notebooklm-skill
python -m playwright install chromium
notebooklm-auth setup
# Or run without a persistent install
uvx --from notebooklm-skill notebooklm-auth setup
uvx --from notebooklm-skill notebooklm-skill listDirect upstream login is also available:
uvx --from notebooklm-py notebooklm loginSessions are profile-aware. Select one with --profile NAME before a CLI
subcommand, or set NOTEBOOKLM_PROFILE.
To use the locally installed Google Chrome instead of bundled Chromium:
notebooklm-auth setup --browser chrome --freshAll successful commands print structured JSON to stdout. Diagnostics go to stderr; authentication errors return exit code 4 and argument errors return exit code 2.
# Mixed-source ingestion with truthful per-source outcomes
notebooklm-skill create \
--title "Research" \
--sources https://example.com/article \
--files ./paper.pdf \
--text-sources "Interview notes" \
--strict
notebooklm-skill ask \
--notebook "Research" \
--query "Which conclusions have the strongest evidence?"
notebooklm-skill research \
--notebook "Research" \
--query "Recent independent evaluations" \
--mode deep --max-sources 10
notebooklm-skill generate \
--notebook "Research" \
--type slides --lang zh-TW \
--output ./output/deck.pptx --output-format pptx
notebooklm-skill list-artifacts --notebook "Research" --type slidesCommands resolve an exact ID, unique title, or unique title substring. Use IDs for
repeatable automation. Deletes require --yes; downloads refuse existing files or
symlinks unless an explicit safe overwrite is requested with --force.
| Type | Default download | Notes |
|---|---|---|
audio |
M4A | deep-dive, brief, critique, or debate |
video |
MP4 | explainer/brief and multiple visual styles |
cinematic |
MP4 | cinematic video workflow |
slides |
PDF or PPTX | |
report |
Markdown | briefing, study guide, blog, or custom |
study-guide |
Markdown | report shortcut |
quiz |
JSON | JSON, Markdown, or HTML |
flashcards |
JSON | JSON, Markdown, or HTML |
mind-map |
JSON | immediate generation result |
infographic |
PNG | orientation, detail, and style options |
data-table |
CSV | structured extraction |
Use notebooklm-skill generate --help for the live option matrix. Long-running
generations support --no-wait, and later downloads can select --artifact-id.
notebooklm-pipeline research-to-article \
--sources https://example.com/a https://example.com/b \
--title "Evidence review" --audience "engineers"
notebooklm-pipeline research-to-social \
--files ./brief.pdf --platform linkedin --variants 3
notebooklm-pipeline batch-digest \
--rss https://example.com/feed.xml --max-entries 20 --qa-count 5
notebooklm-pipeline generate-all \
--files ./paper.pdf --types audio slides report mind-map \
--output-dir ./output --artifact-concurrency 2trend-to-content requires the optional trend-pulse command. Pipelines return
drafts and local artifacts; they do not publish to social platforms or remote CMSs.
The default stdio transport is suitable for Claude Code, Cursor, and other MCP clients:
{
"mcpServers": {
"notebooklm": {
"command": "uvx",
"args": ["--from", "notebooklm-skill", "notebooklm-mcp"]
}
}
}The 13 tools cover notebook CRUD, mixed sources, grounded chat, summaries, artifact
generation/list/download, full research lifecycles, research pipelines, and trend
research. Notebook deletion requires confirm=true.
Optional HTTP mode is deliberately loopback-only:
notebooklm-mcp --http --host 127.0.0.1 --port 8765Do not expose it directly to a network. See SECURITY.md.
| Command | Purpose |
|---|---|
notebooklm-auth |
Setup, verify, or clear a selected auth profile |
notebooklm-install-skill |
Install SKILL.md for a user or project, with safe backups |
notebooklm-install-skill --scope project
notebooklm-auth --profile work verifypython3 -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[dev]'
ruff check .
ruff format --check .
mypy scripts mcp_server
pytest --cov --cov-report=term-missing
python -m build
twine check dist/*More detail: setup guide, Skill instructions, API compatibility notes, and changelog.