把 Notion 当 CMS:NotionNext 部署与二次开发笔记
字数: 927阅读时长: 3 分钟最后更新: 2026-8-4
为什么把博客后台搬进 Notion
我的博客换过好几代方案:最早的静态生成器要自己写 md、自己管图床,写文章的流程像在做一次开发。后来想通了一件事:写博客应该和写笔记是同一个动作。我日常笔记本来就在 Notion 里,如果博客直接读 Notion 数据库,那「发布」就只是把笔记的状态改成已发布。
NotionNext 就是干这个的:一个 Next.js 项目,把 Notion 数据库当 CMS,定时拉取内容渲染成博客页面。写文章等于写笔记,这个闭环让我动笔的频率明显高了。
部署到 Vercel
流程比想象中简单,半小时能跑通:
- 复制官方提供的 Notion 模板数据库到自己的空间。
- 把数据库页面设为「公开分享」,拿到页面 ID(URL 里那串 32 位字符)。
- Fork NotionNext 仓库,在 Vercel 导入这个项目,配置环境变量。
- 点 Deploy,等构建完成,博客就上线了。
核心环境变量就一个(下面是格式示例,别照抄这串 ID):
自定义域名、站点标题、统计代码这些都在配置文件里改,改完 push,Vercel 自动重新部署。
二次开发踩的坑
坑一:数据库属性名要和模板对齐。 我手贱把
status 字段改成了中文名「状态」,结果文章全都不显示——主题是按固定属性名取数据的。改字段名可以,但要同步改主题代码里对应的映射。坑二:改完文章博客不更新。 NotionNext 有缓存和 ISR 机制,不是写完立刻生效。我的排查顺序:先确认 Notion 那边状态是 Published,再等缓存过期,实在不行去 Vercel 手动触发一次重新部署。我在「为什么还不更新」上干等过一个多小时。
坑三:Notion 图片链接会过期。 Notion 返回的是带签名的临时 URL,直接把原始链接存下来用会 403。主题里有图片代理和缓存的方案,自定义主题时别绕过这层直接拿原始链接。
坑四:自定义样式的优先级。 主题样式基于 Tailwind,我加的全局 CSS 老是被覆盖,折腾半天后乖乖改用工具类,实在不行就提高选择器优先级,别跟框架硬碰硬。
数据库公开的注意点
这是最容易被忽略的一点:Notion 数据库要公开分享,NotionNext 才读得到。这意味着库里的每一行都是公网可访问的。
- 隐私内容、内部笔记永远不要放进这个库,草稿建议另建私有库。
- 分享时选「仅可查看」,别开编辑权限,搜索引擎索引那项按需关闭。
- 附件和图片同样公开,插图之前先想清楚。
现在的写作流
打开 Notion 写草稿,填好摘要和标签,状态改成 Published,过几分钟博客自动更新。没有构建命令,没有 git 提交,写作的阻力降到了最低。对我这种「流程一麻烦就不想写」的人,这套组合是目前的最优解。
Loading...