$git clone https://github.com/claude-world/notebooklm-skill> Source-grounded NotebookLM automation for terminals and AI agents.
| 1 | # notebooklm-skill |
| 2 | |
| 3 | > Source-grounded NotebookLM automation for terminals and AI agents. |
| 4 | |
| 5 | [](https://github.com/claude-world/notebooklm-skill/actions/workflows/ci.yml) |
| 6 | [](https://pypi.org/project/notebooklm-skill/) |
| 7 | [](https://pypi.org/project/notebooklm-skill/) |
| 8 | [](LICENSE) |
| 9 | |
| 10 | [繁體中文](README.zh-TW.md) |
| 11 | |
| 12 | `notebooklm-skill` gives humans and MCP clients one consistent interface for Google |
| 13 | NotebookLM. It creates notebooks from URLs, raw text, and local files; asks grounded |
| 14 | questions with citation metadata; completes fast or deep web research; and generates |
| 15 | or downloads NotebookLM artifacts. |
| 16 | |
| 17 | The project is built around `notebooklm-py` 0.7.x and includes: |
| 18 | |
| 19 | - a JSON-first core CLI; |
| 20 | - five end-to-end research pipelines; |
| 21 | - a 13-tool FastMCP server; |
| 22 | - profile-aware authentication and Skill installers; |
| 23 | - one shared compatibility layer, so CLI, pipelines, and MCP use the same behavior. |
| 24 | |
| 25 | > This is an unofficial integration with NotebookLM's web API. Google can change the |
| 26 | > service, availability, quotas, or artifact behavior without notice. |
| 27 | |
| 28 | ## Quick start |
| 29 | |
| 30 | ### Isolated source install |
| 31 | |
| 32 | The installer creates a dedicated virtual environment, installs Chromium, links five |
| 33 | commands into `~/.local/bin`, and installs the Claude Code Skill using the standard |
| 34 | directory layout. |
| 35 | |
| 36 | ```bash |
| 37 | git clone https://github.com/claude-world/notebooklm-skill.git |
| 38 | cd notebooklm-skill |
| 39 | ./install.sh |
| 40 | |
| 41 | notebooklm-auth setup |
| 42 | notebooklm-skill list |
| 43 | ``` |
| 44 | |
| 45 | Ensure `~/.local/bin` is on `PATH`. |
| 46 | |
| 47 | ### PyPI or uvx |
| 48 | |
| 49 | ```bash |
| 50 | # Persistent virtual environment |
| 51 | python3 -m venv .venv |
| 52 | source .venv/bin/activate |
| 53 | python -m pip install notebooklm-skill |
| 54 | python -m playwright install chromium |
| 55 | notebooklm-auth setup |
| 56 | |
| 57 | # Or run without a persistent install |
| 58 | uvx --from notebooklm-skill notebooklm-auth setup |
| 59 | uvx --from notebooklm-skill notebooklm-skill list |
| 60 | ``` |
| 61 | |
| 62 | Direct upstream login is also available: |
| 63 | |
| 64 | ```bash |
| 65 | uvx --from notebooklm-py notebooklm login |
| 66 | ``` |
| 67 | |
| 68 | Sessions are profile-aware. Select one with `--profile NAME` before a CLI |
| 69 | subcommand, or set `NOTEBOOKLM_PROFILE`. |
| 70 | |
| 71 | To use the locally installed Google Chrome instead of bundled Chromium: |
| 72 | |
| 73 | ```bash |
| 74 | notebooklm-auth setup --browser chrome --fresh |
| 75 | ``` |
| 76 | |
| 77 | ## Core CLI |
| 78 | |
| 79 | All successful commands print structured JSON to stdout. Diagnostics go to stderr; |
| 80 | authentication errors return exit code 4 and argument errors return exit code 2. |
| 81 | |
| 82 | ```bash |
| 83 | # Mixed-source ingestion with truthful per-source outcomes |
| 84 | notebooklm-skill create \ |
| 85 | --title "Research" \ |
| 86 | --sources https://example.com/article \ |
| 87 | --files ./paper.pdf \ |
| 88 | --text-sources "Interview notes" \ |
| 89 | --strict |
| 90 | |
| 91 | notebooklm-skill ask \ |
| 92 | --notebook "Research" \ |
| 93 | --query "Which conclusions have the strongest evidence?" |
| 94 | |
| 95 | notebooklm-skill research \ |
| 96 | --notebook "Research" \ |
| 97 | --query "Recent independent evaluations" \ |
| 98 | --mode deep --max-sources 10 |
| 99 | |
| 100 | notebooklm-skill generate \ |
| 101 | --notebook "Research" \ |
| 102 | --type slides --lang zh-TW \ |
| 103 | --output ./output/deck.pptx --output-format pptx |
| 104 | |
| 105 | notebooklm-skill list-artifacts --notebook "Research" --type slides |
| 106 | ``` |
| 107 | |
| 108 | Commands resolve an exact ID, unique title, or unique title substring. Use IDs for |
| 109 | repeatable automation. Deletes require `--yes`; downloads refuse existing files or |
| 110 | symlinks unless an explicit safe overwrite is requested with `--force`. |
| 111 | |
| 112 | ### Artifact types |
| 113 | |
| 114 | | Type | Default download | Notes | |
| 115 | |---|---:|---| |
| 116 | | `audio` | M4A | deep-dive, brief, critique, or debate | |
| 117 | | `video` | MP4 | explainer/brief and multiple visual styles | |
| 118 | | `cinematic` | MP4 | cinematic video workflow | |
| 119 | | `slides` | PDF | PDF or PPTX | |
| 120 | | `report` | Markdown | briefing, study guide, blog, or custom | |
| 121 | | `study-guide` | Markdown | report shortcut | |
| 122 | | `quiz` | JSON | JSON, Markdown, or HTML | |
| 123 | | `flashcards` | JSON | JSON, Mark |