.webp)
halo博客+webhook插件+n8n+pushplus实现消息推送
本文最后更新于 2025-07-13,文章内容可能已经过时。
前提准备
-
Halo 博客(安装 webhook 插件)
-
n8n
-
pushplus(获取个 token 就行)
创建 n8n 工作流
在 n8n 平台新建一个工作流
在画布上添加一个 webhook 节点,然后设置一些必要内容。将 HTTP Method
设置为 POST
,Authentication
设置为 Header Auth
,然后新建一个凭证,这个凭证后面要填到 halo 博客 webhook 插件设置那里。
复制测试 url 和凭证填到 webhook 插件设置处,
在 Webhook 节点后面接上一个 Code 节点,将其语言设置为 Python
,然后将下面的代码填写进去
eventType = items[0]['json']['body']['eventType']
eventTypeName = items[0]['json']['body']['eventTypeName']
hookTime = items[0]['json']['body']['hookTime']
data = items[0]['json']['body']['data']
def net_post_content_html(data):
link = f"https://blog.clearligh.top{data['permalink']}"
content = (
f"<p>📝 <strong>用户 {data['owner']}</strong> 于 <em>{data['publishTime']}</em> 发布了新文章《<strong>{data['title']}</strong>》</p>"
f"<p>🔗 阅读链接:<a href='{link}' target='_blank'>{link}</a></p>"
)
return content
def net_post_comment_html(data):
content = (
f"<p>💬 <strong>用户 {data['owner']['name']}</strong> 在文章《<strong>{data['singlePageData']['title']}</strong>》下发表了新评论</p>"
f"<p>🗨️ 评论内容:{data['content']}</p>"
f"<p>⏰ 评论时间:{data['createTime']}</p>"
)
return content
def net_post_reply_html(data):
content = (
f"<p>🔄 <strong>用户 {data['owner']['name']}</strong> 回复了用户 <strong>{data['replyComment']['name']}</strong> 在文章《<strong>{data['singlePageData']['title']}</strong>》下的评论</p>"
f"<p>💬 回复内容:{data['content']}</p>"
f"<p>🗨️ 被回复内容:{data['replyComment']['content']}</p>"
f"<p>⏰ 回复时间:{data['replyComment']['createTime']}</p>"
)
return content
if eventType == 'NEW_POST':
output_html = net_post_content_html(data)
elif eventType == 'NEW_COMMENT':
output_html = net_post_comment_html(data)
elif eventType == 'REPLY_COMMENT':
output_html = net_post_reply_html(data)
else:
output_html = f"<p>❓ 未知事件类型: {eventType}</p>"
return [{'json': {'title': eventTypeName, 'message': output_html}}]
然后在 Code 节点后面再新建一个 HTTP Request
节点,
Method
设置成 GET
,POST
,PUT
,DELTE
都可以,然后 URL 为 http://www.pushplus.plus/send/你的token
,token 在 pushplus 官网获取,Send Boby
选项打开,Boby Content Type
选择 JSON
。
Body Parameters
创建 title
和 content
即可,
{{ $json.title }} title填这个,然后选择表达式
{{ $json.message }} content填这个,然后选择表达式
至此 n8n 工作流基本完成了,下面是测试。
测试
先在 n8n 平台点击“测试工作流”,在 halo 博客 webhook 插件那里点击“测试 webhook”,
如果公众号那里收到消息则说明整个工作流工作正常。
上线
测试没有问题后就可以正式上线运行了,,修改 webhook 插件中的地址为生产URL
,然后将工作流状态改为活动
补充
n8n 更改中文
下载 n8n 中文包,将其上传到一个目录下,例如 /root/n8ncn
,然后解压
tar -xzf editor-ui.tar.gz
解压后会有个 dist
文件夹,需要先将原有的 n8n 容器删除,然后重新启动个容器
docker run -it --rm --name n8n \
-p 15678:5678 \
-v 【解压出来的dist文件夹】:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist \
-e N8N_DEFAULT_LOCALE=zh-CN \
-e N8N_SECURE_COOKIE=false \
n8nio/n8n
也就是将解压出来的 dist 文件夹挂载到容器内部的
/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist
位置然后添加变量
N8N_DEFAULT_LOCALE=zh-CN
指定 n8nAPI 链接
当通过域名访问以及套 CDN(CDN 需要开启 WebSocket)后还需要添加变量,否则前端 editor-ui
无法正确与后端交互
N8N_HOST=你的域名(不带http/https)
WEBHOOK_URL=https://域名
VUE_APP_URL_BASE_API=https://域名