远程API容器服务

一个用于在局域网内远程执行notebooklm-mcp-cli的最小API服务器,支持同步执行和手动登录操作。

  • by butada
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 butada/notebooklm-api

使用说明

notebooklm-mcp-cli远程API容器

notebooklm-mcp-cli 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
n8n等工作流 nlm 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。

特徴

  • 最小API构成(/health, /exec, /artifacts/download)
  • 全部同步
  • nlm 啊 bash -lc 通过执行
  • 支持通过noVNC手动登录操作
  • 通过base映像分离可以缩短构建时间

仕様

  • API仕様: docs/spec_api.md
  • 容器规格: docs/spec_container.md

安装,安装

  1. 准备环境变量
cp .env.example .env
  1. (仅在从属更新时)创建基础映像
docker build -f Dockerfile.base -t nlm-api-base:latest .
  1. 容器启动
docker compose up -d --build

首次登录

  • 和 VNC : http://<host>:6080/vnc.html
  • 在容器中 nlm login ,认证状态为volume(/root/.notebooklm-mcp-cli),模板名称将采用不同的格式。

API的使用方法(示例)

健康检查

curl -sS http://127.0.0.1:8080/health

脚本执行

curl -sS -X POST http://127.0.0.1:8080/exec \
  -H "Content-Type: application/json" \
  -d '{
    "script":"set -euo pipefail\nnlm login --check\nnlm notebook list --json",
    "timeout_seconds": 600
  }'

交付件下载

curl -L "http://127.0.0.1:8080/artifacts/download?notebook_id=<NOTEBOOK_ID>&artifact_id=<ARTIFACT_ID>&kind=audio" -o artifact.bin

来自n8n的执行例(/exec 交给script)

# 入力パラメータ
ARXIV_URL="{{ $json.url }}"
NOTEBOOK_TITLE="{{ $json.notebookTitle }}"
FOCUS=$(cat <<EOF
私の興味がある領域は以下である。

AI の「頭の中」に関することなら興味がある。
- AIの知識構造、認識、推論、相互作用に関するもの
- AI の思考過程を扱うもの
- データセットの構造・特性に関するもの
- ハルシネーションや推論精度を扱うもの

AI が「何を見せるか」や「社会問題」は興味がない。
- 表現系(画像・音声・UI・資料作成)
- 社会的問題(公平性・バイアス・個人情報・フェイクニュース)
- 生物学/物理学などAIの思考構造に無関係な領域
- 単純アルゴリズム(経路計算など)
EOF
)

# 0. 認証確認
set -euo pipefail
nlm login --check || nlm login

# 1. ノートブックを作成し、JSONからIDを取得
echo "=== Step 1: Creating Notebook ==="
nlm notebook create "$NOTEBOOK_TITLE"
NOTEBOOK_ID=$(nlm notebook list --json | jq -r --arg title "$NOTEBOOK_TITLE" '.[] | select(.title == $title) | .id' | head -n 1)
echo "Notebook ID: $NOTEBOOK_ID"

# 2. ソース(URL)を追加し、処理完了まで待機 (--wait)
echo "=== Step 2: Adding Source & Waiting ==="
nlm source add $NOTEBOOK_ID --url "$ARXIV_URL" --wait

# 3. 音声生成 (日本語、短く、Deep Dive)
# --language ja: 日本語
# --length short: 短く
# --format deep_dive: ディープダイブ
echo "=== Step 3: Requesting Audio Generation ==="
nlm audio create $NOTEBOOK_ID \
  --format deep_dive \
  --length short \
  --language ja \
  --focus """$FOCUS""" \
  --confirm

nlm create slides $NOTEBOOK_ID --format detailed_deck --length default --language ja --focus """$FOCUS""" --confirm

nlm create infographic $NOTEBOOK_ID --orientation landscape --detail detailed --language ja --focus """$FOCUS""" --confirm

提供文件的情况如下。

cat <<EOF > tmp_google_alerts.txt
{{ $json.text }}
EOF
# 2. ソースを追加し、処理完了まで待機 (--wait)
echo "=== Step 2: Adding Source & Waiting ==="
nlm source add $NOTEBOOK_ID --file tmp_google_alerts.txt --wait