心愿便签 — 为 Halo 博客打造的心愿墙与树洞插件
让每一位访客都能留下温暖的痕迹,让心愿在便签墙上生长。
前话
作为博客站长,你有没有想过给站点加一面「便签墙」?
访客路过你的博客,想留下一句话、许一个愿望、或者只是找个地方倾诉——传统的评论区太正式,留言板又太古板。你需要的是一个更轻松、更有温度的互动空间。
这款插件把心愿墙和树洞两种场景整合到一个独立页面中,便签以卡片形式散落在页面上,桌面端支持拖拽移动,新便签即时上墙无需刷新。配合 AI 暖心回复、情绪标签、内容审核等能力,让互动既有趣又安全。
便签墙页面
插件提供独立的 /wishes 页面,开箱即用。
页面采用 macOS 风格的卡片设计,每张便签都有红黄绿三个小圆点的窗口标题栏,支持 6 种卡片颜色(粉色、蓝色、黄色、绿色、紫色、橙色)。桌面端可以通过拖拽标题栏自由移动便签位置,移动端则自动切换为瀑布流布局。
页面顶部是类型筛选标签栏,可以按「全部」「心愿」「树洞」或自定义类型过滤便签。底部是毛玻璃风格的投稿输入栏,包含昵称输入、内容输入、颜色选择器、类型切换、AI 润色按钮和发布按钮,整体视觉干净通透。
页面标题、副标题均可在后台自定义。
多种便签类型
内置两种便签类型:
除了内置类型,你还可以在后台自定义更多类型(比如「吐槽」「意见」「反馈」「表白」「日记」),每种类型有独立的标识、显示名称、描述和排序权重。内置类型不可删除,自定义类型可以随时增删改。
访客投稿
访客无需登录即可发布便签。投稿时可以:
填写昵称(留空则显示「匿名」)
输入内容(支持字数限制,后台可配置最大字数)
选择卡片颜色(6 种可选)
切换便签类型
使用 AI 润色功能优化文案
按 Enter 快捷发布
后台提供投稿开关,关闭后前端隐藏输入栏,同时后端 API 返回 403,双重保障防止绕过前端直接调用接口。
内容审核
支持三种审核模式,在后台一键切换:
AI 审核会同时检查昵称和内容,识别色情、暴力、广告、政治敏感、人身攻击等违规内容。只有审核通过后才会消耗后续的 AI 额度(暖心回复、情绪标签),审核不通过则不会产生额外调用。
AI 能力
接入 OpenAI 兼容接口,支持 OpenAI、DeepSeek、通义千问等主流大模型。后台配置 API 地址、API Key 和模型名称即可启用。
提供四项 AI 能力:
暖心回复
每张便签发布后,AI 会自动生成一段温暖的回复,显示在卡片底部,以斜体和「AI」标签区分。系统提示词可在后台自定义,比如设置成「你是一个温暖的朋友,用简短的话安慰对方」。
情绪标签
AI 分析便签内容的情绪,返回一个最合适的 emoji 标注在卡片上。比如一条关于旅行的心愿可能被标注为 ✈️,一条倾诉可能被标注为 🥺。
内容审核
如上一节所述,AI 自动判断内容是否违规,替代人工审核的繁琐操作。
文案润色
访客在发布前可以点击「润色」按钮,AI 会优化文案表达,让便签内容更有文采。润色结果会回填到输入框,访客确认后再发布。润色同样会经过敏感词过滤。
心愿追踪
心愿类便签支持完整的状态流转:
心愿中 (pending) > 进行中 (doing) > 已达成 (done)管理员可以在后台更新心愿状态。当心愿达成时,可以上传一张纪念照片并写下达成感言,照片和感言会展示在便签卡片上,让心愿有始有终。
页面上通过不同颜色的状态徽章区分:
心愿中:暖黄色徽章
进行中:暖橙色徽章
已达成:清新绿色徽章
情侣模式
可配置纪念日计数器,在页面右上角显示「在一起 N 天」的徽章。
后台设置纪念日日期和两个人的名称后,页面会自动计算天数并显示,比如:
小明 & 小红 在一起 365 天
这个功能特别适合情侣博客或个人站点,给心愿墙增添一份浪漫。不需要时关闭开关即可隐藏。
安全防护
IP 限频
基于 IP 地址的频率限制,防止恶意刷便签。后台可配置每小时最大投稿数,超过限制的请求会被直接拒绝。限频基于 IP 而非昵称,避免被轻易绕过。
敏感词过滤
支持自定义敏感词黑名单,投稿和 AI 润色均会经过敏感词检测。命中敏感词的内容会被直接拦截,不会进入审核流程。
数据管理
导入导出
支持 JSON 格式的便签和类型数据导入导出,方便数据备份和迁移。导出文件包含所有便签和自定义类型的完整数据。
后台管理
Console 端提供卡片式设置界面:
便签管理:查看所有便签,支持审核通过/拒绝、编辑、删除,sticky 标题栏方便操作
类型管理:增删改自定义类型,查看各类型便签数量统计
待审核列表:独立的待审核便签视图,快速处理审核队列
弹窗统一圆角毛玻璃风格,视觉一致
权限控制
基于 Halo RBAC 体系,提供两级权限:
匿名访客只能通过公开接口投稿和使用 AI 润色,无法访问管理接口。
主题适配
插件提供 WishFinder@Finder("wishFinder"))API,主题开发者可以在任意模板中获取便签数据:
html
<!-- 获取所有已审核通过的便签 -->
<th:block th:with="wishes=${wishFinder.listApproved()}">
<div th:each="wish : ${wishes}">
<p th:text="${wish.spec.content}">便签内容</p>
</div>
</th:block>
<!-- 按类型获取 -->
<th:block th:with="wishes=${wishFinder.listByType('wish')}">
...
</th:block>
<!-- 统计数据 -->
<span th:text="${wishFinder.countApproved()}">0</span> 条便签主题可以在 templates/ 目录下创建 wishes.html 覆盖插件内置模板,实现完全自定义的便签墙页面。插件未安装时,主题模板会优雅降级显示提示信息。
/wishes 页面额外注入以下模板变量:
数据模型
Wish(便签)
WishType(便签类型)
环境要求
Halo >= 2.20.0
插件预览
模板预览(即使不使用主题模板插件也内置了页面)

便签管理

类型管理

插件设置


写在最后
心愿便签把「心愿墙」和「树洞」两种互动场景融合到一个轻量插件中。macOS 风格的卡片设计让页面赏心悦目,AI 能力让互动更有温度,完善的审核和安全机制让运营更省心。
无论是个人博客想增加一个有趣的互动页面,还是情侣站点想记录共同的心愿,这款插件都能胜任。安装后访问
/wishes即可体验。获取方式:注册本站用户,通过本站个人中心获取。
Halo心愿便签插件
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
赞赏支持
如果觉得文章对你有帮助,可以请作者喝杯咖啡 ☕
评论交流
欢迎留下你的想法