{"id":"059fc13c-165b-4efd-aaa3-c4ccef732270","slug":"sanjay3290-notebooklm-skill","kind":"skill","name":"notebooklm-skill","summary":"NotebookLM skill for AI coding assistants — query notebooks, manage sources, batch questions, multi-notebook comparison via Playwright automation","owner":"sanjay3290","repoUrl":"https://github.com/sanjay3290/notebooklm-skill","license":"Apache-2.0","licenseTier":"permissive","trust":"community","stars":4,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-03-04T01:27:28.000Z","addedAt":"2026-10-14T05:51:27.833Z","logoUrl":"https://avatars.githubusercontent.com/u/24948667?u=cf36813baa3a92f91968ea7b9953ae6efaadaa24&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["data-analytics","browser-web","developer-tools"],"tags":["ai-notebook","claude-code","codex","cursor","gemini-cli","google","goose","knowledge-base"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-17T10:31:49.167Z","sample":false,"url":"https://conduits.dev/tools/sanjay3290-notebooklm-skill","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# NotebookLM Skill\n\nQuery and manage Google NotebookLM notebooks from your AI coding assistant.\n\n## Supported AI Clients\n\n<p align=\"center\">\n  <a href=\"#claude-code\"><img src=\"https://img.shields.io/badge/Claude_Code-D97757?style=for-the-badge&logo=anthropic&logoColor=white\" alt=\"Claude Code\" /></a>\n  <a href=\"#gemini-cli\"><img src=\"https://img.shields.io/badge/Gemini_CLI-8E75B2?style=for-the-badge&logo=google&logoColor=white\" alt=\"Gemini CLI\" /></a>\n  <a href=\"#google-antigravity\"><img src=\"https://img.shields.io/badge/Antigravity-4285F4?style=for-the-badge&logo=google&logoColor=white\" alt=\"Google Antigravity\" /></a>\n  <a href=\"#cursor\"><img src=\"https://img.shields.io/badge/Cursor-000000?style=for-the-badge&logo=cursor&logoColor=white\" alt=\"Cursor\" /></a>\n  <a href=\"#openai-codex-cli\"><img src=\"https://img.shields.io/badge/OpenAI_Codex-412991?style=for-the-badge&logo=openai&logoColor=white\" alt=\"OpenAI Codex\" /></a>\n  <a href=\"#goose\"><img src=\"https://img.shields.io/badge/Goose-FF6B35?style=for-the-badge&logo=go&logoColor=white\" alt=\"Goose\" /></a>\n</p>\n\n## Features\n\n- Query notebooks with natural language questions\n- Batch questions (`q1||q2||q3`) and question files\n- Multi-notebook comparison across notebooks\n- Manage notebook library (add, list, search, activate)\n- Remote operations: create notebooks, add/delete/sync sources\n- Source sync with hash-based deduplication\n- Directory uploads with filters (extensions, size, modified date)\n- Dry-run mode for all destructive operations\n- Multiple auth profiles (work, personal, etc.)\n- Exports to JSON or Markdown\n- Headless Playwright automation (`--show-browser` for debug)\n\n## Quick Install\n\n### Claude Code\n\n```bash\n/plugin marketplace add sanjay3290/notebooklm-skill\n```\n\n### Gemini CLI / Cursor / Codex / Goose\n\n```bash\nnpx skills add sanjay3290/notebooklm-skill\n```\n\n## Setup\n\n### 1. Install dependencies\n\n```bash\npip install -r requirements.txt\npython -m playwright install chromium\n```\n\n### 2. Authenticate with a profile\n\n```bash\npython scripts/auth_manager.py setup --profile work\n```\n\nThis opens a browser window for Google sign-in. Your session is stored persistently at `~/.config/claude/notebooklm-skill/` (override with `NOTEBOOKLM_DATA_DIR`).\n\n### 3. Register a notebook\n\n```bash\npython scripts/notebook_manager.py add \\\n  --url \"https://notebooklm.google.com/notebook/...\" \\\n  --name \"My Notebook\" \\\n  --description \"What this notebook contains\" \\\n  --topics \"topic1,topic2\"\n```\n\n## Usage Examples\n\n```bash\n# Ask a single question against the active notebook\npython scripts/ask_question.py --question \"What are the key implementation details?\"\n\n# Ask by notebook ID or URL\npython scripts/ask_question.py --question \"Summarize auth flow\" --notebook-id notebook-id\npython scripts/ask_question.py --question \"What is covered here?\" --notebook-url \"https://notebooklm.google.com/notebook/...\"\n\n# Batch questions (pipe-separated)\npython scripts/ask_question.py --questions \"q1||q2||q3\" --notebook-id notebook-id\n\n# Questions from a file (one per line)\npython scripts/ask_question.py --questions-file ./questions.txt --notebook-id notebook-id\n\n# Compare one question across multiple notebooks\npython scripts/ask_question.py --question \"What changed this week?\" --compare-notebook-ids \"notebook-a,notebook-b\"\n\n# Export answer as Markdown\npython scripts/ask_question.py --question \"Summarize\" --notebook-id notebook-id --export-format markdown --save-notes\n\n# Upload a directory of sources with filters\npython scripts/remote_manager.py add-source --notebook-id notebook-id --dir ./docs --recursive --include-ext \"md,txt\" --max-size \"10MB\"\n\n# Sync local files to notebook (add new, optionally delete removed)\npython scripts/remote_manager.py sync-sources --notebook-id notebook-id --dir ./docs --recursive --delete-missing --dry-run\n\n# List all notebooks in your library\npython scripts/notebook_manager.py list\n```\n\n## Full Command Reference\n\n### Authentication\n\n```bash\n# Check auth status\npython scripts/auth_manager.py status --profile default\n\n# Initial setup (opens browser for Google sign-in)\npython scripts/auth_manager.py setup --profile work\n\n# Re-authenticate an expired session\npython scripts/auth_manager.py reauth --profile work\n\n# Clear a specific profile\npython scripts/auth_manager.py clear --profile work\n\n# Clear all profiles\npython scripts/auth_manager.py clear --all-profiles\n\n# List all profiles\npython scripts/auth_manager.py profiles\n```\n\n### Notebook Library\n\n```bash\n# List all registered notebooks\npython scripts/notebook_manager.py list\n\n# Add a notebook to the library\npython scripts/notebook_manager.py add \\\n  --url \"https://notebooklm.google.com/notebook/...\" \\\n  --name \"Notebook Name\" \\\n  --description \"What this notebook contains\" \\\n  --topics \"topic1,topic2\"\n\n# Set active notebook\npython scripts/notebook_manager.py activate --id notebook-id\n\n# Search notebooks by keyword\npython scripts/notebook_manager.py search --query \"keyword\"\n\n# Remove a notebook from the library\npython scripts/notebook_manager.py remove --id notebook-id\n\n# Show library statistics\npython scripts/notebook_manager.py stats\n```\n\n### Ask NotebookLM\n\n```bash\n# Single question (active notebook)\npython scripts/ask_question.py --question \"What are the key implementation details?\"\n\n# Ask by notebook ID or URL\npython scripts/ask_question.py --question \"Summarize auth flow\" --notebook-id notebook-id\npython scripts/ask_question.py --question \"What is covered here?\" --notebook-url \"https://notebooklm.google.com/notebook/...\"\n\n# Batch questions (pipe-separated)\npython scripts/ask_question.py --questions \"q1||q2||q3\" --notebook-id notebook-id\n\n# Questions from a file\npython scripts/ask_question.py --questions-file ./questions.txt --notebook-id notebook-id\n\n# Compare one question across multiple notebooks\npython scripts/ask_question.py --question \"What changed this week?\" --compare-notebook-ids \"notebook-a,notebook-b\"\n\n# Save structured export\npython scripts/ask_question.py --question \"Summarize\" --notebook-id notebook-id --export-format markdown --save-notes\n```\n\n### Remote NotebookLM Operations\n\n```bash\n# List all notebooks in your Google account\npython scripts/remote_manager.py list-remote --profile work\n\n# Create a new notebook remotely\npython scripts/remote_manager.py create-remote --name \"My Notebook\" --description \"Description\" --topics \"topic1,topic2\"\npython scripts/remote_manager.py create-remote --name \"My Notebook\" --skip-library\npython scripts/remote_manager.py create-remote --name \"My Notebook\" --dry-run\n\n# List sources in a notebook\npython scripts/remote_manager.py list-sources --notebook-id notebook-id\n\n# Add sources (text, URL, file, or directory)\npython scripts/remote_manager.py add-source --notebook-id notebook-id --text \"Some source text\"\npython scripts/remote_manager.py add-source --notebook-id notebook-id --url \"https://example.com\"\npython scripts/remote_manager.py add-source --notebook-id notebook-id --file \"/path/to/file.pdf\"\npython scripts/remote_manager.py add-source --notebook-id notebook-id --dir \"/path/to/folder\" --recursive\npython scripts/remote_manager.py add-source --notebook-id notebook-id --dir \"/path/to/folder\" --include-ext \"md,txt\" --exclude \"*.tmp\" --max-size \"10MB\" --modified-since \"7d\"\npython scripts/remote_manager.py add-source --notebook-id notebook-id --dir \"/path/to/folder\" --copy-to-temp\npython scripts/remote_manager.py add-source --notebook-id notebook-id --dir \"/path/to/folder\" --dry-run\n\n# Delete sources\npython scripts/remote_manager.py delete-source --notebook-id notebook-id --source-title \"source title\"\npython scripts/remote_manager.py delete-source --notebook-id notebook-id --source-title \"temp\" --contains --all-matches\npython scripts/remote_manager.py delete-source --notebook-id notebook-id --source-title \"temp\" --contains --all-matches --dry-run\n\n# Sync local directory to notebook (add new, optionally remove deleted)\npython scripts/remote_manager.py sync-sources --notebook-id notebook-id --dir \"/path/to/folder\" --recursive\npython scripts/remote_manager.py sync-sources --notebook-id notebook-id --dir \"/path/to/folder\" --recursive --delete-missing\npython scripts/remote_manager.py sync-sources --notebook-id notebook-id --manifest ./source-manifest.json --dry-run\n```\n\n### Common Options\n\nThese flags work with `ask_question.py` and `remote_manager.py`:\n\n```bash\n--profile work          # Named auth profile\n--retries 3             # Retry transient browser failures\n--artifacts-dir /tmp/x  # Screenshot/HTML dump directory\n--show-browser          # Show browser window for debugging\n```\n\n## Part of AI Skills Collection\n\nThis skill is also available in the [ai-skills](https://github.com/sanjay3290/ai-skills) collection with 20+ other skills for databases, research, image generation, Google Workspace, and more.\n\n## License\n\nApache-2.0\n"}