Open Notebook とは?

Google NotebookLM は Google が提供する AI リサーチアシスタントで、PDF、ドキュメント、ウェブページをアップロードして、これらの資料と対話したり、要約を生成したり、ポッドキャストを作成したりできます。しかし、致命的な欠点があります:すべてのデータが Google クラウド上に保存されること、そして Google 独自の Gemini モデルしか使用できないことです。

Open Notebook は、開発者 lfnovo が主導する完全オープンソースでセルフホスティング可能な NotebookLM 代替方案です。その核となる理念はこうです:ナレッジマネジメントは大手企業に独占されるべきではなく、プライバシーを犠牲にするべきでもない。

2026年6月現在、Open Notebook は GitHub で26,000 以上のスターを獲得しており、毎日数百のスターが増加し続けている、今最もホットなオープンソース AI ツールの一つです。

Open Notebook vs Google NotebookLM 核心比較

機能 Open Notebook Google NotebookLM
デプロイ方式 Docker セルフホスティング / ローカル実行 Google クラウド(セルフホスティング不可)
データプライバシー データは完全に自分の管理下 データは Google サーバーに保存
AI モデル選択 18 以上のプロバイダー(OpenAI、Anthropic、Ollama、DeepSeek など) Google Gemini のみ
ポッドキャスト生成 1〜4人のカスタムキャラクター、スクリプト制御可能 固定2人の Deep Dive 形式
API アクセス 完全な REST API(localhost:5055/docs) 公開 API なし
コンテンツ変換 カスタム + 内蔵の多種類の変換アクション 限られた内蔵オプション
コスト AI 呼び出し費用のみ(ローカル Ollama は無料) 無料層 + 月額サブスクリプション
拡張性 オープンソースコード、自由に変更・統合可能 クローズドシステム、カスタマイズ不可
ライセンス Apache 2.0 プロプライエタリソフトウェア

この比較からわかるように、Open Notebook の核心的な優位性はデータ主権と柔軟性にあります。プライバシーを重視する研究者、企業開発者、カスタマイズされたワークフローを必要とするユーザーにとって、NotebookLM よりも適した選択肢です。

なぜ Open Notebook を選ぶのか?

1. プライバシー優先:あなたのデータはあなた次第

NotebookLM を使用する際、アップロードしたすべての PDF、ノート、会話履歴は Google のサーバーに保存されます。機密情報、学術研究、個人のセンシティブな情報を含むコンテンツにとって、これはセキュリティ上の懸念となります。

Open Notebook はセルフホスティングアーキテクチャを採用しており、すべてのデータは自分のマシンやサーバーに保存されます。バックエンドデータベースとして SurrealDB を使用することで、データの保存場所とアクセス権限を完全に制御できます。

2. 18 以上の AI モデルプロバイダーをサポート

Open Notebook は Esperanto ライブラリを通じて、主要な AI プロバイダーへの統一されたアクセスを実現しています:

プロバイダー LLM Embedding STT TTS
OpenAI ✅ ✅ ✅ ✅
Anthropic (Claude) ✅ ❌ ❌ ❌
Google (Gemini) ✅ ✅ ✅ ✅
Ollama(ローカル) ✅ ✅ ❌ ❌
DeepSeek ✅ ❌ ❌ ❌
Groq ✅ ❌ ✅ ❌
Mistral ✅ ✅ ✅ ✅
Azure OpenAI ✅ ✅ ✅ ✅
OpenRouter ✅ ✅ ❌ ❌
xAI ✅ ❌ ❌ ✅
LM Studio(互換エンドポイント) ✅ ✅ ✅ ✅

これにより、以下のようなことが可能になります: - Ollama でローカル実行し、Llama 3 や Qwen モデルを使用して、ゼロ API コストで完全オフライン利用 - Groq で超高速推論を実現(迅速な QA に適している) - DeepSeek で高性价比な中国語理解能力を獲得 - プロバイダーをいつでも切り替え、ベンダーロックインを回避

3. プロフェッショナル級のポッドキャスト生成

Open Notebook のポッドキャスト生成機能は NotebookLM よりもはるかに柔軟です:

  • 1〜4名のスピーカー:各キャラクターの声、トーン、専門知識をカスタマイズ可能
  • Episode Profiles:各エピソードのテーマ、スタイル、ターゲットオーディエンスを定義
  • スクリプトプレビューと編集:音声生成前にスクリプトを確認・修正可能
  • 多言語サポート:英語、中国語、日本語、ポルトガル語など複数の言語に対応

対照的に、NotebookLM の Podcast 機能は固定された二人の会話(男性一人、女性一人)で、スタイルが単一でカスタマイズできません。

4. 完全な REST API

Open Notebook は完全な REST API(デフォルトで http://localhost:5055/docs)を提供しており、以下をサポートします:

  • Notebook の作成と管理
  • 各種タイプのソースファイル(PDF、動画、ウェブページなど)のアップロードと処理
  • AI 駆動のノート生成とコンテンツ変換の実行
  • チャット履歴とコンテキストのクエリ

これにより、Open Notebook を既存のワークフローに簡単に統合できます。例えば: - Slack/Discord の議論を自動的に Notebook にアーカイブ - 特定のウェブサイトから定期的にコンテンツを取得して要約を生成 - CI/CD パイプラインと統合して、技術文書の要約を自動生成

クイックスタート:5分で Open Notebook をデプロイ

Open Notebook の公式推奨デプロイ方法は Docker Compose を使用することで、プロセス全体はわずか2つのコマンドで完了します。

前提条件

  • Docker Desktop がインストールされ、実行中
  • 少なくとも 4GB の空きディスク容量(SurrealDB データとローカルキャッシュ用)
  • AI プロバイダーの API キー(または Ollama ローカルモデルを使用する場合は不要)

ステップ 1: docker-compose.yml をダウンロード

BASH
curl -o docker-compose.yml https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml

または、手動で docker-compose.yml ファイルを作成:

YAML
services:
  surrealdb:
    image: surrealdb/surrealdb:v2
    command: start --log info --user root --pass root rocksdb:/mydata/mydatabase.db
    user: root
    ports:
      - "8000:8000"
    volumes:
      - ./surreal_data:/mydata
    restart: always

  open_notebook:
    image: lfnovo/open_notebook:v1-latest
    ports:
      - "8502:8502"   # Web UI
      - "5055:5055"   # REST API
    environment:
      - OPEN_NOTEBOOK_ENCRYPTION_KEY=change-me-to-a-secret-string
      - SURREAL_URL=ws://surrealdb:8000/rpc
      - SURREAL_USER=root
      - SURREAL_PASSWORD=root
      - SURREAL_NAMESPACE=open_notebook
      - SURREAL_DATABASE=open_notebook
    volumes:
      - ./notebook_data:/app/data
    depends_on:
      - surrealdb
    restart: always

重要: OPEN_NOTEBOOK_ENCRYPTION_KEY を自分だけの秘密の文字列に変更してください。例えば my-super-secret-key-2026。このキーはデータベースに保存される機密情報(API キーなど)を暗号化するために使用されます。

ステップ 2: サービスを起動

BASH
docker compose up -d

SurrealDB の初期化に 15〜20 秒待ち、その後ブラウザで以下にアクセス:

TEXT
http://localhost:8502

Open Notebook のログイン/登録画面が表示されるはずです。

ステップ 3: API キーを設定

  1. 初回アクセス時、システムは管理者アカウントの作成を促します
  2. ログイン後、Settings → API Keys に移動
  3. Add Credential をクリック
  4. AI プロバイダーを選択(例:OpenAI、Anthropic、Google など)
  5. API キーを貼り付けて Save をクリック
  6. Test Connection をクリックして接続是否正常か確認
  7. Discover Models をクリックして利用可能なモデルリストを自動取得
  8. Register Models をクリックして登録を完了

API キーを持っていない場合は、以下のプラットフォームから取得できます: - OpenAI - Anthropic - Google AI Studio - Groq(無料層あり)

Ollama を使用してゼロコストでローカル実行

完全に無料でオフラインで使用したい場合は、Ollama と組み合わせることができます:

BASH
# Ollama をインストール(macOS/Linux)
curl -fsSL https://ollama.ai/install.sh | sh

# 軽量級モデルをプル
ollama pull llama3.2:3b

# Ollama サービスを起動
ollama serve

その後、Open Notebook の API Keys 設定で: 1. 認証情報を追加、プロバイダーとして Ollama を選択 2. URL に http://host.docker.internal:11434 を入力(Docker 内からホストマシンにアクセス) 3. 接続をテストしてモデルを登録

これにより、API 費用を一切支払うことなく Open Notebook の全機能を使用できます(TTS ポッドキャスト生成には外部サービスが必要ですが)。

核心機能の実践

最初の Notebook を作成

Open Notebook にログイン後、左上の + New Notebook ボタンをクリック:

  1. Notebook 名:例「2026 AI 技術トレンド研究」
  2. 説明(任意):この Notebook の用途を簡潔に説明
  3. デフォルトモデルを選択:登録済みのモデルからデフォルトのチャットモデルを選択
  4. Create をクリック

各 Notebook は独立したナレッジベースです。異なるプロジェクト用に異なる Notebook を作成できます。例えば: - 「Python 学習ノート」 - 「競合分析レポート」 - 「製品要件ドキュメントライブラリ」

コンテンツソース(Sources)を追加

Open Notebook は多種類のコンテンツソースをサポートしており、これが最も強力な機能の一つです。

サポートされているソースタイプ

タイプ フォーマット 説明
PDF ドキュメント .pdf 学術論文、電子書籍、レポート
テキストファイル .txt, .md ノート、コードスニペット、ログ
Office ドキュメント .docx, .pptx Word ドキュメント、PowerPoint プレゼンテーション
ウェブリンク URL 自動的にクロールして本文を抽出
YouTube 動画 YouTube URL 字幕を自動転写(STT 設定が必要)
オーディオファイル .mp3, .wav 会議録音、ポッドキャスト(STT 設定が必要)

PDF 追加の例

  1. Notebook ページで Add Source をクリック
  2. Upload File を選択
  3. PDF ファイルをドラッグ&ドロップ、または選択(例:arXiv 論文)
  4. 処理が完了するまで待機(システムは自動的にテキストを抽出し、ベクトル埋め込みを生成)
  5. Sources リストで処理ステータスと文字数統計を確認可能

ウェブリンク追加の例

  1. Add Source → Web Page をクリック
  2. URL を貼り付け、例:https://arxiv.org/abs/2401.12345
  3. Open Notebook は自動的にページをクロールして本文を抽出
  4. ページに有料ウォールやアンチスクレイピング机制がある場合、手動でコピー&ペーストする必要があるかもしれません

ナレッジベースと対話(Chat)

ソースファイルを追加した後、AI との対話を開始できます。

Notebook ページの右側は チャットパネル です:

  1. コンテキスト範囲を選択: - 「All Sources」:すべてのソースファイルに基づいて回答 - 「Selected Sources」:選択した数ファイルのみに基づいて回答 - 「Notes Only」:手動で作成したノートのみに基づいて回答

  2. 質問を入力、例えば: この論文の核心的な貢献は何ですか?中国語で3つのキーポイントを要約してください。

  3. 引用を確認:AI の回答にはソース引用が付随し、引用をクリックすると原文の対応位置にジャンプ

  4. ノートとして保存:AI の回答が価値ある場合、Save as Note をクリックして永久ノートとして保存

AI 支援ノートを生成

リアルタイム対話に加え、Open Notebook はバッチ処理でのノート生成もサポート:

  1. Notebook ページで Generate Notes をクリック
  2. 処理するソースファイルを選択(複数選択可能)
  3. ノートテンプレートを選択: - Summary:全文要約を生成 - Key Points:重要な要点を抽出 - Q&A:よくある質問と回答を生成 - Custom:カスタムプロンプト
  4. Generate をクリック、AI 処理が完了するまで待機
  5. 生成されたノートは左側の Notes パネルに表示され、さらに編集可能

コンテンツ変換(Transformations)

Content Transformations は Open Notebook の高度な機能で、ソースファイルに対してカスタム AI 処理アクションを実行できます。

例えば、以下のような Transformation を作成できます: - すべての技術文書を中国語に翻訳 - 会議記録からアクションアイテム(Action Items)を抽出 - 長編ブログ記事を 500 字の要約に圧縮

設定手順: 1. Settings → Transformations に移動 2. New Transformation をクリック 3. 名前とプロンプトテンプレートを定義、例えば: 以下の技術文書を簡体字中国語に翻訳してください。専門用語の正確性を維持: {{content}} 4. 保存後、任意のソースファイルを右クリックして該 Transformation を選択して実行

ポッドキャスト生成:ノートをオーディオ番組に変換

Open Notebook のポッドキャスト生成機能は、最も特徴的な機能の一つです。任意の Notebook のコンテンツをプロフェッショナルな多人対話ポッドキャストに変換できます。

ポッドキャストキャラクターを設定

  1. Settings → Podcast Profiles に移動
  2. New Profile をクリック
  3. キャラクターを定義: - ホスト:トピックの誘導、質問を担当 - 専門家 A:技術詳細の深入り解説を担当 - 専門家 B:異なる視点の提供や反論观点を担当 - (任意)ナレーター:オープニング紹介とエンディングまとめを担当

各キャラクターは以下を設定可能: - 声のタイプ:男性/女性/中性 - 話速:遅い/普通/速い - トーンスタイル:フォーマル/カジュアル/ユーモア/シリアス - TTS プロバイダー:OpenAI、ElevenLabs、Google など

ポッドキャストを生成

  1. Notebook ページで Generate Podcast をクリック
  2. 含めるソースファイルとノートを選択(システムは自動的に重要なコンテンツを抽出)
  3. ポッドキャストプロファイルを選択
  4. 時間目標を設定(例:10分、20分)
  5. Generate Script をクリックしてスクリプトをプレビュー
  6. スクリプトを確認・編集(任意)
  7. Generate Audio をクリックして音声合成を開始
  8. 完了後、MP3 ファイルをダウンロードするかオンライン再生可能

実際の応用シナリオ

  • 学習レビュー:1週間の学習ノートを通勤時に聞くポッドキャストに変換
  • ナレッジシェア:チーム向けに内部トレーニングオーディオ素材を作成
  • コンテンツ再利用:ブログ記事をポッドキャストに変換して Spotify/Apple Podcasts に公開
  • 言語学習:目標言語でポッドキャストを生成、リスニング練習

REST API 実践:ワークフローを自動化

Open Notebook は完全な REST API を提供しており、デフォルトで http://localhost:5055 で実行されます。API ドキュメントは Swagger UI からアクセス可能:http://localhost:5055/docs

認証

すべての API リクエストは Header に API トークンを携带する必要があります:

BASH
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  http://localhost:5055/api/notebooks

Settings → API Keys で API トークンを生成できます。

一般的な API 例

1. すべての Notebook をリスト

BASH
curl -H "Authorization: Bearer $TOKEN" \
  http://localhost:5055/api/notebooks

レスポンス:

JSON
{
  "notebooks": [
    {
      "id": "nb_abc123",
      "title": "2026 AI 技術トレンド研究",
      "created_at": "2026-06-07T10:00:00Z",
      "source_count": 5,
      "note_count": 12
    }
  ]
}

2. 新しい Notebook を作成

BASH
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title": "新製品調査", "description": "競合分析データベース"}' \
  http://localhost:5055/api/notebooks

3. ソースファイルをアップロード

BASH
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -F "file=@research-paper.pdf" \
  -F "notebook_id=nb_abc123" \
  http://localhost:5055/api/sources/upload

4. チャットリクエストを発行

BASH
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "notebook_id": "nb_abc123",
    "message": "この論文の核心观点を要約",
    "model": "gpt-4o",
    "temperature": 0.7
  }' \
  http://localhost:5055/api/chat

Python クライアント例

PYTHON
import requests

BASE_URL = "http://localhost:5055/api"
TOKEN = "your_api_token_here"
headers = {"Authorization": f"Bearer {TOKEN}"}

# すべての Notebook を取得
response = requests.get(f"{BASE_URL}/notebooks", headers=headers)
notebooks = response.json()["notebooks"]

for nb in notebooks:
    print(f"Notebook: {nb['title']} ({nb['source_count']} sources)")

# 新しい Notebook を作成
new_nb = requests.post(
    f"{BASE_URL}/notebooks",
    headers=headers,
    json={"title": "テスト Notebook", "description": "API テスト"}
)
print(f"Created: {new_nb.json()['id']}")

REST API を通じて、Open Notebook を既存の自動化ワークフローに統合できます。例えば: - RSS サブスクリプションから定期的に最新記事をクロールして要約を生成 - Slack チャンネルの議論を自動的に Notebook にアーカイブ - CI/CD パイプラインと統合して、コード変更の技術的影響分析を自動生成

高度な設定

パスワード保護による公開デプロイ

Open Notebook をパブリックサーバーにデプロイする場合、パスワード保護の有効化を推奨:

docker-compose.yml に環境変数を追加:

YAML
open_notebook:
  environment:
    - OPEN_NOTEBOOK_PASSWORD=my-secure-password

サービスを再起動後、Web UI にアクセスする際にパスワードの入力が必要になります。

カスタムドメインと HTTPS

Nginx リバースプロキシを使用してカスタムドメインと HTTPS を実現:

NGINX
server {
    listen 443 ssl;
    server_name notebook.example.com;

    ssl_certificate /etc/letsencrypt/live/notebook.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/notebook.example.com/privkey.pem;

    location / {
        proxy_pass http://localhost:8502;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /api/ {
        proxy_pass http://localhost:5055/api/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

データバックアップ

Open Notebook のデータは2つのディレクトリに保存されます: - ./surreal_data/:SurrealDB データベースファイル - ./notebook_data/:アップロードされたソースファイルとキャッシュ

これらのディレクトリを定期的にバックアップ:

BASH
# バックアップを作成
tar czf open-notebook-backup-$(date +%Y%m%d).tar.gz \
  surreal_data/ notebook_data/

# バックアップを復元
tar xzf open-notebook-backup-20260607.tar.gz

よくある問題のトラブルシューティング

1. Docker コンテナ起動後、Web UI にアクセスできない

症状: docker compose up -d は成功したが、http://localhost:8502 にアクセスできない

解決策:

BASH
# コンテナステータスを確認
docker compose ps

# ログを確認
docker compose logs open_notebook
docker compose logs surrealdb

# SurrealDB が準備できていない場合、30秒待って再試行
docker compose restart

2. API キーの接続テストが失敗

症状: Settings で OpenAI/Anthropic 接続をテストするとエラーが表示

解決策: - API キーが正しく、期限切れでないことを確認 - ネットワーク接続を確認(一部の地域ではプロキシが必要) - Docker ログに SSL またはタイムアウトエラーがないか確認 - ホストマシンで直接 API を呼び出して Key の有効性を検証

3. Ollama モデルが発見できない

症状: Ollama 認証情報を追加後、Discover Models が空のリストを返す

解決策:

BASH
# Ollama が実行中であることを確認
ollama list

# Docker 内から接続をテスト
docker exec -it <open_notebook_container_id> curl http://host.docker.internal:11434/api/tags

# 接続が失敗する場合、Docker ネットワーク設定を確認
# macOS/Docker Desktop はデフォルトで host.docker.internal をサポート
# Linux では追加設定が必要な場合あり

4. PDF 処理が失敗、またはコンテンツが空

症状: PDF をアップロード後、Source は処理完了と表示されるが文字数が 0

解決策: - PDF がスキャン版でないことを確認(スキャン版には OCR が必要、Open Notebook は現在未サポート) - 他の PDF リーダーで開いてテキストがコピー可能か確認 - Docker ログにメモリ不足エラーがないか確認 - 大容量ファイル(>50MB)の場合、Docker メモリ制限を増やす必要があるかも

5. ポッドキャスト生成の音声品質が悪い

症状: 生成されたポッドキャストの人声が機械的で不自然

解決策: - より高品質の TTS プロバイダーに切り替え(例:ElevenLabs) - キャラクタープロファイルの話速とトーンパラメータを調整 - 選択した TTS モデルが対象言語をサポートしていることを確認 - API クォータが十分か確認

まとめ

Open Notebook は現在最も成熟したオープンソース NotebookLM 代替方案で、以下の面で Google のネイティブ製品を超えています:

  1. データ主権:セルフホスティングアーキテクチャにより、研究データが完全にプライベート
  2. モデルの自由:18 以上の AI プロバイダーをサポート、ベンダーロックインを回避
  3. 豊富な機能:プロフェッショナル級ポッドキャスト生成、REST API、カスタム変換アクション
  4. コスト制御可能:ローカル Ollama を選択してゼロ API コストを実現
  5. オープンで透明:Apache 2.0 ライセンス、コミュニティ駆動開発

プライバシーを重視する研究者、カスタマイズされたワークフローを必要とする開発者、あるいは大手企業の独占から抜け出したいナレッジワーカーにとって、Open Notebook は時間をかけて学ぶ価値のあるツールです。

次のアクション: - GitHub リポジトリ にアクセスして最新進展を確認 - Discord コミュニティ に参加して他のユーザーと交流 - 公式ドキュメント を読んでより詳細なチュートリアルを取得 - ローカルにデプロイして最初の Notebook を作成


本稿は Open Notebook v1 バージョンに基づいて作成されました。プロジェクトは継続的に迭代中で、具体的な機能は最新バージョン为准拠してください。