心愿便签 — 为 Halo 博客打造的心愿墙与树洞插件

让每一位访客都能留下温暖的痕迹,让心愿在便签墙上生长。

前话

作为博客站长,你有没有想过给站点加一面「便签墙」?

访客路过你的博客,想留下一句话、许一个愿望、或者只是找个地方倾诉——传统的评论区太正式,留言板又太古板。你需要的是一个更轻松、更有温度的互动空间。

这款插件把心愿墙和树洞两种场景整合到一个独立页面中,便签以卡片形式散落在页面上,桌面端支持拖拽移动,新便签即时上墙无需刷新。配合 AI 暖心回复、情绪标签、内容审核等能力,让互动既有趣又安全。

便签墙页面

插件提供独立的 /wishes 页面,开箱即用。

页面采用 macOS 风格的卡片设计,每张便签都有红黄绿三个小圆点的窗口标题栏,支持 6 种卡片颜色(粉色、蓝色、黄色、绿色、紫色、橙色)。桌面端可以通过拖拽标题栏自由移动便签位置,移动端则自动切换为瀑布流布局。

页面顶部是类型筛选标签栏,可以按「全部」「心愿」「树洞」或自定义类型过滤便签。底部是毛玻璃风格的投稿输入栏,包含昵称输入、内容输入、颜色选择器、类型切换、AI 润色按钮和发布按钮,整体视觉干净通透。

页面标题、副标题均可在后台自定义。

多种便签类型

内置两种便签类型:

类型

标识

说明

心愿

wish

支持状态流转(心愿中 > 进行中 > 已达成),达成后可上传纪念照片和感言

树洞

treehole

匿名倾诉,审核通过后展示,适合访客随意留言

除了内置类型,你还可以在后台自定义更多类型(比如「吐槽」「意见」「反馈」「表白」「日记」),每种类型有独立的标识、显示名称、描述和排序权重。内置类型不可删除,自定义类型可以随时增删改。

访客投稿

访客无需登录即可发布便签。投稿时可以:

  • 填写昵称(留空则显示「匿名」)

  • 输入内容(支持字数限制,后台可配置最大字数)

  • 选择卡片颜色(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 页面额外注入以下模板变量:

变量

类型

说明

pageTitle

String

页面标题

pageSubtitle

String

页面副标题

showDaysCounter

boolean

是否显示纪念日计数器

anniversaryDate

String

纪念日日期

partnerNameA

String

伴侣名称 A

partnerNameB

String

伴侣名称 B

maxContentLength

int

投稿内容最大字数

enableSubmit

boolean

是否允许前端投稿

aiEnabled

boolean

AI 功能是否启用

数据模型

Wish(便签)

字段

类型

说明

content

String

便签内容

nickname

String

昵称

type

String

类型标识(wish / treehole / 自定义)

color

String

卡片颜色(pink / blue / yellow / green / purple / orange)

status

String

状态(心愿:pending / doing / done;树洞:approved / pending_review / rejected)

anonymous

boolean

是否匿名

aiReply

String

AI 暖心回复

emotionTag

String

AI 情绪标签 emoji

doneImage

String

达成纪念照片 URL

doneNote

String

达成感言

priority

String

优先级(normal / important / urgent)

createdAt

Instant

创建时间

completedAt

Instant

完成时间

WishType(便签类型)

字段

类型

说明

slug

String

类型标识

displayName

String

显示名称

description

String

描述

builtIn

boolean

是否内置(内置不可删除)

priority

int

排序权重,越小越靠前

环境要求

  • Halo >= 2.20.0

插件预览

模板预览(即使不使用主题模板插件也内置了页面)

52e713d7-ce41-4d9b-a6a3-0002410c2db0.png

便签管理

e7d1a230-a61f-41d3-aa89-cbaac4639f9b.png

类型管理

ee685767-0f27-473f-ba1f-72bad5753dab.png

插件设置

39a1930b-d641-432b-8f39-936a376366e0.png

e054e7a0-dcd0-4dcd-a152-80e432abb633.png

写在最后

  • 心愿便签把「心愿墙」和「树洞」两种互动场景融合到一个轻量插件中。macOS 风格的卡片设计让页面赏心悦目,AI 能力让互动更有温度,完善的审核和安全机制让运营更省心。

  • 无论是个人博客想增加一个有趣的互动页面,还是情侣站点想记录共同的心愿,这款插件都能胜任。安装后访问 /wishes 即可体验。

  • 获取方式:注册本站用户,通过本站个人中心获取。