notebooklm
Skill0 starsChanged 15 days agoMITView on GitHub
通过 Bridge 操作真实 Chrome 里的 NotebookLM(Gemini Notebook)网页版——新建笔记本、上传来源(含视频/音频/图片/PDF)、提问取回答、生成并下载 Studio 产物(音频概览/视频/演示文稿/思维导图/报告/闪卡/测验/信息图/数据表格)。当需要让 NotebookLM 分析视频、音频、图片或文档,或要把网页/YouTube 作为来源喂给它时使用。注意:网页版只接受本地文件上传(走 CDP 注入),不依赖任何非官方 API。
- Sends data out
69 other projects use a version of this.
Adopted by
Most recently taken up by
- proyecto26/notebooklm-ai-plugintheir own version, first seen Nov 8, 2026
- LuisSambrano/antigravity-configtheir own version, first seen Nov 8, 2026
- delorenj/skillstheir own version, first seen Nov 7, 2026
- roomi-fields/notebooklm-skilltheir own version, first seen Nov 6, 2026
- TsinHzl/claude-code-configtheir own version, first seen Nov 1, 2026
- Mathews-Tom/armorytheir own version, first seen Nov 1, 2026
Used with
Projects with it also use django-verification, django-security and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
mstuder-slalomSkilldjango-verification
Verification loop for Django projects: migrations, linting, tests with coverage, security scans, and deployment readiness checks before release or PR.
Also in 3 projects that use this
mstuder-slalomSkilldjango-security
Django security best practices, authentication, authorization, CSRF protection, SQL injection prevention, XSS prevention, and secure deployment configurations.
Also in 3 projects that use this
sirakinbSkilllast30days
Research a topic from the last 30 days on Reddit + X + Web, become an expert, and write copy-paste-ready prompts for the user's target tool.
Also in 4 projects that use this
younghaiSkillgoogle-calendar
Google Calendar 일정 조회, 검색, 등록. "일정", "스케줄", "캘린더" 등을 언급하면 자동 실행. Daily Note 작성, Weekly Review에 사용.
Also in 3 projects that use this
royaluniondesign-sysSkilldeployment-patterns
Deployment workflows, CI/CD pipeline patterns, Docker containerization, health checks, rollback strategies, and production readiness checklists for web applications.
Also in 3 projects that use this
LuisSambranoSkillfirecrawl
Deep web scraping, screenshots, PDF parsing, and website crawling using Firecrawl API
Also in 3 projects that use this
Other versions69 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 69
- teng-lin/notebooklm-py★ 20ksame name
- ArtemXTech/personal-os-skills★ 545same name
- sanjay3290/ai-skills★ 452same name
- Mathews-Tom/armory★ 340same name
- roomi-fields/notebooklm-mcp★ 229same name
- cclank/notebooklm-skill★ 140same name
- chendongqi/OPB-Skills★ 125same name
- walidboulanouar/Ay-Skills★ 90same name
- proyecto26/notebooklm-ai-plugin★ 65same name
- artemnovitckii/notebooklm-coach★ 61same name
59 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository10 other files it gives its agents.
- AGENTS.mdAGENTS.md
- bossSkill
- agent-browser-captchaSkill
- chatgptSkill
- agent-browser-debugSkill
- firefoxSkill
- linkedinSkill
- maimaiSkill
- agent-browser-bridgeSkill
- xhsSkill
The file
Files
NotebookLM(Gemini Notebook)via Bridge
用 Bridge 驱动真实 Chrome 的登录态操作 NotebookLM 网页版。不需要 API key、 不需要非官方库、不受官方 API 的上传格式白名单限制——网页版收视频、音频、图片。
前置条件(每次开始前检查)
- Bridge 就绪:
curl -s http://127.0.0.1:8778/status→extConnected:true - 网络出口必须在 NotebookLM 开放地区。未开放时会强制跳转
https://notebook.google/?location=unsupported(落地页标题是 Gemini Notebook 但进不去应用)。 香港 / 中国大陆实测不可用。美国节点可用。 切换(Clash Verge,external-controller127.0.0.1:9097,secretexamplepass):G=$(python3 -c "import urllib.parse;print(urllib.parse.quote('手动选择'))") curl -s -H "Authorization: Bearer examplepass" "http://127.0.0.1:9097/proxies/$G" \ | python3 -c "import json,sys;print('当前:',json.load(sys.stdin).get('now'))" # 列出 P3(日本/新加坡/美国) 的活节点 curl -s -H "Authorization: Bearer examplepass" "http://127.0.0.1:9097/providers/proxies/3.subscribe" \ | python3 -c "
import json,sys,re for x in json.load(sys.stdin).get('proxies',[]): n=x.get('name',''); h=(x.get('history') or [{}])[-1] if re.search(r'美国|US|日本|JP|新加坡|SG',n) and h.get('delay',0)>0: print(n, h['delay']) "
切换
curl -s -X PUT -H "Authorization: Bearer examplepass" -H "Content-Type: application/json"
"http://127.0.0.1:9097/proxies/$G" -d '{"name":"P3| 美国USLA-A"}'
切完**必须**验证出口变了:`curl -s -x http://127.0.0.1:7897 https://ifconfig.co/json`
注意延时测试为 0 的节点是死的,别选。
3. Chrome 登录了 Google 账号(PRO 订阅额度更高)。
## 路径约定
沿用根 SKILL.md「路径约定」:`<skill 目录>` = 本文件所在目录,命令行入口 `<bb>` = `node <skill 目录>/../scripts/bb.mjs`。
本子 skill 脚本自包含,不依赖 CLI。
```bash
NB="<skill 目录>" # 本目录
export BRIDGE_TOKEN=$(cat ~/.chrome-agent-bridge/token)核心脚本(优先直接跑,禁止自己重造)
upload.mjs / ask.mjs / scripts/nblm-*.mjs 已处理 NotebookLM 的坑(文件输入需先点「添加来源」再点「上传文件」并轮询、严格 CSP 下页面内 JS 走 CDP、Studio 产物生成等待)。自己写脚本容易卡在这些交互时序上,也会绕过既有等待策略。 需求不匹配时先改参数;确实缺功能才以现有脚本为模板复制改写,并在交付说明注明来源。
| 脚本 | 用途 |
upload.mjs | 上传本地文件到笔记本(含视频/音频/图片) |
ask.mjs | 提问并取回回答 |
上传文件
node "$NB/upload.mjs" <tabId> /path/to/a.mp4 /path/to/b.png
node "$NB/upload.mjs" --new "笔记本标题" <tabId> /path/to/file # 先新建笔记本输出 JSON:{ok, notebookUrl, sourcesBefore, sourcesAfter, files}。
sourcesAfter > sourcesBefore 即成功。
提问
node "$NB/ask.mjs" <tabId> "请总结这个视频的核心观点" --timeout 120000输出 JSON:{ok, notebookUrl, question, answer, citations}。
关键实现要点(踩过的坑,别改回去)
- file input 是懒加载的,必须点两次才出现
只点「添加来源」不够,还要再点「上传文件」按钮,
<input type=file>才被创建。upload.mjs的waitForFileInput()已处理(先点添加来源 → 再点上传文件 → 轮询)。 - 必须用 CDP
DOM.setFileInputFiles注入,伪造 DataTransfer 无效 用 JS 造new File()+dispatchEvent(new DragEvent('drop'))—— 事件能派发、dt.files.length也是 1,但 Angular 读不到内容,来源数不变。DOM.setFileInputFiles传真实文件路径才有效(需DOM.getDocument {pierce:true}DOM.querySelectorAll拿 nodeId)。
- 提问框是 Angular 受控组件
直接改
textarea.value不触发变更检测。必须用原生 setter:const setter = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,'value').set; setter.call(box, text); box.dispatchEvent(new Event('input',{bubbles:true})); - 抓回答别用「页面最长文本」兜底
会抓到 Studio 侧边栏(音频概览/演示文稿/思维导图/闪卡/测验/信息图/数据表格)。
正确容器:
.to-user-container .message-text-content。 - 页面有强 CSP(Trusted Type)
page.evaluate会报EVAL_ERROR: Evaluating a string as JavaScript violates...。 一律用scripts/cdp-eval.mjs(走 CDPRuntime.evaluate,不受 CSP 约束)。 - 域名会重定向:
notebooklm.google.com→notebook.google.com(产品改名 Gemini Notebook)。 判定失败看 URL 尾巴是不是?location=unsupported。
支持的文件格式(网页版 accept 实测)
- 视频:
.mp4 .avi .mpeg .3gp .3g2 - 音频:
.mp3 .m4a .aac .aif .aiff .aifc .amr .au .ogg .opus .ra .snd .wav .wma - 图片:
.png .jpg .jpeg .jpe .webp .gif .bmp .avif .heic .heif .jp2 .ico .tif .tiff - 文档:
.pdf .txt .md .docx .csv .pptx .epub
对比:官方/非官方 API 通道只收
.csv .docx .epub .md .markdown .pdf .pptx .txt(见 notebooklm-py_UPLOAD_FILE_EXTENSIONS),不收视频/图片。 所以要用视频/图片就必须走网页版 + Bridge,这正是本 skill 存在的理由。
典型流程:手机分享视频 → NotebookLM 分析
# 1) 手机发链接到 TG → watcher 落到 ~/inbox,URL 进 fetch-queue
# 2) 下载视频(yt-dlp;B站等需 cookie)
yt-dlp -o "$HOME/inbox/media/%(title)s.%(ext)s" "<url>"
# 3) 打开 NotebookLM 并上传
node "$NB/upload.mjs" --new "分析:xxx" <tabId> "$HOME/inbox/media/xxx.mp4"
# 4) 提问取回答
node "$NB/ask.mjs" <tabId> "总结这个视频的核心观点,列出关键时间点" 已知限制
- 视频/音频上传后需等 NotebookLM 转码,提问可能暂时看不到该来源,
等几分钟重试即可(来源区会显示
video_audio_call <文件名>表示已识别)。 - Studio 产物(音频概览/视频概览等)的生成与下载尚未脚本化,需人工点。
- 地区限制是硬门槛,换节点是唯一解法;换完记得验证出口 IP 真的变了。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

