Coze平台上一直缺少一个比较完善的Notion插件。官方有一个,但是功能很基础,并且也不怎么好用。
如果你的Coze Bot需要与Notion作集成,你可以试试我开发的Notion Connector插件。Notion Connector是Harvest(https://www.coze.com/s/ZmFqpHdjQ/)背后使用的一套API服务,我把它封装成插件发布到Coze平台上了:
国际版插件地址:https://www.coze.com/store/plugin/7368097062283640838国内版插件地址:https://www.coze.cn/store/plugin/7368111600210853899
构建实用的AI Bot需要强大且易用的Building Blocks。
通过Notion Connector提供的一系列API工具,你可以在Notion数据库中进行搜索、把网页或者任意Markdown内容保存到Notion数据库中、读取Notion页面或者其他网页的内容,实现Coze Bot与Notion的无缝集成。
希望这些工具可以成为你称手的Building Blocks。
1. 授权并连接到Notion数据库
Notion最强大的功能就是它的数据库,它非常适合用来构建个人信息库/知识库。

我的一个信息库大概是长这样的
Notion Connector的所有API都是针对一个数据库进行操作的。通过connectToNotion 这个API,你可以请求用户授权并绑定一个Notion数据库。用户可以直接使用开发者准备好的数据库模版,也可以选择一个自己已有的数据库。为了保持简单,目前Notion Connector同一时间只支持连接一个数据库,并且只能是数据库,不能是普通的Notion页面。

Notion授权页面
Notion Connector的所有API都需要用户先授权才用调用。如果没有授权或者授权过期,Coze会提醒用户去授权。
目前这里有一个很蛋痛的问题:Coze保留授权信息的时间很短,导致它会经常性地要求用户去授权。这个问题很影响用户体验,我已经跟官方反馈了,希望Coze能尽快解决这个问题。
应用实例
这个API其实不是必要的,因为当你调用需要授权的API时,Coze会自动请求用户授权。但是,为了清晰起见,在Harvest里我把connectToNotion做成了一个快捷功能。用户可以输入“Connect to Notion”来主动调用这个功能。
在Bot的提示词里,你可以这样描述:
When the user asks to `Connect to Notion`, you should invoke the `connectToNotion` function. Afterwards, inform the user about the connected database. Please present the database information in Markdown format:
I have successfully connected to the Notion database: [database_title](database_url).
In case of an `unauthorized` error, clarify the error message to the user and ask them to reconnect to Notion by issuing the `Connect to Notion` command once more.
另外,这个API也可以用来同步最新的Notion授权信息。比如,如果用户在Notion里将插件绑定到了另外的数据库上,就可以再次调用这个API来更新绑定的数据库信息。
2. 检索Notion数据库中的页面
searchNotion提供了基础的数据库检索功能。你可以利用这个API搜索Notion数据库,获取与查询字符串(query)或关键词(keywords)最相关的页面(国内版暂不支持关键词参数)。目前这个API只能检索Notion页面的标题和属性,还不能搜索页面内容,后面会考虑通过RAG来增强搜索效果。
应用实例
目前在Harvest里,我只做了简单的应用。Harvest在回答用户提问时,会同时检索互联网和用户的Notion数据库,然后在回答末尾它会给出与用户提问相关的Notion页面。如图:

在回复末尾会列出Notion中的相关页面
理论上,在利用searchNotion这个API检索出相关页面之后,你可以再调用getPage这个API读取页面内容,然后将页面内容作为上下文传给大语言模型,增强它的回复效果。因为我还没想好怎么处理互联网和Notion数据库两种这两种信息源的关系以及如何权衡响应速度和响应质量,所以还没来得及把这个API深度应用起来。后面Harvest会有相关的更新。你可以自己先玩起来。
3. 读取网页和Notion页面的内容
getPage这个API可以用来读取指定页面的内容。它可以读取互联网上大部分的公开页面,同时也可以读取Notion数据库中的页面。调用方式是一致的,你只需要把网页的URL或者Notion页面的URL传进去就可以了,它会将页面的内容以Markdown格式返回。
应用实例
在Harvest里我会使用这个API来读取网页内容,然后生成内容提纲。

生成页面提纲
又或者,用它读取页面内容,然后从页面内容中提取标题、作者、发布时间、摘要、关键词等元信息。

从页面内容中提取元信息
4. 保存网页或者Markdown内容到Notion
saveToNotion这个API允许你将网页或Markdown内容直接保存到Notion数据库中。使用page_url参数保存网页,使用page_content参数保存Markdown内容。
应用实例
网页剪藏是Harvest最基础的能力,这个能力其实就是通过此API实现的。现在这个API还可以支持直接保存任意Markdown内容到Notion数据库中。任意内容就包括之前用户跟Bot之间的问答记录:

问答记录保存到Notion中的页面是这样的:

以上……
就是Notion Connector这个Coze插件的简单介绍,欢迎使用这些工具构建你自己的Bot。使用中如遇到问题也欢迎向我反馈~
Harvest是Notion Connector的一个典型应用,上面大家也看到了一些功能示例。当然Harvest不是简单地调用一下插件API就可以实现,在Coze端还需要做很多的提示词编程和工作流设计工作。关于Harvest的功能更新,我会单独写一篇文章来详细介绍。