[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-jacob-bd--notebooklm-mcp-cli":3,"similar-jacob-bd--notebooklm-mcp-cli":176},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":14,"owner_name":15,"owner_avatar_url":16,"owner_bio":17,"owner_company":7,"owner_location":18,"owner_email":7,"owner_twitter":7,"owner_website":7,"owner_url":19,"languages":20,"stars":25,"forks":26,"last_commit_at":27,"license":28,"difficulty_score":29,"env_os":30,"env_gpu":30,"env_ram":30,"env_deps":31,"category_tags":34,"github_topics":7,"view_count":37,"oss_zip_url":7,"oss_zip_packed_at":7,"status":38,"created_at":39,"updated_at":40,"faqs":41,"releases":75},656,"jacob-bd\u002Fnotebooklm-mcp-cli","notebooklm-mcp-cli",null,"notebooklm-mcp-cli 是一个开源项目，为 Google NotebookLM 提供了命令行界面（CLI）和模型上下文协议（MCP）服务器的支持。它让用户不再局限于网页端手动操作，可以直接在终端通过脚本管理笔记、添加来源、生成音频播客甚至分享链接。这有效解决了 NotebookLM 缺乏本地 API 接口、难以融入自动化流程的痛点。\n\nnotebooklm-mcp-cli 特别适合开发者、AI 研究者以及热衷于构建个性化工作流的技术爱好者。其独特之处在于统一了 CLI 和 MCP 功能，一次安装即可同时获得两种使用方式。用户可以轻松配置它与 Claude、Cursor、Gemini 等主流 AI 客户端对接，直接用自然语言指令调用 NotebookLM 的能力，例如“创建一个关于量子计算的笔记本并生成播客”。对于希望提升 AI 协作效率、将知识库与智能助手深度整合的用户来说，notebooklm-mcp-cli 是一个实用且高效的扩展选择。","# NotebookLM CLI & MCP Server\n\n![NotebookLM MCP Header](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_702350225d74.jpg)\n\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fnotebooklm-mcp-cli)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fnotebooklm-mcp-cli\u002F)\n[![PyPI downloads](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fnotebooklm-mcp-cli)](https:\u002F\u002Fpypistats.org\u002Fpackages\u002Fnotebooklm-mcp-cli)\n[![Total downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_251b266f92c0.png)](https:\u002F\u002Fpepy.tech\u002Fprojects\u002Fnotebooklm-mcp-cli)\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fnotebooklm-mcp-cli)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fnotebooklm-mcp-cli\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Fnotebooklm-mcp-cli)](https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fblob\u002Fmain\u002FLICENSE)\n\n> 🎉 **January 2026 — Major Update!** This project has been completely refactored to unify **NotebookLM-MCP** and **NotebookLM-CLI** into a single, powerful package. One install gives you both the CLI (`nlm`) and MCP server (`notebooklm-mcp`). See the [CLI Guide](docs\u002FCLI_GUIDE.md) and [MCP Guide](docs\u002FMCP_GUIDE.md) for full documentation.\n\n**Programmatic access to Google NotebookLM** — via command-line interface (CLI) or Model Context Protocol (MCP) server.\n\n> **Note:** Tested with Pro\u002Ffree tier accounts. May work with NotebookLM Enterprise accounts but has not been tested.\n\n📺 **Watch the Demos**\n\n### Latest\n\n| **Codex Setup + Cinematic Video & Slides** |\n|:---:|\n| [![Latest](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_cf733d208a51.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=KrgLCrvU1dw) |\n\n### MCP Demos\n\n| **General Overview** | **Claude Desktop** | **Perplexity Desktop** | **MCP Super Assistant** |\n|:---:|:---:|:---:|:---:|\n| [![General](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_1e457317f5da.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=d-PZDQlO4m4) | [![Claude](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_1fdf728926c5.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=PU8JhgLPxes) | [![Perplexity](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_18f9d220dbf4.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=BCKlDNg-qxs) | [![MCP SuperAssistant](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_695fb6537d22.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=7aHDbkr-l_E) |\n\n### CLI Demos\n\n| **CLI Overview** | **CLI, MCP & Skills** | **Setup, Doctor & mcpb** | **Infographics Support** |\n|:---:|:---:|:---:|:---:|\n| [![CLI Overview](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_184010656d7a.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=XyXVuALWZkE) | [![CLI, MCP & Skills](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_210c831f207e.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ZQBQigFK-E8) | [![Setup, Doctor & mcpb](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_482b306d2de1.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=5tOUilBTJ3Q) | [![Infographics](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_0e8c801d7efc.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Uc6iH5NuQ9A) |\n\n\n## Two Ways to Use\n\n### 🖥️ Command-Line Interface (CLI)\n\nUse `nlm` directly in your terminal for scripting, automation, or interactive use:\n\n```bash\nnlm notebook list                              # List all notebooks\nnlm notebook create \"Research Project\"         # Create a notebook\nnlm source add \u003Cnotebook> --url \"https:\u002F\u002F...\"  # Add sources\nnlm audio create \u003Cnotebook> --confirm          # Generate podcast\nnlm download audio \u003Cnotebook> \u003Cartifact-id>    # Download audio file\nnlm share public \u003Cnotebook>                    # Enable public link\n```\n\nRun `nlm --ai` for comprehensive AI-assistant documentation.\n\n### 🤖 MCP Server (for AI Agents)\n\nConnect AI assistants (Claude, Gemini, Cursor, etc.) to NotebookLM:\n\n```bash\n# Automatic setup — picks the right config for each tool\nnlm setup add claude-code\nnlm setup add gemini\nnlm setup add cursor\nnlm setup add cline\nnlm setup add antigravity\n\n# Generate JSON config for any other tool\nnlm setup add json\n```\n\nThen use natural language: *\"Create a notebook about quantum computing and generate a podcast\"*\n\n## Features\n\n| Capability | CLI Command | MCP Tool |\n|------------|-------------|----------|\n| List notebooks | `nlm notebook list` | `notebook_list` |\n| Create notebook | `nlm notebook create` | `notebook_create` |\n| Add Sources (URL, Text, Drive, File) | `nlm source add` | `source_add` |\n| Query notebook (persists to web UI) | `nlm notebook query` | `notebook_query` |\n| Create Studio Content (Audio, Video, etc.) | `nlm studio create` | `studio_create` |\n| Revise slide decks | `nlm slides revise` | `studio_revise` |\n| Download artifacts | `nlm download \u003Ctype>` | `download_artifact` |\n| Web\u002FDrive research | `nlm research start` | `research_start` |\n| Share notebook | `nlm share public\u002Finvite` | `notebook_share_*` |\n| Sync Drive sources | `nlm source sync` | `source_sync_drive` |\n| Batch operations | `nlm batch query\u002Fcreate\u002Fdelete` | `batch` |\n| Cross-notebook query | `nlm cross query` | `cross_notebook_query` |\n| Pipelines (multi-step workflows) | `nlm pipeline run\u002Flist` | `pipeline` |\n| Tag & smart select | `nlm tag add\u002Flist\u002Fselect` | `tag` |\n| Configure AI tools | `nlm setup add\u002Fremove\u002Flist` | — |\n| Install AI Skills | `nlm skill install\u002Fupdate` | — |\n| Diagnose issues | `nlm doctor` | — |\n\n📚 **More Documentation:**\n- **[CLI Guide](docs\u002FCLI_GUIDE.md)** — Complete command reference\n- **[MCP Guide](docs\u002FMCP_GUIDE.md)** — All 35 MCP tools with examples\n- **[Authentication](docs\u002FAUTHENTICATION.md)** — Setup and troubleshooting\n- **[API Reference](docs\u002FAPI_REFERENCE.md)** — Internal API docs for contributors\n\n## Important Disclaimer\n\nThis MCP and CLI use **internal APIs** that:\n- Are undocumented and may change without notice\n- Require cookie extraction from your browser (I have a tool for that!)\n\nUse at your own risk for personal\u002Fexperimental purposes.\n\n## Installation\n\n> 🆕 **Claude Desktop users:** [Download the extension](https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Freleases\u002Flatest) (`.mcpb` file) → double-click → done! One-click install, no config needed.\n\nInstall from PyPI. This single package includes **both the CLI and MCP server**:\n\n### Using uv (Recommended)\n```bash\nuv tool install notebooklm-mcp-cli\n```\n\n### Using uvx (Run Without Install)\n```bash\nuvx --from notebooklm-mcp-cli nlm --help\nuvx --from notebooklm-mcp-cli notebooklm-mcp\n```\n\n### Using pip\n```bash\npip install notebooklm-mcp-cli\n```\n\n### Using pipx\n```bash\npipx install notebooklm-mcp-cli\n```\n\n**After installation, you get:**\n- `nlm` — Command-line interface\n- `notebooklm-mcp` — MCP server for AI assistants\n\n\u003Cdetails>\n\u003Csummary>Alternative: Install from Source\u003C\u002Fsummary>\n\n```bash\n# Clone the repository\ngit clone https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli.git\ncd notebooklm-mcp\n\n# Install with uv\nuv tool install .\n```\n\u003C\u002Fdetails>\n\n## Upgrading\n\n```bash\n# Using uv\nuv tool upgrade notebooklm-mcp-cli\n\n# Using pip\npip install --upgrade notebooklm-mcp-cli\n\n# Using pipx\npipx upgrade notebooklm-mcp-cli\n```\n\nAfter upgrading, restart your AI tool to reconnect to the updated MCP server:\n\n- **Claude Code:** Restart the application, or use `\u002Fmcp` to reconnect\n- **Cursor:** Restart the application\n- **Gemini CLI:** Restart the CLI session\n\n## Upgrading from Legacy Versions\n\nIf you previously installed the **separate** CLI and MCP packages, you need to migrate to the unified package.\n\n### Step 1: Check What You Have Installed\n\n```bash\nuv tool list | grep notebooklm\n```\n\n**Legacy packages to remove:**\n| Package | What it was |\n|---------|-------------|\n| `notebooklm-cli` | Old CLI-only package |\n| `notebooklm-mcp-server` | Old MCP-only package |\n\n### Step 2: Uninstall Legacy Packages\n\n```bash\n# Remove old CLI package (if installed)\nuv tool uninstall notebooklm-cli\n\n# Remove old MCP package (if installed)\nuv tool uninstall notebooklm-mcp-server\n```\n\n### Step 3: Reinstall the Unified Package\n\nAfter removing legacy packages, reinstall to fix symlinks:\n\n```bash\nuv tool install --force notebooklm-mcp-cli\n```\n\n> **Why `--force`?** When multiple packages provide the same executable, `uv` can leave broken symlinks after uninstalling. The `--force` flag ensures clean symlinks.\n\n### Step 4: Verify Installation\n\n```bash\nuv tool list | grep notebooklm\n```\n\nYou should see only:\n```\nnotebooklm-mcp-cli v0.2.0\n- nlm\n- notebooklm-mcp\n```\n\n### Step 5: Re-authenticate\n\nYour existing cookies should still work, but if you encounter auth issues:\n\n```bash\nnlm login\n```\n\n> **Note:** MCP server configuration (in Claude Code, Cursor, etc.) does not need to change — the executable name `notebooklm-mcp` is the same.\n\n## Uninstalling\n\nTo completely remove the MCP:\n\n```bash\n# Using uv\nuv tool uninstall notebooklm-mcp-cli\n\n# Using pip\npip uninstall notebooklm-mcp-cli\n\n# Using pipx\npipx uninstall notebooklm-mcp-cli\n\n# Remove cached auth tokens and data (optional)\nrm -rf ~\u002F.notebooklm-mcp-cli\n```\n\nAlso remove from your AI tools:\n\n```bash\nnlm setup remove claude-code\nnlm setup remove cursor\n# ... or any configured tool\n```\n\n## Authentication\n\nBefore using the CLI or MCP, you need to authenticate with NotebookLM:\n\n### CLI Authentication (Recommended)\n\n```bash\n# Auto mode: launches your browser, you log in, cookies extracted automatically\nnlm login\n\n# Check if already authenticated\nnlm login --check\n\n# Use a named profile (for multiple Google accounts)\nnlm login --profile work\nnlm login --profile personal\n\n# Manual mode: import cookies from a file\nnlm login --manual --file cookies.txt\n\n# External CDP provider (e.g., OpenClaw-managed browser)\nnlm login --provider openclaw --cdp-url http:\u002F\u002F127.0.0.1:18800\n```\n\n**Profile management:**\n```bash\nnlm login --check                    # Show current auth status\nnlm login switch \u003Cprofile>           # Switch the default profile\nnlm login profile list               # List all profiles with email addresses\nnlm login profile delete \u003Cprofile>   # Delete a profile\nnlm login profile rename \u003Cold> \u003Cnew> # Rename a profile\n```\n\nEach profile gets its own isolated browser session, so you can be logged into multiple Google accounts simultaneously.\n\n### Standalone Auth Tool\n\nIf you only need the MCP server (not the CLI):\n\n```bash\nnlm login              # Auto mode (launches browser)\nnlm login --manual     # Manual file mode\n```\n\n**How it works:** Auto mode launches a dedicated browser profile (supports Chrome, Arc, Brave, Edge, Chromium, and more), you log in to Google, and cookies are extracted automatically. Your login persists for future auth refreshes.\n\n**Prefer a specific browser?** Set it with `nlm config set auth.browser brave` (or `arc`, `edge`, `chromium`, etc.). Falls back to auto-detection if the preferred browser is not found.\n\nFor detailed instructions and troubleshooting, see **[docs\u002FAUTHENTICATION.md](docs\u002FAUTHENTICATION.md)**.\n\n## MCP Configuration\n\n> **⚠️ Context Window Warning:** This MCP provides **35 tools**. Disable it when not using NotebookLM to preserve context. In Claude Code: `@notebooklm-mcp` to toggle.\n\n### Automatic Setup (Recommended)\n\nUse `nlm setup` to automatically configure the MCP server for your AI tools — no manual JSON editing required:\n\n```bash\n# Add to any supported tool\nnlm setup add claude-code\nnlm setup add claude-desktop\nnlm setup add gemini\nnlm setup add cursor\nnlm setup add windsurf\n\n# Generate JSON config for any other tool\nnlm setup add json\n\n# Check which tools are configured\nnlm setup list\n\n# Diagnose installation & auth issues\nnlm doctor\n```\n\n### Install AI Skills (Optional)\n\nInstall the NotebookLM expert guide for your AI assistant to help it use the tools effectively. Supported for **Cline**, **Antigravity**, **OpenClaw**, **Codex**, **OpenCode**, **Claude Code**, and **Gemini CLI**.\n\n```bash\n# Install skill files\nnlm skill install cline\nnlm skill install openclaw\nnlm skill install codex\nnlm skill install antigravity\n\n# Update skills\nnlm skill update\n```\n\n### Remove from a tool\n\n```bash\nnlm setup remove claude-code\n```\n\n### Using uvx (No Install Required)\n\nIf you don't want to install the package, you can use `uvx` to run on-the-fly:\n\n```bash\n# Run CLI commands directly\nuvx --from notebooklm-mcp-cli nlm setup add cursor\nuvx --from notebooklm-mcp-cli nlm login\n```\n\nFor tools that use JSON config, point them to uvx:\n```json\n{\n  \"mcpServers\": {\n    \"notebooklm-mcp\": {\n      \"command\": \"uvx\",\n      \"args\": [\"--from\", \"notebooklm-mcp-cli\", \"notebooklm-mcp\"]\n    }\n  }\n}\n```\n\n\u003Cdetails>\n\u003Csummary>Manual Setup (if you prefer)\u003C\u002Fsummary>\n\n> **Tip:** Run `nlm setup add json` for an interactive wizard that generates the right JSON snippet for your tool.\n\n**Claude Code \u002F Gemini CLI** support adding MCP servers via their own CLI:\n```bash\nclaude mcp add --scope user notebooklm-mcp notebooklm-mcp\ngemini mcp add --scope user notebooklm-mcp notebooklm-mcp\n```\n\n**Cursor \u002F Windsurf** resolve commands from your `PATH`, so the command name is enough:\n```json\n{\n  \"mcpServers\": {\n    \"notebooklm-mcp\": {\n      \"command\": \"notebooklm-mcp\"\n    }\n  }\n}\n```\n\n| Tool | Config Location |\n|------|-----------------|\n| Cursor | `~\u002F.cursor\u002Fmcp.json` |\n| Windsurf | `~\u002F.codeium\u002Fwindsurf\u002Fmcp_config.json` |\n\n**Claude Desktop \u002F VS Code** may not resolve `PATH` — use the full path to the binary:\n```json\n{\n  \"mcpServers\": {\n    \"notebooklm-mcp\": {\n      \"command\": \"\u002Ffull\u002Fpath\u002Fto\u002Fnotebooklm-mcp\"\n    }\n  }\n}\n```\n\nFind your path with: `which notebooklm-mcp`\n\n| Tool | Config Location |\n|------|-----------------|\n| Claude Desktop | `~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json` |\n| VS Code | `~\u002F.vscode\u002Fmcp.json` |\n\n\u003C\u002Fdetails>\n\n📚 **Full configuration details:** [MCP Guide](docs\u002FMCP_GUIDE.md) — Server options, environment variables, HTTP transport, multi-user setup, and context window management.\n\n## What You Can Do\n\nSimply chat with your AI tool (Claude Code, Cursor, Gemini CLI) using natural language. Here are some examples:\n\n### Research & Discovery\n\n- \"List all my NotebookLM notebooks\"\n- \"Create a new notebook called 'AI Strategy Research'\"\n- \"Start web research on 'enterprise AI ROI metrics' and show me what sources it finds\"\n- \"Do a deep research on 'cloud marketplace trends' and import the top 10 sources\"\n- \"Search my Google Drive for documents about 'product roadmap' and create a notebook\"\n\n### Adding Content\n\n- \"Add this URL to my notebook: https:\u002F\u002Fexample.com\u002Farticle\"\n- \"Add this YouTube video about Kubernetes to the notebook\"\n- \"Add my meeting notes as a text source to this notebook\"\n- \"Import this Google Doc into my research notebook\"\n\n### AI-Powered Analysis\n\n- \"What are the key findings in this notebook?\"\n- \"Summarize the main arguments across all these sources\"\n- \"What does this source say about security best practices?\"\n- \"Get an AI summary of what this notebook is about\"\n- \"Configure the chat to use a learning guide style with longer responses\"\n\n*(All queries sent from CLI or MCP automatically persist in your NotebookLM web UI chat history!)*\n\n### Content Generation\n\n- \"Create an audio podcast overview of this notebook in deep dive format\"\n- \"Generate a video explainer with classic visual style\"\n- \"Make a briefing doc from these sources\"\n- \"Create flashcards for studying, medium difficulty\"\n- \"Generate an infographic in landscape orientation with professional style\"\n- \"Build a mind map from my research sources\"\n- \"Create a slide deck presentation from this notebook\"\n\n### Smart Management\n\n- \"Check which Google Drive sources are out of date and sync them\"\n- \"Show me all the sources in this notebook with their freshness status\"\n- \"Delete this source from the notebook\"\n- \"Check the status of my audio overview generation\"\n\n### Sharing & Collaboration\n\n- \"Show me the sharing settings for this notebook\"\n- \"Make this notebook public so anyone with the link can view it\"\n- \"Disable public access to this notebook\"\n- \"Invite user@example.com as an editor to this notebook\"\n- \"Add a viewer to my research notebook\"\n\n**Pro tip:** After creating studio content (audio, video, reports, etc.), poll the status to get download URLs when generation completes.\n\n## Authentication Lifecycle\n\n| Component | Duration | Refresh |\n|-----------|----------|---------|\n| Cookies | ~2-4 weeks | Auto-refresh via headless browser (if profile saved) |\n| CSRF Token | ~minutes | Auto-refreshed on every request failure |\n| Session ID | Per MCP session | Auto-extracted on MCP start |\n\n**v0.1.9+**: The server now automatically handles token expiration:\n1. Refreshes CSRF tokens immediately when expired\n2. Reloads cookies from disk if updated externally\n3. Runs headless browser auth if profile has saved login\n\nYou can also call `refresh_auth()` to explicitly reload tokens.\n\nIf automatic refresh fails (Google login fully expired), run `nlm login` again.\n\n## Troubleshooting\n\n### `uv tool upgrade` Not Installing Latest Version\n\n**Symptoms:**\n- Running `uv tool upgrade notebooklm-mcp-cli` installs an older version (e.g., 0.1.5 instead of 0.1.9)\n- `uv cache clean` doesn't fix the issue\n\n**Why this happens:** `uv tool upgrade` respects version constraints from your original installation. If you initially installed an older version or with a constraint, `upgrade` stays within those bounds by design.\n\n**Fix — Force reinstall:**\n```bash\nuv tool install --force notebooklm-mcp-cli\n```\n\nThis bypasses any cached constraints and installs the absolute latest version from PyPI.\n\n**Verify:**\n```bash\nuv tool list | grep notebooklm\n# Should show: notebooklm-mcp-cli v0.1.9 (or latest)\n```\n\n\n## Limitations\n\n- **Rate limits**: Free tier has ~50 queries\u002Fday\n- **No official support**: API may change without notice\n- **Cookie expiration**: Need to re-extract cookies every few weeks\n\n## Contributing\n\nSee [CLAUDE.md](CLAUDE.md) for detailed API documentation and how to add new features.\n\n## Vibe Coding Alert\n\nFull transparency: this project was built by a non-developer using AI coding assistants. If you're an experienced Python developer, you might look at this codebase and wince. That's okay.\n\nThe goal here was to scratch an itch - programmatic access to NotebookLM - and learn along the way. The code works, but it's likely missing patterns, optimizations, or elegance that only years of experience can provide.\n\n**This is where you come in.** If you see something that makes you cringe, please consider contributing rather than just closing the tab. This is open source specifically because human expertise is irreplaceable. Whether it's refactoring, better error handling, type hints, or architectural guidance - PRs and issues are welcome.\n\nThink of it as a chance to mentor an AI-assisted developer through code review. We all benefit when experienced developers share their knowledge.\n\n## Credits\n\nSpecial thanks to:\n- **Le Anh Tuan** ([@latuannetnam](https:\u002F\u002Fgithub.com\u002Flatuannetnam)) for contributing the HTTP transport, debug logging system, and performance optimizations.\n- **David Szabo-Pele** ([@davidszp](https:\u002F\u002Fgithub.com\u002Fdavidszp)) for the `source_get_content` tool and Linux auth fixes.\n- **saitrogen** ([@saitrogen](https:\u002F\u002Fgithub.com\u002Fsaitrogen)) for the research polling query fallback fix.\n- **devnull03** ([@devnull03](https:\u002F\u002Fgithub.com\u002Fdevnull03)) for multi-browser CDP authentication support (Arc, Brave, Edge, Chromium, Vivaldi, Opera).\n- **VooDisss** ([@VooDisss](https:\u002F\u002Fgithub.com\u002FVooDisss)) for multi-browser authentication improvements.\n- **codepiano** ([@codepiano](https:\u002F\u002Fgithub.com\u002Fcodepiano)) for the configurable DevTools timeout for the auth CLI.\n- **Tony Hansmann** ([@997unix](https:\u002F\u002Fgithub.com\u002F997unix)) for contributing the `nlm setup` and `nlm doctor` commands and CLI Guide documentation.\n- **Fabiana Furtado** ([@fabianafurtadoff](https:\u002F\u002Fgithub.com\u002Ffabianafurtadoff)) for batch operations, cross-notebook query, pipelines, and smart select\u002Ftagging (PR #90).\n\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_9fbdb56de2d0.png)](https:\u002F\u002Fstar-history.com\u002F#jacob-bd\u002Fnotebooklm-mcp-cli&Date)\n\n## License\n\n[MIT License](LICENSE)\n","# NotebookLM CLI & MCP 服务器\n\n![NotebookLM MCP Header](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_702350225d74.jpg)\n\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fnotebooklm-mcp-cli)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fnotebooklm-mcp-cli\u002F)\n[![PyPI downloads](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fnotebooklm-mcp-cli)](https:\u002F\u002Fpypistats.org\u002Fpackages\u002Fnotebooklm-mcp-cli)\n[![Total downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_251b266f92c0.png)](https:\u002F\u002Fpepy.tech\u002Fprojects\u002Fnotebooklm-mcp-cli)\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fnotebooklm-mcp-cli)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fnotebooklm-mcp-cli\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Fnotebooklm-mcp-cli)](https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fblob\u002Fmain\u002FLICENSE)\n\n> 🎉 **2026 年 1 月 — 重大更新！** 本项目已完全重构，将 **NotebookLM-MCP** 和 **NotebookLM-CLI** 统一为一个强大的软件包。一次安装即可同时获得命令行界面（CLI, `nlm`）和 MCP 服务器（`notebooklm-mcp`）。请参阅 [CLI 指南](docs\u002FCLI_GUIDE.md) 和 [MCP 指南](docs\u002FMCP_GUIDE.md) 获取完整文档。\n\n**通过命令行界面（CLI）或模型上下文协议（MCP）服务器访问 Google NotebookLM 的编程接口。**\n\n> **注意：** 已针对专业版\u002F免费版账户进行测试。可能适用于 NotebookLM 企业版账户，但尚未测试。\n\n📺 **观看演示视频**\n\n### 最新演示\n\n| **Codex 设置 + 电影级视频与幻灯片** |\n|:---:|\n| [![Latest](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_cf733d208a51.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=KrgLCrvU1dw) |\n\n### MCP 演示\n\n| **总体概述** | **Claude Desktop** | **Perplexity Desktop** | **MCP 超级助手** |\n|:---:|:---:|:---:|:---:|\n| [![General](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_1e457317f5da.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=d-PZDQlO4m4) | [![Claude](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_1fdf728926c5.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=PU8JhgLPxes) | [![Perplexity](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_18f9d220dbf4.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=BCKlDNg-qxs) | [![MCP SuperAssistant](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_695fb6537d22.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=7aHDbkr-l_E) |\n\n### CLI 演示\n\n| **CLI 概述** | **CLI、MCP 与技能** | **设置、诊断与 mcpb** | **信息图支持** |\n|:---:|:---:|:---:|:---:|\n| [![CLI Overview](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_184010656d7a.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=XyXVuALWZkE) | [![CLI, MCP & Skills](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_210c831f207e.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ZQBQigFK-E8) | [![Setup, Doctor & mcpb](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_482b306d2de1.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=5tOUilBTJ3Q) | [![Infographics](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_0e8c801d7efc.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Uc6iH5NuQ9A) |\n\n\n## 两种使用方式\n\n### 🖥️ 命令行界面（CLI）\n\n在终端中直接使用 `nlm` 进行脚本编写、自动化操作或交互式使用：\n\n```bash\nnlm notebook list                              # 列出所有笔记本\nnlm notebook create \"Research Project\"         # 创建笔记本\nnlm source add \u003Cnotebook> --url \"https:\u002F\u002F...\"  # 添加源\nnlm audio create \u003Cnotebook> --confirm          # 生成播客\nnlm download audio \u003Cnotebook> \u003Cartifact-id>    # 下载音频文件\nnlm share public \u003Cnotebook>                    # 启用公开链接\n```\n\n运行 `nlm --ai` 以获取全面的 AI 助手文档。\n\n### 🤖 MCP 服务器（用于 AI 智能体）\n\n将 AI 助手（Claude、Gemini、Cursor 等）连接到 NotebookLM：\n\n```bash\n# 自动设置 — 为每个工具选择正确的配置\nnlm setup add claude-code\nnlm setup add gemini\nnlm setup add cursor\nnlm setup add cline\nnlm setup add antigravity\n\n# 为任何其他工具生成 JSON 配置\nnlm setup add json\n```\n\n然后使用自然语言指令：*\"创建一个关于量子计算的笔记本并生成播客\"*\n\n## 功能特性\n\n| 功能 | CLI 命令 | MCP 工具 |\n|------------|-------------|----------|\n| 列出笔记本 | `nlm notebook list` | `notebook_list` |\n| 创建笔记本 | `nlm notebook create` | `notebook_create` |\n| 添加源（URL、文本、Drive、文件） | `nlm source add` | `source_add` |\n| 查询笔记本（持久化到 Web UI） | `nlm notebook query` | `notebook_query` |\n| 创建工作室内容（音频、视频等） | `nlm studio create` | `studio_create` |\n| 修订幻灯片演示文稿 | `nlm slides revise` | `studio_revise` |\n| 下载制品 | `nlm download \u003Ctype>` | `download_artifact` |\n| Web\u002FDrive 研究 | `nlm research start` | `research_start` |\n| 分享笔记本 | `nlm share public\u002Finvite` | `notebook_share_*` |\n| 同步 Drive 源 | `nlm source sync` | `source_sync_drive` |\n| 批量操作 | `nlm batch query\u002Fcreate\u002Fdelete` | `batch` |\n| 跨笔记本查询 | `nlm cross query` | `cross_notebook_query` |\n| 管道（多步骤工作流） | `nlm pipeline run\u002Flist` | `pipeline` |\n| 标签与智能选择 | `nlm tag add\u002Flist\u002Fselect` | `tag` |\n| 配置 AI 工具 | `nlm setup add\u002Fremove\u002Flist` | — |\n| 安装 AI 技能 | `nlm skill install\u002Fupdate` | — |\n| 诊断问题 | `nlm doctor` | — |\n\n📚 **更多文档：**\n- **[CLI 指南](docs\u002FCLI_GUIDE.md)** — 完整的命令参考\n- **[MCP 指南](docs\u002FMCP_GUIDE.md)** — 所有 35 个 MCP 工具及示例\n- **[身份验证](docs\u002FAUTHENTICATION.md)** — 设置与故障排除\n- **[API 参考](docs\u002FAPI_REFERENCE.md)** — 贡献者使用的内部 API 文档\n\n## 重要免责声明\n\n此 MCP 和 CLI 使用的是**内部 API（应用程序编程接口）**，这些 API：\n- 未公开文档且可能在无通知的情况下更改\n- 需要从浏览器中提取 Cookie（我有工具可以完成此操作！）\n\n请自行承担风险，仅用于个人\u002F实验目的。\n\n## 安装\n\n> 🆕 **Claude Desktop 用户：** [下载扩展](https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Freleases\u002Flatest)（`.mcpb` 文件）→ 双击 → 完成！一键安装，无需配置。\n\n从 Python 包索引（PyPI）安装。此单个软件包包含 **CLI 和 MCP 服务器**：\n\n### 使用 uv（推荐）\n```bash\nuv tool install notebooklm-mcp-cli\n```\n\n### 使用 uvx（运行而不安装）\n```bash\nuvx --from notebooklm-mcp-cli nlm --help\nuvx --from notebooklm-mcp-cli notebooklm-mcp\n```\n\n### 使用 pip\n```bash\npip install notebooklm-mcp-cli\n```\n\n### 使用 pipx\n```bash\npipx install notebooklm-mcp-cli\n```\n\n**安装后，您将拥有：**\n- `nlm` — 命令行界面\n- `notebooklm-mcp` — 供 AI 助手使用的 MCP 服务器\n\n\u003Cdetails>\n\u003Csummary>备选方案：从源代码安装\u003C\u002Fsummary>\n\n```bash\n# 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli.git\ncd notebooklm-mcp\n\n# 使用 uv 安装\nuv tool install .\n```\n\u003C\u002Fdetails>\n\n## 升级\n\n```bash\n# 使用 uv\nuv tool upgrade notebooklm-mcp-cli\n\n# 使用 pip\npip install --upgrade notebooklm-mcp-cli\n\n# 使用 pipx\npipx upgrade notebooklm-mcp-cli\n```\n\n升级后，重启您的 AI 工具以重新连接到更新的 MCP 服务器：\n\n- **Claude Code：** 重启应用程序，或使用 `\u002Fmcp` 重新连接\n- **Cursor：** 重启应用程序\n- **Gemini CLI：** 重启 CLI 会话\n\n## 从旧版本升级\n\n如果您之前安装了**独立**的 CLI（命令行界面）和 MCP（模型上下文协议）包，您需要迁移到统一包。\n\n### 步骤 1：检查已安装的内容\n\n```bash\nuv tool list | grep notebooklm\n```\n\n**需要移除的旧版包：**\n| 包名 | 原用途 |\n|---|---|\n| `notebooklm-cli` | 仅 CLI 的旧包 |\n| `notebooklm-mcp-server` | 仅 MCP 的旧包 |\n\n### 步骤 2：卸载旧版包\n\n```bash\n# 移除旧的 CLI 包（如果已安装）\nuv tool uninstall notebooklm-cli\n\n# 移除旧的 MCP 包（如果已安装）\nuv tool uninstall notebooklm-mcp-server\n```\n\n### 步骤 3：重新安装统一包\n\n移除旧版包后，重新安装以修复符号链接 (symlinks)：\n\n```bash\nuv tool install --force notebooklm-mcp-cli\n```\n\n> **为什么使用 `--force`？** 当多个包提供相同的可执行文件时，`uv` 在卸载后可能会留下损坏的符号链接。`--force` 标志确保生成干净的符号链接。\n\n### 步骤 4：验证安装\n\n```bash\nuv tool list | grep notebooklm\n```\n\n您应该只看到：\n```\nnotebooklm-mcp-cli v0.2.0\n- nlm\n- notebooklm-mcp\n```\n\n### 步骤 5：重新认证\n\n您现有的 Cookie 应该仍然有效，但如果遇到认证 (auth) 问题：\n\n```bash\nnlm login\n```\n\n> **注意：** MCP 服务器配置（在 Claude Code、Cursor 等中）无需更改——可执行文件名 `notebooklm-mcp` 保持不变。\n\n## 卸载\n\n要完全移除 MCP：\n\n```bash\n# 使用 uv\nuv tool uninstall notebooklm-mcp-cli\n\n# 使用 pip\npip uninstall notebooklm-mcp-cli\n\n# 使用 pipx\npipx uninstall notebooklm-mcp-cli\n\n# 移除缓存的认证令牌和数据（可选）\nrm -rf ~\u002F.notebooklm-mcp-cli\n```\n\n同时从您的 AI 工具中移除：\n\n```bash\nnlm setup remove claude-code\nnlm setup remove cursor\n# ... 或任何配置的工具\n```\n\n## 认证\n\n在使用 CLI 或 MCP 之前，您需要与 NotebookLM 进行认证：\n\n### CLI 认证（推荐）\n\n```bash\n# 自动模式：启动您的浏览器，登录后自动提取 Cookie\nnlm login\n\n# 检查是否已认证\nnlm login --check\n\n# 使用命名配置文件（用于多个 Google 账户）\nnlm login --profile work\nnlm login --profile personal\n\n# 手动模式：从文件导入 Cookie\nnlm login --manual --file cookies.txt\n\n# 外部 CDP（Chrome 开发者工具协议）提供商（例如 OpenClaw 管理的浏览器）\nnlm login --provider openclaw --cdp-url http:\u002F\u002F127.0.0.1:18800\n```\n\n**配置文件管理：**\n```bash\nnlm login --check                    # 显示当前认证状态\nnlm login switch \u003Cprofile>           # 切换默认配置文件\nnlm login profile list               # 列出所有带有电子邮件地址的配置文件\nnlm login profile delete \u003Cprofile>   # 删除配置文件\nnlm login profile rename \u003Cold> \u003Cnew> # 重命名配置文件\n```\n\n每个配置文件都会获得独立的浏览器会话，因此您可以同时登录多个 Google 账户。\n\n### 独立认证工具\n\n如果您只需要 MCP 服务器（不需要 CLI）：\n\n```bash\nnlm login              # 自动模式（启动浏览器）\nnlm login --manual     # 手动文件模式\n```\n\n**工作原理：** 自动模式启动专用浏览器配置文件（支持 Chrome、Arc、Brave、Edge、Chromium 等），您登录 Google，Cookie 会自动提取。您的登录状态将在未来的认证刷新中保持持久化。\n\n**偏好特定浏览器吗？** 使用 `nlm config set auth.browser brave` 设置（或 `arc`, `edge`, `chromium` 等）。如果未找到首选浏览器，则回退到自动检测。\n\n有关详细说明和故障排除，请参阅 **[docs\u002FAUTHENTICATION.md](docs\u002FAUTHENTICATION.md)**。\n\n## MCP 配置\n\n> **⚠️ 上下文窗口 (Context Window) 警告：** 此 MCP 提供 **35 个工具**。不使用 NotebookLM 时请禁用它以保留上下文。在 Claude Code 中：使用 `@notebooklm-mcp` 切换。\n\n### 自动设置（推荐）\n\n使用 `nlm setup` 自动为您的 AI 工具配置 MCP 服务器——无需手动编辑 JSON：\n\n```bash\n# 添加到任何支持的工具\nnlm setup add claude-code\nnlm setup add claude-desktop\nnlm setup add gemini\nnlm setup add cursor\nnlm setup add windsurf\n\n# 为任何其他工具生成 JSON 配置\nnlm setup add json\n\n# 检查哪些工具已配置\nnlm setup list\n\n# 诊断安装及认证问题\nnlm doctor\n```\n\n### 安装 AI 技能（可选）\n\n为您的 AI 助手安装 NotebookLM 专家指南，以帮助其有效使用这些工具。支持 **Cline**、**Antigravity**、**OpenClaw**、**Codex**、**OpenCode**、**Claude Code** 和 **Gemini CLI**。\n\n```bash\n# 安装技能文件\nnlm skill install cline\nnlm skill install openclaw\nnlm skill install codex\nnlm skill install antigravity\n\n# 更新技能\nnlm skill update\n```\n\n### 从工具中移除\n\n```bash\nnlm setup remove claude-code\n```\n\n### 使用 uvx（无需安装）\n\n如果您不想安装包，可以使用 `uvx` 即时运行：\n\n```bash\n# 直接运行 CLI 命令\nuvx --from notebooklm-mcp-cli nlm setup add cursor\nuvx --from notebooklm-mcp-cli nlm login\n```\n\n对于使用 JSON 配置的工具，指向 uvx：\n```json\n{\n  \"mcpServers\": {\n    \"notebooklm-mcp\": {\n      \"command\": \"uvx\",\n      \"args\": [\"--from\", \"notebooklm-mcp-cli\", \"notebooklm-mcp\"]\n    }\n  }\n}\n```\n\n\u003Cdetails>\n\u003Csummary>手动设置（如果您偏好）\u003C\u002Fsummary>\n\n> **提示：** 运行 `nlm setup add json` 获取交互式向导，为您的工具生成正确的 JSON 片段。\n\n**Claude Code \u002F Gemini CLI** 支持通过各自的 CLI 添加 MCP 服务器：\n```bash\nclaude mcp add --scope user notebooklm-mcp notebooklm-mcp\ngemini mcp add --scope user notebooklm-mcp notebooklm-mcp\n```\n\n**Cursor \u002F Windsurf** 从您的 `PATH`（环境变量路径）解析命令，因此只需命令名称即可：\n```json\n{\n  \"mcpServers\": {\n    \"notebooklm-mcp\": {\n      \"command\": \"notebooklm-mcp\"\n    }\n  }\n}\n```\n\n| 工具 | 配置位置 |\n|---|---|\n| Cursor | `~\u002F.cursor\u002Fmcp.json` |\n| Windsurf | `~\u002F.codeium\u002Fwindsurf\u002Fmcp_config.json` |\n\n**Claude Desktop \u002F VS Code** 可能无法解析 `PATH`——请使用二进制文件 (binary) 的完整路径：\n```json\n{\n  \"mcpServers\": {\n    \"notebooklm-mcp\": {\n      \"command\": \"\u002Ffull\u002Fpath\u002Fto\u002Fnotebooklm-mcp\"\n    }\n  }\n}\n```\n\n使用以下命令查找您的路径：`which notebooklm-mcp`\n\n| 工具 | 配置位置 |\n|---|---|\n| Claude Desktop | `~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json` |\n| VS Code | `~\u002F.vscode\u002Fmcp.json` |\n\n\u003C\u002Fdetails>\n\n📚 **完整配置详情：** [MCP 指南](docs\u002FMCP_GUIDE.md) —— 服务器选项、环境变量、HTTP 传输、多用户设置和上下文窗口管理。\n\n## 您可以做什么\n\n只需使用自然语言与您的 AI 工具（Claude Code、Cursor、Gemini CLI）聊天。以下是一些示例：\n\n### 研究与发现\n\n- “列出我所有的 NotebookLM 笔记本”\n- “创建一个名为 'AI 战略研究’ 的新笔记本”\n- “开始关于 '企业 AI 投资回报率指标’ 的网页研究，并显示它找到了哪些来源”\n- “深入研究 '云市场趋势’ 并导入前 10 个来源”\n- “在我的 Google Drive 中搜索关于 '产品路线图’ 的文档并创建笔记本”\n\n### 添加内容\n\n- “将此 URL 添加到我的笔记本：https:\u002F\u002Fexample.com\u002Farticle\"\n- “将此关于 Kubernetes 的 YouTube 视频添加到笔记本”\n- “将我的会议笔记作为文本源添加到此笔记本”\n- “将此 Google Doc 导入我的研究笔记本”\n\n### AI 驱动的分析\n\n- “这个笔记本中的关键发现是什么？”\n- “总结所有这些来源的主要论点”\n- “这个来源关于安全最佳实践说了什么？”\n- “获取关于此笔记本内容的 AI 摘要”\n- “配置聊天以使用学习指南风格并生成较长的回复”\n\n*(所有通过 CLI（命令行界面）或 MCP（模型上下文协议）发送的查询都会自动保存在您的 NotebookLM Web UI 聊天历史中！)*\n\n### 内容生成\n\n- “以此笔记本为基础创建一个深度挖掘格式的音频播客概述”\n- “生成一个具有经典视觉风格的视频解释器”\n- “基于这些来源制作一份简报文档”\n- “为学习制作中等难度的抽认卡”\n- “生成一张具有专业风格的横向信息图”\n- “根据我的研究来源构建思维导图”\n- “从此笔记本创建一个幻灯片演示文稿”\n\n### 智能管理\n\n- “检查哪些 Google Drive 来源已过时并同步它们”\n- “显示此笔记本中的所有来源及其新鲜度状态”\n- “从此笔记本删除此来源”\n- “检查我的音频概述生成的状态”\n\n**小贴士：** 在创建工作室内容（音频、视频、报告等）后，轮询状态以在生成完成时获取下载链接。\n\n## 身份验证生命周期\n\n| 组件 | 持续时间 | 刷新方式 |\n|-----------|----------|---------|\n| Cookies | ~2-4 周 | 通过无头浏览器自动刷新（如果已保存配置文件） |\n| CSRF Token | ~几分钟 | 每次请求失败时自动刷新 |\n| Session ID | 每个 MCP 会话 | MCP 启动时自动提取 |\n\n**v0.1.9+**：服务器现在自动处理令牌过期：\n1. 当令牌过期时立即刷新 CSRF 令牌\n2. 如果外部更新了 Cookie，则从磁盘重新加载\n3. 如果配置文件已保存登录信息，则运行无头浏览器认证\n\n您也可以调用 `refresh_auth()` 来显式重新加载令牌。\n\n如果自动刷新失败（Google 登录完全过期），请再次运行 `nlm login`。\n\n## 故障排除\n\n### `uv tool upgrade` 未安装最新版本\n\n**表现：**\n- 运行 `uv tool upgrade notebooklm-mcp-cli` 安装了旧版本（例如 0.1.5 而不是 0.1.9）\n- `uv cache clean` 无法解决问题\n\n**原因：** `uv tool upgrade` 尊重您原始安装时的版本约束。如果您最初安装了旧版本或带有约束的版本，`upgrade` 在设计上会保持在那些范围内。\n\n**修复 —— 强制重新安装：**\n```bash\nuv tool install --force notebooklm-mcp-cli\n```\n\n这将绕过任何缓存约束并从 PyPI（Python 包索引）安装绝对最新版本。\n\n**验证：**\n```bash\nuv tool list | grep notebooklm\n# 应显示：notebooklm-mcp-cli v0.1.9（或最新版本）\n```\n\n\n## 限制\n\n- **速率限制**：免费版每天约 50 次查询\n- **无官方支持**：API 可能会在不另行通知的情况下更改\n- **Cookie 过期**：需要每隔几周重新提取 Cookie\n\n## 贡献\n\n有关详细的 API 文档和如何添加新功能，请参阅 [CLAUDE.md](CLAUDE.md)。\n\n## 氛围编码提示\n\n完全透明地说：这个项目是由一名非开发人员使用 AI 编程助手构建的。如果您是一位经验丰富的 Python 开发人员，看到这段代码库可能会皱眉。没关系。\n\n这里的目标是解决一个痛点——对 NotebookLM 进行程序化访问——并在过程中学习。代码是可以工作的，但它可能缺少只有多年经验才能提供的模式、优化或优雅性。\n\n**这就是您需要参与的地方。** 如果您看到让您皱眉的内容，请考虑贡献而不是仅仅关闭标签页。这之所以是开源的，正是因为人类专业知识是不可替代的。无论是重构、更好的错误处理、类型提示还是架构指导——欢迎提交 PR（拉取请求）和 Issues（问题）。\n\n将其视为通过代码审查指导 AI 辅助开发者的机会。当经验丰富的开发人员分享他们的知识时，我们所有人都会受益。\n\n## 致谢\n\n特别感谢：\n- **Le Anh Tuan** ([@latuannetnam](https:\u002F\u002Fgithub.com\u002Flatuannetnam)) 贡献了 HTTP（超文本传输协议）传输层、调试日志系统和性能优化。\n- **David Szabo-Pele** ([@davidszp](https:\u002F\u002Fgithub.com\u002Fdavidszp)) 贡献了 `source_get_content` 工具和 Linux 认证修复。\n- **saitrogen** ([@saitrogen](https:\u002F\u002Fgithub.com\u002Fsaitrogen)) 贡献了研究轮询查询回退修复。\n- **devnull03** ([@devnull03](https:\u002F\u002Fgithub.com\u002Fdevnull03)) 贡献了多浏览器 CDP（Chrome 开发工具协议）认证支持（Arc, Brave, Edge, Chromium, Vivaldi, Opera）。\n- **VooDisss** ([@VooDisss](https:\u002F\u002Fgithub.com\u002FVooDisss)) 贡献了多浏览器认证改进。\n- **codepiano** ([@codepiano](https:\u002F\u002Fgithub.com\u002Fcodepiano)) 贡献了用于认证 CLI 的可配置 DevTools（开发者工具）超时。\n- **Tony Hansmann** ([@997unix](https:\u002F\u002Fgithub.com\u002F997unix)) 贡献了 `nlm setup` 和 `nlm doctor` 命令以及 CLI 指南文档。\n- **Fabiana Furtado** ([@fabianafurtadoff](https:\u002F\u002Fgithub.com\u002Ffabianafurtadoff)) 贡献了批量操作、跨笔记本查询、管道和智能选择\u002F标记（PR #90）。\n\n\n## 星标历史\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_readme_9fbdb56de2d0.png)](https:\u002F\u002Fstar-history.com\u002F#jacob-bd\u002Fnotebooklm-mcp-cli&Date)\n\n## 许可证\n\n[MIT 许可证](LICENSE)","# notebooklm-mcp-cli 快速上手指南\n\n`notebooklm-mcp-cli` 是一个统一的工具包，提供通过命令行界面（CLI）或模型上下文协议（MCP）服务器对 Google NotebookLM 进行编程访问的功能。它允许您自动化创建笔记本、添加来源、生成播客并与 AI 助手集成。\n\n## 环境准备\n\n*   **操作系统**: Linux, macOS, Windows\n*   **Python 版本**: 支持 Python 3.8+\n*   **依赖工具**: 推荐安装 `uv` 或 `pip`\n*   **网络要求**: 需能访问 Google 服务（用于认证和数据同步）\n*   **浏览器**: 用于提取登录 Cookie（Chrome, Edge, Brave, Arc 等）\n\n## 安装步骤\n\n推荐使用 `uv` 进行安装，速度更快且管理更方便。\n\n### 方式一：使用 uv（推荐）\n\n```bash\nuv tool install notebooklm-mcp-cli\n```\n\n### 方式二：使用 pip（国内加速）\n\n如果您偏好使用 `pip`，建议配置国内镜像源以加快下载速度：\n\n```bash\npip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple notebooklm-mcp-cli\n```\n\n### 方式三：使用 pipx（隔离环境）\n\n```bash\npipx install notebooklm-mcp-cli\n```\n\n安装完成后，您将拥有两个主要命令：\n*   `nlm`: 命令行接口\n*   `notebooklm-mcp`: MCP 服务器\n\n## 基本使用\n\n### 1. 身份认证\n\n在使用任何功能前，必须先登录您的 Google NotebookLM 账号。\n\n```bash\n# 自动模式：打开浏览器登录并自动提取 Cookie\nnlm login\n\n# 检查当前登录状态\nnlm login --check\n\n# 多账号支持：创建不同配置文件\nnlm login --profile work\nnlm login --profile personal\n```\n\n### 2. 命令行操作 (CLI)\n\n直接使用 `nlm` 命令在终端中管理 NotebookLM。\n\n```bash\n# 列出所有笔记本\nnlm notebook list\n\n# 创建新笔记本\nnlm notebook create \"Research Project\"\n\n# 添加来源（URL、文本等）\nnlm source add \u003Cnotebook> --url \"https:\u002F\u002F...\"\n\n# 生成音频播客\nnlm audio create \u003Cnotebook> --confirm\n\n# 查询笔记本内容\nnlm notebook query \u003Cnotebook>\n```\n\n运行 `nlm --ai` 可获取 AI 辅助的完整文档说明。\n\n### 3. 集成 AI 助手 (MCP)\n\n将 NotebookLM 连接到 Claude、Cursor、Gemini 等 AI 工具。\n\n```bash\n# 自动配置特定工具（无需手动编辑 JSON）\nnlm setup add claude-code\nnlm setup add cursor\nnlm setup add gemini\n\n# 查看已配置的工具\nnlm setup list\n```\n\n配置完成后，您可以在 AI 助手中直接输入自然语言指令，例如：“创建一个关于量子计算的笔记本并生成播客”。\n\n---\n\n> **⚠️ 注意事项**\n> 本工具使用 NotebookLM 的内部 API，这些 API 未公开文档化且可能随时变更。请仅用于个人实验目的，使用时风险自担。","一位数据分析师需要每周处理数十篇行业研报，将其整合进知识库并生成语音摘要供团队快速浏览。\n\n### 没有 notebooklm-mcp-cli 时\n- 需反复切换浏览器登录 Google NotebookLM 网页端，操作中断频繁且容易疲劳。\n- 手动复制每个 PDF 或网页链接添加到源列表，极易遗漏或出现格式错误。\n- 生成播客功能依赖鼠标点击，无法在后台静默运行或配合定时任务执行。\n- 分享链接权限管理分散，难以与内部协作平台如 Slack 或邮件系统自动对接。\n\n### 使用 notebooklm-mcp-cli 后\n- 通过 `nlm notebook create` 命令一键初始化项目结构，无需打开浏览器即可管理笔记本。\n- 脚本自动遍历文档库并调用 `source add` 批量导入资料，杜绝人为疏漏。\n- 命令行触发 `audio create` 自动生成并下载播客文件，支持后台静默运行。\n- 直接通过 API 配置公开分享链接，轻松集成到团队通知系统实现自动化分发。\n\n将碎片化的手动操作封装为标准化命令行流程，大幅提升知识复用的效率与准确性。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjacob-bd_notebooklm-mcp-cli_70235022.jpg","jacob-bd","Jacob Ben-David","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fjacob-bd_2a76deef.png","I am learning to code with AI. Cursor, Claude, v0, and Replit are my best dev buddies. ","Toronto, ON, Canada","https:\u002F\u002Fgithub.com\u002Fjacob-bd",[21],{"name":22,"color":23,"percentage":24},"Python","#3572A5",100,3273,555,"2026-04-05T11:02:43","MIT",2,"未说明",{"notes":32,"python":30,"dependencies":33},"认证需通过浏览器登录并自动提取 Cookie，支持多账户 Profile 管理；调用 Google NotebookLM 内部 API，存在变动风险，仅供个人\u002F实验用途；推荐使用 uv 工具安装，也支持 pip\u002Fpipx；单包同时包含 CLI 和 MCP Server 功能，可配置连接各类 AI 助手。",[30],[35,36],"插件","Agent",4,"ready","2026-03-27T02:49:30.150509","2026-04-06T06:53:21.723427",[42,47,51,55,60,65,70],{"id":43,"question_zh":44,"answer_zh":45,"source_url":46},2709,"为什么长提示词请求经常触发 120 秒超时？","这通常是由于 Google 后端延迟或更激进的限流策略导致的，而非 CLI 本身缺陷。虽然 v0.3.x 改进了处理，但目前无法直接通过 Flag 暴露超时配置阈值。建议保持使用最新版本，关注后续的重试逻辑更新。","https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fissues\u002F57",{"id":48,"question_zh":49,"answer_zh":50,"source_url":46},2710,"是否支持批量共享笔记本给多个邮箱地址？","不支持单次 API 调用批量共享。测试表明向共享 API 发送邮箱数组会触发 Google 后端的验证错误。目前需逐个添加共享用户。",{"id":52,"question_zh":53,"answer_zh":54,"source_url":46},2711,"是否支持批量添加本地文件或 Google Drive 文件作为来源？","仅 URL (`add_url_sources`) 支持批量添加。本地或 Drive 文件由于底层协议需要单独的块上传和注册步骤，暂不支持批量操作。",{"id":56,"question_zh":57,"answer_zh":58,"source_url":59},2712,"登录过程卡顿或耗时过长（如近一分钟）如何解决？","旧版本存在端口扫描延迟问题。v0.3.4 修复了登录挂起问题，v0.3.5 引入了连接池技术，将登录时间从约 25 秒降至 3 秒以内。建议升级到最新版本。","https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fissues\u002F52",{"id":61,"question_zh":62,"answer_zh":63,"source_url":64},2713,"NotebookLM Enterprise 用户遇到 Cookie 快速过期怎么办？","官方认证机制较为脆弱。最新版本已实现自动重试机制，可透明处理 HTTP 401\u002F403 及 RPC Error 16（软过期）。若组织 SSO 策略强制频繁失效 Cookie，可能仍需重启 MCP 服务。","https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fissues\u002F2",{"id":66,"question_zh":67,"answer_zh":68,"source_url":69},2714,"是否支持在 Docker 容器中远程运行此 MCP 服务器？","项目当前未计划容器化或远程部署方案，因维护负担较重。有兴趣的用户可关注社区 PR #38 的容器化尝试。","https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fissues\u002F3",{"id":71,"question_zh":72,"answer_zh":73,"source_url":74},2715,"CLI 添加 Drive 源时报 HTTP 500 错误的原因是什么？","涉及 SAPISIDHASH 头部要求及 batchexecute RPC 的结构问题。部分源添加操作绕过了自动令牌恢复逻辑。建议检查调试日志中的头部信息，并确保使用最新修复版本。","https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fissues\u002F62",[76,81,86,91,96,101,106,111,116,121,126,131,136,141,146,151,156,161,166,171],{"id":77,"version":78,"summary_zh":79,"released_at":80},102206,"v0.5.6","## What's Fixed\n\n- **Windows: manual cookies rejected after import (Issue #105)** — `nlm login --manual --file` saved cookies correctly, but subsequent requests to `notebooklm.google.com` were rejected by Google (302 → login page) because the page-fetch headers included macOS-specific Client Hints (`sec-ch-ua-platform: \"macOS\"`, `sec-ch-ua`, `sec-ch-ua-mobile`). When cookies were captured from a Windows Chrome session, the OS fingerprint mismatch caused Google to reject the session. Removed all three `sec-ch-ua*` headers (they're optional per spec) and switched to a platform-neutral Linux Chrome UA. Also added multi-pattern CSRF token fallback and a `make_console(safe_box=True)` factory to prevent `UnicodeEncodeError` crashes on Windows `cp1251`\u002F`cp1252` codepage terminals. Thanks to **@pakulyaev** for the detailed diagnosis!\n\n- **Windows: IPv6 WebSocket connection error during `nlm login` (Issue #108)** — On Windows, Chrome's DevTools debugger binds to `127.0.0.1` (IPv4), but `websocket-client` resolves `localhost` to `::1` (IPv6), causing `PermissionError: [WinError 10013]`. Added `_normalize_ws_url()` to rewrite `ws:\u002F\u002Flocalhost:` → `ws:\u002F\u002F127.0.0.1:` at all 4 WebSocket connection sites. Thanks to **@theteleporter** for the spot-on diagnosis!\n","2026-03-25T02:06:36",{"id":82,"version":83,"summary_zh":84,"released_at":85},102207,"v0.5.5","## Bug Fixes\n\n- **MCP `download_artifact` failing for report\u002Fmind_map\u002Fdata_table (#107)** — Added missing sync types to the async dispatcher so all artifact types are downloadable via the MCP tool.\n- **`poll_research` returning `None` for deep research in multi-task notebooks (#106)** — Best-effort fallback now prefers in-progress tasks, then most recent.\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fblob\u002Fmain\u002FCHANGELOG.md","2026-03-23T16:34:32",{"id":87,"version":88,"summary_zh":89,"released_at":90},102208,"v0.5.4","### Fixed\n- **Verb-style `nlm delete source` TypeError (Issue #104)** — `nlm delete source \u003Cid> --confirm` was crashing with `TypeError: delete_source() got an unexpected keyword argument 'source_id'`. The verb-style CLI layer in `verbs.py` was passing `source_id=source` (singular string) but the underlying function expects `source_ids` (a list). Fixed the parameter name and wrapped the value in a list. The noun-style `nlm source delete` was unaffected. Thanks to **@Le-Yann** for the detailed bug report and root cause analysis!\n\n### Upgrade\n```bash\nuv tool upgrade notebooklm-mcp-cli\n# or: pip install --upgrade notebooklm-mcp-cli\n```","2026-03-22T20:08:03",{"id":92,"version":93,"summary_zh":94,"released_at":95},102209,"v0.5.3","## What's Changed\n\n### Improved\n- **Actionable Error Hints Across CLI & MCP (Issue #103)** — All CLI commands and MCP tools now provide structured, user-friendly error messages with actionable hints. Thanks to **@ahnbu** for suggesting this improvement!\n  - **CLI**: Consolidated error handling via centralized `handle_error()` across all 13 command modules. Errors with `--json` flag now output structured JSON.\n  - **MCP**: All 27 MCP tools now include `hint` fields in error responses for AI agent consumption.\n  - **Core**: `NotebookLMError` now inherits from `NLMError`, ensuring all low-level API errors are caught gracefully.\n\n### Fixed\n- **Non-ASCII characters in JSON output (PR #100)** — CLI JSON output now preserves Unicode characters. Thanks to **@nickyfoto** for the contribution.\n\n### CI\n- **Version alignment check** — New GitHub Action that verifies `pyproject.toml`, `__init__.py`, and `SKILL.md` all declare the same version before release.\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fblob\u002Fmain\u002FCHANGELOG.md\n","2026-03-22T15:34:18",{"id":97,"version":98,"summary_zh":99,"released_at":100},102210,"v0.5.2","# v0.5.2 — Preserve Non-ASCII Characters in JSON Output\n\n## 🌍 Fix: Unicode in JSON Output (PR #100)\n\nCLI JSON output (`--json` flag) now preserves Unicode characters instead of escaping them:\n\n**Before:**\n```json\n{\"title\": \"Caf\\u00e9 notes\", \"greeting\": \"\\u3053\\u3093\\u306b\\u3061\\u306f\"}\n```\n\n**After:**\n```json\n{\"title\": \"Café notes\", \"greeting\": \"こんにちは\"}\n```\n\nA shared `print_json()` helper with `ensure_ascii=False` replaces all `json.dumps` call sites in the `JsonFormatter`.\n\nThanks to [@nickyfoto](https:\u002F\u002Fgithub.com\u002Fnickyfoto) for the contribution! 🙌\n\n## 📦 Install \u002F Upgrade\n\n```bash\nuv tool install notebooklm-mcp-cli\n# or: pip install notebooklm-mcp-cli\n```\n","2026-03-19T22:18:19",{"id":102,"version":103,"summary_zh":104,"released_at":105},102211,"v0.5.1","# v0.5.1 — Deep Research Transient Error Handling\n\n## 🐛 Bug Fix: Issue #98\n\nDeep research (`--mode deep`) intermittently failed with a generic \"no confirmation from API\" message when Google returned a transient error. The structured error payload (e.g., `DeepResearchErrorDetail` code 3) was silently swallowed because `_extract_rpc_result()` only checked for auth errors (code 16).\n\n**Now instead of a cryptic failure, you get an actionable message:**\n```\nFailed to start research — Google API error code 3 (DeepResearchErrorDetail).\nThis is likely a transient issue. Try again in a few minutes, or use --mode fast.\n```\n\n## 🔧 What Changed\n\n- **`_extract_rpc_result()`** now detects all structured API errors in `item[5]`, not just auth (code 16)\n- **`start_research()`** refactored to use `_call_rpc()` — gets auth retry, server error retries, and debug logging for free\n- **New `RPCError` exception class** with error code, detail type, and detail data attrs\n- **Service layer** catches `RPCError` and provides user-friendly messages with actionable suggestions\n\n## 📊 Tests\n\n- 6 new tests (3 core, 3 service)\n- **634 total tests** passing, zero regressions\n- Live end-to-end integration test: deep research start → status → import (54 sources) ✅\n\n## 📦 Install \u002F Upgrade\n\n```bash\nuv tool install notebooklm-mcp-cli\n# or: pip install notebooklm-mcp-cli\n```\n\nThanks to [@isleofgreg](https:\u002F\u002Fgithub.com\u002Fisleofgreg) for the detailed bug report! 🙌\n","2026-03-19T15:59:16",{"id":107,"version":108,"summary_zh":109,"released_at":110},102212,"v0.5.0","## What's Changed\n\n### Fixed\n- **Research Import Timeout (Issue #97)** — `research import` now uses a 300-second default timeout (up from 120s), fixing consistent timeouts on notebooks with many sources. The timeout is configurable via `--timeout` \u002F `-t` in CLI and `timeout` parameter in MCP.\n- **Research Start Deadlock (Issue #97)** — `research start` no longer hard-exits when previous research has un-imported sources. Instead, it shows a warning and prompts interactively, so users can choose to proceed or import first.\n\n### Added\n- **Configurable Import Timeout** — `nlm research import \u003Cnotebook> \u003Ctask-id> --timeout 600` for extra-large notebooks. Available in both CLI (`--timeout` \u002F `-t`) and MCP (`timeout` parameter on `research_import`). Default: 300 seconds.\n- **2 new unit tests** for timeout parameter forwarding (total: 622 tests)\n\n### Upgrade\n```bash\nuv tool upgrade notebooklm-mcp-cli\n# or: pip install --upgrade notebooklm-mcp-cli\n```\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fblob\u002Fmain\u002FCHANGELOG.md\n","2026-03-18T20:49:21",{"id":112,"version":113,"summary_zh":114,"released_at":115},102213,"v0.4.9","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fcompare\u002Fv0.4.8...v0.4.9","2026-03-16T22:27:14",{"id":117,"version":118,"summary_zh":119,"released_at":120},102214,"v0.4.8","## What's New in v0.4.8\n\n### Added\n- **Native Chat History Persistence** — Both the CLI (`nlm notebook query`) and the MCP server now persist chat history directly into the NotebookLM web UI. All prompts sent via CLI or MCP agents appear in the notebook's native chat panel, sharing the same conversational context as the web UI. (Closes #92)\n- **OpenCode Support** — Full support for OpenCode in the `nlm setup` command (`nlm setup add opencode`) to automatically configure the NotebookLM MCP server for OpenCode. Includes smart config array injection and parsing. Thanks to **@woohyun212** for the comprehensive implementation and thorough unit tests (PR #95).\n\n### Fixed\n- **MCP Profile Switching** — Fixed a bug where the MCP server wouldn't respect dynamic authentication profile changes made via `nlm login switch \u003Cprofile>`. The server now automatically detects token file changes and gracefully reloads the NotebookLM client in real-time, matching the active profile perfectly.\n\n---\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fcompare\u002Fv0.4.7...v0.4.8\n","2026-03-14T22:38:20",{"id":122,"version":123,"summary_zh":124,"released_at":125},102215,"v0.4.7","## What's Changed in v0.4.7\n\n### Skill Path Migration\n\n- **`.gemini\u002Fskills\u002F` → `.agents\u002Fskills\u002F`** — Starting with Gemini CLI v0.33.1, `.agents\u002Fskills\u002F` is the recommended cross-tool compatible path. `nlm skill install gemini-cli` and `nlm skill install codex` are replaced by **`nlm skill install agents`**, which installs to `~\u002F.agents\u002Fskills\u002Fnlm-skill\u002F`.\n\n**Action required:** If you previously installed skills for `gemini-cli` or `codex`, run:\n```bash\nnlm skill install agents\n```\n\n### Documentation Updates\n\n- Added v0.4.6 features (batch, cross-notebook, pipelines, tags) to **SKILL.md**, **AGENTS_SECTION.md**, and **API_REFERENCE.md**\n- Removed stale `QUICK_REFERENCE.md` (superseded by MCP_GUIDE.md and CLI_GUIDE.md)\n","2026-03-13T22:32:51",{"id":127,"version":128,"summary_zh":129,"released_at":130},102197,"v0.5.16","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fcompare\u002Fv0.5.15...v0.5.16","2026-04-04T23:50:05",{"id":132,"version":133,"summary_zh":134,"released_at":135},102198,"v0.5.15","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fcompare\u002Fv0.5.14...v0.5.15","2026-04-02T21:57:17",{"id":137,"version":138,"summary_zh":139,"released_at":140},102199,"v0.5.14","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fcompare\u002Fv0.5.13...v0.5.14","2026-04-01T18:45:31",{"id":142,"version":143,"summary_zh":144,"released_at":145},102200,"v0.5.13","### Fixed\n- **Python 3.13 Crash in `nlm skill` (Issue #122)** — Fixed a crash when running `nlm skill install` on Python 3.13, which was caused by using `@click.option(type=Literal[\"user\", \"project\"])`. Replaced with standard string validation. Thanks to **@zhaoguoqiao** for reporting!\n- **CDP Proxy Bypass (Issue #119)** — The `httpx` HTTP2 client was honoring system proxy settings even for the internal `127.0.0.1` CDP WebSocket acquisition call (`http:\u002F\u002F127.0.0.1:9222\u002Fjson`). This caused connections to fail on machines running proxies. Restored the `proxy=None` argument to explicitly bypass proxies for local loopback connections. Thanks to **@sjs33** for discovering and reporting this!\n- **`research_status` Polling Loop (PR #120)** — Restored the internal polling loop for `research_status` when `max_wait` is set. Previously, the parameters were ignored after a refactor, and it always returned after a single check. The tool now correctly blocks and polls until the research is completed or times out. Thanks to **@byingyang** for the excellent bug report, full implementation, and test suite!\n","2026-04-01T02:50:16",{"id":147,"version":148,"summary_zh":149,"released_at":150},102201,"v0.5.12","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fcompare\u002Fv0.5.11...v0.5.12","2026-03-30T15:26:37",{"id":152,"version":153,"summary_zh":154,"released_at":155},102202,"v0.5.11","### Added\n- **Enterprise \u002F Google Workspace support (PR #114)** — Configurable base URL via `NOTEBOOKLM_BASE_URL` environment variable. Set to `https:\u002F\u002Fnotebooklm.cloud.google.com` (or your organization's URL) to use NotebookLM with managed Workspace accounts. All API calls, authentication, file uploads, and URL detection are updated to use the configured base URL. Default remains `https:\u002F\u002Fnotebooklm.google.com` for personal accounts (fully backward compatible). Thanks to **@Robiton** for this contribution!\n\n### Documentation\n- Added \"Enterprise \u002F Google Workspace\" section to `docs\u002FAUTHENTICATION.md`\n- Added `NOTEBOOKLM_BASE_URL` to environment variables table in `docs\u002FMCP_GUIDE.md`","2026-03-27T20:50:22",{"id":157,"version":158,"summary_zh":159,"released_at":160},102203,"v0.5.10","## Bug Fixes\n\n- **Quiz\u002FFlashcard `focus_prompt` ignored (#113)** — Fixed off-by-one error in RPC payload: `focus_prompt` was at index `[1]` instead of `[2]`. Both `create_quiz` and `create_flashcards` now use the correct layout. Thanks to @ojsed!\n- **`source_ids` parameter fails with string input (#111)** — MCP clients (Claude Desktop, Cursor, etc.) serialize list params as JSON strings or comma-separated values. Added `coerce_list()` helper to normalize all input forms. Applied to 6 list parameters across 4 MCP tool files. Thanks to @Carlos-OL!\n- **Non-ASCII characters in JSON output (#112)** — Added `ensure_ascii=False` to `json.dumps()` across core and CLI layers. Thanks to @rujinlong!\n\n## Added\n\n- 13 new unit tests for `coerce_list` helper (total: 660 tests)\n","2026-03-26T23:07:37",{"id":162,"version":163,"summary_zh":164,"released_at":165},102204,"v0.5.9","Fixes a critical ImportError when initializing the CLI caused by the previous refactor moving ArtifactNotReadyError out of core.client.","2026-03-25T18:47:30",{"id":167,"version":168,"summary_zh":169,"released_at":170},102205,"v0.5.8","## What's Changed\n* Add linting and formatting in GitHub Actions by @nikosavola in https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fpull\u002F109\n* Fix ruff linting and formatting issues across codebase by @nikosavola in https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fpull\u002F110\n\n## New Contributors\n* @nikosavola made their first contribution in https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fpull\u002F109\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fcompare\u002Fv0.5.6...v0.5.8","2026-03-25T18:00:57",{"id":172,"version":173,"summary_zh":174,"released_at":175},102216,"v0.4.6","## What's New\n\n### 🆕 Batch Operations\nPerform actions across multiple notebooks at once — query, add sources, create, delete, or generate artifacts in bulk. Select notebooks by name, tag, or `--all`.\n\n### 🔗 Cross-Notebook Query\nQuery multiple notebooks and get **aggregated answers with per-notebook citations**. Great for comparing information across different research collections.\n\n### ⚡ Pipelines\nDefine and execute **multi-step notebook workflows**. Three built-in pipelines (`ingest-and-podcast`, `research-and-report`, `multi-format`) plus support for custom YAML pipelines.\n\n### 🏷️ Smart Select & Tagging\n**Tag notebooks** for organization and use tags to target batch operations. `nlm tag select` finds relevant notebooks by keyword matching.\n\n### 🔧 MCP Tool Consolidation\nConsolidated 13 new tools into **4 action-based tools** (`batch`, `pipeline`, `tag`, `cross_notebook_query`), keeping total MCP tools at **35**. Follows the existing unified tool pattern.\n\n### 🔀 Skill Path Migration\n`nlm skill install gemini-cli` and `nlm skill install codex` are replaced by **`nlm skill install agents`**, which installs to `~\u002F.agents\u002Fskills\u002Fnlm-skill\u002F`. This is the cross-tool compatible path supported by Gemini CLI v0.33.1+, Codex, and other tools. Users with existing installations should run `nlm skill install agents` to reinstall.\n\n---\n\n### Bug Fixes\n- Fixed CLI import violations in batch\u002Fcross\u002Fpipeline commands\n- Added UTF-8 encoding for Windows compatibility\n- Fixed cross-notebook display crash on string `sources_used` values\n\n### Tests\n- **73 new unit tests** (total: 576)\n\n### Credits\nThanks to **@fabianafurtadoff** for contributing batch operations, cross-notebook query, pipelines, and smart select\u002Ftagging (PR #90)!\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fjacob-bd\u002Fnotebooklm-mcp-cli\u002Fblob\u002Fmain\u002FCHANGELOG.md\n","2026-03-13T01:25:52",[177,188,197,205,217,225],{"id":178,"name":179,"github_repo":180,"description_zh":181,"stars":182,"difficulty_score":183,"last_commit_at":184,"category_tags":185,"status":38},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[186,187,36],"开发框架","图像",{"id":189,"name":190,"github_repo":191,"description_zh":192,"stars":193,"difficulty_score":29,"last_commit_at":194,"category_tags":195,"status":38},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,"2026-04-05T11:33:21",[186,36,196],"语言模型",{"id":198,"name":199,"github_repo":200,"description_zh":201,"stars":202,"difficulty_score":29,"last_commit_at":203,"category_tags":204,"status":38},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[186,187,36],{"id":206,"name":207,"github_repo":208,"description_zh":209,"stars":210,"difficulty_score":29,"last_commit_at":211,"category_tags":212,"status":38},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[187,213,214,35,36,215,196,186,216],"数据工具","视频","其他","音频",{"id":218,"name":219,"github_repo":220,"description_zh":221,"stars":222,"difficulty_score":183,"last_commit_at":223,"category_tags":224,"status":38},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[36,187,186,196,215],{"id":226,"name":227,"github_repo":228,"description_zh":229,"stars":230,"difficulty_score":183,"last_commit_at":231,"category_tags":232,"status":38},2181,"OpenHands","OpenHands\u002FOpenHands","OpenHands 是一个专注于 AI 驱动开发的开源平台，旨在让智能体（Agent）像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点，通过自动化流程显著提升开发速度。\n\n无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员，还是需要快速原型验证的技术团队，都能从中受益。OpenHands 提供了灵活多样的使用方式：既可以通过命令行（CLI）或本地图形界面在个人电脑上轻松上手，体验类似 Devin 的流畅交互；也能利用其强大的 Python SDK 自定义智能体逻辑，甚至在云端大规模部署上千个智能体并行工作。\n\n其核心技术亮点在于模块化的软件智能体 SDK，这不仅构成了平台的引擎，还支持高度可组合的开发模式。此外，OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩，证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能，支持与 Slack、Jira 等工具集成，并提供细粒度的权限管理，适合从个人开发者到大型企业的各类用户场景。",70612,"2026-04-05T11:12:22",[196,36,186,35]]