Install
$ agentstack add skill-claude-world-notebooklm-skill-notebooklm-skill ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
NotebookLM Research Agent
A fully autonomous AI research agent that ingests sources into Google NotebookLM, runs deep web research, synthesizes knowledge through cited Q&A and 9 downloadable artifact types, creates polished content drafts, and optionally publishes to social platforms.
Zero-cost research engine -- NotebookLM is free. No API keys. No per-query charges.
Authentication
NotebookLM uses RPC/HTTP calls after a one-time browser cookie auth. No browser automation per operation -- the session is stored and reused.
~/.notebooklm/storage_state.json
Login once via the built-in CLI:
notebooklm login # One-time browser auth, saves session
notebooklm login --check # Verify stored session is still valid
The session persists until Google expires it (typically weeks). All scripts and the MCP server auto-load the stored session. No API keys or environment variables needed.
Architecture Overview
Core Principle: NotebookLM provides cited research, Claude creates content.
NotebookLM handles source ingestion, indexing, deep web research, cited answers, and native artifact generation (9 downloadable types). Claude uses that research output to write original articles, social posts, and reports. The pipeline is zero-cost and produces citation-backed content.
| Component | Role | |---|---| | notebooklm-py (v0.3.4) | Python client for NotebookLM (8 sub-APIs, 50+ methods, built-in CLI) | | notebooklm CLI | Built-in CLI: notebooklm login, notebook, source, chat, generate, download, research, share | | MCP Server (mcp_server/) | FastMCP server exposing 13 tools for Claude Code / Cursor / Gemini CLI | | Wrapper CLI (scripts/) | Our higher-level wrappers: notebooklm_client.py, pipeline.py | | LLM (Claude) | Content creator (writes original text using NotebookLM research) | | trend-pulse (optional) | Trending topic discovery for research-to-content pipelines | | threads-viral-agent (optional) | Social publishing for content distribution |
┌──────────────────────────────────────────────────────────────────────────────────┐
│ NOTEBOOKLM RESEARCH AGENT │
├──────────────┬──────────────┬─────────────────┬─────────────────────────────────┤
│ Phase 1 │ Phase 2 │ Phase 3 │ Phase 4 │
│ INGEST │ SYNTHESIZE │ CREATE │ PUBLISH (optional) │
│ │ │ │ │
│ Sources: │ Chat: │ Claude writes: │ threads-viral-agent: │
│ URL │ ask() │ Articles ────→ │ → Threads │
│ Text │ → cited │ Social posts → │ → Instagram │
│ PDF/DOCX │ answers │ Newsletters → │ → Facebook │
│ YouTube │ → follow-up │ Reports ─────→ │ │
│ Google Drive│ → citations │ │ Direct output: │
│ File upload │ │ trend-pulse │ → Markdown file │
│ │ Artifacts │ → topic ideas │ → JSON data │
│ Research: │ (9 types): │ │ → Newsletter draft │
│ web (fast) │ audio │ NotebookLM │ → Podcast MP4 │
│ web (deep) │ video │ artifacts used │ → Video MP4 │
│ drive │ cinematic* │ directly: │ → Slide deck PDF │
│ │ slide_deck │ → Podcast │ → Quiz / Flashcards │
│ Auto-import │ report │ → Report │ │
│ discovered │ quiz │ → Data table │ │
│ sources │ flashcards │ → Infographic │ │
│ │ mind_map │ │ * cinematic = Veo 3, │
│ │ infographic │ │ AI Ultra only │
│ │ data_table │ │ │
│ │ study_guide │ │ │
└──────────────┴──────────────┴─────────────────┴─────────────────────────────────┘
8 Sub-APIs (notebooklm-py v0.3.4)
| Sub-API | Accessor | Description | |---|---|---| | Notebooks | client.notebooks | Create, list, get, delete, rename, describe, share | | Sources | client.sources | Add URL/text/file/Drive, list, delete, rename, refresh, guide, fulltext, wait | | Artifacts | client.artifacts | Generate 9 downloadable types, poll status, download, list, delete, rename, revise slides | | Chat | client.chat | Ask with citations, follow-up, conversation history, configure persona | | Research | client.research | Web/Drive research, poll results, import discovered sources | | Notes | client.notes | Create, list, update, delete text notes and mind maps | | Settings | client.settings | User settings (output language) | | Sharing | client.sharing | Public links, user permissions, view levels |
Phase 1: INGEST -- Source Collection
Create a notebook and populate it with sources. NotebookLM accepts 8 source types: URLs, text, PDF, DOCX, Markdown, CSV, YouTube, and Google Drive documents.
Create Notebook and Add Sources
Built-in CLI (notebooklm-py):
# Create a notebook
notebooklm notebook create "AI Agents Research"
# Add sources
notebooklm source add NOTEBOOK_ID --url "https://arxiv.org/abs/2401.12345"
notebooklm source add NOTEBOOK_ID --url "https://youtube.com/watch?v=VIDEO_ID"
notebooklm source add NOTEBOOK_ID --text "Custom Notes" --content "Full text here..."
notebooklm source add NOTEBOOK_ID --file /path/to/document.pdf
Our wrapper CLI (global command or scripts/notebooklm_client.py):
# After pip install ., use global commands:
# notebooklm-skill create --title "AI Agents Research" --sources url1 url2
# Or use scripts directly:
python3 scripts/notebooklm_client.py create \
--title "AI Agents Research" \
--sources \
"https://arxiv.org/abs/2401.12345" \
"https://blog.example.com/ai-agents-2026"
# Add more sources to existing notebook
python3 scripts/notebooklm_client.py add-source \
--notebook NOTEBOOK_ID \
--url "https://another-source.com/article"
# Add text source (pasted content)
python3 scripts/notebooklm_client.py add-source \
--notebook NOTEBOOK_ID \
--text "Full text content here..." \
--text-title "Title of Source"
# Add file (PDF, Markdown, DOCX, CSV)
python3 scripts/notebooklm_client.py add-source \
--notebook NOTEBOOK_ID \
--file "/path/to/document.pdf"
# Add YouTube video (auto-extracts transcript)
python3 scripts/notebooklm_client.py add-source \
--notebook NOTEBOOK_ID \
--url "https://youtube.com/watch?v=VIDEO_ID"
# Add Google Drive document
python3 scripts/notebooklm_client.py add-source \
--notebook NOTEBOOK_ID \
--drive-id "DRIVE_FILE_ID" \
--drive-title "Document Title"
Deep Web Research (auto-discover sources)
NotebookLM can search the web or Google Drive and auto-import relevant sources. This is one of the most powerful features -- it finds sources you did not know existed.
Built-in CLI:
notebooklm research start NOTEBOOK_ID "latest advances in AI agents"
notebooklm research poll NOTEBOOK_ID
Our wrapper CLI:
# Fast web research (quick scan, returns URLs)
python3 scripts/notebooklm_client.py research \
--notebook NOTEBOOK_ID \
--query "latest advances in AI agents" \
--source web \
--mode fast
# Deep web research (thorough analysis, returns report + URLs)
python3 scripts/notebooklm_client.py research \
--notebook NOTEBOOK_ID \
--query "comparison of agent frameworks" \
--source web \
--mode deep
# Google Drive research
python3 scripts/notebooklm_client.py research \
--notebook NOTEBOOK_ID \
--query "project notes on agent design" \
--source drive
# Poll results and auto-import top discovered sources
python3 scripts/notebooklm_client.py research-poll \
--notebook NOTEBOOK_ID \
--import-top 5
Research modes:
| Mode | Speed | Output | Best For | |---|---|---|---| | fast | 10-30 sec | URL list + brief summary | Quick source discovery | | deep | 1-5 min | Full research report (Markdown) + URLs | Thorough analysis, complex topics |
Deep research returns a comprehensive Markdown report synthesizing findings across all discovered sources -- usable as-is or as input for Claude.
Source Types Reference
| Type | Method | CLI Flag | Notes | |---|---|---|---| | Web URL | add_url(url) | --url | Any web page, auto-indexes content | | YouTube | add_url(youtube_url) | --url | Auto-detects YouTube, extracts transcript | | PDF | add_file(path) | --file | Resumable upload, large files OK | | DOCX | add_file(path) | --file | Word documents | | Markdown | add_file(path) | --file | .md files | | CSV | add_file(path) | --file | Spreadsheet data | | Text | add_text(title, content) | --text --content | Pasted/copied content | | Google Docs | add_drive(file_id, title) | --drive-id --drive-title | Requires Drive access | | Google Slides | add_drive(file_id, title, mime) | --drive-id --drive-title | Presentation content | | Google Sheets | add_drive(file_id, title, mime) | --drive-id --drive-title | Spreadsheet data | | Image | add_file(path) | --file | Image content (OCR) |
Source Limits and Wait Behavior
- Max 50 sources per notebook
- Sources require processing time (5-60 seconds depending on size/type)
- Use
--waitflag to block until source is ready - Use
wait_for_sources()for batch operations - Source statuses: 1=processing, 2=ready, 3=error, 4=preparing
Python API (for custom scripts)
from notebooklm import NotebookLMClient
async with await NotebookLMClient.from_storage() as client:
# Create notebook
nb = await client.notebooks.create("AI Research")
# Add sources
src1 = await client.sources.add_url(nb.id, "https://example.com", wait=True)
src2 = await client.sources.add_text(nb.id, "Notes", "Content...", wait=True)
src3 = await client.sources.add_file(nb.id, "/path/to/doc.pdf", wait=True)
# Deep web research
task = await client.research.start(nb.id, "AI agents 2026", mode="deep")
results = await client.research.poll(nb.id) # Poll until complete
imported = await client.research.import_sources(nb.id, task["task_id"], results["sources"][:5])
Phase 2: SYNTHESIZE -- Research & Analysis
Once sources are ingested, use NotebookLM to extract knowledge through cited Q&A and generate 9 types of downloadable native artifacts.
Ask Questions (Cited Answers)
Every answer includes source citations with exact passage references.
Built-in CLI:
notebooklm chat NOTEBOOK_ID "What are the key differences between ReAct and Reflexion?"
notebooklm chat NOTEBOOK_ID "Can you elaborate on point 3?" --conversation CONV_ID
Our wrapper CLI:
# Ask a question -- answer includes source citations
python3 scripts/notebooklm_client.py ask \
--notebook NOTEBOOK_ID \
--query "What are the key differences between ReAct and Reflexion agents?"
# Ask with specific sources only
python3 scripts/notebooklm_client.py ask \
--notebook NOTEBOOK_ID \
--query "Summarize the main findings" \
--sources SOURCE_ID_1 SOURCE_ID_2
# Follow-up question (maintains conversation context)
python3 scripts/notebooklm_client.py ask \
--notebook NOTEBOOK_ID \
--query "Can you elaborate on point 3?" \
--conversation CONVERSATION_ID
Chat Configuration
NotebookLM's chat can be configured for different interaction styles:
| Mode | Description | Use Case | |---|---|---| | default | Balanced answers | General research | | learning_guide | Socratic, asks follow-up questions | Study, learning | | concise | Short, direct answers | Quick lookups | | detailed | Thorough, comprehensive answers | Deep analysis |
Python API:
from notebooklm.models import ChatMode, ChatResponseLength
await client.chat.set_mode(nb.id, ChatMode.LEARNING_GUIDE)
await client.chat.configure(nb.id, response_length=ChatResponseLength.LONGER)
Generate Artifacts (10 Types)
NotebookLM natively generates 9 downloadable artifact types from ingested sources. These are generated server-side by Google -- no LLM cost on our end.
> Warning: infographic generation works but download is unreliable (fragile API > structure parsing). Use slides instead for downloadable visual content.
Built-in CLI:
notebooklm generate audio NOTEBOOK_ID
notebooklm generate video NOTEBOOK_ID
notebooklm generate report NOTEBOOK_ID --format briefing_doc
notebooklm generate quiz NOTEBOOK_ID
notebooklm generate flashcards NOTEBOOK_ID
# notebooklm generate infographic NOTEBOOK_ID # ⚠️ download unreliable
notebooklm generate slide-deck NOTEBOOK_ID
notebooklm generate data-table NOTEBOOK_ID
notebooklm generate mind-map NOTEBOOK_ID
Our wrapper CLI:
# 1. Audio Overview (podcast-style discussion)
python3 scripts/notebooklm_client.py generate audio \
--notebook NOTEBOOK_ID \
--language en \
--format deep_dive \
--length default \
--instructions "Focus on practical implications"
# 2. Video Overview
python3 scripts/notebooklm_client.py generate video \
--notebook NOTEBOOK_ID \
--format explainer \
--style whiteboard
# 3. Cinematic Video (Veo 3, requires AI Ultra subscription)
python3 scripts/notebooklm_client.py generate cinematic-video \
--notebook NOTEBOOK_ID \
--instructions "Dramatic visual storytelling"
# 4. Slide Deck
python3 scripts/notebooklm_client.py generate slide-deck \
--notebook NOTEBOOK_ID \
--format detailed_deck
# 5. Report (Briefing Doc / Study Guide / Blog Post / Custom)
python3 scripts/notebooklm_client.py generate report \
--notebook NOTEBOOK_ID \
--format briefing_doc
# 6. Study Guide (convenience shortcut for report format=study_guide)
python3 scripts/notebooklm_client.py generate report \
--notebook NOTEBOOK_ID \
--format study_guide
# 7. Quiz
python3 scripts/notebooklm_client.py generate quiz \
--notebook NOTEBOOK_ID \
--quantity standard \
--difficulty medium
# 8. Flashcards
python3 scripts/notebooklm_client.py generate flashcards \
--notebook NOTEBOOK_ID
# 9. Mind Map
python3 scripts/notebooklm_client.py generate mind-map \
--notebook NOTEBOOK_ID
# 10. Infographic — ⚠️ download unreliable, use slides instead
# python3 scripts/notebooklm_client.py generate infographic \
# --notebook NOTEBOOK_ID \
# --orientation landscape \
# --detail standard
# 11. Data Table
python3 scripts/notebooklm_client.py generate data-table \
--notebook NOTEBOOK_ID \
--instructions "Compare frameworks by features, performance, and community size"
Artifact Generation Options
Audio formats:
| Format | Duration | Style | Best For | |---|---|---|---| | deep_dive | 15-30 min | Thorough exploration | Complex topics | | brief | 3-5 min | Quick overview | News updates | | critique | 10-20 min | Critical analysis | Reviews, evaluations | | debate | 10-20 min | Two opposing views | Controversial topics |
Audio lengths: short (~5 min), default (~10-15 min), long (~20-30 min)
Video formats: explainer, brief, cinematic (AI Ultra only)
Video styles: auto_select, classic, whiteboard, conversational, dynamic
Report formats: briefing_doc, study_guide, blog_post, custom (with --prompt)
Quiz options: quantity (fewer, standard, more), difficulty (easy, medium, hard)
Infographic options: orientation (landscape, portrait, square), detail (concise, standard, detailed)
Slide deck formats: detailed_deck, presenter_slides
D
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: claude-world
- Source: claude-world/notebooklm-skill
- License: MIT
- Homepage: https://youtu.be/6M3K4sxahdE
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.