ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

notebooklm-py Studio工作流实战:生成、轮询、下载、修订的完整Artifact生命周期

notebooklm-py Studio工作流实战:生成、轮询、下载、修订的完整Artifact生命周期 notebooklm-py Studio工作流实战生成、轮询、下载、修订的完整Artifact生命周期【免费下载链接】notebooklm-pyUnofficial Python API and agentic skill for Google Gemini Notebook. Full programmatic access to NotebookLMs features—including capabilities the web UI doesnt expose—via Python, CLI, and AI agents like Claude Code, Codex, and OpenClaw.项目地址: https://gitcode.com/GitHub_Trending/no/notebooklm-pynotebooklm-py是一个 Google NotebookLM 的第三方 Python 工具库它通过Studio 工作流把 NotebookLM 的 AI 生成能力播客、视频、幻灯片、测验、报告等 Artifact 产出物变成可编程调用的流程一行代码生成、自动轮询状态、一键下载成品还能对失败的产物修订重试——完整掌握这条 Artifact 生命周期是你从网页点点点走向自动化内容生产的关键一步 一、Artifact 生命周期全景生成 → 轮询 → 下载 → 修订NotebookLM 的生成类功能Studio 产出物即 Artifact不是点一下立刻出结果而是一套异步任务流程。notebooklm-py 把这条流程抽象为四个清晰步骤步骤做什么Python APICLI 命令MCP 工具① 生成提交生成任务拿到任务 IDclient.artifacts.generate_audio(...)notebooklm generate audiostudio_generate② 轮询检查/等待任务完成client.artifacts.wait_for_completion(...)notebooklm artifact waitstudio_status③ 下载把成品存到本地client.artifacts.download_audio(...)notebooklm download audiostudio_download④ 修订失败重试 / 修改单张幻灯片client.artifacts.retry_failed(...)、revise_slide(...)notebooklm artifact retrystudio_retry 核心规律生成是异步 kickoff——调用立刻返回一个任务句柄task_id真正的生成在服务端慢慢跑你必须靠轮询来跟踪它。支持生成的 Artifact 类型非常多audio播客、video视频讲解、cinematic-video、slide-deck幻灯片、quiz测验、flashcards闪卡、infographic信息图、data-table数据表、mind-map思维导图、report简报/学习指南/博客。完整的类型与 RPC 映射见 docs/rpc-reference.md。二、第一步生成一次调用提交整个 Studio 任务生成方法全部挂在client.artifacts命名空间下每个类型一个方法generate_audio、generate_video、generate_report、generate_quiz等统一返回一个GenerationStatus对象——里面有task_id和初始status这就是后续轮询的车票。status await client.artifacts.generate_audio(nb_id, instructions生成一段引人入胜的主题概览播客) # status.task_id → 任务句柄status.status → pending / in_progress三个实用细节可传提示词多数生成方法支持instructions参数让 AI 按你的要求创作速率限制自动重试如果服务端拒绝配额/限流可以用 src/notebooklm/artifacts.py 里的with_rate_limit_retry(...)包装生成调用它内置指数退避60 秒起步、上限 300 秒不用自己写重试循环CLI 用户直接notebooklm generate audio -n 笔记本ID即可效果完全等同。生成请求最终由 src/notebooklm/_artifacts.py 统一构造提交参数组装细节可参考 src/notebooklm/_web/params/artifacts.py。三、第二步轮询wait_for_completion 帮你等到任务跑完手动轮询一次用client.artifacts.poll_status(nb_id, task_id)但实战中你几乎总是想一直等到完成那就用final await client.artifacts.wait_for_completion(nb_id, status.task_id, timeout600) if final.is_complete: print(final.url) # 服务端成品地址wait_for_completion是个省心开关自动按间隔轮询直到任务completed/failed或超时支持进度回调传入on_status_change(status)即可在每次状态变化时打日志长任务不再黑箱等待并发去重多个调用同时等待同一任务时内部有 leader/follower 轮询去重机制不会把服务端打爆。状态词汇表值得记一下pending已排队→in_progress生成中→completed/failed终态。若生成被速率限制拒绝会得到带is_rate_limited标记的状态此时交给with_rate_limit_retry处理最省事。四、第三步下载成品落地的最后一公里任务completed后按类型调用对应的download_*方法返回值就是保存路径类型方法文件格式播客download_audio(nb_id, podcast.m4a)m4a / mp3视频download_video(nb_id, video.mp4)mp4幻灯片download_slide_deck(nb_id, slides.pdf)pdf 或 pptx报告download_report(nb_id, guide.md)markdown测验/闪卡download_quiz(..., output_formathtml)json / markdown / html三个下载小习惯不传 artifact_id 就下该类型最新的一份——日常使用最方便指定 artifact_id 可下载历史版本——同一笔记本里改过好几版时很关键CLI 对应命令notebooklm download 类型与 Python 行为完全一致脚本里混着用没问题。MCP 用户则用studio_download工具本地 stdio 传输直接写文件远程连接器场景下它会返回一个短时效签名 URL让你在浏览器里取文件详见 docs/mcp-guide.md 的 File upload download 一节。五、第四步修订失败重试与局部修改生命周期中最容易被忽略的一环——生成会失败配额、服务端抽风、内容被拒。notebooklm-py 提供了两种补救路径1️⃣ 失败重试Retryclient.artifacts.retry_failed(nb_id, artifact_id)对应网页端的Retry按钮——原地重跑artifact_id保持不变所以之前的wait_for_completion轮询逻辑继续可用status await client.artifacts.retry_failed(nb_id, failed_artifact_id) final await client.artifacts.wait_for_completion(nb_id, status.task_id)如果重试本身又被限流拒绝它会直接抛RateLimitError正好可以套上with_rate_limit_retry自动退避。CLI 等价命令notebooklm artifact retry artifact_id -n 笔记本ID。2️⃣ 局部修订Revise幻灯片生成好了但某一张不满意不必整副重做——client.artifacts.revise_slide(nb_id, artifact_id, slide_index, prompt)只针对指定索引的那张幻灯片用一句提示词让它重新生成其余幻灯片原样保留。这是典型的生成 修订组合技也是网页 UI 里很难批量做的事。MCP 侧对应studio_retry工具任务 ID 即产物 ID重新入队后用studio_status继续轮询即可。六、实战案例从研究到播客的一键流水线把四步串起来就是一个完整的内容生产流水线。仓库自带的 examples/research-to-podcast.py 演示了更长的链路创建笔记本 → 启动深度研究 → 导入发现的来源 →生成播客 → 轮询等待 → 提示下载研究完成 → client.artifacts.generate_audio(...) → client.artifacts.wait_for_completion(nb.id, task_id, timeout600) → notebooklm download audio # 成品落地同样的生命周期也适用于幻灯片generate_slide_deck生成 → 等待 → 对第 3 页调用revise_slide微调 → 再等待 →download_slide_deck(..., output_formatpptx)导出可编辑的 PPT。更多细节请查阅 docs/python-api.md 的ArtifactsAPI章节以及 docs/mcp-guide.md 的 Generate and download a studio artifact 工作流。七、常见问题速查问题答案为什么生成调用瞬间就返回了生成是异步任务返回的是任务句柄必须轮询到completed才能下载轮询一直不结束给wait_for_completion设置timeout播客/视频类产物通常需要数分钟报 RATE_LIMITED 怎么办用with_rate_limit_retry自动指数退避或稍后再试该错误本身可重试生成失败了能恢复吗能retry_failed原地重试产物 ID 不变轮询照常进行想只改幻灯片的一页revise_slide按索引精准修订避免整副重做小结notebooklm-py 的 Studio 工作流把 NotebookLM 的 AI 产出能力封装成了一条可预测的 Artifact 生命周期生成拿句柄、轮询等结果、下载落成品、修订救失败。四步各司其职Python API、CLI 与 MCP 工具三种调用方式行为一致——无论你写脚本、敲命令还是让 AI Agent 驱动都能复用同一套心智模型 【免费下载链接】notebooklm-pyUnofficial Python API and agentic skill for Google Gemini Notebook. Full programmatic access to NotebookLMs features—including capabilities the web UI doesnt expose—via Python, CLI, and AI agents like Claude Code, Codex, and OpenClaw.项目地址: https://gitcode.com/GitHub_Trending/no/notebooklm-py创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进