NotebookLMのOSS版2ツールをClaude Maxのclaude -pで動かして比較してみた
NotebookLMのOSS版であるAnythingLLMとOpen Notebookを、Claude Maxの `claude -p` を生成エンジンにして動かし、比較した記録です。自作シムでOpenAI互換APIに見せかける構成、AnythingLLMで詰まった2箇所、Open NotebookのREST API全自動化、回答精度と所要時間の実測、そして規約や埋め込み・音声の限界までまとめました。
目次
はじめに
GoogleのNotebookLMを使っている方はいませんか。
手元の資料を放り込むと、出典付きで質問に答えてくれたり、要約やポッドキャストまで作ってくれる、とても便利なツールです。
私もよく使っています。
ただ、使っているうちに2つ引っかかる点が出てきました。
1つは、資料を全部Googleのクラウドに預ける形になること。
もう1つは、生成エンジンを自分で選べないことです。
「社外に出せない資料でも同じことがしたい」「どうせならClaude Maxの契約を生成エンジンに使えないか」と考えて、NotebookLMのOSS(オープンソース)版を自前で動かせるかを試してみました。
結論を先に言います。
自前で作ることは、できました。
ただ、正直に書くとNotebookLMをそのまま使う方がずっと簡単です。
社外に出せない機密情報を扱うのでなければ、わざわざ自前で組む必要はない、というのが私の率直な感想です。
とはいえ「ローカルで完結するNotebookLMもどき」が手元で動いたのは面白かったので、何をどう試して、どこで詰まったのかを淡々と共有します。
技術的な細部もそれなりに書きますが、コードは雰囲気だけ眺めて読み飛ばしても話が繋がるようにします。
この記事は、検証で実際に手を動かした記録(コミット履歴・ログ・設定ファイル)をもとに書いています。
検証環境はWindows 11 Home / Node v24 / Python 3.11 / claude CLI 2.1系で、検証日は2026年6月20〜21日です。
まず用語だけ整理します
専門用語が続くので、最初に一言ずつ噛み砕いておきます。
ここだけ押さえれば後は読めます。
- NotebookLM:手元の資料を読み込ませて、出典付きで質問に答えさせたり要約を作らせたりするGoogleのツール。今回はこの「OSS版」を自前で動かします。
- RAG:「手元の文書を検索してからAIに答えさせる」仕組みのこと。資料を覚えさせるのではなく、質問のたびに関連箇所を引っ張ってきてAIに渡します。
claude -p:Claude Codeを対話画面ではなく、コマンド一発で呼ぶ非対話モード(claude --printの略)。今回はこれをアプリの生成エンジンとして使います。- 埋め込み(embeddings):文章を「意味の近さで検索できる数字の列」に変換する処理。RAGの検索部分の心臓で、後述しますがclaudeでは賄えません。
全体の作戦:claude -p を生成エンジンに“化けさせる”
NotebookLMのOSS版は、たいてい「OpenAI互換のAPI」を生成エンジンとして指定できます。
そこを、自分のClaude Max契約に向けてやろう、というのが今回の作戦です。
間に小さな変換役(シム)を1枚かませます。
[OSS NotebookLMツール] --OpenAI互換API--> [自作シム :8080] --subprocess--> [claude -p (Max契約)]
│
├─ 埋め込み(embeddings) → claudeでは不可。各ツール側のローカル機能で補う
└─ 音声(TTS) → claudeでは不可。ポッドキャストは別TTSが必要
ここで早くも大事な前提が2つ出てきます。
claudeには埋め込みのAPIも、音声合成(TTS)のAPIもありません。
NotebookLMの「検索して答える」「ポッドキャストを作る」という看板機能のうち、生成(文章を書く部分)は claude -p で賄えますが、検索の心臓である埋め込みと、音声は別で用意する役割分担になります。
ここを最初に理解しておくと、後の話がすっと入ります。
間に挟む「自作シム」は、Claude Maxの claude -p をOpenAI互換のエンドポイントに見せかけるNode製の小さなプログラムです。
追加ライブラリなしの約150行で、別記事に分けて書きました。
本記事では「そういう変換役が1枚いる」とだけ理解してもらえれば大丈夫です。
比較したOSSツールは次の2つです。
どちらもライセンスはMITで、無料で使えます。
- AnythingLLM(Desktop版):Dockerすら要らないデスクトップアプリ。埋め込みもベクトル検索も内蔵。とにかく手軽。
- Open Notebook:Docker Composeで動く、NotebookLMに一番近い作りのOSS。
同じ検証用の文書(架空の社内規程を1枚でっち上げたもの)を両方に投入し、同じ質問を投げて、回答の精度と使い勝手を比べました。
ツール①:AnythingLLM(手軽だが、2か所ハマる)
AnythingLLMは公式サイトから AnythingLLMDesktop.exe(約370MB)を落として入れるだけのElectronアプリです。
Dockerもサーバーも要りません。
埋め込みモデル(all-MiniLM-L6-v2)とベクトルDB(LanceDB)を内蔵しているので、生成エンジンだけ自作シムに向ければ動く、という想定でした。
設定自体は簡単で、Settings → AI Providers → LLMでGeneric OpenAIを選び、Base URLにシムの http://localhost:8080/v1、モデル名に sonnet を手入力するだけです(Generic OpenAIはモデル一覧を自動取得しないので手入力になります)。
ここまではすんなり繋がりました。
ところが、文書を入れて質問すると「分かりません」しか返ってきません。
繋がっているのにRAGが効かない、という一番たちの悪い状態です。
原因を切り分けたところ、ハマりどころは2つありました。
ハマり1:エージェントモードは自作シムだと無言で失敗する
AnythingLLMのワークスペースは既定で「エージェントモード」になっています。
このモードのRAGは、AIが検索ツールを自分で呼び出して文書を取りに行く方式(function calling方式)でした。
ところが今回の自作シムは、テキストを生成するだけでツール呼び出しには対応していません。
結果、claudeは検索ツールを呼べず、文書を取得できないまま300秒待って力尽きていました。
backendのログに決定的な証拠が出ていました。
[AgentHandler] Start ...::generic-openai:sonnet
[AgentLLM - sonnet] Provider.stream (tooled) - will process this chat completion
Client took too long to respond, chat thread is dead after 300000ms
対処は、チャットモードを古典的な「Chat」に変えるだけです。
こちらは「先に文書を検索して、その結果をプロンプトに直接貼り付けてからAIに渡す」昔ながらの方式なので、ツール呼び出しができないシムでもちゃんと文脈が入ります。
ハマり2:内蔵の埋め込みが日本語に弱く、検索が無言で0件になる
Chatモードにしても、まだ文脈が空のままでした。
データベース(anythingllm.db)を直接覗いて切り分けたところ、
- 文書はワークスペースに紐付いている(1件)
- 埋め込みも成功している(チャンク2件がLanceDBにある)
- なのに検索結果は0件
という奇妙な状態でした。
真因は、内蔵の all-MiniLM-L6-v2 という埋め込みモデルが英語中心で、日本語が弱いことでした。
日本語の質問と日本語の文書の「意味の近さ」のスコアが、既定のしきい値0.25を下回ってしまい、全チャンクがふるい落とされていたのです。
対処は、ワークスペース設定のVector Database → Document similarity thresholdをNo restriction(しきい値0)にすることです。
これで少数チャンクなら常に文脈が注入されるようになりました。
ちなみにこのしきい値は「ワークスペース設定」の中にあって、似た名前の「インスタンス設定」側には無いので、ここでも少し迷子になりました。
この2つを直したら、ようやく正答するようになりました。
実測では、1問あたり12〜16秒ほどで返ってきます(生成は1回だけなので、後述のOpen Notebookより速い)。
回答精度は、「ソラリス工業の創業年は2014年4月1日」「リモートワークは入社6か月以降・上長承認・週3日まで・製造ライン除外」をすべて正確に拾えました。
ツール②:Open Notebook(相性が良く、API全自動)
もう一方のOpen Notebookは、Docker Composeで動く、NotebookLMに一番近い作りのOSSです。
docker compose up -d で、SurrealDB(ベクトルDB兼データベース)とアプリ本体が立ち上がります。
UIはブラウザ(localhost:8502)、REST APIは :5055 です。
埋め込みは、AnythingLLMの内蔵モデルとの対比のために、ローカルのOllamaで動かす bge-m3(1024次元・日本語に強い)を使いました。
生成は同じく自作シム経由の claude -p です。
面白かったのは、GUIを一切触らず、REST APIだけで設定から検証まで全部自動化できたことです。
やったことを並べると、
POST /api/credentials # シム(openai_compatible)とOllamaを登録
POST /api/models # sonnet(生成) と bge-m3(埋め込み) を作成
PUT /api/models/defaults # 既定モデルを割り当て
POST /api/notebooks # ノートブック作成
POST /api/sources/json # 文書を投入(embed=true で埋め込みも走る)
POST /api/search/ask # 質問(出典付きで回答)
という流れです。
NotebookLMが手作業のGUIツールなのに対して、こちらはスクリプトで再現できるのが強みでした。
そして、claude -p との相性はOpen Notebookの方が明確に上でした。
理由は2つあります。
- function calling問題が起きない。 Open Notebookのaskは、自前で文書を検索してから、その結果をテキストで生成モデルに渡す多段パイプライン(strategy→answer→finalの順)です。ツール呼び出しに頼らないので、AnythingLLMで起きた「エージェントモードで無言失敗」がそもそも発生しません。
bge-m3が日本語に強く、しきい値の調整が要らない。 AnythingLLMでしきい値0が必須だったのと違い、Open Notebookは素のままで日本語の検索がちゃんと当たりました。埋め込みモデルの差が、ここで如実に出ました。
回答も網羅的で、「創業年とリモート条件」を聞くと、聞いてもいない在宅勤務手当6,000円まで拾ってきましたし、各事実に [source:...] という出典が明示されます。
このあたりはNotebookLMらしさそのものでした。
Q. 創業年とリモートワーク条件は?(45.5秒)
→ 2014年4月1日 ✓ / 入社6か月以降・上長承認・週3日・製造ライン除外 ✓
+在宅勤務手当6,000円まで言及 +出典 [source:...] 付き
反面、欠点もはっきりしていました。
askはstrategy・answer・finalと claude -p を複数回呼ぶため、1問あたり42〜45秒と遅いのです。
シムは1回呼ぶごとにclaude本体の起動オーバーヘッドが乗るので、多段で呼ぶと積み重なって効いてきます。
どこまでNotebookLMに近づけたか
せっかくなので、基本のQ&Aの先にある「NotebookLMらしさ」も、相性の良かったOpen Notebookで詰めてみました。
- 多様な資料の横断:1つのノートに、テキスト(md)とPDF(日本語PDFを生成して投入)を入れ、「2社のリモート条件を比較して」と聞くと、形式の違う資料をまたいで両方を引用して正答しました。NotebookLMの「複数資料を横断して出典付きで答える」が再現できた格好です。
- Studio出力:要約・FAQ・学習ガイド・タイムラインといった生成物も、transformations機能で全部出せました。これは検索を伴わない純粋な生成なので、
claude -pの地力がそのまま出て、品質も高かったです。1出力あたり30〜50秒で安定しています。 - ポッドキャスト(Audio Overview):これは未達です。台本は
claude -pで書けますが、音声合成(TTS)はclaudeの守備範囲外で、起動ログにもCannot auto-create model 'gpt-4o-mini-tts'と出ました。NotebookLMの一番派手な機能を完全再現するには、結局別のTTSサービスが要ります。
ついでに、自己ホストならではの壁も2つ踏みました。
1つはアンチウイルス(Norton)のHTTPSスキャンが、コンテナの外部通信を静かに壊す問題。
もう1つは、大きなWeb記事を入れると埋め込みが律速になって終わらなくなる問題です。
どちらも単独で記事にできるくらい厄介だったので、それぞれ別記事にしました。
比較表
検証して分かった違いを表にまとめます。
生成はどちらも自作シム経由の claude -p(sonnet)です。

ざっくり言うと、手軽さならAnythingLLM、NotebookLMらしさ(出典・多資料・自動化)と日本語品質ならOpen Notebookです。
claude -p をバックエンドにする相性自体も、Open Notebookの方が上でした。
正直に書いておく注意点
気持ちよく「できました」で終わらせたくないので、誠実に書いておきます。
- 第三者アプリをMax契約経由でルーティングするのは、Anthropicの利用規約的にグレーです。あくまで個人の検証の範囲です。商用や常用を勧めるものではありません。
- 2026年6月15日以降、サブスクの
claude -pはAgent SDK用の月次クレジットを先に消費する仕様になっています。使い込むなら消費量を見ておいた方がいいです。 - 埋め込みと音声はclaudeの範囲外です。NotebookLM体験をフル再現するには、結局ローカルや別サービスの手当てが要ります。
- 多段RAGは遅いです。実用するならモデルをHaikuに落とすなどのチューニングが要ります。
まとめ
いかがでしたか。
今回は、NotebookLMのOSS版2つ(AnythingLLMとOpen Notebook)を、Claude Maxの claude -p を生成エンジンにして動かし、比較してみました。
やってみて分かったことを3つにまとめると、
- 自前NotebookLMは作れる。 自作シム1枚でMax契約をRAGエンジンにでき、出典付きQ&Aも要約・FAQ・タイムライン生成も再現できた。
- ツールのRAGの作り方で相性が決まる。 ツール呼び出し型は自作シムだと失敗し、古典的な検索→注入型なら動く。埋め込みモデルの日本語耐性も効く。
- でも、NotebookLMをそのまま使う方がずっと簡単。 埋め込みと音声は別手当てが要り、規約もグレー、速度も遅い。
なので私の結論は、冒頭の通りです。
社外に出せない機密資料を扱うのでなければ、素直にNotebookLMを使うのが一番です。
逆に「どうしてもローカルで完結させたい」「データを外に出せない」という事情があるなら、OSSでここまでは作れる、という選択肢があると知っておくのは悪くないと思います。
各パート(自作シムの中身・claude -p の落とし穴・アンチウイルスのTLS傍受・埋め込みの律速)は、それぞれ単独で記事にしています。
気になったところだけ拾い読みしてみてください。
もっと深掘りしたい方は、この記事の構成をそのままClaudeやChatGPTに渡して「自分の環境向けの手順に落として」と頼むのもいいと思います。
この記事が誰かの役に立てばうれしいです。