一直以来,我都想在博客里复刻那种熟悉的微信朋友圈感觉。头像、昵称、一段碎碎念、几张图,再加点点赞和评论,克制却充满烟火气。Halo 的瞬间插件已经解决了“发”的问题,但单人动态列表刷两下就到底,总觉得少了点人情味。
朋友圈之所以好刷,正是因为里面有朋友的动态。于是,我做了这个叫「围炉」的 Halo 插件。它把友链博主的动态抓回来,和自己的瞬间混排成一条时间线。打开页面,不再是孤零零的独角戏,而是大家围坐一起说话的氛围——名字「围炉」也由此而来。
围炉是什么?
简单来说,围炉是一个聚合插件:把友链博主的说说、动态、瞬间与你自己的内容,按时间混排成朋友圈式时间线。
工作流程很直观:在链接插件里为每个友链填写「动态 RSS 地址」(如果对方也是 Halo + 瞬间 + RSS,地址通常是 https://对方域名/feed/moments/rss.xml)。插件会定时抓取、去重、清洗,再和自己的瞬间归并展示。
最核心的部分是内置的 /fireside 页面。安装启用后直接访问,无需主题任何适配:
像素级朋友圈观感:顶部大封面图,站点头像和昵称悬浮在右下角,签名紧随其后。时间线采用白底细分割的通栏布局,方形圆角小头像,昵称用熟悉的蓝色。
图片布局完全复刻微信:单图原比例、四图田字格、三图以上九宫格。点图由灯箱插件接管,不跳转。
互动设计:自己的瞬间支持点赞(与主题点赞记录互通)、就地展开评论(接入官方组件)、一键复制详情链接。友链动态则提供「查看原文」直达源站。
详情页
/fireside/{name}:点时间戳可进入单条页面,评论区默认展开,方便分享。标签导航:全部 / 你的标签 / 友链,支持横向滑动。
暗色模式、移动端适配、返回顶部一应俱全。
和普通 RSS 聚合的区别
看到「抓 RSS」,很多人会想到现有的友链订阅或文章聚合插件。但围炉的目标完全不同。
传统 RSS 聚合面向的是文章:标题、摘要、发布时间,排成待读列表,需要正襟危坐去阅读。而围炉抓的是动态 RSS(说说、瞬间、碎碎念),呈现全文、配图、只言片语,营造的是「刷」的轻松感——朋友今天吃了什么、去了哪里、发了句什么牢骚。
我希望把生活和文章彻底分开:文章走订阅和聚合页,认真写认真读;生活走围炉,轻轻松松刷动态。两者各得其所,就像你不会把公众号长文直接发到朋友圈正文里一样。
当然,如果友链只提供文章 RSS,围炉也能抓取,但最舒服的体验还是大家把动态 RSS 开放出来,让围炉里全是生活碎片。
被驳回后,反而做出了更好方案
插件提交 Halo 应用市场时被驳回,最初版本依赖主题模板修改。被驳回后我重新思考:没上架主题肯定不会适配,这意味着每次升级或换主题都要重改。于是干脆把页面做进插件,安装即用,与主题完全解耦。现在的 /fireside 稳定运行,主题随便换都不受影响。
代码已开源在 GitHub,Release 提供打包好的 JAR,直接在 Console 手动上传即可。目前在自己站点跑得很好,也算是自用驱动开发的成果。如果你也用 Halo,又有一圈写博客的朋友,欢迎试试,Issue 和 PR 随时欢迎。
快速上手指南
从 Release 下载 JAR,Console 插件页上传启用。
在「链接」中为友链填写「动态 RSS 地址」。
等定时同步(默认 60 分钟)或在「围炉」管理页点击「同步全部」。
访问 /fireside,开始刷朋友圈。
封面图、签名、每页条数、页面标题等都在插件设置里调整,详细文档见仓库 README。
从「想要一个朋友圈」到真正做出来,中间经历了 RSS 清洗、XSS 防护、可见性处理、游标分页等技术细节。但每次打开 /fireside,看到朋友们的动态和自己的碎碎念自然混排在一起,就觉得一切都值了。
博客最动人的地方从来不是技术,而是人。围炉的火已经生起,欢迎带着你的朋友们一起围坐聊天。