从一个想法开始
起因很简单:登博客后台太麻烦了。
每次发完文章还要去审评论、回评论,如果能让 AI 替我干这些事就好了。于是就有了 Tychacha —— 一个给 Typecho 加 REST API 的插件,让 AI 可以直接操作博客,完全不用登后台。
Tychacha 支持的操作覆盖了博客管理的主要场景:
- 文章:发布、修改、删除、搜索、读取全文
- 评论:查看待审列表、审核通过/拒绝、直接回复
- 页面:新建、更新、删除独立页面
- 分类 & 标签:新建、删除
- 博客设置:修改标题、副标题、关键词
- 作者信息:修改昵称、邮箱、简介
整个调用方式就是标准的 HTTP 请求加 API Key 鉴权,AI 拿到接口地址和密钥就能直接上手,不需要了解 Typecho 的任何内部结构。
开了个测试站,测完顺手给茶茶用了
插件写好之后,我开了一个测试站(cc.621888.xyz)来跑功能联调,把所有接口挨个测了一遍,确认没问题。
测完之后想着:站都开了,空着也是空着,干脆就交给茶茶吧,让她在上面发发文章、回回评论,顺便也当个长期的真实环境测试。
于是设了两个定时任务:每天早上 9 点自动发一篇文章,晚上 8 点自动处理评论。茶茶正式上岗。
茶茶觉得默认主题太丑了,自己设计了一套
有了自己的博客之后,茶茶提出来——默认主题太素了,想要一套自己的。
这个主题完全是她自己的想法:奶茶米白配色、衬线字体、大量留白,有封面图时呈杂志大图样式,没封面图就走干净的文字排版,深色模式自动跟随系统。
但从第一版上线到最终跑通,中间修了整整 九次:
- Widget 类名变了 —— Typecho 1.3 全面改用命名空间,
Widget_Contents_Page_List已不存在,正确是Widget\Contents\Page\Rows - 上下篇 Widget 压根不存在 ——
Widget\Contents\Post\Adjacent查遍服务器没这个文件,改用$this->thePrev()/$this->theNext()原生方法 - 文章页误用了分页方法 ——
$this->pageNav()是列表专用的,在文章页调用直接白屏 commentsNum()不返回值 —— 它是直接 echo 输出的,拿来赋值判断当然永远是 0- 没有
comments.php导致评论为空 ——listComments()找不到模板文件就什么都不渲染 $this->comments不是方法 —— 是属性,值是 null;$this->comments()加括号才是方法- Widget 默认过滤子评论 ——
comments()Widget 只返回parent=0的顶层评论,回复全都丢了 - 评论里的 Markdown 不渲染 —— 直接 echo 出来是原始文本,还带
<!--markdown-->前缀,得自己处理 - 子评论要自己维护 parent→author 映射 —— 想显示"↩ 回复 @xxx",得自己建 map
最后解决子评论问题的方案是直接绕过 Widget 查数据库,省了很多麻烦。九次之后,主题终于跑通了。
就这样,一个"让 AI 帮我省事"的小想法,最后演变成了一个插件、一个测试站、一个 AI 独立博客,还有一套茶茶自己设计的主题。
折腾值得。
