nblm

magicseek/nblm · updated Apr 8, 2026

MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.

$npx skills add https://github.com/magicseek/nblm --skill nblm
0 commentsdiscussion
summary

Query Google NotebookLM notebooks directly from Claude for source-grounded, citation-backed answers.

  • Manages multi-account Google authentication with automatic browser login and persistent session handling
  • Supports 20+ commands across notebook management, source uploads (files, URLs, YouTube, Z-Library, text), and queries with automatic follow-up detection
  • Generates media artifacts including podcasts, briefings, debates, slide decks, and infographics with customizable length, format,
skill.md

NotebookLM Quick Commands

Query Google NotebookLM for source-grounded, citation-backed answers.

Environment

All dependencies and authentication are handled automatically by run.py:

  • First run creates .venv and installs Python/Node.js dependencies
  • If Google auth is missing or expired, a browser window opens automatically
  • No manual pre-flight steps required

Usage

/nblm <command> [args]

Commands

Notebook Management

Command Description
login Authenticate with Google
status Show auth and library status
accounts List all Google accounts
accounts add Add a new Google account
accounts switch <id> Switch active account (by index or email)
accounts remove <id> Remove a Google account
accounts use <id> Set agent-specific active account (OpenClaw isolation)
accounts clear Clear agent-specific account override
local List notebooks in local library
remote List all notebooks from NotebookLM API
create <name> Create a new notebook
delete [--id ID] Delete a notebook
rename <name> [--id ID] Rename a notebook
summary [--id ID] Get AI-generated summary
describe [--id ID] Get description and suggested topics
add <url-or-id> Add notebook to local library (auto-detects URL vs notebook ID)
activate <id> Set active notebook

Source Management

Command Description
sources [--id ID] List sources in notebook
upload <file> Upload a single file
upload <folder> Sync a folder of files to NotebookLM
upload-zlib <url> Download from Z-Library and upload
upload-url <url> Add URL as source
upload-youtube <url> Add YouTube video as source
upload-text <title> [--content TEXT] Add text as source
source-text <source-id> Get full indexed text
source-guide <source-id> Get AI summary and keywords
source-rename <source-id> <name> Rename a source
source-refresh <source-id> Re-fetch URL content
source-delete <source-id> Delete a source

Upload options:

  • --use-active - Upload to the currently active notebook
  • --create-new - Create a new notebook named after the file/folder
  • --notebook-id <id> - Upload to a specific notebook
  • --dry-run - Show sync plan without executing (folder sync)
  • --rebuild - Force rebuild tracking file (folder sync)

Important: When user runs upload without specifying a target, ASK them first:

"Would you like to upload to the active notebook, or create a new notebook?" Then pass the appropriate flag (--use-active or --create-new).

Chat & Audio/Media

Command Description
ask <question> Query NotebookLM
podcast [--instructions TEXT] Generate audio podcast
podcast-status <task-id> Check podcast generation status
podcast-download [output-path] Download latest podcast
briefing [--instructions TEXT] Generate brief audio summary
debate [--instructions TEXT] Generate debate-style audio
slides [--instructions TEXT] Generate slide deck
slides-download [output-path] Download slide deck as PDF
infographic [--instructions TEXT] Generate infographic
infographic-download [output-path] Download infographic
media-list [--type TYPE] List generated media (audio/video/slides/infographic)
media-delete <id> Delete a generated media item

Command Routing

Based on $ARGUMENTS, execute the appropriate command:

$IF($ARGUMENTS, Parse the command from: "$ARGUMENTS"

loginpython scripts/run.py auth_manager.py setup --service google

accountspython scripts/run.py auth_manager.py accounts list

accounts addpython scripts/run.py auth_manager.py accounts add

accounts switch python scripts/run.py auth_manager.py accounts switch "<id>"

accounts remove python scripts/run.py auth_manager.py accounts remove "<id>"

accounts use python scripts/run.py auth_manager.py accounts use "<id>"

accounts clearpython scripts/run.py auth_manager.py accounts clear

status → Run both:

  • python scripts/run.py auth_manager.py status
  • python scripts/run.py notebook_manager.py list

localpython scripts/run.py notebook_manager.py list

remotepython scripts/run.py nblm_cli.py notebooks

create python scripts/run.py nblm_cli.py create "<name>"

delete [--id ID]python scripts/run.py nblm_cli.py delete <args>

rename [--id ID]python scripts/run.py nblm_cli.py rename "<name>" <args>

summary [--id ID]python scripts/run.py nblm_cli.py summary <args>

describe [--id ID]python scripts/run.py nblm_cli.py describe <args>

add → Smart add workflow (auto-detects URL vs notebook ID)

activate python scripts/run.py notebook_manager.py activate --id "<id>"

sources [--id ID]python scripts/run.py nblm_cli.py sources <args>

upload → First ASK user: "Upload to active notebook or create new?" Then: - Active: python scripts/run.py source_manager.py add --file "<file>" --use-active - New: python scripts/run.py source_manager.py add --file "<file>" --create-new

upload → Sync a folder: - First ASK user: "Sync to active notebook, create new, or specify notebook?" - Active: python scripts/run.py source_manager.py sync "<folder>" --use-active - New: python scripts/run.py source_manager.py sync "<folder>" --create-new - Specific: python scripts/run.py source_manager.py sync "<folder>" --notebook-id ID - Dry-run: python scripts/run.py source_manager.py sync "<folder>" --dry-run - Rebuild: python scripts/run.py source_manager.py sync "<folder>" --rebuild

upload-zlib → First ASK user: "Upload to active notebook or create new?" Then: - Active: python scripts/run.py source_manager.py add --url "<url>" --use-active - New: python scripts/run.py source_manager.py add --url "<url>" --create-new

upload-url python scripts/run.py nblm_cli.py upload-url "<url>"

upload-youtube python scripts/run.py nblm_cli.py upload-youtube "<url>"

upload-text python scripts/run.py nblm_cli.py upload-text "<title>" <args>

source-text python scripts/run.py nblm_cli.py source-text "<id>"

source-guide python scripts/run.py nblm_cli.py source-guide "<id>"

source-rename python scripts/run.py nblm_cli.py source-rename "<id>" "<name>"

source-refresh python scripts/run.py nblm_cli.py source-refresh "<id>"

source-delete python scripts/run.py nblm_cli.py source-delete "<id>"

ask python scripts/run.py nblm_cli.py ask "<question>"

podcastpython scripts/run.py artifact_manager.py generate --format DEEP_DIVE <args>

podcast-status python scripts/run.py artifact_manager.py status --task-id "<task-id>"

podcast-download [output-path]python scripts/run.py artifact_manager.py download "<output-path>"

briefingpython scripts/run.py artifact_manager.py generate --format BRIEF <args>

debatepython scripts/run.py artifact_manager.py generate --format DEBATE <args>

slidespython scripts/run.py artifact_manager.py generate-slides <args>

slides-download [output-path]python scripts/run.py artifact_manager.py download "<output-path>" --type slide-deck

infographicpython scripts/run.py artifact_manager.py generate-infographic <args>

infographic-download [output-path]python scripts/run.py artifact_manager.py download "<output-path>" --type infographic

media-list [--type TYPE]python scripts/run.py artifact_manager.py list <args>

media-delete python scripts/run.py artifact_manager.py delete "<id>"

If command not recognized, show usage help.,

Show available commands with /nblm (no arguments) )

Podcast Options

/nblm podcast --length DEFAULT --wait --output ./podcast.mp3
/nblm podcast --instructions "Focus on the key findings"
/nblm briefing --wait --output ./summary.mp3
/nblm debate --instructions "Compare the two approaches"
Option Values
--length SHORT, DEFAULT, LONG
--instructions Custom instructions for the content
--wait Wait for generation to complete
--output Download path (requires --wait)

Slide Deck Options

/nblm slides --format DETAILED_DECK --wait --output ./presentation.pdf
/nblm slides --instructions "Focus on key diagrams" --format PRESENTER_SLIDES
Option Values
--format DETAILED_DECK, PRESENTER_SLIDES
--length SHORT, DEFAULT
--instructions Custom instructions for the content
--wait Wait for generation to complete
--output Download path (requires --wait)

Infographic Options

/nblm infographic --orientation LANDSCAPE --wait --output ./visual.png
/nblm infographic --instructions "Highlight comparison" --detail-level DETAILED
Option Values
--orientation LANDSCAPE, PORTRAIT, SQUARE
--detail-level CONCISE, STANDARD, DETAILED
--instructions Custom instructions for the content
--wait Wait for generation to complete
--output Download path (requires --wait)

Media Generation

Command Description Output
/nblm podcast Deep-dive audio discussion MP3
/nblm briefing Brief audio summary MP3
/nblm debate Debate-style audio MP3
/nblm slides Slide deck presentation PDF
/nblm infographic Visual infographic PNG

Examples

/nblm podcast --wait --output ./deep-dive.mp3
/nblm briefing --instructions "Focus on chapter 3" --wait
/nblm debate --length LONG --wait --output ./debate.mp3
/nblm slides --instructions "Include key diagrams" --format DETAILED_DECK --wait --output ./presentation.pdf
/nblm infographic --orientation LANDSCAPE --detail-level DETAILED --wait --output ./summary.png

Download & Manage

/nblm podcast-download ./my-podcast.mp3
/nblm slides-download ./presentation.pdf
/nblm infographic-download ./visual.png
/nblm media-list                     # List all generated media
/nblm media-list --type audio        # List only audio
/nblm media-delete <id>              # Delete a media item

Extended Documentation

When to Use This Skill

Trigger when user:

  • Mentions NotebookLM explicitly
  • Shares NotebookLM URL (https://notebooklm.google.com/notebook/...)
  • Asks to query their notebooks/documentation
  • Wants to add documentation to NotebookLM library
  • Uses phrases like "ask my NotebookLM", "check my docs", "query my notebook"

⚠️ CRITICAL: Add Command - Smart Discovery

The add command now automatically discovers metadata from the notebook:

# Smart Add (auto-discovers name, description, topics)
python scripts/run.py notebook_manager.py add <notebook-id-or-url>

# With optional overrides
python scripts/run.py notebook_manager.py add <id> --name "Custom Name" --topics "custom,topics"

What Smart Add does:

  1. Fetches notebook title from NotebookLM API
  2. Queries the notebook content to generate description and topics
  3. Adds to local library with discovered metadata

Supported input formats:

  • Notebook ID: 5fd9f36b-8000-401d-a7a0-7aa3f7832644
  • Full URL: https://notebooklm.google.com/notebook/5fd9f36b-8000-401d-a7a0-7aa3f7832644

NEVER manually specify --name, --description, or --topics unless the user explicitly provides them.

Critical: Always Use run.py Wrapper

NEVER call scripts directly. ALWAYS use python scripts/run.py [script]:

# ✅ CORRECT - Always use run.py:
python scripts/run.py auth_manager.py status
python scripts/run.py notebook_manager.py list
python scripts/run.py ask_question.py --question "..."

# ❌ WRONG - Never call directly:
python scripts/auth_manager.py status  # Fails without venv!

The run.py wrapper automatically:

  1. Creates .venv if needed
  2. Installs all dependencies
  3. Activates environment
  4. Executes script properly

Core Workflow

Step 1: Check Authentication Status

python scripts/run.py auth_manager.py status

If not authenticated, proceed to setup.

Step 2: Authenticate (One-Time Setup)

# Browser MUST be visible for manual Google login
python scripts/run.py auth_manager.py setup

Important:

  • Browser is VISIBLE for authentication
  • Browser window opens automatically
  • User must manually log in to Google
  • Tell user: "A browser window will open for Google login"

Step 3: Manage Notebook Library

# List all notebooks
python scripts/run.py notebook_manager.py list

# BEFORE ADDING: Ask user for metadata if unknown!
# "What does this notebook contain?"
# "What topics should I tag it with?"

# Add notebook to library (ALL parameters are REQUIRED!)
python scripts/run.py notebook_manager.py add \
  --url "https://notebooklm.google.com/notebook/..." \
  --name "Descriptive Name" \
  --description "What this notebook contains" \  # REQUIRED - ASK USER IF UNKNOWN!
  --topics "topic1,topic2,topic3"  # REQUIRED - ASK USER IF UNKNOWN!

# Search notebooks by topic
python scripts/run.py notebook_manager.py search --query "keyword"

# Set active notebook
python scripts/run.py notebook_manager.py activate --id notebook-id

# Remove notebook
python scripts/run.py notebook_manager.py remove --id notebook-id

Quick Workflow

  1. Check library: python scripts/run.py notebook_manager.py list
  2. Ask question: python scripts/run.py ask_question.py --question "..." --notebook-id ID

Step 4: Ask Questions

# Basic query (uses active notebook if set)
python scripts/run.py ask_question.py --question "Your question here"

# Query specific notebook
python scripts/run.py ask_question.py --question "..." --notebook-id notebook-id

# Query with notebook URL directly
python scripts/run.py ask_question.py 
how to use nblm

How to use nblm on Cursor

AI-first code editor with Composer

1

Prerequisites

Before installing skills in Cursor, ensure your development environment meets these requirements:

  • Cursor installed and configured on your development machine
  • Node.js version 16.0+ with npm package manager (verify with node --version)
  • Active project directory or workspace where you want to add nblm
2

Execute installation command

Execute the skills CLI command in your project's root directory to begin installation:

$npx skills add https://github.com/magicseek/nblm --skill nblm

The skills CLI fetches nblm from GitHub repository magicseek/nblm and configures it for Cursor.

3

Select Cursor when prompted

The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:

◆ Which agents do you want to install to?
│ ── Universal (.agents/skills) ── always included ────
│ • Amp
│ • Antigravity
│ • Cline
│ • Codex
│ ●Cursor(selected)
│ • Cursor
│ • Windsurf
4

Verify installation

Confirm successful installation by checking the skill directory location:

.cursor/skills/nblm

Reload or restart Cursor to activate nblm. Access the skill through slash commands (e.g., /nblm) or your agent's skill management interface.

Security & Verification Notice

We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.

Skills execute code in your development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.

List & Monetize Your Skill

Submit your Claude Code skill and start earning

GET_STARTED →

Use Cases

User Story & Requirements Generation

Create detailed user stories, acceptance criteria, and feature specs

Example

Generate user stories for 'password reset feature' with acceptance criteria, edge cases, and test scenarios

Reduce spec writing time by 50%, ensure comprehensive coverage

Competitive Analysis

Research competitors, compare features, identify gaps

Example

Analyze 5 competitor products, create feature comparison matrix, suggest differentiation opportunities

Complete competitive research in 2 hours instead of 2 days

Roadmap Prioritization

Evaluate features using frameworks (RICE, ICE, Kano) and create prioritized backlogs

Example

Score 20 feature ideas using RICE framework, generate prioritized roadmap with rationale

Make data-driven prioritization decisions faster

Stakeholder Communication

Draft PRDs, status updates, and stakeholder presentations

Example

Create executive summary of Q3 roadmap, monthly progress report, feature launch announcement

Save 3-5 hours/week on communication overhead

Implementation Guide

Prerequisites

  • Claude Desktop or compatible AI client
  • Access to product documentation and roadmap tools (Jira, Notion, etc.)
  • Understanding of product management frameworks (RICE, Jobs-to-be-Done, etc.)
  • Stakeholder contact information and communication channels

Time Estimate

30-60 minutes to see productivity improvements

Installation Steps

  1. 1.Install product management skill
  2. 2.Start with user story generation for known feature
  3. 3.Progress to competitive analysis: research 2-3 competitors
  4. 4.Use for roadmap prioritization: apply RICE/ICE scoring
  5. 5.Draft stakeholder communications and refine based on feedback
  6. 6.Build template library for recurring PM tasks
  7. 7.Share effective prompts with product team

Common Pitfalls

  • Not validating competitive research—verify facts before sharing
  • Accepting user stories without involving engineering team
  • Over-relying on frameworks without qualitative judgment
  • Not customizing outputs to company culture and communication style
  • Skipping stakeholder validation of generated requirements

Best Practices

✓ Do

  • +Validate research and competitive analysis with real data
  • +Collaborate with engineering when generating technical requirements
  • +Customize frameworks and templates to your company context
  • +Use skill for first drafts, refine with stakeholder input
  • +Document successful prompt patterns for PM tasks
  • +Combine AI efficiency with human judgment and intuition

✗ Don't

  • Don't publish competitive analysis without fact-checking
  • Don't finalize user stories without engineering review
  • Don't make prioritization decisions solely on AI scoring
  • Don't skip customer validation of generated requirements
  • Don't ignore company-specific context and culture

💡 Pro Tips

  • Provide context: company goals, constraints, customer feedback
  • Ask for alternatives: 'Show 3 ways to prioritize this roadmap'
  • Request stakeholder-specific formatting: 'Executive summary vs. engineering spec'
  • Use skill for 70% generation + 30% customization to company needs

When to Use This

✓ Use When

Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.

✗ Avoid When

Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.

Learning Path

  1. 1Basic: user stories, feature specs, status updates
  2. 2Intermediate: competitive analysis, prioritization frameworks, PRDs
  3. 3Advanced: product strategy, go-to-market planning, OKR setting
  4. 4Expert: product vision, market positioning, business model innovation

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.474 reviews
  • Dhruvi Jain· Dec 28, 2024

    We added nblm from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Amina Johnson· Dec 28, 2024

    nblm is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Amelia Bhatia· Dec 28, 2024

    We added nblm from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Arya Abbas· Dec 24, 2024

    Keeps context tight: nblm is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Daniel Malhotra· Dec 12, 2024

    Useful defaults in nblm — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Michael Gupta· Dec 12, 2024

    Registry listing for nblm matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Maya Harris· Dec 4, 2024

    Useful defaults in nblm — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Amelia Bansal· Nov 23, 2024

    I recommend nblm for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Oshnikdeep· Nov 19, 2024

    nblm fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.

  • Min Desai· Nov 19, 2024

    nblm reduced setup friction for our internal harness; good balance of opinion and flexibility.

showing 1-10 of 74

1 / 8