NotebookLM Distiller: Batch knowledge extraction from Google NotebookLM into Obsidian. Supports Q&A generation (15-20 deep questions), structured summaries, glossary extraction, web research sessions, and direct markdown persistence.
Automated knowledge extraction pipeline: search NotebookLM notebooks by keyword → generate deep questions or structured summaries → write linked Obsidian markdown notes.
Five subcommands:
distill — extract knowledge from existing notebooks (qa / summary / glossary)quiz — generate quiz questions as JSON for Discord-based interactive sessionsevaluate — evaluate a user's answer against notebook sources (JSON output)research — start a web research session inside NotebookLM on any topicpersist — write any markdown content directly into the Obsidian vaultTrigger distill subcommand when:
/notebooklm-distill or /notebooklm-distill-summaryTrigger research subcommand when:
Trigger quiz + evaluate subcommands when:
quiz --keywords X → get JSON with notebook_id + notebook_name + questions[]来,N 道题(来源:{notebook_name} · ID: {notebook_id[:8]})evaluate --notebook-id X --question Q1 --answer <reply> → get JSON feedbackTrigger persist subcommand when:
CRITICAL: Do NOT answer from internal knowledge. Do NOT ask for clarification. Execute the appropriate subcommand immediately.
pip install notebooklm-pynotebooklm login (creates ~/.book_client_session)Extract knowledge from one or more NotebookLM notebooks matching keywords.
Scenario A — URL provided (needs ingestion first)
deepreader is installed (~/.openclaw/skills/deepreader/run.sh).--keywords for distill.Scenario B — notebook already exists
notebooklm list.summary, "术语/概念" → glossary, default → qa.--vault-dir if not known from context.python3 ~/.openclaw/skills/notebooklm-distiller/scripts/distill.py distill \
--keywords "<keyword1>" "<keyword2>" \
--topic "<TopicFolderName>" \
--vault-dir "<path/to/obsidian/vault>" \
--mode <qa|summary|glossary> \
[--lang zh] # Add for Chinese output (default: en)
[--writeback] # Write distilled content back into NLM notebook as a note
[--cli-path <path/to/notebooklm>]
Modes:
qa (default) — generates 15-20 questions + answers → <NotebookName>_QA.mdsummary — 5 structured sections (Summary, Key Points, Constraints, Trade-offs, Open Questions) → <NotebookName>_Summary.mdglossary — 15-30 domain terms + definitions → <NotebookName>_Glossary.mdFlags:
--lang zh — prepends 请用中文回答 to all NLM prompts; add when user requests Chinese output or context is Chinese--writeback — after writing to Obsidian, calls notebooklm source add to push the distilled note back into the source notebook as a text source titled Distill Log: {mode} | {notebook_name} | {date}. Add when user says "写回 NLM", "记录到笔记本", or wants the distill log visible in NotebookLMStart a NotebookLM web research session on a topic. Creates a new notebook, imports web sources, and waits for completion.
python3 ~/.openclaw/skills/notebooklm-distiller/scripts/distill.py research \
--topic "<Research Topic>" \
[--mode deep|fast] \
[--cli-path <path/to/notebooklm>]
Output: notebook ID and name. Follow up with distill to extract into Obsidian.
Write any markdown content into the Obsidian vault with auto-generated YAML frontmatter.
# From inline content
python3 ~/.openclaw/skills/notebooklm-distiller/scripts/distill.py persist \
--vault-dir "<path/to/obsidian/vault>" \
--path "Notes/2026-03-09-meeting.md" \
--title "Meeting Notes" \
--content "Key decisions: ..." \
--tags "meeting,notes"
# From a file
python3 ~/.openclaw/skills/notebooklm-distiller/scripts/distill.py persist \
--vault-dir "<path/to/obsidian/vault>" \
--path "Notes/draft.md" \
--file ~/Desktop/draft.md
Each notebook produces one file at <vault-dir>/<topic>/<NotebookName>_<Mode>.md:
---