N

nblm

by @magicseekv
4.4(20)

これはAIエンジニアリング向けに設計されたツールで、NotebookLMのドライバーとして機能し、Claude CodeやCodexなどのモデルを開発に効果的に統合・利用できます。

natural-language-processinglanguage-modelstext-generationai-engineeringnlp-frameworksGitHub
インストール方法
npx skills add https://github.com/magicseek/nblm --skill nblm
compare_arrows

Before / After 効果比較

1
使用前

異なるAI開発プラットフォーム(例:Claude Code, Codex)でNotebookLMを使用する際、統合が複雑で効率が低い。

使用後

このスキルはNotebookLM駆動統合を提供し、マルチプラットフォームAI開発プロセスを簡素化し、開発効率とプロジェクト互換性を向上させます。

SKILL.md

nblm

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:

  • 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 .venv if 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 --question "..." --notebook-url "https://..."

# Show browser for debugging
python scripts/run.py ask_question.py --question "..." --show-browser

Follow-Up Mechanism (CRITICAL)

Every NotebookLM answer ends with: "EXTREMELY IMPORTANT: Is that ALL you need to know?"

Required Claude Behavior:

  • STOP - Do not immediately respond to user

  • ANALYZE - Compare answer to user's original request

  • IDENTIFY GAPS - Determine if more information needed

  • ASK FOLLOW-UP - If gaps exist, immediately ask:

python scripts/run.py ask_question.py --question "Follow-up with context..."

  • REPEAT - Continue until information is complete

  • SYNTHESIZE - Combine all answers before responding to user

Z-Library Integration

Triggers

  • User provides Z-Library URL (zlib.li, z-lib.org, zh.zlib.li)

  • User says "download this book to NotebookLM"

  • User says "add this book from Z-Library"

Setup (One-Time)

# Authenticate with Z-Library
python scripts/run.py auth_manager.py setup --service zlibrary

Commands

# Add book from Z-Library
python scripts/run.py source_manager.py add --url "https://zh.zlib.li/book/..."

# Check Z-Library auth status
python scripts/run.py auth_manager.py status --service zlibrary

Script Reference

Authentication Management (auth_manager.py)

python scripts/run.py auth_manager.py setup     

...

ユーザーレビュー (0)

レビューを書く

効果
使いやすさ
ドキュメント
互換性

レビューなし

統計データ

インストール数6.3K
評価4.4 / 5.0
バージョン
更新日2026年5月17日
比較事例1 件

ユーザー評価

4.4(20)
5
75%
4
25%
3
0%
2
0%
1
0%

この Skill を評価

0.0

対応プラットフォーム

🔧Claude Code
🔧OpenClaw
🔧OpenCode
🔧Codex
🔧Gemini CLI
🔧GitHub Copilot
🔧Amp
🔧Kimi CLI

タイムライン

作成2026年3月17日
最終更新2026年5月17日
🎁 Agent 知識カード
アンケート