Typecho插件 - Says:给你的博客加个说说
你有没有遇到过这样的情况:想发个简单的碎碎念,却要打开微博App被各种广告轰炸?想记录一下今天的心情,却发现朋友圈已经变成了营销号的天下?想写点什么,却又觉得不够格单独发一篇博客文章?
这不,前段时间我就被这种"想说点什么又无处可说"的感觉困扰着。微博吧,算法推荐一堆我不感兴趣的内容;朋友圈吧,总觉得发太多会被人嫌烦;各种"说说"平台吧,动不动就跑路、收费、或者把你的数据当商品卖。
于是乎,一个想法在我脑海中萌芽:为什么不在自己的博客上加个"说说"功能呢?
为什么需要一个"说说"功能?
在这个"什么都要订阅"的时代,找一个纯粹的地方发表简短想法变得越来越难。传统的社交平台存在几个问题:
数据不属于你:平台说删就删,说封就封,你的内容命运掌握在别人手里。
算法绑架:你发的内容不一定能被朋友看到,平台决定谁能看到什么。
广告轰炸:打开应用就是各种推广,想简单记录个心情都要先看三个广告。
隐私担忧:你的每一条动态都在被分析、被标签化、被商业化。
想起之前折腾各种博客插件的经历,那时候为了实现一个简单的功能,经常要装好几个插件。这次的"说说"需求,虽然看起来简单,但同样需要一个优雅的解决方案。
Says插件的设计思路
既然要做,就要做得纯粹一些。我的想法是:
- 数据自主:所有说说数据存储在自己的数据库中,完全掌控
- 使用简单:后台管理+前端展示+API接口,该有的都有
- 功能完整:支持Markdown、来源识别、豆瓣卡片、B站视频
- 样式简洁:不花哨,专注内容本身
就像当年玩红警时要考虑各种战术一样,写插件也需要考虑各种使用场景。
核心功能实现
1. 后台管理界面
安装启用后,后台会多出一个"说说"菜单,提供完整的CRUD操作:
- 新增说说:支持Markdown语法
- 编辑修改:随时调整内容
- 删除管理:清理不需要的内容
- 状态控制:公开/私密切换
2. 前端展示
在需要显示说说的页面,只需要一行代码:
<?php \TypechoPlugin\Says\Plugin::render(10, '#says', '/memos/');?>
参数说明:
10
:显示条数#says
:容器ID/memos/
:API接口地址
3. API接口支持
提供完整的REST API,支持:
- 获取说说列表:
GET /memos/api/v1/memo
- 认证状态检查:
POST /memos/api/v1/auth/status
- 发布新说说:
POST /memos/api/v1/memos
4. 特色功能
来源识别:自动识别发布设备,支持自定义显示名称
豆瓣卡片:直接贴豆瓣链接,自动解析成卡片展示
B站视频:粘贴B站视频链接,自动嵌入播放器
Markdown支持:完整的Markdown语法支持,让文本更丰富
使用体验
后台发布
登录后台,在"说说"菜单中新增内容:
今天看了《流浪地球2》,特效确实不错!
发布后,豆瓣链接会自动解析成电影卡片,显示封面、评分、简介等信息。
API发布
通过API也可以发布说说,方便集成到各种自动化工具中:
curl -X POST \
-H "Authorization: Bearer 你的令牌" \
-H "Content-Type: application/json" \
-d '{"content":"刚写完一个有趣的插件","visibility":"public"}' \
https://你的域名/memos/api/v1/memos
配置选项
插件提供了丰富的配置选项:
- API开关:可以关闭远程API,只在后台发布
- 访问令牌:用于API认证的安全令牌
- 用户ID:指定发布说说的用户
- 来源配置:自定义各种设备的显示名称
- 默认来源:未匹配到时的默认显示
高级自定义
样式定制
如果默认样式不符合你的审美,可以自定义CSS和JS:
<?php \TypechoPlugin\Says\Plugin::render(10, '#says', '/memos/', [
'css' => '/path/to/your/custom.css',
'js' => '/path/to/your/custom.js',
'markdown' => 'https://cdn.jsdelivr.net/npm/marked/marked.min.js'
]);?>
数据库结构
插件会自动创建says
表,包含以下字段:
id
:自增主键uuid
:唯一标识符content
:说说内容agent
:用户代理信息ip
:发布IPstatus
:状态(1显示,0隐藏)created_at
:创建时间updated_at
:更新时间
安装使用
- 从GitHub下载插件文件
- 解压后重命名为
Says
- 上传到
usr/plugins/
目录 - 后台启用插件
- 配置相关参数
- 完成!开始愉快地发说说吧
Chrome memos插件兼容
支持木木老师的 memos-bber插件:https://github.com/lmm214/memos-bber 部分功能
其实也就是发布功能啦,其余的在后续版本中再考虑吧
如果你在国外,可以访问chrome扩展商店的话,可以访问 这里直接安装
如果访问不了,可以打开调试,以本地方式加载CHROME扩展,加载使用
安全性考虑
作为一个负责任的插件,Says包含了基本的安全防护:
- 令牌认证:API接口需要Bearer Token验证
- 内容过滤:防止XSS攻击
- 数据库安全:使用预处理语句防止SQL注入
- 访问控制:支持开关API功能
建议:
- 令牌要足够复杂(建议32位以上)
- 定期更换访问令牌
- 不要在代码中硬编码令牌
- 定期备份说说数据
版本更新记录
V1.2.3
- 修复了豆瓣评分显示错误的BUG
V1.2.2
- 修复了豆瓣非游戏类链接错误的问题
V1.2.0
- 添加了自定义JS和CSS功能
写在最后
这个插件的诞生,来源于对数据自主权的渴望和对纯粹记录的追求。就像我之前折腾各种技术方案一样,技术的温度往往体现在这些细节之中。
Says不仅仅是一个功能插件,更是一种对自己负责的态度。在这个数据被过度商业化的时代,我们每个博主都有权利掌控自己的内容,决定自己的表达方式。
如果你也在使用Typecho,如果你也想要一个纯粹的说说功能,不妨试试这个插件。有任何问题或建议,欢迎在GitHub上提交Issue,或者直接邮件联系我。
毕竟,好的工具就是要分享出来,让更多人受益。这不正是开源精神的体现吗?
能掌控自己数据的感觉,还是挺爽的。
项目地址:https://github.com/xa1st/Typecho-Plugin-Says
下载安装:Clone或下载到 usr/plugins/Says/
目录即可
许可证:MIT
反馈交流:有问题请提交Issue,我会尽快回复
愿每个博客都能更纯粹一点,每个想法都能被好好记录。
仅有 1 条评论