DeepSeek评论与摘要插件

本文最后更新于 2025年4月21日 早上

开头有一段踩坑记录,直接看使用方法,忽略前面的踩坑记录。

Motivation

根据经典的拖延心理:当想要逃避某件事时,就会想要去做除了这件事的其他任何事。

比如不想学习的时候,会莫名其妙地打扫房间和整理桌面

因为抗拒科研和逃避科研,我对博客建设的兴趣陡然上升,最近github上的trending repo中有一个Anduin2017/HowToCook: 程序员在家做饭方法指南,觉得很有意思,然后去看了作者的博客,发现作者的文章评论区都会有一个DeepSeek或者ChatGPT生成的总结性评论,于是想要给自己也加一个。

正好,目前的摘要仅仅是简单截取开头,很不美观,生成的总结还可以拿来当摘要。

实现过程

根据软件工程的“沟通、策划、建模、构建、部署”,产生idea的时候应该就完成了沟通,所以要策划整体实现的流程。

我只是一个项目经验仅限于苍穹外卖和黑马点评的rookie,所以让DeepSeek、ChatGPT、Grok3合作给我策划流程,最终定下的整体流程为:



graph TD
    A[本地Hexo写作] --> B{hexo g -d}
    B --> C[服务器Git仓库]
    C --> D[触发post-receive钩子]
    D --> E[运行generate-comments.js]
    E --> F[调用DeepSeek API生成总结]
    F --> G[通过Netlify Functions更新Twikoo评论]
    F --> H[更新文章excerpt]
    C --> I[定时同步到GitHub Pages]


不过写到generate-comments.js时,发现部署到服务端有点多余,跑一次就够了,不用设置定时任务。

干脆放在博客目录下,每次hexo命令都会执行一次,不过我最终选择单独运行,反正都是遍历_post做修改。

所以实际的开发流程是:

  • 编写云函数post-comment
  • 编写generate-comments.js
  • 本地运行generate-comments.js

花了3个晚上+一个白天才正确地搞定。。在前期设计和具体实现上都有很多问题。

编写云函数

其实此举纯属多余,twikoo需要云函数是因为前端不能直接向数据库发送数据,得用云函数当后端。

但是我这里是本地运行,已经脱离前端了,完全可以直接通过MongoDBClient向数据库插入数据

但还是写一下,毕竟已经做了(lll¬ω¬)

模仿twikoo打包json的方式,写一个更弱的post即可,twikoo提交评论的代码在/src/server/function/twikoo/index.js/commentSubmit

为了避免MONGODB_URL泄露,在Netlify的环境变量中添加连接字符串,而不直接写在js中。

在本地写好代码之后,按照twikoo部署的方法,将函数上传到github仓库,在Netlify中Deploy with GitHub完成部署。

我的云函数是发送post请求,请求体就是评论内容和其他的信息,函数负责将内容插入数据库。

编写generate-comments.js

其实就是个几百行小代码,类似于hexo插件了。

代码见github,有充分的注释和运行日志输出(Copilot写的)

大体流程就是:

  1. 遍历_post文件夹下的md文件,读取文件名、matter里的日期、文章内容
  2. URL编码,拼接成URL,连接数据库,搜索该URL下是否存在AI评论,有就跳过
  3. 调DeepSeek的API,发个post,带上prompt跟文章内容,请求头里带上API_KEY,获取AI评论
  4. 重新拼出URL,构造json,发给云函数(去掉云函数后就是插入数据库)
  5. 将AI评论插入.md的matter里面,作为excerpt,就可作为摘要显示

代码中拼了两次URL,是为了日志打印方便

代码中多次建立、断开数据库连接,开销较大,可以优化优化(lll¬ω¬)

使用方法

  1. 获取generate-comments.js

  2. generate-comments.js放在博客目录的/script

  3. 在博客根目录下创建.env文件:包含MONGODB_URI=你的MongoDB连接串 + DEEPSEEK_API_KEY=你的API密钥

  4. 在博客根目录的package.jsondependencies下增加:

    1
    2
    3
    4
    "axios": "^1.6.0",
    "dotenv": "^16.5.0",
    "gray-matter": "^4.0.3",
    "mongodb": "^6.0.0"

  5. 在博客根目录下打开终端(git bash之类的),运行npm install下载依赖

  6. 确保安装了dotenv包:npm install dotenv

  7. hexo g即可运行插件

获取MongoDB连接串的方式见:MongoDB Atlas | Twikoo 文档

获取DEEPSEEK_API_KEY的方式见:DeepSeek 开放平台(当然是要钱的,不过挺便宜,我一轮下来只花了4毛钱)


在代码开头有配置项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 配置项
const config = {
deepseek: {
botName: 'DeepSeek',
botUid: 'deepseek-bot',
botLink: 'https://www.deepseek.com/',
botUa: 'DeepSeek Bot/1.0'
},
mongodb: {
uri: process.env.MONGODB_URI,
dbName: 'test',
collection: 'comment'
},
hexo: {
postsDir: './source/_posts'
},
logging: {
enabled: true,
consoleOutput: true,
fileOutput: false,
logFile: './logs/app.log'
}
};

根据自己的实际情况修改配置:

  • deepseek下面的配置是设置评论区的AI评论的相关信息,并非使用V1还是R1,要修改模型调用就Ctrl+F搜索v1,改成R1对应的URL即可,换用其他大模型同理
  • mongodb下的配置是连接数据库相关的信息,dbname是数据库名称,collection是数据库内存评论的库
  • hexo下的配置是存放博文的相对路径
  • logging下的配置是是否在运行时启用日志功能,enabled表示启用,consoleOutput表示在命令行中打印日志输出,fileOutput表示输出日志到文件中,logFile表示日志存储文件的路径

limitation

  • 仅适用于使用MongoDB,最好是twikoo的hexo博客

  • 目前只支持DeepSeek,其他的需要修改API_KEY和相应配置

  • DeepSeek API要花钱

  • 使用教程可能有问题,因为没条件测试(lll¬ω¬)


DeepSeek评论与摘要插件
http://43.143.57.238/2025/04/19/AI评论与摘要/
作者
Leoo Yann
发布于
2025年4月19日
更新于
2025年4月21日
许可协议