TL;DR
一个Claude Code技能插件,把Google NotebookLM变成你的专属知识库助手。上传API文档、技术手册后,直接在编辑器里问问题,答案只来自你的文档,不会胡编乱造。
一、问题:AI为什么总在专业问题上瞎说
1.1 幻觉是AI的原罪
你问GPT:”高仙机器人怎么获取状态?”
AI可能回答:
调用 /api/v1/robot/status 接口,传入设备ID...
看起来很专业。但实际API文档里根本没这个接口。
为什么:大语言模型基于概率生成文本,没见过的文档会”合理推测”。结果就是一本正经地胡说八道。
1.2 传统方案的困境
| 方案 | 问题 |
|---|---|
| 直接问AI | 幻觉严重,答案不可信 |
| 手动查文档 | 效率低,复杂文档难检索 |
| 本地RAG | 需要搭建向量数据库,成本高 |
| 复制文档喂给AI | Token消耗巨大,超长文档装不下 |
本质矛盾:既要AI的理解能力,又要限定答案来源。
二、方案:NotebookLM限定知识边界
2.1 NotebookLM是什么
Google出品的”文档问答机器人”。你上传PDF、网页、文本,它只根据这些材料回答问题。
核心能力:
– ✅ 只答文档里有的内容,没有就说”文档未提及”
– ✅ 支持50+个文件,自动关联信息
– ✅ 答案带引用,可追溯原文出处
– ✅ Gemini后端,理解能力强
生活比喻:像给AI配了一个只能看指定书籍的图书馆管理员。你问的问题,他只翻这些书,找不到就不会瞎编。
2.2 NotebookLM Skill做了什么
把NotebookLM集成到Claude Code里,免去手动切换浏览器的麻烦。
工作流程:
1. 你在编辑器里问:"高仙机器人有哪些API?"
2. Skill自动打开Chrome → 登录NotebookLM → 提交问题
3. NotebookLM从你上传的文档里找答案
4. Skill把结果返回编辑器 → Chrome自动关闭
技术实现:
– 浏览器自动化(Patchright,Playwright魔改版)
– 本地Python环境(独立.venv,不污染系统)
– 持久化认证(登录一次,永久有效)
三、实战案例:查询高仙机器人API文档
3.1 准备工作
我把 https://developer.gs-robot.com/ 的所有API文档上传到NotebookLM,然后在Claude Code里直接提问。
注意:案例中的API调用地址应为 https://openapi.gs-robot.com
3.2 第一个问题:有哪些API?
输入:
高仙机器人平台有哪些api?
Skill自动执行:
python3 scripts/run.py ask_question.py \
--question "高仙机器人平台提供了哪些 API?请按功能分类详细列出..." \
--notebook-id [已屏蔽]
NotebookLM返回(60秒内完成):
按功能分类的完整API列表:
1. 任务管理
– /openapi/v2/robotCommand/submitTempTaskHasSite – 提交站点临时任务
– /openapi/v2/robotCommand/submitTempTaskNoSite – 提交无站点任务
– /v1alpha1/robots/*/commands/ – 获取指令队列
2. 状态监测
– /v1alpha1/robots/{robot}/status – V1通用状态
– /openapi/v2alpha1/s/robots/{robot}/status – V2 S系列专用
– :batchGet – 批量获取多机器人状态
3. 地图服务
– /openapi/v1/map/robotMap/list – 地图列表
– /openapi/v1/map/subareas/get – 分区信息
4. 事件推送
– Webhook机制,推送异常告警、任务状态、导航信息
5. 设备管理
– /v1alpha1/robots – 机器人列表(SN、MAC、硬件版本)
6. 认证安全
– OAuth 2.0:/v1alpha1/oauth/token – 获取访问令牌
3.3 第二个问题:如何获取状态?
输入:
能告诉我如何获取 GSxx-xxx-xxx-xx 机器人的状态的过程是如何的么?
NotebookLM返回完整流程代码:
import requests
# ========== 步骤1:OAuth认证 ==========
auth_url = "https://openapi.gs-robot.com/v1alpha1/oauth/token"
auth_payload = {
"grant_type": "client_credentials",
"client_id": "YOUR_APP_ID",
"client_secret": "YOUR_APP_SECRET"
}
auth_response = requests.post(auth_url, data=auth_payload)
access_token = auth_response.json().get("access_token")
# ========== 步骤2:查询机器人状态 ==========
robot_sn = "GSxx-xxx-xxx-xx"
status_url = f"https://openapi.gs-robot.com/openapi/v2alpha1/s/robots/{robot_sn}/status"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
response = requests.get(status_url, headers=headers)
# ========== 步骤3:解析响应 ==========
if response.status_code == 200:
data = response.json()
# 电池信息
print(f"电量: {data['battery']['percentage']}%")
print(f"电压: {data['battery']['voltage']}V")
# 导航与状态
print(f"导航状态: {data['navStatus']}")
print(f"急停状态: {data['emergencyStop']}")
# 清洁系统
print(f"清水箱: {data['cleanWaterLevel']}")
print(f"污水箱: {data['dirtyWaterLevel']}")
# 耗材寿命
print(f"滚刷寿命: {data['consumables']['rollerBrush']}%")
print(f"盘刷寿命: {data['consumables']['diskBrush']}%")
响应数据结构:
{
"navStatus": "NAVIGATING",
"emergencyStop": false,
"battery": {
"percentage": 85,
"voltage": 48.2,
"current": 5.3,
"temperature": 32.5
},
"cleanWaterLevel": "MEDIUM",
"dirtyWaterLevel": "LOW",
"consumables": {
"rollerBrush": 68,
"diskBrush": 72,
"filter": 45
}
}
3.4 效果对比
| 传统方式 | NotebookLM Skill |
|---|---|
| 打开文档网站 → 搜索关键词 → 翻多个页面 → 手动整理 | 一句话提问 → 60秒得到完整答案 |
| 需要理解API版本差异(V1/V2) | 自动关联多版本说明 |
| 可能遗漏相关接口 | 自动发现关联API(如批量查询) |
| 代码示例需自己拼凑 | 直接给出可运行代码 |
四、安装使用指南
4.1 三步安装
# 1. 创建技能目录
mkdir -p ~/.claude/skills
# 2. 克隆仓库
cd ~/.claude/skills
git clone https://github.com/PleasePrompto/notebooklm-skill notebooklm
# 3. 首次使用自动安装依赖(包括Chrome)
# 无需手动操作
4.2 首次配置
在Claude Code里说:
Set up NotebookLM authentication
自动流程:
1. Chrome浏览器自动打开
2. 跳转到Google登录页
3. 手动完成登录(建议用独立账号,避免主账号被检测)
4. 认证信息保存到本地 ~/.claude/skills/notebooklm/data/
重要:这个data目录包含登录凭证,不要提交到Git。
4.3 添加知识库
# 1. 在 https://notebooklm.google.com 上传文档
# 支持PDF、网页、Markdown等50+个文件
# 2. 点击"分享" → 设置为公开访问 → 复制链接
# 3. 在Claude Code里说:
Add https://notebooklm.google.com/notebook/xxx to my library
系统会要求你输入描述(如”高仙机器人API文档”),方便后续自动选择。
4.4 提问
# 直接问问题,Skill自动选择相关知识库
"高仙机器人如何提交临时任务?"
"状态监测API的响应数据结构是什么?"
"V1和V2接口有什么区别?"
4.5 常用命令
| 命令 | 作用 |
|---|---|
Show my NotebookLM notebooks |
列出所有已保存知识库 |
Clear NotebookLM data |
清空数据(保留库列表) |
What skills do I have? |
查看已安装技能 |
五、核心优势与限制
5.1 为什么不直接喂给Claude?
| 对比维度 | 直接喂Claude | NotebookLM Skill |
|---|---|---|
| Token成本 | 巨大(每次提问重发全文) | 极低(Gemini预处理一次) |
| 文档数量 | 受上下文限制(~10个文件) | 50+文件无压力 |
| 跨文档关联 | 需手动整理 | 自动关联信息 |
| 引用溯源 | 无 | 每个答案带来源 |
| 幻觉风险 | 仍可能编造 | 严格限定文档内容 |
5.2 适用场景
✅ 适合:
– API文档查询(如高仙机器人案例)
– 技术手册问答(操作流程、参数说明)
– 产品规格对比(从多个PDF提取信息)
– 学术论文研究(关联多篇文献)
❌ 不适合:
– 实时数据查询(NotebookLM不联网)
– 需要推理的复杂任务(它只检索文档)
– 隐私敏感内容(数据上传到Google)
5.3 技术限制
| 限制 | 说明 |
|---|---|
| 仅限本地Claude Code | 不支持Web版(沙箱限制) |
| 无会话上下文 | 每次提问独立,不记忆上一轮对话 |
| NotebookLM免费限额 | 每日查询次数有上限 |
| 需手动上传文档 | 不能自动爬取网站 |
六、实现原理剖析
6.1 技术栈
Claude Code Skill(前端)
↓ 调用 Python 脚本
浏览器自动化(Patchright)
↓ 模拟人类操作
NotebookLM(后端)
↓ Gemini处理
返回文档限定答案
核心依赖:
– patchright==1.55.2 – Playwright魔改版,绕过自动化检测
– python-dotenv==1.0.0 – 环境变量管理
6.2 会话模型
无状态设计:
# 每次提问的生命周期
1. 启动Chrome → 加载认证信息
2. 打开NotebookLM → 选择知识库
3. 提交问题 → 等待响应
4. 提取答案 → 关闭浏览器
为什么不保持会话:
– 避免浏览器长时间运行被检测
– 降低内存占用
– 每次问题独立,不依赖上下文
6.3 数据存储
所有数据在本地 ~/.claude/skills/notebooklm/data/:
data/
├── auth_state.json # Google登录凭证
├── library.json # 知识库列表
└── .env # 环境变量
安全提醒:.gitignore已配置忽略data目录,但仍需注意:
– 定期备份library.json
– 使用独立Google账号
– 不要在公共电脑上使用
七、进阶技巧
7.1 优化提问方式
糟糕的提问:
高仙机器人API怎么用?
(太宽泛,NotebookLM可能返回概述)
好的提问:
高仙机器人提交临时任务的API接口是什么?请给出完整的请求格式、参数说明和响应示例。
(具体、结构化,答案更精准)
7.2 多知识库组织
按项目分类:
我的NotebookLM库:
- "高仙机器人API" → 所有developer.gs-robot.com文档
- "普渡机器人API" → 普渡开放平台文档
- "React官方文档" → React Hooks、Context等
提问时自动选择:
# Skill根据问题关键词匹配库
"高仙机器人状态API" → 自动选"高仙机器人API"库
"React useEffect用法" → 自动选"React官方文档"库
7.3 配合Claude Code其他功能
典型工作流:
1. NotebookLM查API文档 → 获取接口定义
2. Claude Code生成调用代码 → 自动补全参数
3. 本地测试 → 调试错误
4. 再问NotebookLM → 查错误码含义
八、小结
8.1 核心价值
NotebookLM + Claude Code = 零幻觉的专业文档助手
三个关键能力:
1. 限定知识边界 – 答案只来自你的文档
2. 自动化集成 – 编辑器里直接提问,无需切换
3. 深度理解 – Gemini后端,能关联多文档信息
8.2 适用人群
| 角色 | 典型场景 |
|---|---|
| API开发者 | 查询第三方平台接口文档 |
| 技术写手 | 从产品手册提取规格参数 |
| 研究人员 | 关联多篇论文找证据 |
| 运维工程师 | 查询设备操作手册 |
8.3 最佳实践
✅ 推荐:
– 用独立Google账号避免主账号被检测
– 定期备份library.json
– 提问时明确要求”给出代码示例”或”列出所有参数”
❌ 避免:
– 上传隐私敏感文档(数据在Google服务器)
– 期待它回答文档外的问题(会直接说”未提及”)
– 用于实时数据查询
参考链接
– GitHub仓库:https://github.com/PleasePrompto/notebooklm-skill
– NotebookLM官网:https://notebooklm.google.com
– 高仙机器人开放平台:https://developer.gs-robot.com
– API调用地址:https://openapi.gs-robot.com








程序员数学扫盲课
AI周刊:大模型、智能体与产业动态追踪
Claude Code 全体系指南:AI 编程智能体实战
Karpathy神经网络零基础课程
最新评论
开源的AI对话监控面板很实用,正好团队在找这类工具。准备试用一下。
折叠屏市场确实在升温,不过售罄也可能是备货策略。期待看到实际销量数据。
从磁盘I/O角度解释B树的设计动机,这个切入点很好。终于理解为什么数据库不用二叉树了。
IT术语转换确实是个痛点,之前用搜狗总是把技术词汇转成奇怪的词。智谱这个方向值得期待。
这个工具结合LLM和搜索API的思路很有意思,正好解决了我在做知识管理时遇到的问题。请问有没有部署文档?
这个漏洞确实严重,我们团队上周刚遇到类似问题。建议补充一下如何检测现有项目是否受影响的方法。
从简单规则涌现复杂性这个思路很有意思,让我想起元胞自动机。不过数字物理学在学术界争议还挺大的。
我也遇到了指令跟随变差的问题,特别是多轮对话时容易跑偏。不知道是模型退化还是负载优化导致的。