无需服务器、只需几分钟即可拥有自己的独立博客站~如果你在使用 Notion 这款神级笔记本的话,不妨来试试顺手建个网站🤣🤣🤣,这是一款基于 NotionAPI 的博客系统。
NotionNext 是什么?
NotionNext 是我开源在 Github 的博客生成器,它帮助写作爱好者们无需购买服务器快速地搭建个人网站,从而让作者专注于写作、不需要操心网站的维护。
效果
只需几分钟的操作,您将获得和我一样的博客网站👇:
NotionNext - 搭建博客
工作原理
NotionNext 使用 NextJs\TailwindCSS 开发,借助 [Vercel]云托管服务,将您的 [Notion 笔记]实时渲染成静态博客站点。💡除了 Vercel 云托管、您还可以选择在服务器本地部署、导出静态网页、Docker 容器化、CloudFlare 部署等方案。
为何使用 NotionNext
相比于 Hexo等类型的静态博客,您不需要学习 Markdown 语法,也不需要每次写完文章都提交推送到 Git 仓库。有了 NotionNext,编写与发布都只在您的笔记中完成。借助 Notion 强大的编辑和写作功能,您可以随时随地撰写文章、记录你的创意与灵感。💡Notion 是我极度推荐的一款笔记软件,相关介绍可以看这篇文章
如何发布博文
在 Notion 中将写好的文章的状态设置为Published 即可。NotionNext 将自动从您的 Notion 笔记中实时抓取并展现您最新的文章改动。
一、功能简介
💡折腾博客多年,尝试过 WordPress、Hexo、Typecho、Ghost、Gridea、Hugo 等博客系统,我觉得在写作过程中应当把重心放在养成内容持续输出的习惯;博客系统只是一个辅助,反复折腾搭建系统、维护服务器显得本末倒置。 Notion 笔记本的出现,让 “坚持笔记” 和 “博客分享” 得到了完美结合,何乐而不为呢。 NotionNext 是基于 craigary 的 Nobelium 项目二次开发,继承了 Nobelium 功能特点,拥有极快的打开速度:
NotionNext 在 Nobelium 的基础上增加了以下特性:
🙉 更多的功能
文章分类、标签、归档页面
首页大图、问候语
📶 更好的 SEO
文章关联推荐
文章版权声明 ©️
网站 h1、h2 标题优化
自动生成 sitemap.xml
👀 阅读体验优化
文章目录、字数统计、阅读时间统计
阅读量访客量展示
手动切换夜间模式
👭 交互优化
文章分享💌
看板宠物😾
支持 waline\valine[giscus](https://giscus.app/zh-CN) 等 6 种评论插件
支持自定义你的表头属性 -V3.4.5 特性
🎨 支持多主题切换
Next 预览 Next
Medium 预览 Medium
Hexo 预览 Hexo
Fukasawa 预览 Fukasawa
Example 预览 Example
- 修改代码中的
/blog.config.js文件即可实现多主题之间的切换。
const BLOG = {
...
THEME: process.env.NEXT_PUBLIC_THEME || 'next', // 主题, 支持 ['next','hexo',"fukasawa','medium']
...
}
// 可配置VERCEL环境变量NEXT_PUBLIC_THEME,或者修改上面的 'next' 字段即可。
JavaScriptCopy
- 甚至直接在网址后面加上
?theme=next也能实现不同主题的展示:https://preview.tangly1024.com/?theme=next、
🖌️ 丰富便捷的字体
- 系统预设了 GoogleNotoSans 字体,您也可以在
blog.config.js中自定义字体:
// 自定义字体示例: 请先将 CUSTOM_FONT 改为 true, 并将 CUSTOM_FONT_URL 改为你的字体CSS地址,同时在 CUSTOM_FONT_SANS 与 CUSTOM_FONT_SERIF 中指定你的 fontfamily
CUSTOM_FONT: true, // 是否使用自定义字体
CUSTOM_FONT_URL: ['https://cdn.jsdelivr.net/npm/lxgw-wenkai-screen-webfont@1.6.0/lxgwwenkaiscreen.css'], // 自定义字体的CSS
CUSTOM_FONT_SANS: ['LXGW WenKai Screen'], // 自定义无衬线字体
CUSTOM_FONT_SERIF: ['LXGW WenKai Screen'], // 自定义衬线字体
JavaScriptCopy
二、快速开始
💡按照以下步骤将在 Vercel 平台部署你的网站。
0.Fork 此 Github 项目:
(可选) 用自己的图片替换
/public文件夹里的favicon.svg和favicon.ico在
blog.config.js配置网站的相关信息,例如站点地址,作者信息。
1. 在 Vercel 中导入你刚 fork 的项目

2. 配置你的 Notion 数据
- 点击
Environment Variables(环境变量),添加NOTION_PAGE_ID的值。

_**NOTION_PAGE_ID**_这个参数从何而来?(点击下方内容可展开详情)
- 打开以下 Notion 页面,并复制到你的 notion 空间: (点击右上角
Duplicate即可)
点击右上角的 Duplicate2. 分享你的页面:点击 Share开启Share to web选项
3. 在页面链接中取得PAGE_ID:
ctrl或cmd+L可以快速复制当前页面链接,PAGE_ID就是以下页面链接中的标红部分:💡示例: https://www.notion.so/tanghh/02ab3b8678004aa69e9e415905ef32a5?v=b7eb215720224ca5827bfaa5ef82cf2d
3. 完成部署
💡点击Deploy,并静候两分钟。
完成后点击Go to Dashboard访问控制台,点击控制台右上角Visit按钮访问你的站点。
Vercel 控制台
4. 一些小 Tips
如何快速修改站点标题以及头像:修改 Notion 页的 icon,即可同步站点的作者头像;修改页面标题将同步修改站点标题,页面描述就是站点描述。
- 每次修改代码文件、例如 blog.config.js 后, Vercel 会自动重新部署你的站点。
Notion 页面的安全:您共享的 Notion 页面,他人只有查看权限,除非你手动开启编辑和评论。若您不希望别人访问到你的源 Notion 页面,可选择关闭 Noton 页面共享,然后通过 Notion 的 access_token 进行数据访问。
如何设置评论插件配置
giscus 评论插件:访问 Giscus 插件主页,照着页面内的步骤操作就会给出该有的参数,再到 blog.config.js 設定好參數即可
valine/walin 评论插件:参考以下文档进行配置
[NotionNext 配置 Valine/Waline 评论插件 | TANGLY’s BLOGValine 插件需要 LeanCloud 后端提供数据库存储功能,请按照以下步骤配置。 而 Waline 的前置步骤和 Valine 基本一致,只是多了一个部署 Waline 的 Vercel 服务步骤。由于 Waline 配置了完善的后台管理功能,所以使用 Waline 就不需要再配合 Admin-Valine 项目运行。 应用创建好以后,进入刚刚创建的应用,选择左下角的 设置 > 应用 Key,然后就能看到你的 APP ID 和 APP Key 了: 为了你的数据安全,请设置自己的 安全域名 :只有以下设置的域名,才允许访问你的 valine 数据 支持的 Valine 配置在 NotionNext 项目的 blog.config.js 中,请在 Vercel 后台的环境变量中配置: serverURLs 在应用内部会尝试自动获取,如果发现获取失败,请手动提供 刚刚创建的应用,选择左下角的 设置 > 应用 Key,找到 Request 域名 第一行 需要在 akismet 中注册账号并获取免费的 key: https://akismet.com/account ,并在 LeanCloud 中配置 AKISMET_KEY 变量 参考官方文档,在你的 Vercel 上部署一个 valine 应用。而后在你的 NotionNext 环境变量中添加你的 waline 服务地址环境变量: NEXT_PUBLIC_WALINE_SERVER_URL 即可生效。
如何在 CloudFlarePage 上部署参考此大神的博文:感谢![NotionNext 建站 - cloudflare 版 | haixin’s blog请务必先阅读仓库原作者的 这篇博客, 在其中已经有建站指引. 这边只针对如何在 Cloudflare 部署 NotionNext, 不会对其他内容做说明. fork 对应仓库 NotionNext 部署到 CloudFlare Page 上 创建新的项目 Create a project, 选择 Connect to Git(没有关联 Github 账号的话需要关联上) 选择 NotionNext 仓库 因为 cf-support 才支持部署到 Cloudflare, 生产分支需要选择 cf-support 分支 框架预设选项选择 Next.js, 只需要填写正确构建命令即可 环境变量设置, 需要设置 NOTION_PAGE_ID={你的 Notion Page ID} 这个填你自己的 Notion PageID, 如果不清楚, 则去看 文档, 这里不赘述 NODE_VERSION=16 设置构建时使用 NODE 版本 VERCEL_ENV=production 这个环境变量决定是否把文章静态渲染出来, 如果没有则部署完无法查看文章内容, 会显示博客文章 404 保存并部署, 等待部署成功 给 Pages 设置自己的域名, 这个自己去探索吧. 没什么可说的. 因为没解决 react-messenger-customer-chat 依赖无法正常安装的问题, 所以删掉了该依赖和相关的组件 (FacebookMessenger), 因此部署后的博客将不支持这一扩展.
5. 绑定自己的域名
vercel 有为你的站点提供一个 *.vercel.app 的域名,但 vercel 的官方域名在大陆被墙,所以需要绑定自己的域名。参考以下文章,您可以快速地将自己的域名解析到 Vercel 站点:[Vercel 应用绑定自己的域名 | 小唐笔记📒首先需要在域名服务商处购买域名,可以选择 Namesilo、Freenom、Godaddy、阿里云、腾讯云等任意平台。并在域名服务商后台添加一条 CNAME 转发进行解析,CNAME 值为 cname.vervel-dns.com 。 CF 具有 Worker.js、全球无限 CDN 流量、网站防火墙、DDoS 等特性,我个人比较喜欢将域名解析交给 CloudFlare 管理 。 …三、项目更新
项目不定期会修复 bug、增加新特性,请参考此篇文章进行更新:[NotionNext 更新指南 | TANGLY’s BLOG本项目在长期维护更新中,不时将修复一些 bug 和增加新特性。 只要在您 fork 后的的 NotionNext 中点击 Fetch upstream 就能更新为最新的代码 有时这里显示的不是 Fetch and Merge 按钮,而是 Open pull request。原因是我和你的代码发生冲突( confilcts),例如我修改了 blog.config.js 文件,你也修改了此文件,导致在更新时,Git 需要人工确认要合并代码时保留的 blog.config.js 文件版本。