在Astro Firefly主题中接入Notion

1065 字
5 分钟
在Astro Firefly主题中接入Notion

Astro 的 Firefly 是一款轻量化静态博客主题,我也很喜欢,自己花了点时间捣鼓了几下接入了 Notion 数据库,实现了文章、友链、瞬间动态在线管理,在 Notion 写内容一键同步到博客,下文将完整记录部署配置流程。

相关项目#

我在源项目基础上接入了 Notion 数据库,没有夹带私货,欢迎使用!对你有用的的话点个 Star 吧。

Vemeres
/
Notion-Firefly
Waiting for api.github.com...
00K
0K
0K
Waiting...

这个是源项目,主题做的真的很不错,有能力的可以支持一下

CuteLeaf
/
Firefly
Waiting for api.github.com...
00K
0K
0K
Waiting...

改造后功能一览#

  • ✅ Notion 数据库文章批量转 Markdown 同步至本地,封面、正文图片可本地化下载
  • ✅ 友链数据从 Notion 同步,页面支持访客在线提交友链(自备后端 API)
  • ✅ 新增瞬间动态模块,图文动态依托 Notion 数据库统一管理
  • ✅ 两种文章同步模式:全量覆盖 / 仅新增同步

前期准备#

1. 准备 Notion 密钥与数据库 ID#

  1. Notion 后台创建内部集成,复制NOTION_TOKEN
  2. 将集成权限添加至三个数据库;
  3. 从数据库链接截取对应 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/true
ENABLE_PROCESS_COVER_IMAGE=true
# 是否下载正文图片到本地 false/true
ENABLE_PROCESS_CONTENT_IMAGES=true

2. 可选高级配置#

编辑 scripts/sync-notion-contents.js,修改CONFIG.skipDomains,配置无需下载图片的域名黑名单。

命令同步数据#

1. 同步文章#

文章存放目录:src/content/posts,以文章 slug 生成独立文件夹

BASH
# 全量同步,覆盖本地所有文章
pnpm sync-contents:all
# 只同步新增文章,不覆盖旧内容
pnpm sync-contents:new

⚠️ 禁止手动修改本地文章 slug,会造成重复、丢失。

2. 同步友链#

数据写入:src/config/friendsLinks.json

BASH
pnpm sync-links

3. 开启友链提交表单#

打开src/config/friendsConfig.ts,修改参数:

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

BASH
pnpm sync-moments

注意事项#

  1. 开启图片本地化后,所有 Notion 图片自动下载至项目本地;
  2. 项目基于原版 Firefly 二次开发,主题原版迭代较快,部分功能可能存在差异,异常参考Firefly 官方文档
  3. 项目保持静态站点特性,友链提交依赖第三方 API,密钥不要前端暴露;
  4. sync-contents:all为覆盖式同步,操作前建议备份本地文章。

结语#

依托 Notion+Firefly 改造方案,不用触碰源码即可在 Notion 可视化写博客、管理友链与日常动态,把 Notion 当做免费 CMS 后台,兼顾静态博客性能与便捷的内容管理。配置报错优先排查 Notion 集成权限、数据库字段名称匹配问题。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

在Astro Firefly主题中接入Notion
https://blog.suntts.top/posts/notion-firefly/
作者
Vemeres
发布于
2026-03-10
许可协议
CC BY-NC-SA 4.0

评论区

加载评论中...

Profile Image of the Author
Vemeres
山不让尘,川不辞盈
封面

音乐

暂未播放

0:00 0:00
暂无歌词
标签

文章目录