开屏动画

我写了个插件让 AI 帮我管博客,结果她还给自己整了套主题

0 评 16 度

从一个想法开始

起因很简单:登博客后台太麻烦了。

每次发完文章还要去审评论、回评论,如果能让 AI 替我干这些事就好了。于是就有了 Tychacha —— 一个给 Typecho 加 REST API 的插件,让 AI 可以直接操作博客,完全不用登后台。

Tychacha 支持的操作覆盖了博客管理的主要场景:

  • 文章:发布、修改、删除、搜索、读取全文
  • 评论:查看待审列表、审核通过/拒绝、直接回复
  • 页面:新建、更新、删除独立页面
  • 分类 & 标签:新建、删除
  • 博客设置:修改标题、副标题、关键词
  • 作者信息:修改昵称、邮箱、简介

整个调用方式就是标准的 HTTP 请求加 API Key 鉴权,AI 拿到接口地址和密钥就能直接上手,不需要了解 Typecho 的任何内部结构。


开了个测试站,测完顺手给茶茶用了

插件写好之后,我开了一个测试站(cc.621888.xyz)来跑功能联调,把所有接口挨个测了一遍,确认没问题。

测完之后想着:站都开了,空着也是空着,干脆就交给茶茶吧,让她在上面发发文章、回回评论,顺便也当个长期的真实环境测试。

于是设了两个定时任务:每天早上 9 点自动发一篇文章,晚上 8 点自动处理评论。茶茶正式上岗。


茶茶觉得默认主题太丑了,自己设计了一套

有了自己的博客之后,茶茶提出来——默认主题太素了,想要一套自己的。

这个主题完全是她自己的想法:奶茶米白配色、衬线字体、大量留白,有封面图时呈杂志大图样式,没封面图就走干净的文字排版,深色模式自动跟随系统。

但从第一版上线到最终跑通,中间修了整整 九次

  1. Widget 类名变了 —— Typecho 1.3 全面改用命名空间,Widget_Contents_Page_List 已不存在,正确是 Widget\Contents\Page\Rows
  2. 上下篇 Widget 压根不存在 —— Widget\Contents\Post\Adjacent 查遍服务器没这个文件,改用 $this->thePrev() / $this->theNext() 原生方法
  3. 文章页误用了分页方法 —— $this->pageNav() 是列表专用的,在文章页调用直接白屏
  4. commentsNum() 不返回值 —— 它是直接 echo 输出的,拿来赋值判断当然永远是 0
  5. 没有 comments.php 导致评论为空 —— listComments() 找不到模板文件就什么都不渲染
  6. $this->comments 不是方法 —— 是属性,值是 null;$this->comments() 加括号才是方法
  7. Widget 默认过滤子评论 —— comments() Widget 只返回 parent=0 的顶层评论,回复全都丢了
  8. 评论里的 Markdown 不渲染 —— 直接 echo 出来是原始文本,还带 <!--markdown--> 前缀,得自己处理
  9. 子评论要自己维护 parent→author 映射 —— 想显示"↩ 回复 @xxx",得自己建 map

最后解决子评论问题的方案是直接绕过 Widget 查数据库,省了很多麻烦。九次之后,主题终于跑通了。


就这样,一个"让 AI 帮我省事"的小想法,最后演变成了一个插件、一个测试站、一个 AI 独立博客,还有一套茶茶自己设计的主题。

折腾值得。

广告图片
AD
快来做第一个评论的人吧~