在Astro Firefly主题中接入Notion
1065 字
5 分钟
在Astro Firefly主题中接入Notion
Astro 的 Firefly 是一款轻量化静态博客主题,我也很喜欢,自己花了点时间捣鼓了几下接入了 Notion 数据库,实现了文章、友链、瞬间动态在线管理,在 Notion 写内容一键同步到博客,下文将完整记录部署配置流程。
相关项目
我在源项目基础上接入了 Notion 数据库,没有夹带私货,欢迎使用!对你有用的的话点个 Star 吧。
Waiting for api.github.com...
这个是源项目,主题做的真的很不错,有能力的可以支持一下
Waiting for api.github.com...
改造后功能一览
- ✅ Notion 数据库文章批量转 Markdown 同步至本地,封面、正文图片可本地化下载
- ✅ 友链数据从 Notion 同步,页面支持访客在线提交友链(自备后端 API)
- ✅ 新增瞬间动态模块,图文动态依托 Notion 数据库统一管理
- ✅ 两种文章同步模式:全量覆盖 / 仅新增同步
前期准备
1. 准备 Notion 密钥与数据库 ID
- 在 Notion 后台创建内部集成,复制
NOTION_TOKEN; - 将集成权限添加至三个数据库;
- 从数据库链接截取对应 Database ID。
2. 新建 Notion 数据库
文章数据库
| 字段名称 | 字段类型 | 说明 |
|---|---|---|
| Title | 文本 | 文章标题 |
| Cover Image | 文件和媒体 | 封面图 |
| Published | 日期 | 发布时间 |
| Updated | 日期 | 更新时间 |
| Status | 状态 | 已发布 / 草稿 |
| Category | 选择 | 文章分类 |
| Tags | 多选 | 标签 |
| Description | 文本 | 简介 |
| Pinned | 复选框 | 是否置顶 |
友链数据库
| 字段名称 | 字段类型 |
|---|---|
| Title | 文本 |
| Desc | 文本 |
| Siteurl | 网址 |
| Imgurl | 网址 |
| Status | 状态(已通过 / 待审核) |
| Tags | 多选 |
| Enabled | 复选框 |
| Weight | 数字 |
瞬间动态数据库
| 字段名称 | 字段类型 |
|---|---|
| ID | 文本 |
| Content | 文本 |
| Imgurls | 文件和媒体 |
| Datetime | 日期 |
| Tags | 多选 |
| Location | 文本 |
| Enabled | 复选框 |
| Pinned | 复选框 |
字段名称、类型可按需自定义修改。
项目环境配置
1. 环境变量配置
项目根目录,将.env.example重命名为.env,填入配置:
NOTION_TOKEN=你的Notion密钥
NOTION_CONTENTS_DATABASE_ID=文章库ID
NOTION_LINKS_DATABASE_ID=友链库ID
NOTION_MOMENTS_DATABASE_ID=瞬间库ID
# 是否下载封面到本地 false/trueENABLE_PROCESS_COVER_IMAGE=true
# 是否下载正文图片到本地 false/trueENABLE_PROCESS_CONTENT_IMAGES=true2. 可选高级配置
编辑 scripts/sync-notion-contents.js,修改CONFIG.skipDomains,配置无需下载图片的域名黑名单。
命令同步数据
1. 同步文章
文章存放目录:src/content/posts,以文章 slug 生成独立文件夹
# 全量同步,覆盖本地所有文章pnpm sync-contents:all# 只同步新增文章,不覆盖旧内容pnpm sync-contents:new⚠️ 禁止手动修改本地文章 slug,会造成重复、丢失。
2. 同步友链
数据写入:src/config/friendsLinks.json
pnpm sync-links3. 开启友链提交表单
打开src/config/friendsConfig.ts,修改参数:
export const friendsPageConfig: FriendsPageConfig = { // 是否启用友链提交表单 showSubmitForm: true,
14 collapsed lines
// 页面标题,如果留空则使用 i18n 中的翻译 title: "",
// 页面描述文本,如果留空则使用 i18n 中的翻译 description: "",
// 是否显示底部自定义内容(friends.mdx 中的内容) showCustomContent: true,
// 是否显示评论区,需要先在commentConfig.ts启用评论系统 showComment: true,
// 是否开启随机排序配置,如果开启,就会忽略权重,构建时进行一次随机排序 randomizeSort: false,};开启后友链页面底部出现提交框,需要自行开发提交接口 API,可修改src/pages/friends.astro调整页面代码。
4. 同步瞬间动态
数据写入:src/config/moments.json
pnpm sync-moments注意事项
- 开启图片本地化后,所有 Notion 图片自动下载至项目本地;
- 项目基于原版 Firefly 二次开发,主题原版迭代较快,部分功能可能存在差异,异常参考Firefly 官方文档;
- 项目保持静态站点特性,友链提交依赖第三方 API,密钥不要前端暴露;
sync-contents:all为覆盖式同步,操作前建议备份本地文章。
结语
依托 Notion+Firefly 改造方案,不用触碰源码即可在 Notion 可视化写博客、管理友链与日常动态,把 Notion 当做免费 CMS 后台,兼顾静态博客性能与便捷的内容管理。配置报错优先排查 Notion 集成权限、数据库字段名称匹配问题。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
在Astro Firefly主题中接入Notion
https://blog.suntts.top/posts/notion-firefly/ 相关文章 智能推荐
1
Linux 运维常用命令
技术笔记 记录一下自己日常运维工作中使用率最高的 Linux 命令
2
Tailwind CSS 个人笔记
技术笔记 记录一下自己日常开发中最常用的 Tailwind 用法,不做系统教学,只用来自我复盘、快速查阅,忘记语法的时候直接翻这篇就够了。
3
自建 Meting-API 指南(支持解析网易云VIP)
开发笔记 自建 Meting-API,支持网易云VIP音乐解析
4
Git 常用指令笔记
技术笔记 整理一份自己日常开发一直在用的 Git 指令合集
5
提问的智慧
文章分享 How To Ask Questions The Smart Way
随机文章 随机推荐
评论区
加载评论中...