NotebookLM Zotero Import
Zotero コレクションのローカル添付ファイルを NotebookLM にインポートします。決定論的な命名、再実行安全性、デフォルトの PDF フィルタリングに対応しています。
ワークフローをインラインで再実装するのではなく、付属のスクリプトを使用してください。
前提条件
インポートを実行する前に、以下を確認してください。
nlmがインストールされ、PATHが通っていること- Zotero データがローカルに存在すること(通常は
~/Zotero/zotero.sqliteと~/Zotero/storage)
通常の使用では、認証を手動で事前確認しないでください。スクリプトは常に最初に nlm login --check を実行し、セッションがない場合や期限切れの場合は自動的に nlm login を起動します。
ワークフロー
uv runでインポーターを実行します。
uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
--collection "Limit Order Book" \
--notebook-base "LOB_TTT"
- スクリプトに完全なワークフローを任せます。
nlmのログイン状態を確認し、必要に応じてnlm loginを実行- Zotero SQLite を読み取り専用のイミュータブルモードで開く
- コレクションを完全一致で解決
- 子コレクションを再帰的に走査
- オプションで
--title-matchにより正規化されたタイトルの部分文字列で Zotero アイテムを絞り込み - 各添付ファイルを Zotero ストレージ内の実ファイルに解決
- NotebookLM がサポートするローカルアップロード拡張子のみを保持(デフォルトは
pdf) - アップロードを最大 50 ファイルのノートブックシャードに分割
- 同一名のノートブックが一意な場合、既存のものを再利用
- 正規化されたタイトルとファイル名に基づき、対象ノートブックに既に存在するファイルをスキップ
nlm source add --file ... --waitで不足ファイルをアップロード
スクリプトは、NotebookLM の公式ローカルアップロードリストにない拡張子を検出すると即座にエラー終了します。2026年4月21日時点でのリストは以下の通りです。
- ドキュメント:
pdf,docx,txt,md,csv,pptx,epub - 画像:
avif,bmp,gif,heic,heif,ico,jp2,jpe,jpeg,jpg,png,tif,tiff,webp - 音声・メディア:
3g2,3gp,aac,aif,aifc,aiff,amr,au,avi,cda,m4a,mid,mp3,mp4,mpeg,ogg,opus,ra,ram,snd,wav,wma
mlx など、この範囲外の拡張子はアップロード前にローカルで拒否されます。
- 最終サマリーを確認してください。
- 操作したノートブック
- アップロードしたファイル
- 既に存在するためスキップしたファイル
- エラー(ある場合)
命名ルール
- コレクションが 1 つのノートブックに収まる場合は、ベース名をそのまま使用します。
- コレクションに複数のノートブックが必要な場合は、
_01,_02, ... のサフィックスを追加します。 - ターゲットタイトルに一致するノートブックがちょうど 1 つだけの場合に限り、既存のノートブックを再利用します。
- Zotero のコレクション名が曖昧な場合や、複数のノートブックが同じタイトルを共有している場合は、推測せずにエラー終了します。
一般的なコマンド
コレクション内のデフォルトの PDF マッチをすべてインポート:
uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
--collection "Limit Order Book" \
--notebook-base "LOB_TTT"
コレクションから特定の論文の PDF をインポート:
uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
--collection "Limit Order Book" \
--title-match "LiT: limit order book transformer" \
--notebook-base "LOB_TTT_single"
特定のアイテムの PDF と別の対応フォーマットをインポート:
uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
--collection "SGN.300" \
--title-match "Homework_4" \
--extension pdf \
--extension md \
--notebook-base "SGN300_hw4"
mlx など未対応のローカルフォーマットを指定した場合、スクリプトは明確な検証エラーで即座に停止します。
デフォルト以外の NotebookLM プロファイルを使用:
uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
--collection "Limit Order Book" \
--title-match "DeepLOB" \
--notebook-base "LOB_TTT_deeplob" \
--profile default
ローカルの Zotero パスを上書き:
uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
--collection "Limit Order Book" \
--notebook-base "LOB_TTT" \
--zotero-db ~/Zotero/zotero.sqlite \
--zotero-storage ~/Zotero/storage
リソース
scripts/import_zotero_to_notebooklm.py: エンドツーエンドのインポーターreferences/workflow.md: 動作の詳細、マッチングルール、エラー条件