1.Notion数据库简介
Notion 数据库最大的用途是结构化地存储和管理数据,在 AI 应用开发的场景中可存储 AI 处理后的数据,也可以将数据作为知识库使用。
Notion 数据库的构成如下:
(1)数据库:结构化的数据集合,1 个数据库就是一张数据表,跟传统数据库不同,notion 数据库是没有多表的结构
(2)页面:每一行数据就是一张notion页面,属性可以是任意 notion 支持的内容块,比如文本、图片、待办事项、其他内联数据库等
(3)属性:数据库中定义的列,每个属性都有一个名称 (Name) 和一个类型 (Type),notion 支持的属性类型非常多样,写入的数据类型不符合属性的定义,就会抛出类型错误,这是最经常遇到的问题。
Notion 数据库长的像电子表格,但其实是页面的集合,每一行数据都是一张 notion 页面,形成结构化的数据集,根据需要可以进行过滤、排序和组织。
Notion 数据库提供了多种视图 (Views) 来展示和交互数据,除了表格视图外,还有看板视图、日历视图、列表视图等。
通过 Relation 属性,还能关联不同的数据库数据,从而形成一个复杂的系统,比如建立项目-任务、父任务-子任务、笔记-主题、客户-订单等复杂的关联关系
2.Notion数据库创建
2.1快速创建数据库
首先打开我的集成页 https://www.notion.so/profile/integrations
然后打开notion页面

方法1:找到一张 notion 页面,点击加号,添加子页面,在底部的开始使用中选择“数据库”,你可以选择创建一张空白数据库
方法2:使用 notion AI 快速创建一个数据库,提示词使用“创建热门文章收集器”,等待一会儿,AI 会帮你创建一个带有丰富属性与视图的数据库。
左侧你可以跟 AI 对话,添加一个摘要视图,方便快速浏览文章。
创建好了之后可以看到必要的属性已经有了,很牛的是 AI 还帮你创建多个视图,阅读状态看板、摘要浏览、分类等。
2.2创建属性
数据库创建后,需要根据自己的需求添加表格属性,notion 支持的属性类型如下(其中黄色背景为常用属性):
类型 |
英文名称 |
主要用途 |
属性写入数据举例 |
富文本 |
Rich Text |
单行文本和多行富文本 |
{ "rich_text": [ { "type": "text", "text": { "content": "这是一行测试文本" } } ] } |
数字 |
Number |
数值、数量、价格、排序等 |
{"number": 123.45} |
多选 |
Multi-select |
从预定义选项中选择多个,用于标签、特性等 |
{"multi_select": [{"name": "标签1"}, {"name": "标签2"}]} 或 {"multi_select": [{"id": "tag_id_1"}, {"id": "tag_id_2"}]} |
网址 |
URL |
存储网页链接 |
{"url": "https://www.notion.so"} |
日期 |
Date |
日期、截止日期、事件时间,可包含时间范围和时区 |
{"date": {"start": "2023-12-31"}} 或 {"date": {"start": "2023-12-31T10:00:00Z", "end": "2024-01-01T10:00:00Z", "time_zone": "Asia/Shanghai"}} |
唯一 ID |
Unique ID |
为每个条目自动生成一个唯一的、可自定义前缀的 ID |
不可直接写入,由 Notion 自动生成。 |
创建时间 |
Created time |
自动记录条目的创建时间 |
不可直接写入,由 Notion 自动记录。 |
单选 |
Select |
从预定义选项中选择一个,用于分类、状态等 |
{"select": {"name": "选项A"}} 或 {"select": {"id": "option_id_A"}} |
状态 |
Status |
跟踪进度或状态(如:待办、进行中、已完成) |
{"status": {"name": "进行中"}} 或 {"status": {"id": "status_id_inprogress"}} |
人员 |
People |
指派任务、标记负责人或参与者 |
{"people": [{"object": "user", "id": "user_id_1"}, {"object": "user", "id": "user_id_2"}]} |
文件与媒体 |
Files & Media |
上传文件、图片、视频或链接到外部媒体 |
{"files": [{"type": "external", "name": "示例图片", "external": {"url": "https://example.com/image.png"}}, {"type": "file", "name": "文档.pdf", "file": {"url": "s3_temp_url_for_upload"}} ]} |
复选框 |
Checkbox |
是/否、完成/未完成等二元状态 |
{"checkbox": true} 或 {"checkbox": false} |
邮箱 |
存储邮箱地址 |
{"email": "test@example.com"} |
|
电话 |
Phone |
存储电话号码 |
{"phone_number": "+11234567890"} |
公式 |
Formula |
基于其他属性进行计算或操作,自动生成值 |
不可直接写入,其值由 Notion 根据公式定义自动计算。 |
关联 |
Relation |
连接到其他数据库中的条目,建立表间关系 |
{"relation": [{"id": "related_page_id_1"}, {"id": "related_page_id_2"}]} |
汇总 |
Rollup |
基于“关联”属性从关联数据库中聚合或显示数据 |
不可直接写入,其值由 Notion 根据汇总配置自动计算。 |
创建者 |
Created by |
自动记录条目的创建者 |
不可直接写入,由 Notion 自动记录。 |
上次编辑时间 |
Last edited time |
自动记录条目最后一次被编辑的时间 |
不可直接写入,由 Notion 自动记录。 |
上次编辑者 |
Last edited by |
自动记录条目最后一次被编辑的用户 |
不可直接写入,由 Notion 自动记录。 |
“摘要”属性创建:
点击表格右上角的+号,类型选择“文本类型”,名称修改成摘要,就创建好了

“创建时间”的属性创建
点击加号,类型选择“创建时间”,时间格式选择 24 小时,就创建好了。

1.数据库中 id 与标题属性是无法删除的,但可以修改标题属性的名称。
2.数据库中必须创建id
2.3 Notion集成关联
方法1:数据库准备好了之后,点击右上角的三个点,点击集成,找到配置到的 notion 集成,关联上即可。
1.打开 Dify需要访问的Database
2.点击页面右上角的…按钮
3.在弹出的菜单中,找到集成,搜索你创建的集成名称,然后予以授权即可
方法2:新版的 notion 新增一个快速给集成增加页面访问权限的方法。
找到你要设置的集成,点击集成的“访问权限”:
打开我的集成页 https://www.notion.so/profile/integrations
点击编辑权限
在私人里面勾选上你期望 API 可以访问的页面,是可以批量选择的,选择好后,更新访问权限即可,这样操作更快。

2.4数据库 id 与属性列表获取
使用 notion 的查询 API ,可以获取有权限访问的数据库与属性列表,如果在返回的结果里面没有查找到相应的数据库,有如下二种可能的原因:
1.数据库没配置上集成
2.关联的集成 token 不对,检查下 token
查询数据库API:
curl --request POST \
--url https://api.notion.com/v1/search \
--header 'Authorization: Bearer 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' \
--header 'Content-Type: application/json' \
--header 'Notion-Version: 2022-06-28' \
--data '{
"filter": {
"property": "object",
"value": "database"
}
}'

查询的结果建议用json格式化:https://www.bejson.com/

其中 id 是最重要的信息,将其复制出来。
28dd3638-540c-805a-9731-e34315119ce0
3.工作流构建
3.1构建过程

(1)开始节点配置
notion 数据库 id 与文章 url 参数:

(2) HTTP节点配置
使用 jina.ai 爬取文章内容,爬取成功后会输出 markdown 格式的内容,还无法直接使用。

(3)大模型节点
将爬取的文章内容结构化,提示词可以看文稿:

提示词如下:
从 jina.ai API 获取的文章原始数据中提取标题、发布日期、作者、文章来源,总结出文章摘要与文章标签。
输出 JSON 格式:
{
"title": "提取到的文章主标题",
"tags":["tag1","tag2"],
"digest":"总结的文章摘要",
"source":"来源",
"public_date":"发布日期",
"author":"作者"
}
处理规则:
1. 标题通常是文章最开始的、最显著的文本行。
2. 总结出3 个以内的标签
3. 总结出来的摘要控制在 200 个字以内
4. 发布日期的格式举例: 2025-05-31 17:26:36
5. 尽量去除页眉、页脚、导航菜单、相关文章链接、广告、评论等非核心内容。
6. 如果无法提取,对应字段使用 null。
一定要配置下结构化输出,设置对应的属性字段,这样就可以抽取出文章标题、标签、摘要、来源、发布日期、作者等信息。
(4)配置模版节点配置

使用模版语法组装 notion 接口需要的 json 数据。如何字段很多,这个 json 会比较复杂,如何快速设置呢?这里有个实用技巧,调用 notion 查询接口后,复制数据库相关的数据信息,然后让 AI 帮你生成 json 示例数据,提示词举例:
下面是 notion 数据库查询接口返回的数据库信息,帮我生成一个插入数据库一条数据的 json 参数案例:
AI 就会生成示例数据,将此 json 复制到模版节点中,将示例属性值替换成变量即可。
{
"parent": {
"database_id": "28dd3638-540c-805a-9731-e34315119ce0"
},
"properties": {
"标题": {
"title": [
{
"type": "text",
"text": {
"content": "这是一条新的测试数据标题"
}
}
]
},
"发布日期": {
"date": {
"start": "2025-06-15"
}
},
"页面id": {
"rich_text": [
{
"type": "text",
"text": {
"content": "page_12345"
}
}
]
},
"摘要": {
"rich_text": [
{
"type": "text",
"text": {
"content": "这是这条测试数据的简短摘要内容。"
}
}
]
},
"标签": {
"multi_select": [
{
"name": "LLM"
},
{
"name": "新技术"
}
]
},
"链接": {
"rich_text": [
{
"type": "text",
"text": {
"content": "https://www.example.com/new-article",
"link": {
"url": "https://www.example.com/new-article"
}
}
}
]
},
"来源": {
"rich_text": [
{
"type": "text",
"text": {
"content": "官方博客"
}
}
]
},
"作者": {
"people": [
{
"object": "user",
"id": "90c8bb62-bb02-47c4-a772-2b5ddcc757b1"
}
]
}
}
}
这里需要特别处理的事标签属性,是一个数组,所以需要用到模版的循环语法来生成多个标签。
"标签": {
"multi_select": [
{% for tag_name in tags %}
{ "name": "{{ tag_name | escape }}" } {% if not loop.last %},{% endif %}
{% endfor %}
]
}
(5)HTTP节点配置
调用 notion 的 API,将数据插入到数据库中。记得要配置鉴权信息,配置notion集成的 key,headers 配置上 API 的版本号。

3.2.测试效果
notion数据库id:28dd3638-540c-805a-9731-e34315119ce0
文章Url:https://www.qbitai.com/2025/05/289491.html

