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.

6 stars

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

$curl -o ~/.claude/skills/nlm/SKILL.md --create-dirs "https://raw.githubusercontent.com/edwinhu/workflows/main/skills/nlm/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/nlm/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How nlm Compares

Feature / AgentnlmStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

6
from edwinhu/workflows

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

6
from edwinhu/workflows

Validate draft sections cover all PRECIS claims before review.

writing-setup

6
from edwinhu/workflows

Internal skill for creating PRECIS.md, OUTLINE.md, and ACTIVE_WORKFLOW.md. Called after brainstorm sources are gathered.

writing-revise

6
from edwinhu/workflows

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

6
from edwinhu/workflows

Internal skill for hierarchical document review. Called by writing-validate after claim validation passes.

writing-precis-reviewer

6
from edwinhu/workflows

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

6
from edwinhu/workflows

Internal skill for creating detailed section outlines. Called by /writing workflow after PRECIS and master OUTLINE are complete.

writing-outline-reviewer

6
from edwinhu/workflows

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

6
from edwinhu/workflows

Internal skill for literature review and source materialization. Called after brainstorm, before setup. NOT user-facing.

writing-legal

6
from edwinhu/workflows

Internal skill for academic legal writing. Loaded by /writing when style=legal. Based on Volokh's "Academic Legal Writing".

writing-handoff

6
from edwinhu/workflows

Create structured handoff document for writing workflow session pause/resume.

writing-general

6
from edwinhu/workflows

Internal skill for Strunk & White writing rules. Loaded by /writing for quick edits or as base layer for domain skills.