NotebookLM Skill
Full programmatic access to Google NotebookLM — including features not exposed in the web UI.
Library: teng-lin/notebooklm-py
⚠️ Unofficial — Uses undocumented Google APIs. May break without notice.
Prerequisites
Authentication must be active before any command:
CODEBLOCK0
Verify readiness before any workflow:
notebooklm status # Active notebook and session
notebooklm doctor # Environment health check
notebooklm doctor --fix # Auto-fix issues
When This Skill Activates
Explicit: /notebooklm, "use notebooklm", "with notebooklm"
Intent detection:
- - "Create a podcast / audio overview about [topic]"
- "Summarize these URLs / documents"
- "Generate a quiz from my research"
- "Make flashcards for studying"
- "Generate a video explainer"
- "Build a presentation / slide deck"
- "Make an infographic"
- "Create a mind map"
- "Add these sources to NotebookLM"
- "Research [topic] and import sources"
- "Analyze these documents"
Autonomy Rules
Run without confirmation:
- -
notebooklm status, list, doctor — read-only - INLINECODE4 — diagnostics
- INLINECODE5 — create notebook
- INLINECODE6 — set context (⚠️ single-agent only; use
-n in parallel) - INLINECODE8 — add sources
- INLINECODE9 — chat (without
--save-as-note) - INLINECODE11 — language settings
- INLINECODE12 — profile management
Ask user first:
- -
notebooklm delete — destructive - INLINECODE14 — long-running, may hit rate limits
- INLINECODE15 — writes to filesystem
- INLINECODE16 — writes a note
- INLINECODE17 — writes a note
Quick Reference
| Task | Command |
|---|
| Log in | INLINECODE18 |
| List notebooks |
notebooklm list |
| Create notebook |
notebooklm create "Title" |
| Set active notebook |
notebooklm use <notebook_id> |
| Show context |
notebooklm status |
| Add URL |
notebooklm source add "https://..." |
| Add file |
notebooklm source add ./file.pdf |
| Add YouTube |
notebooklm source add "https://youtube.com/..." |
| Add Drive doc |
notebooklm source add-drive <file_id> "Title" |
| List sources |
notebooklm source list |
| Web research (fast) |
notebooklm source add-research "query" |
| Web research (deep) |
notebooklm source add-research "query" --mode deep --no-wait |
| Ask a question |
notebooklm ask "question" |
| Ask with references |
notebooklm ask "question" --json |
| Save answer as note |
notebooklm ask "question" --save-as-note |
| Chat history |
notebooklm history |
| Generate podcast |
notebooklm generate audio "instructions" |
| Generate video |
notebooklm generate video |
| Generate cinematic video |
notebooklm generate cinematic-video "description" |
| Generate slide deck |
notebooklm generate slide-deck |
| Generate quiz |
notebooklm generate quiz |
| Generate flashcards |
notebooklm generate flashcards |
| Generate infographic |
notebooklm generate infographic |
| Generate mind map |
notebooklm generate mind-map |
| Generate data table |
notebooklm generate data-table "description" |
| Generate report |
notebooklm generate report --format study-guide |
| Check artifact status |
notebooklm artifact list |
| Wait for artifact |
notebooklm artifact wait <artifact_id> |
| Download podcast |
notebooklm download audio ./podcast.mp3 |
| Download video |
notebooklm download video ./video.mp4 |
| Download slides (PDF) |
notebooklm download slide-deck ./slides.pdf |
| Download slides (PPTX) |
notebooklm download slide-deck ./slides.pptx --format pptx |
| Download quiz |
notebooklm download quiz quiz.json |
| Set language |
notebooklm language set en |
Sources
Supported Types
URLs, YouTube videos, PDFs, text/Markdown/Word files, Google Drive docs, audio, video, images, pasted text.
CODEBLOCK2
Web Research
CODEBLOCK3
Source limits by plan: Standard 50 · Plus 100 · Pro 300 · Ultra 600
Chat & Q&A
CODEBLOCK4
Content Generation
🎙️ Podcast (Audio Overview)
CODEBLOCK5
🎬 Video
CODEBLOCK6
📊 Slide Deck
CODEBLOCK7
❓ Quiz
CODEBLOCK8
🃏 Flashcards
CODEBLOCK9
🗺️ Mind Map
CODEBLOCK10
📈 Infographic
CODEBLOCK11
📋 Data Table
CODEBLOCK12
📄 Report
# Formats: briefing-doc | study-guide | blog-post | custom
notebooklm generate report --format study-guide
notebooklm generate report --format briefing-doc --append "Keep under 2 pages"
notebooklm generate report "Technical white paper on AI trends" # → auto custom
notebooklm generate report --format study-guide -s src1 -s src2 # Specific sources
notebooklm download report ./report.md
Generation Types Summary
| Type | Command | Options | Download |
|---|
| Podcast | INLINECODE52 | INLINECODE53 , INLINECODE54 | .mp3 |
| Video |
generate video |
--format,
--style | .mp4 |
| Cinematic Video |
generate cinematic-video | same as video | .mp4 |
| Slide Deck |
generate slide-deck |
--format,
--length | .pdf / .pptx |
| Quiz |
generate quiz |
--difficulty,
--quantity | .json/.md/.html |
| Flashcards |
generate flashcards |
--difficulty,
--quantity | .json/.md/.html |
| Infographic |
generate infographic |
--orientation,
--detail,
--style | .png |
| Report |
generate report |
--format,
--append | .md |
| Mind Map |
generate mind-map |
(sync, instant) | .json |
| Data Table |
generate data-table | description required | .csv |
All generate commands also support: -s/--source (specific sources), --language, --json, --retry N
Artifact Management
CODEBLOCK14
Notes
CODEBLOCK15
Sharing
CODEBLOCK16
Language Settings
CODEBLOCK17
Important: Language is a GLOBAL setting affecting all notebooks in your account.
Common codes: en English · de German · fr French · es Spanish · it Italian ·
pt_BR Portuguese · ja Japanese · ko Korean · zh_Hans Simplified Chinese · ar Arabic
Features Not in the Web UI
| Feature | Command |
|---|
| Batch downloads | INLINECODE91 |
| Quiz/Flashcard as JSON or Markdown |
download quiz --format json |
| Mind map JSON export |
download mind-map |
| Slide deck as PPTX |
download slide-deck --format pptx |
| Individual slide revision |
generate revise-slide "..." --artifact <id> --slide N |
| Report template append |
generate report --format study-guide --append "..." |
| Source full-text access |
source fulltext <id> |
| Save chat to note |
ask "..." --save-as-note |
| Programmatic sharing |
share commands |
Common Workflows
Research → Podcast
CODEBLOCK18
Documents → Study Materials
CODEBLOCK19
YouTube → Notes + Report
CODEBLOCK20
Full Presentation Workflow
CODEBLOCK21
Agent Automation (Non-blocking)
NB_ID=$(notebooklm create "Bulk Research" --json | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
notebooklm use $NB_ID
SRC=$(notebooklm source add "https://url.com" --json | python3 -c "import sys,json; print(json.load(sys.stdin)['source_id'])")
notebooklm source wait $SRC --timeout 120
TASK=$(notebooklm generate audio "Overview" --json | python3 -c "import sys,json; print(json.load(sys.stdin)['task_id'])")
notebooklm artifact wait $TASK --timeout 1200
notebooklm download audio ./podcast.mp3
JSON Output Schemas
CODEBLOCK23
Error Handling
| Error | Cause | Fix |
|---|
| Auth/cookie error | Session expired | INLINECODE100 → INLINECODE101 |
| "No notebook context" |
Context not set |
notebooklm use <id> or
-n <id> flag |
| "No result found for RPC ID" | Rate limiting | Wait 5–10 min, retry |
|
GENERATION_FAILED | Google rate limit | Wait and retry; use web UI as fallback |
| Download fails | Generation incomplete | Check
notebooklm artifact list |
| Invalid ID | Wrong ID |
notebooklm list to find correct ID |
| RPC protocol error | Google changed API | Update
notebooklm-py |
On failure, offer the user: retry / skip / investigate.
Exit Codes
Error (not found, failed) |
| 2 | Timeout (wait commands only) |
Processing Times & Rate Limits
| Operation | Typical Time | Timeout |
|---|
| Source indexing | 30s – 10 min | 600s |
| Research (fast) |
30s – 2 min | 180s |
| Research (deep) | 15 – 30+ min | 1800s |
| Mind map | instant | — |
| Quiz, flashcards | 5 – 15 min | 900s |
| Report, data table | 5 – 15 min | 900s |
| Audio generation | 10 – 20 min | 1200s |
| Video generation | 15 – 45 min | 2700s |
Always reliable: Notebook/source management, chat, mind map, report, data table.
May hit rate limits: Audio, video, quiz, flashcards, infographic, slide deck — retry after 5–10 min.
For agents, avoid --wait on long operations. Use artifact wait <id> in a background task.
Parallel Agent Safety
INLINECODE110 writes to a shared file — unsafe in parallel workflows.
Solutions:
- 1. Pass
-n <notebook_id> directly to each command (recommended) - INLINECODE112 — per-agent profile isolation
- INLINECODE113 — full isolation
- Always use full UUIDs, not partial IDs
Troubleshooting
CODEBLOCK24
Docs: https://github.com/teng-lin/notebooklm-py/blob/main/docs/troubleshooting.md