概述

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


Comment2Bark

技术背景: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+)

安装步骤

  1. 下载插件文件
  2. 解压至 /usr/plugins/Comment2Bark/
  3. 后台「控制台 → 插件」启用
  4. 填写 Bark Key 完成配置

获取 Bark Key

  1. iOS 设备安装 Bark App
  2. 打开 App 自动生成 Key
  3. 格式示例: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