agentsclimarketplace

Notebooklm

Skill stanislavjiricek/neuroflow/skills/notebooklm

Complete API for Google NotebookLM — full programmatic access including features not in the web UI. Create notebooks, add sources (URLs, YouTube, PDFs, audio, video, images), generate all artifact types (podcast, video, slide deck, infographic, report, quiz, flashcards, mind map), and download results in multiple formats. Activates on explicit /notebooklm or intent like "create a podcast about X", "turn this into an audio overview", "generate a quiz from my research", "make an infographic", or "create a slide deck".From its SKILL.md

Install
npx -y skills add stanislavjiricek/neuroflow --skill notebooklm

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

10.7 KB, as published. Nobody here has run it

NotebookLM

Complete programmatic access to Google NotebookLM — including capabilities not exposed in the web UI. Create notebooks, add sources (URLs, YouTube, PDFs, audio, video, images), chat with content, generate all artifact types, and download results in multiple formats.


Installation

Python package (required):

pip install notebooklm-py

Skill install:

notebooklm skill install
# or
npx skills add teng-lin/notebooklm-py

Authenticate before first use:

notebooklm login        # Opens browser for Google OAuth
notebooklm list         # Verify authentication works

Agent setup verification

Before starting any workflow, verify the CLI is ready:

  1. notebooklm status → should show "Authenticated as: email@..."
  2. notebooklm list --json → should return valid JSON (even if empty)
  3. If either fails → run notebooklm login

When this skill activates

Explicit invocation: user says "/notebooklm", "use NotebookLM", or mentions the tool by name.

Intent detection — activate for requests like:

  • "Create a podcast about [topic]"
  • "Summarize these URLs/documents"
  • "Generate a quiz from my research"
  • "Turn this into an audio overview"
  • "Create flashcards for studying"
  • "Generate a video explainer"
  • "Make an infographic"
  • "Create a mind map of the concepts"
  • "Download the quiz as markdown"
  • "Add these sources to NotebookLM"

Autonomy rules

Run automatically (no confirmation needed):

  • notebooklm status — check context
  • notebooklm auth check — diagnose auth issues
  • notebooklm list — list notebooks
  • notebooklm source list — list sources
  • notebooklm artifact list — list artifacts
  • notebooklm language list / get / set — language settings
  • notebooklm artifact wait (in subagent context)
  • notebooklm source wait (in subagent context)
  • notebooklm research wait (in subagent context)
  • notebooklm use <id> — set context (⚠️ SINGLE-AGENT ONLY — use -n flag in parallel workflows)
  • notebooklm create — create notebook
  • notebooklm ask "..." — chat queries (without --save-as-note)
  • notebooklm history — display conversation history (read-only)
  • notebooklm source add — add sources

Ask before running:

  • notebooklm delete — destructive
  • notebooklm generate * — long-running, may fail
  • notebooklm download * — writes to filesystem
  • notebooklm artifact wait / notebooklm source wait / notebooklm research wait — long-running (when in main conversation)
  • notebooklm ask "..." --save-as-note — writes a note
  • notebooklm history --save — writes a note

Quick reference

TaskCommand
Authenticatenotebooklm login
Diagnose auth issuesnotebooklm auth check
List notebooksnotebooklm list
Create notebooknotebooklm create "Title"
Set contextnotebooklm use <notebook_id>
Show contextnotebooklm status
Add URL sourcenotebooklm source add "https://..."
Add filenotebooklm source add ./file.pdf
Add YouTubenotebooklm source add "https://youtube.com/..."
List sourcesnotebooklm source list
Wait for source processingnotebooklm source wait <source_id>
Web research (fast)notebooklm source add-research "query"
Web research (deep)notebooklm source add-research "query" --mode deep --no-wait
Chatnotebooklm ask "question"
Chat (save answer as note)notebooklm ask "question" --save-as-note
Show conversation historynotebooklm history
Generate podcastnotebooklm generate audio "instructions"
Generate videonotebooklm generate video "instructions"
Generate slide decknotebooklm generate slide-deck
Generate infographicnotebooklm generate infographic
Generate reportnotebooklm generate report --format briefing-doc
Generate quiznotebooklm generate quiz
Generate flashcardsnotebooklm generate flashcards
Generate mind mapnotebooklm generate mind-map
Check artifact statusnotebooklm artifact list
Wait for completionnotebooklm artifact wait <artifact_id>
Download audionotebooklm download audio ./output.mp3
Download videonotebooklm download video ./output.mp4
Download slide deck (PDF)notebooklm download slide-deck ./slides.pdf
Download slide deck (PPTX)notebooklm download slide-deck ./slides.pptx --format pptx
Download reportnotebooklm download report ./report.md
Download quiz (markdown)notebooklm download quiz --format markdown quiz.md
Download flashcards (markdown)notebooklm download flashcards --format markdown cards.md
List languagesnotebooklm language list
Set languagenotebooklm language set zh_Hans
Delete notebooknotebooklm notebook delete <id>

Generation types

All generate commands support -s, --source (specific sources), --language (output language), --json (machine-readable output), and --retry N (auto-retry on rate limits).

TypeCommandOptionsDownload format
Podcastgenerate audio--format [deep-dive|brief|critique|debate], --length [short|default|long].mp3
Videogenerate video--format [explainer|brief], --style [auto|classic|whiteboard|kawaii|anime|watercolor|retro-print|heritage|paper-craft].mp4
Slide Deckgenerate slide-deck--format [detailed|presenter], --length [default|short].pdf / .pptx
Infographicgenerate infographic--orientation [landscape|portrait|square], --detail [concise|standard|detailed], --style [auto|sketch-note|professional|bento-grid|editorial|instructional|bricks|clay|anime|kawaii|scientific].png
Reportgenerate report--format [briefing-doc|study-guide|blog-post|custom], --append "extra instructions".md
Mind Mapgenerate mind-map(sync, instant).json
Data Tablegenerate data-tabledescription required.csv
Quizgenerate quiz--difficulty [easy|medium|hard], --quantity [fewer|standard|more].json/.md
Flashcardsgenerate flashcards--difficulty [easy|medium|hard], --quantity [fewer|standard|more].json/.md

Features beyond the web UI

FeatureCommandDescription
Batch downloadsdownload <type> --allDownload all artifacts of a type at once
Quiz/Flashcard exportdownload quiz --format jsonExport as JSON, Markdown, or HTML
Mind map extractiondownload mind-mapExport hierarchical JSON for visualization tools
Data table exportdownload data-tableDownload structured tables as CSV
Slide deck as PPTXdownload slide-deck --format pptxEditable .pptx (web UI only offers PDF)
Slide revisiongenerate revise-slide "prompt" --artifact <id> --slide NModify individual slides
Report template appendgenerate report --format study-guide --append "..."Append custom instructions
Source fulltextsource fulltext <id>Retrieve indexed text content of any source
Save chat to noteask "..." --save-as-noteSave Q&A answers as notebook notes

Common workflows

Research to podcast

  1. notebooklm create "Research: [topic]"
  2. notebooklm source add for each URL/document
  3. Wait for sources: notebooklm source list --json until all status=READY
  4. notebooklm generate audio "Focus on [specific angle]" (confirm when asked)
  5. Note the artifact ID returned
  6. Check notebooklm artifact list for status
  7. notebooklm download audio ./podcast.mp3 when complete

For automated/background generation, spawn a subagent after step 4:

Task(
  prompt="Wait for artifact {artifact_id} in notebook {notebook_id} to complete, then download.
          Use: notebooklm artifact wait {artifact_id} -n {notebook_id} --timeout 600
          Then: notebooklm download audio ./podcast.mp3 -a {artifact_id} -n {notebook_id}",
  subagent_type="general-purpose"
)

Document analysis

  1. notebooklm create "Analysis: [project]"
  2. notebooklm source add ./doc.pdf (or URLs)
  3. notebooklm ask "Summarize the key points"
  4. Continue chatting as needed

Processing times

OperationTypical timeSuggested timeout
Source processing30s–10 min600s
Research (fast)30s–2 min180s
Research (deep)15–30+ min1800s
Quiz, flashcards5–15 min900s
Report, data-table5–15 min900s
Audio generation10–20 min1200s
Video generation15–45 min2700s

Error handling

ErrorCauseAction
Auth/cookie errorSession expiredRun notebooklm auth check then notebooklm login
"No notebook context"Context not setUse -n <id> flag (parallel) or notebooklm use <id> (single-agent)
"No result found for RPC ID"Rate limitingWait 5–10 min, retry
GENERATION_FAILEDGoogle rate limitWait and retry later
Download failsGeneration incompleteCheck artifact list for status

Unreliable operations (may fail with rate limiting): audio, video, quiz, flashcards, infographic, slide deck generation. Workaround: retry after 5–10 minutes or use the NotebookLM web UI as fallback.


Parallel safety

Use explicit notebook IDs in parallel workflows. Commands supporting -n shorthand: artifact wait, source wait, research wait/status, download *. For automation, prefer full UUIDs to avoid ambiguity.

CI/CD setup: Set NOTEBOOKLM_AUTH_JSON from a secret containing your storage_state.json contents.

Multiple accounts: Use different NOTEBOOKLM_HOME directories per account.


Language configuration

Language setting controls output language for generated artifacts (audio, video, etc.). This is a GLOBAL setting affecting all notebooks.

notebooklm language list          # List 80+ supported languages
notebooklm language set zh_Hans   # Simplified Chinese
notebooklm language set en        # English (default)

Override per command: notebooklm generate audio --language ja

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.