概述
Comment2Bark 是一款 Typecho 评论推送插件,核心功能是将博客评论通过 Bark 服务推送至 iOS 设备。本项目在原有代码基础上进行了全面重构,优化了代码结构、修复了兼容性问题、完善了功能实现。

技术背景:Bark 推送服务
Bark 是由 Finb 开发的开源 iOS 推送工具,采用 MIT 协议发布。其技术特点包括:
- 服务端通过标准 HTTP POST 请求触发推送
- 客户端支持 iOS 15.0+
- 支持自定义图标、分组、音效等参数
- 可部署私有服务器或使用官方托管服务
功能特性
推送场景
| 场景 | 触发条件 | 推送标题 | 消息体 | 链接指向 |
|---|---|---|---|---|
| 📩 新评论 | 评论审核通过 | 📩 【博客名】有新评论 | 「文章标题」\n👤 评论者:内容 | 当前评论 |
| 💬 回复通知 | 访客回复评论 | 💬 {被回复者}的评论被回复 | 回复:「原评论摘要」\n👤 回复者:内容 | 当前回复 |
| ⏳ 待审核 | 评论进入审核队列 | ⏳ 【博客名】有「待审」评论 | 「文章标题」\n👤 评论者:内容 | 后台管理 |
| 🗑️ 垃圾评论 | 评论被标记为垃圾 | 🗑️ 【博客名】有「垃圾」评论 | 「文章标题」\n👤 评论者:内容 | 后台管理 |
核心能力
- 🔗 精确链接 - 自动计算评论分页,点击推送直接跳转到对应评论位置
- 🔄 自动重试 - 推送失败自动重试 3 次(间隔 1s、2s、4s)
- 🛡️ 安全处理 - 评论内容经过 HTML 过滤和 XSS 处理
- 📊 调试模式 - 启用后可查看详细推送日志
- 🎨 自定义配置 - 支持自定义图标、分组、提示音
功能配置说明
| 配置项 | 类型 | 说明 |
|---|---|---|
| 服务器地址 | URL | Bark API 端点,默认 https://api.day.app/ |
| Bark Key | string | 设备标识,从 Bark App 获取(必填) |
| 消息保存 | boolean | 是否在客户端保留历史记录 |
| 忽略自己 | boolean | 按 UID 过滤博主评论 |
| 博主 UID | integer | 博主用户 ID,默认 1 |
| 推送图标 | URL | 通知图标完整链接 |
| 消息分组 | string | 通知分类标识 |
| 提示音 | string | 音效文件名,参考列表 |
| 调试模式 | boolean | 启用请求/响应日志记录 |
推送数据格式
插件向 Bark API 发送的 POST 数据:
[
'title' => '📩 【博客名】有新评论',
'body' => '「文章标题」\n👤 评论者:内容摘要...',
'url' => 'https://example.com/article/comment-page-1#comment-123',
'icon' => $options->barkIcon, // 可选
'group' => $options->barkGroup, // 可选
'isArchive' => $options->barkArchive, // 1 或 0
'sound' => $options->barkSound, // 可选
'level' => 'active' | 'timeSensitive'
]
安装与使用
环境要求
- Typecho 1.3.0
- PHP ≥ 7.4(推荐 8.0+)
安装步骤
- 下载插件文件
- 解压至
/usr/plugins/Comment2Bark/ - 后台「控制台 → 插件」启用
- 填写 Bark Key 完成配置
获取 Bark Key
- iOS 设备安装 Bark App
- 打开 App 自动生成 Key
- 格式示例:
https://api.day.app/xxxxxxxxxx
版本历史
v2.0.2
- 代码优化:match 表达式语法修正
- 安全加强:回复通知中原评论内容统一使用 sanitizeText 处理
v2.0.1
- 钩子修复:修复
onMark钩子参数错误 - 通知优化:审核通知区分回复和新评论
v2.0.0
- 代码重构:精简代码,模块化设计
- 钩子升级:使用
finishComment替代已弃用的onComment - 链接修复:修复 Typecho
permalink字段不存在问题,改用Widget_Archive动态获取 - 分页优化:修复评论分页计算逻辑,支持 ASC/DESC 两种排序方式
- 统一架构:5 个推送场景统一使用相同的链接构建逻辑
v1.4.0
- 全面代码重构,提取魔法数字为类常量
- 合并 barkSend 和 finishComment 为统一入口
- 新增 isSuccess()、sanitizeText() 等辅助方法
- 优化评论链接生成逻辑
v1.3.0
- 添加推送失败重试机制
- 加强评论内容处理,防止 XSS
- 添加推送分级参数
v1.2.0 - v1.2.1
- 支持 Typecho 1.3.0+ 版本
- 使用新的 finishComment 回调
v1.0
- 初始版本,实现基本评论推送功能
项目信息
- 开源协议:MIT
- 代码仓库:https://github.com/NoEggEgg/Comment2Bark
- Bark:https://github.com/Finb/Bark
相关资源
Typecho 插件开发文档:http://docs.typecho.org/plugins
Bark 服务端部署指南:https://bark.day.app/#/deploy
Bark 音效列表:https://github.com/Finb/Bark/tree/master/Sounds
原创
Comment2Bark:Typecho评论推送到Bark插件
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
赞赏支持
如果觉得文章对你有帮助,可以请作者喝杯咖啡 ☕
评论交流
欢迎留下你的想法