從零到 PyPI:讓 NotebookLM 可以被程式控制
我想解決什麼問題?
目標很簡單。我想直接在開發環境(例如 Cursor IDE)裡建立 NotebookLM notebook、匯入技術文件或會議紀錄,並且提問後拿到附來源引用的答案。
如果這些動作可以由程式觸發,NotebookLM 就能成為完整工作流程裡的一個知識服務節點,而不是獨立使用的產品。
這個工具從哪裡來?
這個專案一開始不是獨立套件。kof-notebooklm-mcp 原本是 keeponfirst-local-brain 裡的內部工具。核心想法很直接:用本機 Git repository 當知識的唯一可信來源,讓文件和開發筆記跟著 codebase 一起演進,再讓 AI 工具持續閱讀、分析並提供回饋。
在這個架構裡,Git repo 是正式來源,文件跟著專案更新;NotebookLM 則是研究和分析節點,不是獨立 App。
實作時遇到的主要問題
第一個問題是驗證和登入流程。Google 登入包含多因素驗證與風險偵測,完全自動化並不實際。目前的做法是讓使用者第一次執行時手動登入,保存瀏覽器 session,之後再重複使用。
第二個問題是高度動態的 UI。NotebookLM 前端變動很大,自動化流程很容易壞。為了提高穩定性,實作會優先使用無障礙屬性與畫面上看得到的文字,避免綁死 DOM 結構,並在重要操作前檢查狀態。
為什麼拆成獨立套件?
工具一開始放在 monorepo 裡,開發方便,使用者安裝卻很麻煩。我面對的取捨很清楚:留在 monorepo 可以維持開發便利;拆成獨立套件需要整理架構,但能降低使用門檻。
最後我把它拆成 kof-notebooklm-mcp,讓使用者只要一行指令就能開始:pip install kof-notebooklm-mcp。
使用 Trusted Publisher 發布到 PyPI
發布流程使用 PyPI 的 Trusted Publisher。它不用管理長效 API token,發布權限直接綁定 GitHub repository,GitHub Actions 再透過 OIDC 自動驗證。設定不多,也比較適合長期維護。
最後想說的事
做這個專案的重點,是讓一個好用的工具真正進入工作流程。工具不能被程式控制時,受限的不只是效率,能做的事情也會跟著變少。
GitHub:https://github.com/keeponfirst/kof-notebooklm-mcp|PyPI:pip install kof-notebooklm-mcp