全部技能 / 内容创作 / qiaomu-anything-to-notebooklm
内容创作 · joeseesun/qiaomu-anything-to-notebooklm

qiaomu-anything-to-notebooklm

多源内容智能处理器:支持微信公众号、网页、YouTube、播客(小宇宙/喜马拉雅)、PDF、Markdown等,自动上传到NotebookLM并生成播客/PPT/思维导图等多种格式。支持深度分析模式和飞书文档自动创建

风险提醒:红色 · 谨慎使用AI 侦查报告
作者 joeseesunGitHub joeseesun/qiaomu-anything-to-notebooklm ↗Stars 5994许可 MIT(仓库根 LICENSE 首行 'MIT License'、'Copyright (c) 2026 Joe';README 徽标 Licensed MIT)commit cea6ceee8c
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

本体是「巨型 SKILL.md 路由表 + 少量自有脚本 + 大量外部 CLI/MCP」的组合:SKILL.md 用输入特征表把 15+ 类内容源映射到不同的取内容通道,再把统一的上传/生成委托给 notebooklm CLI。

SKILL.md
| `https://mp.weixin.qq.com/s/` | 微信公众号 | MCP 工具抓取 |
注:同表还给出 xiaoyuzhoufm/ximalaya/bilibili → Get笔记 API 转写、x.com → 内置代理级联、付费网站 → 付费墙绕过、文件后缀 → markitdown、无 URL 无路径 → WebSearch 等分支;表是行为契约,真正的判定代码只有 main.py 的 detect_input_type()。

自带 CLI(main.py)的覆盖面远小于 SKILL.md 宣称:代码只处理 epub / document / podcast / x_twitter / url 五类,其余类型直接报「不支持的输入类型」。

main.py
不支持的输入类型: {input_type}
注:detect_input_type() 却会返回 weixin / image / audio / zip / office / search 等值,这些分支不在 main(): 微信靠外部 MCP、图片/音频/Office/ZIP 靠宿主调 markitdown、搜索靠宿主 WebSearch——即宣称能力一半以上由宿主工具兜底,而非本仓代码。

播客/B站转写走 Get笔记(得到)三套 API:OpenAPI 建链接笔记 → 轮询任务进度(最多 40×30s)→ Web API 取全文,最后落 TXT。

scripts/get_podcast_transcript.py
for i in range(40):
注:三处端点分别出现在 getnote_request(openapi.biji.com)、refresh_jwt(notes-api.biji.com)、get_note_transcript(get-notes.luojilab.com);凭证是环境变量 GETNOTE_API_KEY/GETNOTE_CLIENT_ID + ~/.claude/skills/getnote/tokens.json 里的 refresh_token,脚本会把刷新后的 token 写回该文件。

X/Twitter 与付费墙网页靠 fetch_url.sh 的级联:先用第三方代理服务(r.jina.ai、defuddle.md)换 Markdown,失败再伪装 Googlebot/Bingbot UA 与 X-Forwarded-For、Referer、AMP、JSON-LD,最后 archive.today / Google Cache / npx agent-fetch。

scripts/fetch_url.sh
# 1a. r.jina.ai — wide coverage, preserves image links, often bypasses paywalls
注:域名白名单硬编码在脚本里(GOOGLEBOT_DOMAINS / BINGBOT_DOMAINS / FACEBOOK_REF_DOMAINS / AMP_DOMAINS / PAYWALL_DOMAINS),「绕过策略(6 层级联)」是 README 的核心卖点。

抓到的内容统一交给外部 notebooklm CLI(notebooklm-py)完成上传与生成,本仓不实现 NotebookLM 协议。

main.py
['notebooklm', 'create', title],
注:同文件还有 ['notebooklm', 'source', 'add', file_path, '--title', title]、['notebooklm', 'ask', question]、['notebooklm', 'source', 'add', input_arg] 三处调用点;SKILL.md 的意图映射表把「生成播客/PPT/思维导图/Quiz/视频/报告/信息图/数据表/闪卡」翻译成 generate + artifact wait + download 三段式命令。

深度分析模式是固定模板的三轮递进提问(4+5+3=12 问,或 SKILL.md 里写的 10 问),逐问调 notebooklm ask、每次间隔 1.5 秒,结果落 /tmp/*_analysis.json。

main.py
- 第一轮(4题):建立整体认知框架
注:问题模板按内容类型分叉(epub/document、youtube、其它),并用「完全基于已上传的文档内容回答,不要搜索网络」压制 NotebookLM 联网;main.py 的 ask_round() 每问 time.sleep(1.5)。

可选产物「飞书文档」不是自己调 API,而是委托外部 lark-cli:把问答格式化成 Markdown 后执行 lark-cli docs +create。

main.py
['lark-cli', 'docs', '+create', '--title', title, '--markdown', markdown_content],
注:本仓只做 Markdown 拼装(format_feishu_markdown)与子进程调用;lark-cli 是否安装、用哪套飞书凭证不在本仓管辖内。

微信公众号抓取依赖另一个仓库的 MCP 服务器(Playwright 浏览器模拟),install.sh 会在 skill 目录内 git clone 它,并要求用户手改 Claude 配置。

install.sh
git clone https://github.com/Bwkyd/wexin-read-mcp.git "$MCP_DIR"
注:SKILL.md 直接给出 ~/.claude/config.json 的 mcpServers 片段指向 <skill>/wexin-read-mcp/src/server.py;但本 pin 的仓库里根本没有 wexin-read-mcp 目录(只有 feishu-read-mcp),即该能力依赖运行时克隆,见 second_pass。

另附一个与本 Skill 主流程无直接耦合的飞书读 MCP 子包(FastMCP + Playwright),提供 read_feishu_doc / get_doc_info 两个工具。

feishu-read-mcp/src/server.py
mcp = FastMCP("feishu-reader")
注:名字/目录与 install.sh 克隆的 wexin-read-mcp 不同,SKILL.md 与安装流程都没提到它——属仓库内孤立资产,见 second_pass。

YouTube 被列为「最重要」的特殊规则:直接传 URL 给 NotebookLM,禁止任何本地字幕下载/转写手段。

SKILL.md
- **禁止**使用 yt-dlp、yt-search-download、whisper、浏览器自动化等手段下载字幕
注:理由写在同一段:NotebookLM 原生支持 YouTube,会自动提取字幕和元数据——这条规则把「省步骤」写成了硬禁令(🔴 标记)。

2核心能力

01多源类型自动识别(URL 域 / 文件后缀 / 关键词三分支)
02付费墙/反爬绕过级联(代理服务 → 搜索引擎 UA 伪装 → Referer/AMP/JSON-LD → 存档 → 缓存 → 本地 agent-fetch)
03播客/B站转写(Get笔记 API 建任务、轮询、取全文并落 TXT)
04YouTube 直传 NotebookLM(原生字幕提取,禁本地转写)
05自然语言 → NotebookLM 生成命令映射(播客/PPT/思维导图/Quiz/视频/报告/信息图/数据表/闪卡)
06默认最小动作纪律:没有明确指令就只上传不生成
07深度分析模式:三轮递进提问 + 结构化 JSON 输出(可选飞书文档)
08EPUB 走 ebooklib+BeautifulSoup 直提文本(刻意避开 Calibre)
09自带 13 项环境自检(依赖模块、CLI、MCP 文件、MCP 配置、NotebookLM 认证)
10一键安装脚本(Python 版本校验、克隆 MCP、pip 依赖、Playwright chromium、安装 notebooklm CLI)

3外部依赖

类型依赖
clinotebooklm(notebooklm-py CLI)
clipython3 ≥ 3.9
cligit
clicurl
climarkitdown(Microsoft)
clilark-cli(飞书文档 CLI)
clinpx(agent-fetch 兜底)
apiGet笔记 / 得到(笔记与转写)
apiNotebookLM(Google)
network第三方抓取代理/存档
network被绕过站点(付费墙/社交)
network飞书(读取:Playwright 浏览器抓文档;写入:lark-cli)
network微信公众号(经外部 MCP)
packagePython 依赖(MCP 与转换链)
packagepip 直装 git 源

4风险提醒 风险提醒:红色 · 谨慎使用

风险提醒:红色 · 谨慎使用
  • 付费墙绕过与浏览器模拟是核心能力,属访问控制规避 — fetch_url.sh 伪装搜索引擎 UA/XFF/Referer、走 AMP 与 archive.today;微信/飞书用 Playwright 无头浏览器(--no-sandbox)绕过反爬与登录墙。法律/ToS 风险由使用者承担,README 只写『仅限个人学习研究』。
  • 凭证面分散且含 token 文件写回 — GETNOTE_API_KEY/GETNOTE_CLIENT_ID 来自环境变量,~/.claude/skills/getnote/tokens.json 会被读取并在刷新后覆写;任何继承同一环境的子进程都能拿到这些值。
  • 被抓 URL 会被交给第三方代理 — r.jina.ai、defuddle.md、archive.today 都会收到完整目标 URL(乃至页面内容),对敏感或内网可达链接是信息外泄面。
  • 供应链与自检盲区 — install.sh 用 pip 从 git+github 直装 notebooklm-py、npx 首次运行会拉 agent-fetch、并从第三方仓库克隆 MCP;自带的 feishu-read-mcp 因缺少 Optional 导入实际无法启动,而 check_env.py 检查的是另一个不存在的目录,自检给不出可信结论。
  • 文档与实现多处漂移,误导使用与排障 — 内容源编号重复、深度分析问题数 10/12 不一、6 级级联有 2 级不可达、仓库结构图列出不存在目录——按文档排障会走进死路。
  • 内容正文原样进上下文,无来源可信度分级 — 抓回的网页/推文/转录文本直接交给模型(含后续上传 NotebookLM),页面内的指令性文本构成 prompt injection 面,SKILL.md 未给防护约定。
风险提醒:红色,谨慎使用。判红属「策略/能力级」而非「恶意植入级」——本仓代码干净可读、无混淆、无硬编码外发凭证。命中红色范式的两条:①【反反爬/绕过】付费墙绕过是本 skill 的显式卖点:fetch_url.sh 伪装 Googlebot/Bingbot UA 与 X-Forwarded-For、伪造 Referer、走 AMP/archive.today,SKILL.md 与 README 都把它写成核心能力(「自动检测并绕过 …300+ 付费网站的付费墙」),目标站点清单硬编码 49 个域名;②【批量定向采集/浏览器模拟】微信与飞书两条 Playwright 无头浏览器路径(含 --no-sandbox)用于规避站点的反爬与登录墙。此外还叠加:凭证读取(GETNOTE_API_KEY/CLIENT_ID + tokens.json 读且写回 + notebooklm 登录态)、第三方代理外发(r.jina.ai/defuddle.md/archive.today 会收到被抓 URL)、远程包安装(pip 从 git+github 直装、npx 拉起 agent-fetch、git clone 外部 MCP 仓库)。注意:本分级只描述行为面,不评价作者;README 已自述「仅限个人学习研究」。

5第二遍独立确认

  • [ok] skill.path 定位与 commit 一致性 — 单 skill 仓库,SKILL.md 在仓库根,故 path='.';工作副本 HEAD cea6ceee8cdcd01a573af5ae75c2d3cffc20650b,任务表 pin cea6ceee8cdc,PINS-b2.json 记 {dir: qiaomu-anything-to-notebooklm, commit: cea6ceee8cdc}。
  • [discrepancy] SKILL.md 宣称的内容源 vs main.py 实际覆盖 — SKILL.md/README 宣称 15+ 类源;main.py 的 main() 只有 epub/document/podcast/x_twitter/url 五个分支,其余(微信、图片、音频、Office、ZIP、搜索)不在本仓代码内,靠外部 MCP 与宿主工具完成。「不支持的输入类型」是代码里的真实兜底分支。
  • [discrepancy] README 结构图与实际文件树 — README 项目结构图与 SKILL.md 前置条件都列 wexin-read-mcp/(并给出 <skill>/wexin-read-mcp/src/server.py 的配置路径),但本 pin 仓库内不存在该目录(ls 报 No such file or directory),只有名称不同的 feishu-read-mcp/。该目录只在用户执行 install.sh 后由 git clone 产生;check_env.py 也检查这个不存在的路径。
  • [discrepancy] fetch_url.sh 的『6 层级联』是否真的可走完 — 第 4 级 archive.today 之后为无条件 `exit 75`(脚本在这里结束进程),Level 5(Google Cache)与 Level 6(agent-fetch)在代码上不可达;README 的『6 层级联』流程图因此比实际执行多两级。exit 75 的设计意图是让调用方去浏览器解 CAPTCHA 后重试,属有意为之,但副作用未在文档说明。
  • [discrepancy] feishu-read-mcp/src/server.py 是否可运行 — 该文件使用 `cookies_str: Optional[str] = None` 标注,但全文只 import sys / pathlib.Path / fastmcp / logging,没有 from typing import Optional——注解在函数定义时求值,导入即 NameError。本仓不含该服务器的测试,check_env.py 也不检查它(只查 wexin-read-mcp)。
  • [ok] 『13 项环境检查』是否属实 — check_env.py 累加结果共 13 项:Python 版本 1 + 核心模块 5(fastmcp/playwright/bs4/lxml/markitdown)+ Playwright 导入 1 + notebooklm/markitdown/git 三个 CLI 3 + MCP 文件 1 + MCP 配置 1 + NotebookLM 认证 1;与 README 的『13 项环境检查』一致。
  • [discrepancy] 深度分析问题数(SKILL.md 10 问 vs main.py / README 12 问) — SKILL.md 意图映射表写「自动生成10个问题并递归提问」、Step 4 的示例 JSON 也写 total_questions: 10;而 main.py 的模板是 4+5+3=12 问,README 场景 3 同样写「生成 12 个问题」(Step 4 另一处又是 10 问)。同一文档内自相矛盾。
  • [discrepancy] SKILL.md 章节编号连续性与内容重复 — 『支持的内容源』下出现两个 5(付费墙、YouTube)、两个 4(Office 文档、播客/音频平台)、两个 5(播客/音频平台、电子书与文档),编号重复且与 README 的 15+ 计数对不上;YouTube 与付费墙内容还被重复叙述一次(含一段孤立的绕过策略 5 条列表挂在 YouTube 规则下)。

6结论

  • 把「取内容 → 上传 → 生成」三段串成一条自然语言流水线,覆盖内容源确实很宽(含书籍/播客/推文/搜索关键词)
  • 每个需要外部能力的地方都明确委托而不是自研(notebooklm/lark-cli/markitdown/外部 MCP),仓库体积小、可读性高
  • YouTube 直传的产品判断正确:能省掉本地字幕下载/转写整条链,并把这条写成硬禁令避免模型走弯路
  • 保守的默认动作:没有明确指令就只上传不生成,避免误触发付费/额度消耗的生成任务
  • 配了环境自检与安装器,降低上手门槛(13 项检查会明确指出缺哪一环)
  • 适合:适合个人学习场景做「一次性把资料变成可消费产物」:把微信公众号/播客/B站/长文/PDF/EPUB 丢给 NotebookLM 出播客、PPT、思维导图、Quiz;也适合想要「深度分析模式」固定 12 问三轮递进模板、并把问答沉淀成飞书文档的人。要求本机已能登录 NotebookLM(notebooklm login),并接受把内容上传到 Google 服务。
    不适合:不适合企业/合规敏感环境:付费墙绕过、第三方代理外发与 Playwright 反爬都触碰 ToS 与数据外发红线,音频/文档会离开本机。不适合把此 skill 当稳定产品依赖:文档与代码多处漂移、自检覆盖不到自带 MCP、fetch_url.sh 后两级级联不可达。也不适合只想离线处理本地文档的用户(核心能力全部依赖联网与外部 CLI)。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-15
    方式 A · 人下载镜像包下载 qiaomu-anything-to-notebooklm.tar.gz
    sha256: 8f32da1fd86d07e0…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit cea6ceee8c;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库joeseesun / joeseesun/qiaomu-anything-to-notebooklm
    Stars5994
    最近推送2026-04-28
    本 skill commitcea6ceee8c
    许可MIT(仓库根 LICENSE 首行 'MIT License'、'Copyright (c) 2026 Joe';README 徽标 Licensed MIT)
    本站信息
    收录日期2026-09-06
    分类内容创作
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近