notebooklm-py集合管理指南:跨Notebook组织资料的新能力实战
【免费下载链接】notebooklm-pyUnofficial Python API and agentic skill for Google Gemini Notebook. Full programmatic access to NotebookLM's features—including capabilities the web UI doesn't expose—via Python, CLI, and AI agents like Claude Code, Codex, and OpenClaw.项目地址: https://gitcode.com/GitHub_Trending/no/notebooklm-py
NotebookLM 里的 notebook 越建越多,找不到、理不清?notebooklm-py 这个 Google Gemini Notebook(原 NotebookLM)的非官方 Python API 新加入了集合(Collection)管理能力:你可以像创建"播放列表"一样,把整个 notebook 分门别类地归入命名集合,实现跨 notebook 的资料组织。本文用 CLI 和 Python 两种方式带你 10 分钟上手。
什么是 NotebookLM 集合?和 Label 有什么区别
集合(Collection)是账号级别的分组:它把"整个 notebook"归到一起,类似音乐 App 的播放列表,一个 notebook 可以同时属于多个集合,集合本身不带父级 notebook。
它容易和Label(标签)混淆,两者定位完全不同:
| 对比项 | Collection 集合 | Label 标签 |
|---|---|---|
| 作用层级 | 账号级,跨 notebook | notebook 内,管理 source |
| 分组对象 | 整个 notebook | 单个资料源 |
| 是否需指定 notebook | 不需要 | 需要-n/--notebook |
| 典型场景 | "Q3 调研"归拢 8 个 notebook | 把一个 notebook 里的资料按主题打标 |
数据模型定义在 src/notebooklm/_types/collections.py,Collection就四个字段:id、name、emoji、notebook_ids——简单直接,多对多关系,成员 notebook 不持有反向引用。
快速上手:集合管理的 7 个 CLI 命令
notebooklm-py 通过notebooklm collection <cmd>分组命令管理集合,完整列表见 docs/cli-reference.md:
| 命令 | 作用 | 示例 |
|---|---|---|
list | 列出账号下所有集合 | notebooklm collection list |
notebooks | 查看某集合的成员 notebook | notebooklm collection notebooks "Research Q3" |
create | 创建新集合 | notebooklm collection create "Research Q3" |
rename | 重命名集合 | notebooklm collection rename "Research Q3" "Research Q4" |
add | 往集合加入 notebook(支持一次加多个) | notebooklm collection add "Research Q3" nb123 nb456 |
remove | 把 notebook 移出集合 | notebooklm collection remove "Research Q3" nb123 |
delete | 删除集合(需-y确认) | notebooklm collection delete "Research Q3" -y |
三个新手友好细节值得留意:
<id|name>复合参数:几乎所有命令都接受集合 ID、ID 前缀或精确名称,名称重名会列出候选让你消歧,不用去翻 ID。- remove ≠ 删除:
remove只是把 notebook 移出该集合,notebook 本身安然无恙,还留在其他集合里。 - delete 只删分组:
delete永远不碰成员 notebook,且需要-y显式确认。
命令实现位于 src/notebooklm/cli/collection_cmd.py,业务逻辑与传输解耦在 src/notebooklm/_app/collections.py,支持--json输出便于脚本化。
实战:用 Python API 批量整理笔记本
对脚本化场景,client.collections(CollectionsAPI)提供更细粒度的控制,API 全表见 docs/python-api.md:
| 方法 | 说明 |
|---|---|
list() | 列出全部集合(含成员) |
get(id)/get_or_none(id) | 按 ID 取集合,缺失时抛异常或返回None |
notebooks(id) | 展开成Notebook对象列表 |
create(name) | 创建空集合 |
rename(id, name) | 重命名(保留原 emoji) |
add_notebooks(id, ids) | 追加成员,已有的不会被覆盖 |
remove_notebooks(id, ids) | 仅取消归属,不删 notebook |
delete(ids) | 批量删除集合,幂等 |
一个典型的整理流程(参考 tests/e2e/test_collections.py 的真实用例):
from notebooklm import Collection # 建一个"季度调研"集合,把 3 个 notebook 归进去 research = await client.collections.create("Research Q3") await client.collections.add_notebooks(research.id, [nb1, nb2, nb3]) # 季度结束:改名归档,而不是删除 await client.collections.rename(research.id, "Archive Q3")注意delete是幂等的(对不存在的目标直接返回None),批量清理很安全;而add_notebooks/remove_notebooks对每个 ID 各发一次 RPC,不跨 ID 原子,大批量操作时建议在finally里兜底删除集合,这也是官方 E2E 测试的清理纪律。
常见问题与最佳实践
- 集合和标签要一起用吗?要。Label 管"notebook 内资料怎么分主题",Collection 管"notebook 之间怎么归类",两层组合起来就是完整的资料体系。
- 可以嵌套或共享集合吗?目前服务端不支持嵌套,也不支持集合级共享;需要协作时用 docs/python-api.md 里介绍的 notebook 级 Sharing 能力。
- 删了集合,notebook 会丢吗?不会。三层操作(remove / delete / 批量 delete)都不触碰成员 notebook,只有
notebook delete才会删 notebook 本身。 - 想验证线上行为?集合的线格式曾出现过"静默无效"的坑并已在 PR #2009 中修正,回归测试见 tests/e2e/test_collections.py,可对照了解创建、成员增删、删除幂等性的预期行为。
小结
notebooklm-py 的集合管理让你第一次可以用代码给 NotebookLM 做账号级的资料架构:CLI 的 7 个命令覆盖日常整理,CollectionsAPI支撑批量与自动化。从collection create到add_notebooks,几分钟就能把散落各处的 notebook 收成清晰的"播放列表",配合 Label 与 Sharing,跨 notebook 组织资料从此有章可循。更多用法请查阅 docs/cli-reference.md 与 README.md。
【免费下载链接】notebooklm-pyUnofficial Python API and agentic skill for Google Gemini Notebook. Full programmatic access to NotebookLM's features—including capabilities the web UI doesn't expose—via Python, CLI, and AI agents like Claude Code, Codex, and OpenClaw.项目地址: https://gitcode.com/GitHub_Trending/no/notebooklm-py
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考