magicseek/nblm59 files

Nblm

Use this skill to query your Google NotebookLM notebooks directly from Claude Code for source-grounded, citation-backed answers from Gemini. Browser automation, library management, persistent auth. Drastically reduced hallucinations through document-only responses.

Specification
Skill ID
magicseek/nblm/nblm
Publisher
magicseek
Repository
nblm
Installs
0
Files
59
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

magicseek/nblm/nblmInstalls these files
  • .gitignore
  • AGENTS.md
  • AUTHENTICATION.md
  • CHANGELOG.md
  • CLAUDE.md
  • LICENSE
  • README.md
  • README.zh-CN.md
  • SKILL.md
  • commands/nblm-accounts.md
  • commands/nblm-activate.md
  • commands/nblm-add.md
  • commands/nblm-ask.md
  • commands/nblm-list.md
  • commands/nblm-login.md
  • commands/nblm-status.md
  • commands/nblm-upload.md
  • docs/plans/2025-01-30-folder-sync-design.md
  • package-lock.json
  • package.json
  • references/api_reference.md
  • references/troubleshooting.md
  • references/usage_patterns.md
  • requirements.txt
  • scripts/__init__.py
  • scripts/account_manager.py
  • scripts/agent_browser_client.py
  • scripts/artifact_manager.py
  • scripts/ask_question.py
  • scripts/auth_manager.py
  • scripts/cleanup_manager.py
  • scripts/config.py
  • scripts/daemon_watchdog.py
  • scripts/init_platform.py
  • scripts/nblm_cli.py
  • scripts/notebook_manager.py
  • scripts/notebooklm_wrapper.py
  • scripts/patchright_auth.py
  • scripts/run.py
  • scripts/setup_environment.py
  • scripts/source_manager.py
  • scripts/sync_manager.py
  • scripts/zlibrary/__init__.py
  • scripts/zlibrary/downloader.py
  • scripts/zlibrary/epub_converter.py
  • tests/test_agent_browser_client.py
  • tests/test_agent_browser_state.py
  • tests/test_ask_question_fallback.py
  • tests/test_auth_manager_services.py
  • tests/test_idle_watchdog.py
  • tests/test_navigate_wait_until.py
  • tests/test_notebooklm_credentials.py
  • tests/test_run_env.py
  • tests/test_source_manager.py
  • tests/test_sync_manager.py
  • tests/test_wait_for_answer.py
  • tests/test_watchdog_status.py
  • tests/test_zlibrary_downloader.py
  • tests/test_zlibrary_epub_converter.py

What this skill tells the agent

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

CommandDescription
loginAuthenticate with Google
statusShow auth and library status
accountsList all Google accounts
accounts addAdd 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 clearClear agent-specific account override
localList notebooks in local library
remoteList 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

CommandDescription
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

CommandDescription
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 <id> → python scripts/run.py auth_manager.py accounts switch "<id>"

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

accounts use <id> → 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 status
  • python 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 <name> → python scripts/run.py nblm_cli.py create "<name>"

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

rename <name> [--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 <url-or-id> → Smart add workflow (auto-detects URL vs notebook ID)

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

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

upload <file> → 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 <folder> → 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 <url> → 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 <url> → python scripts/run.py nblm_cli.py upload-url "<url>"

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

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

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

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

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

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

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

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

podcast → python scripts/run.py artifact_manager.py generate --format DEEP_DIVE <args>

podcast-status <task-id> → 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

Use this skill in a project

Open any RiverX project, search the Skills panel for magicseek/nblm/nblm, and install it in one click.

Use this skill