米露小窝
放弃个性,就和死了没什么区别
米露小窝

基于PHP的NotionAI第三方SDK

前言

之前我搭建了一个ChatGptQQ机器人给群友们使用,但是因为OpenaiAPI定价和账户难注册的问题暂停了,我就想能不能使用第三方的API来调用ChatGpt

之后有一个朋友送了我一个Notion的会员,我一看,他自带AI写作助手,我就想能不能把这个API抓下来用呢?

验证猜想

我先创建了一个文档,使用AI助手创建了一段文字,并打开F12开发者工具开始抓包:

https://upy.5k.work/2023/07/20230716031908372.png

我一看确实是抓到了,之后就是脱离浏览器看看能不能返回了

我先查看了发送的post请求的参数:

https://upy.5k.work/2023/07/20230716032829740.png

有一个spaceID和id,我们直接给数据先看看能不能返回

https://upy.5k.work/2023/07/20230716033230614.png

返回了401,Must be authenticated.

我一想,没带上Cookie

之后我去试了试,发现只要带上token_v2这个Cookie就可以了,我们再来试一遍:

https://upy.5k.work/2023/07/20230716033450158.png

成功返回了!

使用PHP实现

之后我们化简json体就可以了

经过我的测试,json体的ID可以随便填,于是我化简为了这样:

之后我们使用PHP实现就可以了

我使用了curl来实现,具体代码如下:

<?php
function notionai($Cookie,$spaceId,$Text) {
$url = 'https://www.notion.so/api/v3/getCompletion';
$headers = &#91;
    'Accept: application/x-ndjson',
    'Content-Type: application/json',
    'Cookie: token_v2='.$Cookie
    ];
$data = &#91;
    "id" => "ByMxmilu",
    "context" => &#91;
        "type" => "helpMeWrite",
        "pageTitle" => "AI",
        "previousContent" => "",
        "restContent" => "",
        "prompt" => $Text,
    ],
    "model" => "openai-3",
    "spaceId" => $spaceId,
    "isSpacePermission" => false,
    "inferenceReason" => "writer",
];
$data = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$pattern = '/"completion":"(.*?)"/';
preg_match_all($pattern, $response, $matches);
$completions = $matches&#91;1];
$output = implode("", $completions);
return $output;
}

之后调用函数就可以返回了

https://upy.5k.work/2023/07/20230716034110118.png

后言

代码已经在Github开源,喜欢的可以点个star QWQ

另外我用MDUI写了一个简单的前端,可以来试试:gpt.appleblock.cn

赞赏
基于PHP的NotionAI第三方SDK》依据“CC BY-NC-SA 4.0”许可证进行授权。转载的时候请附上米露的链接,最好请勿用于商业目的 qaq

MxmiluBOB

文章作者

发表回复

textsms
account_circle
email

米露小窝

基于PHP的NotionAI第三方SDK
前言 之前我搭建了一个ChatGptQQ机器人给群友们使用,但是因为OpenaiAPI定价和账户难注册的问题暂停了,我就想能不能使用第三方的API来调用ChatGpt 之后有一个朋友送了我一个Notion的…
扫描二维码继续阅读
2023-07-16