nlm
This skill should be used when the user asks to "create a notebook", "add source to notebook", "generate audio overview", "create podcast", "manage NotebookLM", "nlm", "add PDF to notebook", "list notebooks", "summarize sources", "generate study guide", "create FAQ", "briefing document", "chat with notebook", "generate outline", "research a topic", "deep research", or needs to interact with Google NotebookLM via the nlm CLI tool.
Best use case
nlm is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
This skill should be used when the user asks to "create a notebook", "add source to notebook", "generate audio overview", "create podcast", "manage NotebookLM", "nlm", "add PDF to notebook", "list notebooks", "summarize sources", "generate study guide", "create FAQ", "briefing document", "chat with notebook", "generate outline", "research a topic", "deep research", or needs to interact with Google NotebookLM via the nlm CLI tool.
Teams using nlm should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/nlm/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How nlm Compares
| Feature / Agent | nlm | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
This skill should be used when the user asks to "create a notebook", "add source to notebook", "generate audio overview", "create podcast", "manage NotebookLM", "nlm", "add PDF to notebook", "list notebooks", "summarize sources", "generate study guide", "create FAQ", "briefing document", "chat with notebook", "generate outline", "research a topic", "deep research", or needs to interact with Google NotebookLM via the nlm CLI tool.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# NotebookLM CLI (nlm) Manage Google NotebookLM notebooks, sources, notes, and audio overviews via the `nlm` command-line tool. **Requires:** `nlm` on PATH (`~/.local/bin/nlm` → `~/projects/nlm/nlm`) **Check:** `command -v nlm || echo "MISSING: nlm CLI not installed"` ## Authentication Before first use, authenticate with Google: ```bash nlm auth login -all ``` This connects to Chrome via CDP (Chrome DevTools Protocol) to extract cookies from an active NotebookLM session. Credentials are stored in `~/.nlm/env`. ### Troubleshooting Authentication If `nlm auth` fails with "no valid profiles found" or "SESSION_COOKIE_INVALID": 1. **Verify Chrome is running with remote debugging**: ```bash ps aux | grep -E "chrome.*remote-debugging-port=9400" ``` If not running, Chrome needs to be started with `--remote-debugging-port=9400` flag. 2. **Test CDP connection**: ```bash curl http://localhost:9400/json/version ``` Should return JSON with Chrome version info. 3. **Re-authenticate**: ```bash nlm auth login -debug -all ``` This will show which profiles are checked and why authentication succeeds or fails. 4. **Verify authentication works**: ```bash nlm list ``` Should list notebooks without errors. **If authentication still fails**, you may need to: - Log into notebooklm.google.com in Chrome manually - Ensure Chrome profile has an active NotebookLM session - Check `~/.nlm/env` file permissions ## Core Commands ### Notebook Management ```bash # List all notebooks nlm list # Create a new notebook nlm create “Research Notes” # Delete a notebook nlm rm <notebook-id> # Get notebook analytics nlm analytics <notebook-id> ``` ### Source Management Add sources from URLs, files, or stdin: ```bash # Add URL source nlm add <notebook-id> https://example.com/article # Add PDF file nlm add <notebook-id> document.pdf # Add from stdin echo “Some text content” | nlm add <notebook-id> - # Add with specific MIME type cat data.json | nlm add <notebook-id> - -mime=”application/json” # Add YouTube video nlm add <notebook-id> https://www.youtube.com/watch?v=VIDEO_ID # List sources in notebook nlm sources <notebook-id> # Rename a source nlm rename-source <source-id> “New Title” # Remove a source nlm rm-source <notebook-id> <source-id> # Refresh source content nlm refresh-source <source-id> ``` ### Note Management ```bash # List notes in notebook nlm notes <notebook-id> # Create new note nlm new-note <notebook-id> “Note Title” # Update note content nlm update-note <notebook-id> <note-id> “New content” “New Title” # Remove note nlm rm-note <note-id> ``` ### Audio Overviews Generate AI podcast-style audio summaries: ```bash # Create audio overview with instructions nlm audio-create <notebook-id> “Focus on key themes and provide a professional summary” # List audio overviews nlm audio-list <notebook-id> # Get audio overview status/content nlm audio-get <notebook-id> # Download audio file (requires --direct-rpc) nlm audio-download <notebook-id> output.mp3 --direct-rpc # Share audio (private) nlm audio-share <notebook-id> # Share audio (public) nlm audio-share <notebook-id> --public # Delete audio nlm audio-rm <notebook-id> ``` ### Video Overviews | Command | Purpose | |---------|---------| | `video-create` | Create video overview | | `video-list` | List video overviews | | `video-download` | Download video (requires `--direct-rpc`) | See `references/commands.md` for full syntax. ### Generation Commands ```bash # Generate notebook guide (short summary) nlm generate-guide <notebook-id> # Generate comprehensive content outline nlm generate-outline <notebook-id> # Generate new content section nlm generate-section <notebook-id> # Free-form chat generation nlm generate-chat <notebook-id> "What are the main themes?" # Interactive chat session nlm chat <notebook-id> # Generate magic view synthesis from specific sources nlm generate-magic <notebook-id> <source-id-1> <source-id-2> ``` ### Content Transformation Commands Transform sources into different formats. All commands take `<notebook-id> <source-id> [source-id...]`: | Command | Purpose | |---------|---------| | `summarize` | Summarize content | | `study-guide` | Key concepts + review questions | | `faq` | Generate FAQ | | `briefing-doc` | Professional briefing | | `rephrase` / `expand` | Reword or elaborate | | `critique` / `verify` | Critique or fact-check | | `brainstorm` / `explain` | Ideate or simplify | | `outline` / `toc` | Structured outline or TOC | | `mindmap` / `timeline` | Visual mindmap or timeline | See `references/commands.md` for full syntax and examples. ### Research Commands Research topics and automatically import sources into a notebook: ```bash # Research a topic and import sources to a notebook nlm research "quantum computing advances" --notebook <notebook-id> # Deep research mode for comprehensive investigation nlm research "climate policy impacts" --notebook <notebook-id> --deep ``` The research command: - Searches for relevant sources on the topic - Automatically imports found sources into the specified notebook - `--deep` mode performs more comprehensive research ### Batch Operations Execute multiple commands in a single request: `nlm batch "cmd1" "cmd2" "cmd3"` See `references/commands.md` for full syntax. ## Workflows For detailed workflow recipes (research, study materials, content analysis, executive briefing, Readwise→NLM import), read `references/workflows.md`. Quick start — automated research: ```bash id=$(nlm create "Topic Research" | grep -o 'notebook [^ ]*' | cut -d' ' -f2) nlm research "your topic" --notebook $id nlm generate-chat $id "What are the key findings?" ``` ## Troubleshooting - **Auth errors**: Run `nlm auth` to re-authenticate - **Debug mode**: Add `-debug` flag for detailed API interactions - **Browser profile**: Use `--profile “Profile Name”` to specify browser profile ## Environment Variables - `NLM_AUTH_TOKEN`: Authentication token (managed by auth command) - `NLM_COOKIES`: Authentication cookies (managed by auth command) - `NLM_BROWSER_PROFILE`: Chrome/Brave profile to use (default: “Default”)
Related Skills
writing
This skill should be used when the user asks to 'write a paper', 'start a writing project', 'draft an article', 'write about', 'brainstorm writing topics', 'gather sources for a paper', 'what should I write about', or needs the writing workflow entry point for any writing task.
writing-validate
Validate draft sections cover all PRECIS claims before review.
writing-setup
Internal skill for creating PRECIS.md, OUTLINE.md, and ACTIVE_WORKFLOW.md. Called after brainstorm sources are gathered.
writing-revise
This skill should be used when the user asks to 'revise writing', 'fix review issues', 'polish draft', 'apply review feedback', 'complete writing workflow', or after /writing-review produces REVIEW.md with issues to fix.
writing-review
Internal skill for hierarchical document review. Called by writing-validate after claim validation passes.
writing-precis-reviewer
Internal skill used by writing-setup at exit gate. Dispatches a reviewer subagent to verify PRECIS.md quality before outlining. NOT user-facing.
writing-outline
Internal skill for creating detailed section outlines. Called by /writing workflow after PRECIS and master OUTLINE are complete.
writing-outline-reviewer
Internal skill used by writing-outline at exit gate. Dispatches a reviewer subagent to verify OUTLINE.md quality before drafting. NOT user-facing.
writing-lit-review
Internal skill for literature review and source materialization. Called after brainstorm, before setup. NOT user-facing.
writing-legal
Internal skill for academic legal writing. Loaded by /writing when style=legal. Based on Volokh's "Academic Legal Writing".
writing-handoff
Create structured handoff document for writing workflow session pause/resume.
writing-general
Internal skill for Strunk & White writing rules. Loaded by /writing for quick edits or as base layer for domain skills.