Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/jacob-bd/notebooklm-mcp-cli/llms.txt

Use this file to discover all available pages before exploring further.

Notebooks are the top-level containers in NotebookLM — everything else (sources, studio artifacts, research tasks) lives inside one. The nlm notebook commands let you manage the full notebook lifecycle from creation through deletion, including an AI-powered describe command that summarises what is inside a notebook and suggests follow-up topics. The CLI supports two command styles that are fully equivalent — use whichever feels more natural in your workflow:
# Noun-first (resource-oriented)
nlm notebook create "My Research"

# Verb-first (action-oriented)
nlm create notebook "My Research"

Commands

notebook list

List all notebooks in your account.
nlm notebook list
nlm list notebooks   # verb-first alias
Flags
FlagShortDescription
--json-jOutput as JSON
--quiet-qOutput IDs only (one per line)
--full-aShow all columns
--title-tOutput as ID: Title format
--profile-pProfile to use
Output format reference
FlagOutput styleBest for
(none)Rich table with key columnsHuman browsing
--jsonFull JSON arrayScripting / parsing
--quietOne ID per lineShell piping
--fullTable with all columnsDetailed inspection
--titleID: Title per lineQuick reference

notebook create

Create a new, empty notebook.
nlm notebook create "AI Research 2025"
nlm create notebook "AI Research 2025"   # verb-first
The command prints the new notebook’s ID on success. Pipe it with --quiet or capture with --json for scripting. Flags
FlagShortDescription
--json-jOutput result as JSON
--profile-pProfile to use

notebook get

Retrieve full details for a single notebook by ID or alias.
nlm notebook get <notebook-id>
nlm notebook get myproject          # alias resolves automatically
Flags
FlagShortDescription
--json-jOutput as JSON
--profile-pProfile to use

notebook describe

Ask the AI to summarise the notebook and suggest relevant topics to explore. This calls the NotebookLM AI layer — not a local operation — so it requires a valid session. The response includes an AI-generated summary of all sources and a list of suggested follow-up questions.
nlm notebook describe <notebook-id>
Flags
FlagShortDescription
--json-jOutput as JSON
--profile-pProfile to use
nlm notebook describe produces an AI-generated summary of the notebook’s sources and suggested topics — it does not just return raw metadata. nlm notebook get returns the raw notebook metadata (title, ID, source count) without AI processing.

notebook rename

Rename a notebook in place.
nlm notebook rename <notebook-id> "New Title"
Flags
FlagShortDescription
--profile-pProfile to use

notebook delete

Permanently delete a notebook and all its sources and artifacts.
This action is irreversible. All sources, studio artifacts, and research tasks inside the notebook are destroyed. Always use --confirm in scripts to skip the interactive prompt.
nlm notebook delete <notebook-id> --confirm
Without --confirm the CLI will prompt you interactively before proceeding. Flags
FlagShortDescription
--confirm-ySkip the confirmation prompt
--profile-pProfile to use

notebook query

Chat with the sources inside a notebook. This is a single-turn query; for multi-turn conversations keep the conversation ID between calls.
nlm notebook query <notebook-id> "What are the main arguments?"
nlm notebook query <notebook-id> "Follow up question" --conversation-id <conv-id>
Flags
FlagShortDescription
--json-jOutput response as JSON
--conversation-id-cConversation ID for follow-up questions
--source-ids-sComma-separated source IDs to restrict the query
--timeout-tQuery timeout in seconds (default 120)
--profile-pProfile to use

Scripting examples

Shell — pipe IDs with --quiet

Use --quiet when you only need IDs — it outputs one ID per line with no extra formatting, making it ideal for shell piping.
# Get the first notebook ID and query it
notebook_id=$(nlm notebook list --quiet | head -1)
nlm notebook query "$notebook_id" "Summarize the key points"

# Delete all notebooks whose titles start with "Draft" (careful!)
nlm notebook list --quiet | while read -r id; do
  nlm notebook delete "$id" --confirm
done

Python — parse --json output

When you need metadata beyond just the ID (title, source count, creation time), use --json and parse with the standard library.
import json
import subprocess

result = subprocess.run(
    ["nlm", "notebook", "list", "--json"],
    capture_output=True,
    text=True,
    check=True,
)
notebooks = json.loads(result.stdout)

for nb in notebooks:
    notebook_id = nb["id"]
    title = nb.get("title", "(untitled)")
    print(f"{notebook_id}: {title}")

# Query the first notebook
first_id = notebooks[0]["id"]
query_result = subprocess.run(
    ["nlm", "notebook", "query", first_id, "Summarize the key points", "--json"],
    capture_output=True,
    text=True,
    check=True,
)
response = json.loads(query_result.stdout)
print(response["answer"])

Complete notebook workflow

1

Create a notebook

nlm notebook create "Q3 Competitive Analysis"
# → Notebook ID: abc12345-...
2

Set an alias for convenience

nlm alias set q3 abc12345-...
3

Add sources

nlm source add q3 --url "https://example.com/report" --wait
nlm source add q3 --file analysis.pdf --wait
4

Query the notebook

nlm notebook query q3 "What are the top three competitor differentiators?"
5

Get an AI summary

nlm notebook describe q3

Build docs developers (and LLMs) love