Halo 自带的统计能力比较有限:文章列表里只有累计阅读量、评论数、点赞数,看不到趋势,也看不到访客、跳出率这类指标。为此我写了「文章数据趋势分析」这个插件,把 Umami 的站点统计数据和 Halo 自身的点赞计数整合到后台的一张看板里,支持全站趋势、逐日数据和单篇文章分析。
这篇文章记录插件的安装、配置和各项功能的使用方式,顺便说明一下每日点赞统计的实现原理和它的局限。
功能总览
站点汇总:文章总数、总阅读量、总评论数、总点赞数
趋势看板:浏览量、访客数、访问次数、跳出率、平均访问时长,支持近 7 天 / 30 天 / 90 天 / 自定义时间段
每日点赞统计:从部署之日起按自然日记录全站和每篇文章的新增点赞
单篇文章分析:全部文章的阅读、评论、点赞数据,支持筛选、排序和 CSV 导出;点击单篇文章可查看它的访问趋势和逐日数据
数据来源:浏览量等流量指标来自 Umami,点赞趋势由插件自身统计,阅读 / 评论 / 点赞总数来自 Halo 的计数器
安装
两种方式任选其一:
后台「插件 → 应用商店」搜索安装(上架审核通过后可用);
从 GitHub Releases 下载 jar,在后台「插件 → 安装插件」中手动上传。
插件要求 Halo 2.21 及以上版本。安装后,后台左侧菜单会出现「文章数据」入口。
配置 Umami
流量类指标(访客数、访问次数、跳出率、平均访问时长、访问趋势)依赖 Umami,需要先在插件设置中配置三项:

API Key 只保存在服务端,所有对 Umami 的查询都由插件代理转发,Key 不会下发到前端浏览器。
不配置 Umami 也能用:汇总卡片、文章数据表格、每日点赞统计都不依赖 Umami,只是趋势图和逐日流量数据会为空。
数据看板
进入「文章数据」,顶部是四张汇总卡片:文章总数、总阅读量、总评论数、总点赞数。下方是三个标签页。
趋势图

选定时间段后,上方卡片显示该时间段内的浏览量、访客数、访问次数、跳出率、平均访问时长和点赞量;下方折线图按天展示浏览量趋势。鼠标悬停在任意一天,可以看到当天的浏览量、访问次数和点赞量:

数据列表

以表格形式列出时间段内每一天的浏览量、访问次数和点赞量,按日期倒序排列。
单篇文章分析

表格列出全部文章的阅读量、评论数、点赞数和发布时间,支持:
按发布状态筛选(全部 / 已发布 / 草稿)
按标题搜索
点击列头排序
右上角「导出数据」把当前筛选结果导出为 CSV
点击任意一行,会从右侧滑出该文章的详情抽屉:

抽屉内同样有趋势图和数据列表两个视图,展示这篇文章在所选时间段内的逐日浏览量、访问次数和点赞量:

每日点赞统计
为什么需要这个功能
Halo 只保存每篇文章的累计点赞数,不保存任何带时间戳的点赞历史——点赞事件也没有以插件可订阅的方式发布出来。所以「某篇文章在哪天获得了多少赞」这个数据,Halo 自己是回答不了的。
实现方式
插件启动后每 60 秒读取一次全部文章的点赞计数,与上一次快照做差值,把增量记到当天的日期下,按「统计时区」的自然日归档。数据持久化在名为 article-analysis-upvote-daily 的 ConfigMap 里,插件重启、升级都不会丢失,保留最近约 400 天。
统计口径与前台展示一致:记录的是点赞计数器的增量。读者取消点赞不会让历史数据变负,重复点赞 / 取消在一分钟轮询窗口内也不会重复计数。
统计时区

「统计时区」决定按哪个时区的自然日归档,例如 Asia/Shanghai,留空则使用服务器默认时区。
局限性
这几点使用前需要清楚:
历史不可追溯。数据从插件部署之日起才开始积累,部署之前的点赞分布无法还原。
停用期间的数据会归入重启当天。插件停用或升级重启期间产生的点赞,会在下一次启动时被计为当天的增量。
不区分点赞用户。只记录数量,不记录是谁点的。
CSV 导出
「单篇文章分析」右上角的「导出数据」会把当前表格(含筛选和排序结果)导出为 CSV 文件,包含文章标题、阅读量、评论数、点赞数、发布时间和链接,方便在 Excel 或其他工具里做进一步分析。
常见问题
趋势图没有数据? 先确认插件设置里的 Umami 三项配置是否正确。可以在 Umami 后台用同一个 Website ID 和 API Key 直接查 stats 接口验证。站点刚接入 Umami 时,历史数据自然也是空的。
汇总卡片的点赞数和趋势里的点赞量对不上? 正常现象。汇总卡片里的「总点赞数」是 Halo 计数器里的累计值,包含插件部署之前的所有点赞;趋势和数据列表里的「点赞量」只统计插件部署之后按天记录的增量。
升级插件后点赞历史会丢吗? 不会。数据存在 ConfigMap 里,与插件 jar 无关,升级、停用再启用都不受影响。
支持 PostgreSQL / MySQL 之外的环境吗? 插件本身不直接访问数据库,所有数据通过 Halo 的 Extension API 和 Umami API 获取,与底层数据库无关。
项目地址
源码与发布:https://github.com/shirainbown/plugin-article-analysis
使用中遇到问题欢迎在 GitHub Issues 里反馈。
Halo博客「文章数据趋势分析」插件使用指南
https://songshiyu.cn/archives/plugin-article-analysis-guide
评论