⏳ This skill is pending AI review.

Scores will appear once the review pipeline completes.

version unknown

notebooklm-intake

@ashlad77⭐ 1 stars

将本地资料上传、导入并同步到云端 NotebookLM 项目。用于当用户说“上传到 NotebookLM”“导入 NotebookLM”“把资料发到云端”“新建 NotebookLM 项目并入库资料”“把本地文件同步到 NotebookLM”等场景时触发。默认把这类请求理解为入库/上传,而不是生成输出;适用于扫描 knowledge/notebooklm/inbox 中新增的链接、PDF、音视频、文档、表格等资料,自动创建同名项目、上传 source,并写入本地 metadata。

Use with your AI agent

Open your project in any AI assistant that can read your files. Works with ChatGPT, Claude, Claude Code, Codex, Cursor, Hermes Agent, OpenClaw, Grok Bot, and more.

Download SKILL.md

Your agent needs access to this page’s linked instructions and your project files. Copying does not install or execute anything.

—/10

// RATINGS

⭐GitHub Stars
⭐ 1 on GitHubGitHub ↗

New / niche

🟢ProSkills Score
—
📍

Not yet listed on ClawHub or SkillsMP

// README

notebooklm-intake-output

English | 中文

一键复刻:将对应的 REPLICATION-GUIDE.md 直接交给 OpenClaw,即可在新机器上自动完成全部部署,无需手动拷贝文件或配置路径。 intake 复刻文件:REPLICATION-GUIDE.md · output 复刻文件:REPLICATION-GUIDE.md(复刻顺序:先 intake,再 output)


把本地资料批量同步到 NotebookLM 云端,并从云端项目生成多种输出(报告、测验、思维导图、音频、视频等),全部通过本地脚本自动完成。

本项目基于 @teng-lin 的 notebooklm-py 构建。该项目提供了 NotebookLM 的非官方 Python API 与 CLI,intake 和 output 的整个云端通信链路均依赖其接口。


简介

本仓库包含两个面向 OpenClaw 的 skill:

Skill用途
notebooklm-intake本地文件 → NotebookLM 云端(上传、建项目、去重、归档)
notebooklm-outputNotebookLM 云端 → 本地文件(生成报告、测验、音频等并下载)

两个 skill 组成完整闭环:先用 intake 把资料入库,再用 output 从云端生成各种输出。


前置条件

  1. Python 3.10+
  2. Tkinter — Windows 默认自带;Linux 可能需要 sudo apt install python3-tk
  3. notebooklm-py CLI 已安装并完成认证:
pip install "notebooklm-py[browser]"
playwright install chromium
notebooklm login

中国大陆用户需要网络代理才能访问 Google 服务。 如需使用 Microsoft Edge SSO 登录,可用 notebooklm login --browser msedge。

  1. 验证连接:
notebooklm list

正常返回 notebook 列表(空列表也算成功)即表示对接完成。


目录结构

~/.openclaw/
├── skills/
│   ├── notebooklm-intake/
│   │   ├── SKILL.md              ← skill 指令(中文)
│   │   ├── SKILL_EN.md           ← skill 指令(英文)
│   │   ├── REPLICATION-GUIDE.md  ← 复刻指南(中文)
│   │   ├── REPLICATION-GUIDE_EN.md ← 复刻指南(英文)
│   │   └── scripts/
│   │       └── intake.py         ← 入库核心脚本
│   └── notebooklm-output/
│       ├── SKILL.md              ← skill 指令(中文)
│       ├── SKILL_EN.md           ← skill 指令(英文)
│       ├── REPLICATION-GUIDE.md  ← 复刻指南(中文)
│       ├── REPLICATION-GUIDE_EN.md ← 复刻指南(英文)
│       └── scripts/
│           ├── output.py         ← 输出核心脚本
│           └── vendor/
│               ├── d3.min.js     ← D3.js(mind-map 渲染依赖)
│               └── markmap-view.min.js ← Markmap(mind-map 渲染依赖)
└── knowledge/
    └── notebooklm/
        ├── inbox/                ← 待上传资料放这里
        ├── processed/            ← 上传成功后自动归档
        ├── projects/             ← 每个项目的本地 metadata
        ├── output/               ← 所有输出文件的根目录
        └── registry.json         ← 总索引

脚本会根据自身位置自动检测 .openclaw 根目录,无需手动配置路径。也可通过环境变量 OPENCLAW_HOME 覆盖。


notebooklm-intake

功能

  • 扫描 inbox/ 目录(或指定路径)中的待上传资料
  • 自动在云端创建同名 Notebook(已存在则复用)
  • 自动上传 Source,回写 notebook_id、source_id、sync_status 到本地
  • 支持批量处理,文件间自动节流
  • 本地 + 云端双重去重,防止重复上传
  • 自动重试(最多 3 次,退避递增),失败分类报告
  • 成功上传后自动归档到 processed/
  • 输出结构化 JSON summary,便于追踪和排错

快速开始

批量入库(扫描整个 inbox)

python ~/.openclaw/skills/notebooklm-intake/scripts/intake.py

指定单个文件或目录

python ~/.openclaw/skills/notebooklm-intake/scripts/intake.py --path "<文件或目录路径>"

确认归档重复内容

python ~/.openclaw/skills/notebooklm-intake/scripts/intake.py --archive-duplicates

输出说明

脚本输出结构化 JSON,包含四个部分:

字段说明
summary本次处理总体统计(扫描数、成功数、失败数等)
pending_archive_confirmation等待确认归档的重复内容列表
results逐条处理结果(含状态、notebook_id、source_id、归档路径)
projects本次处理涉及的项目 metadata 快照

结果状态说明:

状态含义
synced首次上传成功
synced_after_retry重试后上传成功
already_synced已有云端记录,跳过上传
failed上传失败(含错误类型和原因)
skipped因前序 auth 错误而跳过

支持的文件类型

类型扩展名
文档.pdf .txt .md .doc .docx
表格.xls .xlsx .csv .tsv
音频.mp3 .wav .m4a
视频.mp4 .mov .avi
链接/网页.url .webloc .html

错误处理

错误类型行为
auth_error立即停止所有后续处理,提示重新登录
notebook_conflict云端存在多个同名 Notebook,报错等待人工介入
source_conflict云端存在多个同名 Source,报错等待人工介入
source_upload_error自动重试,最多 3 次
network_error自动重试,最多 3 次
unknown_error自动重试,最多 3 次

本地 Metadata 字段

每个上传资料在 projects/<项目名>/project.json 中会记录:

字段说明
project_name从文件名(不含扩展名)派生
source_name原始文件名
source_path文件绝对路径(归档后自动更新)
sync_statuspending_cloud_upload / synced / failed 等
notebook_idNotebookLM 云端 notebook UUID
source_idNotebookLM 云端 source UUID
source_fingerprint基于路径、大小、修改时间的 SHA256 指纹(前 16 位)
notes状态备注或错误信息

notebooklm-output

功能

  • 从本地项目索引匹配目标项目,校验云端同步状态
  • 调用 NotebookLM 云端 API 生成 9 种输出类型
  • 自动下载生成结果到本地统一输出目录
  • JSON 类型(测验、抽认卡、思维导图)自动转译为可交互的 HTML 文件
  • 弹出本地 GUI 进度窗口,实时展示任务状态
  • 媒体类型(音频、视频)使用专用轮询下载策略,绕过 CLI 已知 bug
  • 支持中英文双语界面(--language zh / --language en)

支持的输出类型

输出类型文件格式说明
report.mdMarkdown 报告
quiz.json → .html可交互测验(选择题、即时判分、解析)
flashcards.json → .html可交互抽认卡(3D 翻卡、键盘快捷键)
mind-map.json → .html可交互思维导图(Markmap 渲染,展开/收起/缩放)
data-table.csv结构化数据表
slide-deck.pdf幻灯片
infographic.png信息图
audio-overview.mp3音频总结(默认 brief 格式)
video-overview.mp4视频总结

快速开始

查询项目

python ~/.openclaw/skills/notebooklm-output/scripts/output.py inspect --project "<项目名>"

生成输出(中文,默认)

python ~/.openclaw/skills/notebooklm-output/scripts/output.py generate --project "<项目名>" --type "<输出类型>"

生成输出(英文)

python ~/.openclaw/skills/notebooklm-output/scripts/output.py generate --project "<项目名>" --type "<输出类型>" --language en

--language 控制:GUI 界面语言、输出文件名标签、HTML 交互页面文本、云端生成内容的语言。

分离式任务流

脚本按输出类型自动选择不同的执行路径:

非媒体类型(report / quiz / flashcards / mind-map / data-table / slide-deck / infographic):

  1. 使用 --wait 提交生成任务(CLI 自行等待完成)
  2. 直接下载产物
  3. JSON 类型自动转译为可交互 HTML

媒体类型(audio-overview / video-overview):

  1. 使用 --no-wait 提交(立即返回 task_id)
  2. 先等 30 秒,然后每 15 秒尝试下载,直到成功或超时(15 分钟)

媒体类型完全绕过 notebooklm artifact wait,因为其内部 _is_media_ready() 对 video 存在已知 bug。

GUI 进度窗口

执行生成任务时会自动弹出 Tkinter 进度窗口(620×320,置顶),实时展示:

  • 项目名、输出类型
  • 当前阶段、任务 ID
  • 状态、保存路径
  • 已耗时、错误信息

窗口语言随 --language 参数切换。任务完成后窗口自动关闭(成功延迟 5 秒,失败延迟 8 秒)。

JSON → HTML 自动转译

quiz、flashcards、mind-map 三种类型在下载 JSON 后会自动转译为可交互 HTML:

类型HTML 特性
quiz多选题界面、即时判对错、显示正确答案和解析、计分、重做
flashcards3D 翻卡效果、键盘快捷键(空格翻面、方向键切换)、进度显示
mind-mapMarkmap 交互式树图、展开/收起/适应窗口、完全离线可用

mind-map 的 HTML 内联了 D3.js 和 Markmap 库,生成的文件完全自包含,无需网络即可打开。HTML 页面的按钮文字也随 --language 切换中英文。

超时配置

类型超时时间
媒体类型(audio/video)900 秒(15 分钟)
重型类型(slide-deck/infographic)600 秒(10 分钟)
其他类型300 秒(5 分钟)

输出文件命名

{项目名}-{类型标签}-{YYYY-MM-DD_HH-MM}{扩展名}
  • 中文(默认):我的项目-报告-2026-04-07_14-30.md
  • 英文(--language en):my-project-Report-2026-04-07_14-30.md

在新机器上复刻

每个 skill 都有独立的复刻指南(中英双语),包含完整的文件内容、部署步骤和 Smoke test 流程:

复刻顺序:先 intake,再 output(output 依赖 intake 创建的项目数据)。

脚本会自动检测部署路径,按标准目录结构放置即可,无需手动修改代码中的路径。


当前状态

两个 skill 均已完成 MVP,真实云端链路已跑通:

  • intake:批量入库、去重、重试、归档全流程已通过真实业务测试
  • output:全部 9 种输出类型已通过真实云端生成 + 下载测试

目前仅为个人测试通过的版本,如使用中遇到问题欢迎随时提 Issue,会不定期更新和维护。

致谢

  • 本项目的 NotebookLM 云端通信能力基于
    teng-lin/notebooklm-py 提供的非官方 Python API 与 CLI 实现。
  • 部分与 NotebookLM 交互的实现思路和代码结构,参考并改写自该项目的相关模块,具体来源已在代码注释中标明。
  • 感谢原作者 @teng-lin 对 NotebookLM 生态的探索与封装工作。

许可证

本项目使用 MIT License 开源。

// HOW IT'S BUILT

KEY FILES

notebooklm-intake/SKILL.mdREADME.md

// REPO STATS

1 stars