ホーム / 全スキル / コンテンツ制作 / qiaomu-anything-to-notebooklm
コンテンツ制作 · joeseesun/qiaomu-anything-to-notebooklm

qiaomu-anything-to-notebooklm

マルチソース対応のインテリジェントコンテンツプロセッサ:WeChat公式アカウント(微信公衆号)、Webページ、YouTube、ポッドキャスト(小宇宙/喜马拉雅)、PDF、Markdownなどをサポートし、NotebookLMへ自動アップロードしてポッドキャスト、スライド(PPT)、マインドマップなどの多彩な形式を生成します。ディープ分析モードやLark/Feishuドキュメントの自動作成にも対応しています。

L5 厳格管理 · 隔離環境と厳格な監査V2 人間監査済規約/コンプライアンス認証情報/セッションコマンド実行依存関係インストールネットワーク通信ファイル書き込みDual-pass Audit
Author joeseesunGitHub joeseesun/qiaomu-anything-to-notebooklm ↗Stars 5994License MIT(仓库根 LICENSE 首行 'MIT License'、'Copyright (c) 2026 Joe';README 徽标 Licensed MIT)Commit cea6ceee8c
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

本リポジトリは「巨大なSKILL.mdルーティングテーブル+少数の独自スクリプト+多数の外部CLI/MCP」で構成されており、SKILL.mdの入力特性テーブルにより15種類以上のコンテンツソースを各抽出パイプラインへルーティングし、統一されたアップロードおよび生成処理をnotebooklm CLIに委譲します。

SKILL.md
| `https://mp.weixin.qq.com/s/` | 微信公众号 | MCP 工具抓取 |
同テーブルには、xiaoyuzhoufm/ximalaya/bilibili → GetNote (得到/Get笔记) APIによる文字起こし、x.com → 内蔵プロキシカスケード、有料サイト → ペイウォール回避、拡張子 → markitdown、URL/パスなし → WebSearch などの分岐も定義されています。テーブルは動作規約として機能し、実際の判定コードはmain.pyのdetect_input_type()のみに実装されています。

付属のCLI(main.py)がカバーする範囲はSKILL.mdの記載より大幅に狭く、コード上で処理されるのはepub、document、podcast、x_twitter、urlの5種類のみで、その他は「未対応の入力タイプ」としてエラーになります。

main.py
不支持的输入类型: {input_type}
detect_input_type()自体はweixin、image、audio、zip、office、searchなどの値を返しますが、これらはmain()の分岐に存在しません。WeChatは外部MCP、画像/音声/Office/ZIPはホスト側のmarkitdown、検索はホストのWebSearchに委ねられており、謳われている機能の大半は本リポジトリのコードではなくホスト側のツールに依存しています。

ポッドキャストおよびBilibiliの文字起こしは、GetNote(得到/Get笔记)の3系統のAPI(OpenAPIでのリンクノート作成 → タスク進捗のポーリング[最大40回×30秒] → 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)の3箇所です。認証情報は環境変数GETNOTE_API_KEY/GETNOTE_CLIENT_IDと~/.claude/skills/getnote/tokens.json内のrefresh_tokenを利用し、更新されたトークンは同ファイルに書き戻されます。

X/Twitterおよびペイウォール付きWebページの取得は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]の3つの呼び出し箇所があります。SKILL.mdのインテントマッピングテーブルにより、「ポッドキャスト/PPT/マインドマップ/クイズ/動画/レポート/インフォグラフィック/データテーブル/フラッシュカードの生成」がgenerate + artifact wait + downloadの3段階コマンドに変換されます。

ディープ分析モードは、固定テンプレートによる3ラウンドの段階的質問(4+5+3=12問、またはSKILL.md記載の10問)を実行し、1.5秒間隔でnotebooklm askを順次呼び出して結果を/tmp/*_analysis.jsonに出力します。

main.py
- 第一轮(4题):建立整体认知框架
質問テンプレートはコンテンツ種別(epub/document、youtube、その他)に応じて分岐し、「Web検索を行わず、アップロードされたドキュメントの内容のみに基づいて回答すること」という指示でNotebookLMのWeb検索を抑制します。main.pyのask_round()では各質問の間にtime.sleep(1.5)が設定されています。

任意の出力形式である「Lark/Feishuドキュメント」はAPIを直接叩くのではなく外部のlark-cliに委託されており、Q&AをMarkdownに整形した後にlark-cli docs +createを実行します。

main.py
['lark-cli', 'docs', '+create', '--title', title, '--markdown', markdown_content],
本リポジトリ側ではMarkdownの組み立て(format_feishu_markdown)とサブプロセスの呼び出しのみを行い、lark-cliのインストール有無や認証情報の管理には関与しません。

WeChat公式アカウントのスクレイピングは別リポジトリのMCPサーバー(Playwrightによるブラウザエミュレーション)に依存しており、install.shによってスキルディレクトリ内に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を参照するようになっています。しかし、固定されたリポジトリ内にはwexin-read-mcpディレクトリが存在せず(feishu-read-mcpのみ存在)、実行時のクローンに依存しています。

本スキルのメインフローとは直接結合していない独立したFeishu読み取りMCPサブパッケージ(FastMCP + Playwright)が同梱されており、read_feishu_docとget_doc_infoの2つのツールを提供します。

feishu-read-mcp/src/server.py
mcp = FastMCP("feishu-reader")
install.shがクローンするwexin-read-mcpとは名称およびディレクトリが異なり、SKILL.mdやインストール手順にも記載がないため、リポジトリ内の孤立したアセットとなっています。

YouTubeは「最重要」の例外ルールとして定義されており、URLをNotebookLMに直接渡し、ローカルでの字幕ダウンロードや文字起こし処理は一切禁止されています。

SKILL.md
- **禁止**使用 yt-dlp、yt-search-download、whisper、浏览器自动化等手段下载字幕
同セクションには「NotebookLMがYouTubeをネイティブサポートしており、字幕やメタデータを自動抽出するため」と理由が明記されており、無駄な処理を省くための最適化が絶対禁止ルール(🔴マーク)として規定されています。

2コア機能

01マルチソース自動判別(URLドメイン / ファイル拡張子 / キーワードの3分岐)
02ペイウォール・スクレイピング対策回避カスケード(プロキシサービス → 検索エンジンUA偽装 → Referer/AMP/JSON-LD → Webアーカイブ → キャッシュ → ローカルagent-fetch)
03ポッドキャスト/Bilibili文字起こし(GetNote APIによるタスク作成、ポーリング、全文取得およびローカルTXT保存)
04YouTube URLのNotebookLM直接連携(ネイティブ字幕抽出を活用しローカル処理を禁止)
05自然言語からNotebookLM生成コマンドへのマッピング(ポッドキャスト/PPT/マインドマップ/Quiz/動画/レポート/インフォグラフィック/データテーブル/単語カード)
06デフォルトの最小アクション規律(明確な指示がない場合はアップロードのみ行い生成はスキップ)
07ディープ分析モード:3ラウンドの段階的質問+構造化JSON出力(オプションでLark/Feishuドキュメント作成)
08ebooklibとBeautifulSoupを用いたEPUBテキスト直接抽出(Calibreへの依存を明示的に排除)
0913項目の環境自己診断機能(依存モジュール、CLI、MCPファイル、MCP設定、NotebookLM認証)
10ワンクリックインストールスクリプト(Pythonバージョン検証、MCPクローン、pip依存関係、Playwright Chromium導入、notebooklm CLIセットアップ)

3外部依存関係

KindDependency / Endpoint
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推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
隔離環境で実行、都度明示的な認可
管理者向け
厳格な認可、全量監査、コンプライアンス確認
判定根拠(ファイルパスと抜粋)
  • SKILL.md / 脚本参数: 自動検出の回避、ホストサンドボックスの無効化、またはSSL証明書検証のスキップを含んでいます。
  • SKILL.md / 会话存储: ブラウザのユーザーログイン状態やセッションCookieを読み取る、または再利用します。
  • scripts/: ローカルスクリプトまたはコマンドの実行: install.sh(インストール時にユーザーが実行: pip install、playwright install chromium、外部MCPのgit clone)。
  • scripts/ 或 SKILL.md: 外部言語パッケージ依存関係の動的インストールを宣言しています。
  • 网络端点: 外部ネットワークアクセスの宣言: openapi.biji.com / notes-api.biji.com / get-notes.luojilab.com(GetNote: ノート作成、トークン更新、文字起こし取得)。
  • 本地工作目录: ファイル読み書きおよび成果物出力: /tmp/*.txt(各種ソースのローカル保存先。SKILL.mdにはシステム再起動時に自動削除される旨が明記されています)。
監査ノート: 本判定におけるレッド区分は「悪意あるコードの混入」ではなく「ポリシー・機能仕様レベルの挙動」によるものです。リポジトリのコードは難読化されておらず可読性も高く、認証情報のハードコード送信もありません。しかし、以下の2点においてレッド判定の基準に該当します:①【スクレイピング対策・ペイウォール回避】ペイウォールの回避がスキルのセールスポイントとして明示されており、fetch_url.shではGooglebot/BingbotのUAやX-Forwarded-Forヘッダーの偽装、Referer偽造、AMP/archive.today経由の取得を行い、SKILL.mdやREADMEでも中核機能(「300以上の有料サイトのペイウォールを自動検出・回避」)として記載され、49の対象ドメインがハードコードされています。②【大規模ターゲティング収集/ブラウザエミュレーション】WeChatおよびLark/Feishuの取得処理でPlaywrightヘッドレスブラウザ(--no-sandbox付き)を用い、サイト側のスクレイピング対策やログイン壁を回避しています。さらに、認証情報の読み取り(GETNOTE_API_KEY/CLIENT_IDの利用およびtokens.jsonの読み書き、NotebookLMのセッション情報利用)、サードパーティプロキシへのデータ送信(r.jina.ai、defuddle.md、archive.todayへの取得URL送信)、リモートパッケージのインストール(git+githubからのpip直接インストール、npxによるagent-fetch起動、外部MCPリポジトリのgit clone)が重複しています。なお、この分類は挙動の客観的事実のみを示すものであり作者の意図を評価するものではありません。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結論

  • 「コンテンツ取得 → アップロード → 生成」の3工程を単一の自然言語パイプラインに統合し、書籍、ポッドキャスト、ツイート、検索ワードまで極めて幅広いソースをカバーしています。
  • 外部機能が必要な箇所は自前実装を避け、定評あるツール群(notebooklm、lark-cli、markitdown、外部MCP)に明確に委任しているため、コードベースが小さく可読性に優れています。
  • YouTubeをNotebookLMに直接渡す設計判断が合理的であり、ローカルでの字幕ダウンロードや文字起こしパイプラインを排除し、厳格な禁止ルールを設けることでモデルの無駄な処理を防止しています。
  • 控えめなデフォルト動作を採用しており、明示的な指示がない限りアップロードのみを実行して不要な課金やクォータ消費を伴う生成処理を回避します。
  • 環境診断ツールとインストーラーが整備されており、13項目のチェックで不足している要素を具体的に明示するため導入のハードルが低減されています。
  • 最適な用途: 個人学習において「多種多様な資料をワンストップで要約・成果物に変換したい」ユースケースに最適です。WeChat公式アカウント、ポッドキャスト、Bilibili動画、長文Web、PDF、EPUBなどをNotebookLMに投入し、音声概要、スライド、マインドマップ、クイズを生成できます。また、固定12問の3ラウンド構造で深掘りしLark/Feishuドキュメントにまとめたいユーザーにも適しています。実行環境でNotebookLMの認証(notebooklm login)が完了しており、コンテンツをGoogleのクラウドサービスへ送信することを許容できる環境が前提となります。
    不向きな用途: 企業やコンプライアンス要件の厳しい環境には適しません。ペイウォール回避、サードパーティプロキシ経由の送信、Playwrightによる反スクレイピング対策回避は利用規約(ToS)や外部送信ポリシーに抵触する可能性があり、音声や文書が端末外に送信されます。また、ドキュメントとコードの乖離、自己診断機能が同梱MCPをカバーしていない点、fetch_url.shの後半カスケードに到達不能なパスがある点などから、安定した本番製品としての利用には向きません。オフライン環境のみでローカル文書を処理したいユーザーにも不向きです(主要機能のすべてがインターネット接続と外部CLIに依存しています)。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload qiaomu-anything-to-notebooklm.tar.gz
    sha256: 8f32da1fd86d07e0…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit cea6ceee8c.