DevNow x Notion
前言
Notion 应该是目前用户量比较大的一个在线笔记软件,它的文档系统也非常完善,支持多种文档格式,如 Markdown、富文本、表格、公式等。
早期我也用过一段时间,后来有点不习惯,就换到了 Obsidian ,但是身边人用的还是很多的,随着 Astro 5.0 的发布,在内容集成上也提供了更多的方向,这期就来聊聊 DevNow 对 Notion 的支持。
1.Notion 设置
1.1 创建 Notion 集成
1.1.1 什么是内部集成?
内部集成允许 Notion 工作区成员通过 Notion REST API 与工作区交互。每个内部集成都与单个特定工作区绑定,并且只有工作区内的成员可以使用该集成。将内部集成添加到工作区后,成员必须手动授予集成访问他们希望其使用的特定页面或数据库的权限。
在 集成管理 中添加新的机集成,用来获取 token 。

成功创建后入下图,我们可以在 功能 模块中管理集成的权限,这里我们主要是读取内容,然后可以获取到 内部集成密钥 即 PUBLIC_NOTION_TOKEN。

1.2 创建 Notion 数据源
目前我们集成只能同步 Database 中的内容,所以我们需要先创建一个 Database。

顶部选中的字符串是 PUBLIC_NOTION_DATABASE_ID ,我们需要将其复制下来,后面会用到。
如图,我们创建一个工作站,然后创建一个 Database 数据源,用来管理我们需要在 DevNow 中展示的文章,为了统一文章的结构,我们在 Database 中添加以下属性:
- title: 文本
- desc: 文本
- publishDate: 创建时间
- image: 图片
- category: 单选
- tags: 文本, 如果有多个,请通过
,分割 - author: 文本
:::tip[提示]
关于 category 字段,建议大家参考 src/data/category.ts 中的分类,将其添加到 Notion 对应的详细那个中,如下:
这样方便大家在 DevNow 中查看文章时,能够快速找到对应的分类。如果有新增,请同时更新,否则会报错。

:::
1.3 关联集成
我们在对应的工作站中关联相关的集成,这样我们就可以在 DevNow 中通过 Loader 获取相关的内容了。

如图,将我们之前添加的集成关联进来。
1.4 创建新文章
如图,我们需要完善所有的属性:

到这里我们 Notion 相关的配置就完事了。
2. 环境变量配置
如果是通过 Vercel 部署的,可以对应的项目中添加环境变量:
- PUBLIC_NOTION_DATABASE_ID
- PUBLIC_NOTION_TOKEN
对应的值就是我们之前创建的 Database 的 ID 和 token。
如果是私有项目部署的话,可以在 .env 文件中添加相关内容。
3. DevNow 配置
在 DevNow 中,我们需要配置相关的 loader 来获取我们的内容,由于数据的不同,我们在数据层也要做一下兼容,我们统一将数据格式化成 src/content/config.ts 中的 SCHEMA 格式。
3.1 配置相关的 loader
Notion 的相关 loader 我们通过库 notion-astro-loader 库来实现。
如要接入,请将一下注释打开即可。
...
// import { notionLoader } from 'notion-astro-loader';
...
// export const NotionDocs = defineCollection({
// loader: notionLoader({
// auth: import.meta.env.NOTION_TOKEN,
// database_id: import.meta.env.NOTION_DATABASE_ID
// })
//});
export const collections = {
doc: Docs,
// notion: NotionDocs
};
3.2 数据源格式化
相关文件已经在 DevNow 中添加,如果需要计入 Notion 数据源,同上把注释打开即可。
// import { richTextToPlainText } from 'notion-astro-loader';
// import { formatDate } from './utils';
// export const getNotionDocs = (await getCollection('notion')).map((item) => {
// return {
// id: item.id,
// body: item.rendered?.html ?? '',
// data: {
// title: richTextToPlainText(item.data.properties.title.rich_text),
// desc: richTextToPlainText(item.data.properties.desc.rich_text),
// category: item.data.properties.category.select?.name || '',
// author: richTextToPlainText(item.data.properties.author.rich_text),
// tags: item.data.properties.tags.rich_text[0].plain_text.split(','),
// image: item.data.properties.image.url,
// publishDate: item.data.properties.publishDate.created_time,
// pin: false
// },
// rendered: item.rendered,
// filePath: item.id,
// collection: item.collection,
// };
// });
export const latestPosts = [
...(await getCollection('doc', ({ data }) => {
return import.meta.env.PROD ? data.draft !== true : true;
}))
// 如果需要接入 Notion 数据源,需要将下面的注释去掉
// ...getNotionDocs
].sort((a, b) => new Date(b.data.publishDate).valueOf() - new Date(a.data.publishDate).valueOf());
3.3 遗留问题
由于数据的问题,目前暂时无法实现 Notion 数据源 readTime 计算,所以 Notion 相关文章,暂时不展示。
已经兼容了 Notion 的 headings 和 其他的相关数据。
结果展示
列表页:

详情页:

总结
到这基本就完事了,可以通过这个方式,将 Notion 作为 DevNow 的数据源,来管理我们的文章。
这样可以更方便我们的数据管理,也可以更好的与 Notion 进行集成,让我们的文章更加的丰富。
DevNow x Notion的更多相关文章
- 笔记软件 notion
笔记软件 notion : https://www.notion.so 注册:zengxinle@126.com 团队:Hopesun
- notion笔记
不错的笔记应用, 模式新颖, 正在使用, 如有相同使用者可以入群交流 notion QQ群 725638123
- Mac电脑最常见的办公软件是什么?Notion for Mac多功能办公笔记软件使用方法
Notion for Mac是一款最新的高效率.办公类软件,相信许多用户在办公的时候需要打开特别多的在线工具,譬如Google Drive.Dropbox Paper.Confluence.GitHu ...
- 2021软工-调研作业-Notion
2021软工-调研作业-Notion 项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 案例分析作业要求 我在这个课程的目标是 学习软件开发的工业化 ...
- Book2Notion:将豆瓣图书信息同步到Notion的Chrome插件
背景 前几天写了一个python脚本从豆瓣爬数据然后保存到Notion,被身边同学吐槽使用起来太麻烦,而且也不是所有人都会Python(原话是充满了码农版"何不食肉糜").正好最近 ...
- 从 Notion 分片 Postgres 中吸取的教训(Notion 工程团队)
https://www.notion.so/blog/sharding-postgres-at-notion 今年(2021)早些时候,我们对 Notion 进行了五分钟的定期维护. 虽然我们的声明指 ...
- 用 notion 管理信用卡与花呗
用 notion 管理信用卡与花呗 Notion原文,排版更佳 概述 不需要提醒功能和安卓用户可以忽略Scriptable和快捷指令 app的设置 Notion 建立信用卡表格,录入信用卡基本信息,自 ...
- 数据对接:从Notion Database到低代码平台
前言 Notion简介 近几年,有一款叫Notion的产品异常火爆,它是集笔记.任务管理.Wiki.数据管理为一体的产品,他主打两个理念「模块化」和「All-in-one」,Notion最有魅力的还是 ...
- 一招教你 Notion 文章导出到公众号
Notion是一个功能强大的笔记应用程序,有许多优点,包括: 用户友好的界面 跨平台支持 可以结构化组织笔记 多人协作 可以添加多种类型的媒体文件 可以添加评论和任务 这些优点使Notion成为一个广 ...
- Notion AI : 让表达如此简单
前言 写作如说话,想说与说明白中间隔着沟壑! 下面用 Notion AI 作诗来作为本文开头吧. 想说与说明白(作者:Notion AI) 想说千言万语,说明白却难如登天. 言语之间,沟壑重重,思想与 ...
随机推荐
- Ex-BSGS
给定\(a,p,b\),求\(a^x\equiv b \pmod p\)的最小自然数\(x\) . 保证\(\sum \sqrt p \leq5\times 10^6\) 当\(a=p=b=0\)时, ...
- 快来考试拿证书!KubeSphere 个人技能专业考试认证上线啦!
以容器技术和容器编排为基础的云原生应用,被越来越多的企业用户接受和使用,并且在生产环境中使用容器技术的比例逐年增加.Kubernetes 无疑已经成为容器编排的事实基础,而依托于 Kubernetes ...
- 快速搭建k8s
换桥接模式,换sealos 桥接模式 部署出问题了,用这个: ipconfig 以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . ...
- go:极简上手使用 stretchr/testify 进行mock测试
库安装 首先,安装 Mock 类生成工具 Mockery: go install github.com/vektra/mockery/v2@v2.45.1 实际上,你也可以手动创建 Mock 类. 生 ...
- CSS动画(波光粼粼登录页面)
1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa4AbemkU3vLRIDzTIgPHSjicia97wfvMVAhqZL4lsGbQQCbsV ...
- Sealos Devbox 使用教程:使用 Cursor 开发一个高仿苹果官网
本教程将通过实战案例,详细介绍如何利用 Cursor 和 Devbox 开发环境,在一天内完成专业企业官网的开发和部署.适合产品经理.初级开发者或任何想要快速搭建网站的人群. 因为业务的需要,我需要开 ...
- 题解:CF507C Guess Your Way Out!
CF507C Guess Your Way Out! 题解 算法 模拟 思路 按照左右左右的方式先往下找,每次找到一个子节点时就看此节点为根的子树是否包含目标节点,如果包含就继续往下走,不包含说明目标 ...
- P8392 BalticOI 2022 Day1 Uplifting Excursion
P8392 BalticOI 2022 Day1 Uplifting Excursion 贪心加动规,好题,这两个甚至完全相反的东西可以融进一道题-- 思路 物品较少,贡献较小,体积较小,但总体积巨大 ...
- nvidia公司的机器人仿真环境的历史发展介绍(Isaac-Gym、Isaac-Sim)
相关: NVIDIA机器人仿真项目 -- Isaac Gym - Preview Release 本文说下NVIDIA公司的机器人仿真项目的一些历史发展. NVIDIA公司的产品最初只有显卡,但是卖着 ...
- 腾讯AICR : 智能化代码评审技术探索与应用实践(下)