Blog NotebooklmSAFE
Claude Code blog skill suite: 30 sub-skills, 5 agents, 5-gate v1.9.0 Blog Delivery Contract, dual-optimized for Google rankings and AI citations. Active development at AI-Marketing-Hub/claude-blog (AI Marketing Hub Pro community); public releases ship here.
Overview
Claude Code blog skill suite: 30 sub-skills, 5 agents, 5-gate v1.9.0 Blog Delivery Contract, dual-optimized for Google rankings and AI citations. Active development at AI-Marketing-Hub/claude-blog (AI Marketing Hub Pro community); public releases ship here.
1072026d7c8dOBSERVED · 2026-10-12Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: blog-notebooklm description: > Query Google NotebookLM notebooks for source-grounded, citation-backed answers from user-uploaded documents. Manages notebook library, handles Google authentication, and supports smart discovery. Works standalone via /blog notebooklm or internally from blog-write and blog-researcher for source-grounded research context. Falls back gracefully when not configured. Use when user says "notebooklm", "notebook", "query notebook", "ask notebook", "notebook research", "source grounded research", "document query", "notebook library". user-invokable: true argument-hint: "[ask|discover|library|setup|status|cleanup] [question-or-url]" license: MIT metadata: author: AgriciDaniel version: "2.2.0" source: "https://github.com/PleasePrompto/notebooklm-skill" --- # Blog NotebookLM: Source-Grounded Research from Your Documents Query Google NotebookLM notebooks directly from Claude Code for citation-backed answers from Gemini. Each question opens a headless browser session, retrieves the answer from your uploaded documents, and closes. Responses are source-grounded model answers, not proof of truth: uploaded documents may be primary or secondary, and the answer can still omit context. Answers provide usable provenance only when the returned citation identifies a verifiable underlying source. Record a stable source URL and a publication, study-period, or retrieval date when that detail affects verification or interpretation. Use the underlying source title as the inline citation. Do not cite the private NotebookLM URL as the bibliography entry for public content. ## Quick Reference | Command | What it does | |---------|-------------| | `/blog notebooklm ask <question>` | Query a notebook for source-grounded answers | | `/blog notebooklm discover <url>` | Smart-discover notebook content before cataloging | | `/blog notebooklm library list` | List all notebooks in library | | `/blog notebooklm library add <url>` | Add a notebook to library | | `/blog notebooklm library search <query>` | Search notebooks by keyword | | `/blog notebooklm library remove <id>` | Remove a notebook from library | | `/blog notebooklm setup` | One-time Google authentication (browser visible) | | `/blog notebooklm status` | Check authentication status | | `/blog notebooklm cleanup` | Clean browser state (preserves library) | ## Prerequisites - Google account with NotebookLM access - Python 3.11+ (venv managed automatically by `run.py`) - Google Chrome (installed automatically on first run via Patchright) - One-time authentication setup (interactive Google login in visible browser) ## Use the run.py Wrapper Call scripts only through the run.py wrapper: `python3 scripts/run.py [script]`: ```bash # CORRECT: python3 scripts/run.py auth_manager.py status python3 scripts/run.py ask_question.py --question "..." # Do not call files under scripts/ directly. The wrapper owns venv setup. ``` The `run.py` wrapper automatically creates `.venv`, installs dependencies, sets up Chrome, and executes the target script. ## Auth Check (Gate Pattern) Before any query operation, check authentication: ```bash python3 scripts/run.py auth_manager.py status ``` - If authenticated: proceed with the query - If not authenticated: inform user and guide to setup: "NotebookLM requires Google login. Run `/blog notebooklm setup` to authenticate." - **When called internally** (from blog-write or blog-researcher): return silently with no error if not authenticated. Never block the writing workflow. ## Setup Workflow For `/blog notebooklm setup`: ```bash # Opens a visible browser for manual Google login (one-time) python3 scripts/run.py auth_manager.py setup ``` Tell the user: "A browser window will open. Please log in to your Google account." Authentication persists via browser profile + cookie injection (hybrid approach). Other auth commands: ```bash python3 scripts/run.py auth_manager.py status # Check auth python3 scripts/run.py auth_manager.py reauth # Re-authenticate python3 scripts/run.py auth_manager.py clear # Clear all auth data ``` ## Query Workflow For `/blog notebooklm ask <question>`: ### Step 1: Check Auth Run auth check (see gate pattern above). If not authenticated, guide to setup. ### Step 2: Resolve Notebook Determine which notebook to query: - If `--notebook-url` provided: validate it is a NotebookLM notebook URL, then use it - If `--notebook-id` provided: look up in library - If neither: use active notebook from library - If no active notebook: show library and ask user to select ### Step 3: Ask the Question ```bash # Basic query (uses active notebook) python3 scripts/run.py ask_question.py --question "Your question here" # Query specific notebook by ID python3 scripts/run.py ask_question.py --question "..." --notebook-id notebook-id # Query by URL directly python3 scripts/run.py ask_question.py --question "..." --notebook-url "https://..." # JSON output (for internal/programmatic use) python3 scripts/run.py ask_question.py --question "..." --json # Show browser for debugging python3 scripts/run.py ask_question.py --question "..." --show-browser ``` ### Step 4: Analyze and Follow Up Every response ends with a follow-up prompt. **Required behavior:** 1. **STOP**: do not immediately respond to the user 2. **ANALYZE**: compare the answer to the user's original request 3. **IDENTIFY GAPS**: determine if more information is needed 4. **ASK FOLLOW-UP**: if gaps exist, immediately ask a follow-up question 5. **REPEAT**: continue until information is complete 6. **SYNTHESIZE**: combine all answers before responding to the user ## Smart Discovery Workflow For `/blog notebooklm discover <url>`: When adding a notebook without knowing its content, query it first: ```bash # Step 1: Discover content python3 scripts/run.py ask_question.py \ --question "What is the content of this notebook? What topics are covered? Provide a complete overview briefly and co
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (2 observation(s))
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (0)
No findings outside the package's declared scope.
Gates applied: no_behavioural_pass.
1072026d7c8dfull audit observations/trust-audit/skill/agricidaniel__blog-notebooklm.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 1072026d7c8d | SAFE | B | 89 | first audit |
Questions
What does the Blog Notebooklm skill do?
Claude Code blog skill suite: 30 sub-skills, 5 agents, 5-gate v1.9.0 Blog Delivery Contract, dual-optimized for Google rankings and AI citations. Active development at AI-Marketing-Hub/claude-blog (AI Marketing Hub Pro community); public releases ship here.
Is Blog Notebooklm safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Blog Notebooklm access on my machine?
The audit observed that it reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.
Which assistants does Blog Notebooklm work with?
Its documentation mentions claude-code. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (1072026d7c8d), read on 2026-10-12. The repository is watched, and a new audit runs when it changes — this is the first audit.