
1. 为什么我放弃了 Notion AI 订阅转向 Gemini Client 自建笔记助手Notion AI 每月 10 美金一年下来就是 120 美金折合人民币接近 900 块。对于只是偶尔需要「帮我总结这段会议记录」「把这篇长文压缩成三条要点」的人来说这个价格确实不太划算。我自己的使用频率大概是一周三四次平均每次成本超过 5 块钱想想还是肉疼。后来我换了个思路Notion 本身提供了 Integration API可以把页面内容读出来而 Gemini Client也就是 Gemini CLI支持通过 MCP 协议挂载外部工具。两者一结合就得到了一套「本地笔记助手」——我用自然语言让 Gemini 去读某个 Notion 页面它调用 MCP 工具拉取内容再交给模型做摘要、问答、改写。整个过程跑在本地终端里不依赖 Notion 的付费 AI 功能。这套方案适合谁三类人比较合适一是已经在用 Notion 做知识库、但不想为 AI 功能单独付费的二是手里有 Gemini 相关额度、想把它用在真实工作流里的三是喜欢折腾 MCP、想把私有数据接进大模型的开发者。如果你属于其中任何一类下面的步骤可以跟着做一遍。需要提前说明的是Gemini Client 默认走的是官方 OAuth 登录网络环境要求比较高。为了让请求稳定落到可用的入口上我会把 Base URL 改到 TaoToken 的 API 地址这样 Key 和模型 ID 都能统一管理后面排障也方便。整篇文章会给出可复制的配置片段、笔记问答与摘要的调用示例以及连通性验证和常见报错的处理办法。2. TaoToken 前置准备拿到 Base URL 与 API Key在动手改配置之前先把「钥匙」准备好。TaoToken 在这里扮演的是统一入口的角色你不需要在 Gemini Client 里反复切换不同的认证方式只要把 Base URL 指向它再用一个 API Key 就能调用模型。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 根地址是 https://taotoken.net/api 这个地址不加 UTM 参数配置里直接写它就行。第一步打开控制台创建 Key。进入 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole_keyutm_campaignrewrite 登录后找到 API Keys 页面点新建复制生成的 Key。这个 Key 通常以sk-开头只显示一次建议先粘到本地临时文件里。如果你还没决定用哪个模型可以先去模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 试几句确认返回正常再继续。第二步确认你要用的 Model ID。Gemini Client 里模型名要写对常见的有gemini-2.5-pro、gemini-2.5-flash这类。不同账号可用的模型可能不一样以控制台里列出的为准。把 Base URL、Key、Model ID 这三样记下来后面配置里会反复用到。第三步检查本地环境。Gemini Client 需要 Node.js 18 以上终端里跑node -v看一眼。如果版本太低先去升级。另外 Notion 那边要创建一个 Integration拿到ntn_开头的 token这个后面配 MCP 时用。Notion Integration 的创建入口在 https://www.notion.so/profile/integrations/internal 新建时选好工作区然后在「内容访问权限」里把你需要操作的页面加进去——这一步很关键没加页面的话后面 MCP 拉不到任何内容。把这三样准备好前置工作就算完成了。接下来进入真正的配置环节。3. 可复制配置settings.json 与 MCP 挂载Gemini Client 的配置文件在用户目录下的.gemini/settings.json。Windows 是C:\Users\你的用户名\.gemini\settings.jsonmacOS 和 Linux 是~/.gemini/settings.json。如果文件不存在手动建一个。下面是一份可以直接改的完整配置注意把sk-你的Key和ntn_你的NotionToken替换成真实值{ security: { auth: { selectedType: oauth-personal } }, general: { previewFeatures: true, disableAutoUpdate: true, enableAutoUpdate: false, sessionRetention: { enabled: true, maxAge: 30d, warningAcknowledged: true } }, hasSeenIdeIntegrationNudge: true, ide: { hasSeenNudge: true }, api: { baseUrl: https://taotoken.net/api, apiKey: sk-你的Key, model: gemini-2.5-pro }, mcpServers: { notion: { command: npx, args: [ -y, suekou/mcp-notion-server ], env: { NOTION_API_TOKEN: ntn_你的NotionToken, NOTION_MARKDOWN_CONVERSION: true } } } }几个容易踩坑的点单独说一下。NOTION_MARKDOWN_CONVERSION的值必须是字符串true带双引号写成布尔值true在某些版本里会解析失败。NOTION_API_TOKEN一定要换成你自己 Integration 生成的 token直接抄示例里的占位符会报 401。baseUrl结尾不要多加斜杠写https://taotoken.net/api就行多一个/可能导致路径拼接出错。如果你用的是 Cline 或者 Claude Code 这类工具配置思路是一样的只是字段名不同。Cline 的 MCP 配置在cline_mcp_settings.json里结构类似Claude Code 走的是~/.claude/settings.jsonBase URL 和 Key 写在env段里。核心三件套永远是 Base URL、Key、Model ID缺一不可。改完配置后完全退出 Gemini Client 再重新打开让它重新加载 settings.json。这一步别偷懒热重载有时候不生效。4. 验证请求从 /mcp list 到第一次笔记摘要配置写好后先验证 MCP 有没有挂上。在 Gemini Client 里输入/mcp list如果看到 notion 这一项前面是绿灯说明 MCP 服务启动成功。如果显示红灯或者干脆没列出来先别急着往下走去第 5 节看排障。MCP 通了之后验证模型请求。最简单的方式是直接在对话里问一句「你好确认一下连接」看它能不能正常返回。如果返回正常说明 Base URL 和 Key 都生效了。这一步其实就是在验证 TaoToken 的接入是否成功返回内容里不应该出现认证错误。接下来做第一次真实的笔记操作。打开 Notion找到你要处理的页面点右上角「复制链接」把链接粘到 Gemini Client 里然后加上指令。比如读取这个页面 https://www.notion.so/你的页面ID 用三句话总结核心内容Gemini 会调用 notion MCP 工具去拉取页面然后交给模型做摘要。第一次调用可能会慢几秒因为 npx 要下载suekou/mcp-notion-server这个包。等它返回结果如果摘要内容和你页面里的信息对得上说明整条链路跑通了。再试一个问答场景基于刚才那个页面回答里面提到的三个行动项分别是什么这种「先读后问」的模式就是自建笔记助手的核心用法。你不需要把内容复制粘贴到对话框里Gemini 通过 MCP 直接读 Notion省掉了中间的手动搬运。实测下来一个 2000 字左右的页面摘要加问答的完整往返大概 10 到 15 秒比手动翻页快不少。如果想让结果更稳定可以在指令里明确要求「只基于页面内容回答不要编造」。模型有时候会脑补加一句约束能减少幻觉。5. 常见报错排查401、local proxy failed 与 reading choices配置过程中最容易撞上的几类报错我按出现频率排一下附上处理办法。401 Unauthorized。这个基本是 Key 或 Notion token 的问题。先检查apiKey是不是sk-开头、有没有多余空格再检查NOTION_API_TOKEN是不是ntn_开头。如果两个都对去 TaoToken 控制台确认 Key 有没有被禁用或额度耗尽。Notion 那边还要确认 Integration 有没有被添加到目标页面——token 有效但页面没授权也会返回权限类错误。local proxy failed / connection refused。这类报错通常出现在 Base URL 写错或者本地网络拦截的情况下。先确认baseUrl是https://taotoken.net/api没有拼错字母。然后检查本地有没有设置HTTP_PROXY、HTTPS_PROXY这类环境变量如果有临时清掉再试。终端里跑curl -I https://taotoken.net/api看能不能通通不了就是网络层的问题跟配置无关。reading choices of undefined。这个报错说明请求发出去了但返回结构不是预期的 OpenAI 兼容格式。常见原因是 Model ID 写错了比如把gemini-2.5-pro写成了gemini-2.5-pro-001这种不存在的名字。去控制台核对一下可用模型列表改成正确的 ID。另一个可能是 Base URL 少了/api后缀导致请求打到了官网首页而不是 API 端点。OAuth 相关报错。如果你在 settings.json 里同时保留了oauth-personal和自定义apiKey某些版本会优先走 OAuth导致请求没落到 TaoToken 上。解决办法是把security.auth.selectedType改成api-key或者在环境变量里显式指定。改完记得重启客户端。MCP 工具绿灯但拉不到内容。这通常是 Notion 页面权限问题。回到 Notion 的 Integration 设置确认目标页面在「内容访问权限」列表里。如果页面是后来新建的需要手动再添加一次。另外页面如果是数据库里的子项链接格式可能不一样建议直接复制页面本身的链接而不是数据库视图的链接。排障的核心思路是分层先确认网络通不通再确认 Key 有没有效最后确认模型 ID 和页面权限。一层一层往下查比盲目改配置快得多。6. 把笔记助手用起来从摘要到长期编码工作流链路跑通之后可以把它嵌进日常习惯里。我自己的用法是每天早上花五分钟让 Gemini 读一遍昨天的会议记录页面生成一份待办清单写长文之前先让它读参考资料页面输出一个提纲。这些操作都不需要打开 Notion AI直接在终端里完成。如果你除了笔记还想处理代码相关的任务比如让模型读仓库里的文件、生成 commit message那可以考虑 Coding Plan 这类长期方案。入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 适合需要频繁调用、对额度有稳定预期的场景。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有针对不同客户端的配置说明遇到字段不确定的时候可以对照查。API Key 管理页面还是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 需要新建或轮换 Key 的时候从这里进。模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 可以用来快速验证某个模型当前是否可用不用每次都改配置文件。最后分享一个实用技巧把常用的 Notion 页面链接存成一个本地文本文件需要的时候直接复制省得每次去 Notion 里翻。另外Gemini Client 的会话是有保留期的配置里maxAge设的是 30 天超过的会话会自动清理重要结论记得手动存到 Notion 里别只留在对话记录中。