nblm▌
magicseek/nblm · updated Apr 8, 2026
MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.
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,
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
.venvand 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-activeor--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"
login → python scripts/run.py auth_manager.py setup --service google
accounts → python scripts/run.py auth_manager.py accounts list
accounts add → python 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 clear → python scripts/run.py auth_manager.py accounts clear
status → Run both:
python scripts/run.py auth_manager.py statuspython scripts/run.py notebook_manager.py list
local → python scripts/run.py notebook_manager.py list
remote → python 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>"
podcast → python 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>"
briefing → python scripts/run.py artifact_manager.py generate --format BRIEF <args>
debate → python scripts/run.py artifact_manager.py generate --format DEBATE <args>
slides → python 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
infographic → python 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 | |
/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:
- Fetches notebook title from NotebookLM API
- Queries the notebook content to generate description and topics
- 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:
- Creates
.venvif needed - Installs all dependencies
- Activates environment
- 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
- Check library:
python scripts/run.py notebook_manager.py list - 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 on Cursor
AI-first code editor with Composer
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
Execute installation command
Execute the skills CLI command in your project's root directory to begin installation:
The skills CLI fetches nblm from GitHub repository magicseek/nblm and configures it for Cursor.
Select Cursor when prompted
The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:
Verify installation
Confirm successful installation by checking the skill directory location:
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
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.Install product management skill
- 2.Start with user story generation for known feature
- 3.Progress to competitive analysis: research 2-3 competitors
- 4.Use for roadmap prioritization: apply RICE/ICE scoring
- 5.Draft stakeholder communications and refine based on feedback
- 6.Build template library for recurring PM tasks
- 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▌
- 1Basic: user stories, feature specs, status updates
- 2Intermediate: competitive analysis, prioritization frameworks, PRDs
- 3Advanced: product strategy, go-to-market planning, OKR setting
- 4Expert: product vision, market positioning, business model innovation
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.4★★★★★74 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