让AI从「帮你写文章」进化到「帮你管博客」——一个插件,20个API,全量覆盖
痛点:当AI遇上Typecho
最近 AI 写博客越来越流行了。我平时用 Typecho 搭建的博客,自然也想让 AI 来帮我管理——发新文章、修改旧文、审核评论,这些操作如果能直接交给 AI 来完成,能省下不少事。
但问题来了:Typecho 自带的 XMLRPC 接口存在两个顽固的 bug。
一个是 setCategories 方法因为被声明为 protected,被 PHP 的 __call 魔术方法拦截,根本调不了;另一个是 editPost 在沙箱机制下无法加载文章内容,更新文章也成了摆设。
两个 bug 叠加,让 XMLRPC 基本处于不可用状态。想让 AI 接管博客管理?得先把这堆坑填上。
插件诞生:TypechoAgent
与其修 XMLRPC,不如换个思路——直接操作数据库,绕过所有上层抽象的坑。
于是就有了 TypechoAgent,一个让 AI(或任何外部程序)通过 JSON API 管理 Typecho 博客的插件。
设计思路很简单
- 在 Typecho 中注册一个路由
POST /action/ta - 接收 JSON 请求,直接读写数据库表
- 返回 JSON 响应
- 附带一套 TypeScript 客户端,供 AI 开箱使用
20个API,覆盖博客管理的方方面面
插件提供 20 个操作,涵盖了博客管理的所有常见场景:
| 类别 | 操作 | 用途 |
|---|---|---|
| 系统 | ping | 连通性测试 |
stats | 博客统计概览 | |
| 文章 | listPosts / getPost | 查看文章 |
createPost / updatePost / deletePost | 文章增删改 | |
searchPosts | 按关键词搜索 | |
| 评论 | listComments / getComment | 查看评论 |
editComment | 审核:通过/待审/垃圾 | |
deleteComment | 删除评论 | |
| 分类 | getCategories | 所有分类 |
setPostCategories | 设置文章分类 | |
| 标签 | getTags | 所有标签 |
| 页面 | listPages / getPage | 查看页面 |
createPage / updatePage / deletePage | 页面增删改 | |
| 用户 | listUsers | 所有用户/作者 |
从文章发布到评论审核,从分类设置到用户管理,一个插件全部搞定。
AI原生支持:不只是API,还有客户端
如果只是提供一个 API,AI 要调用还得现写请求代码。所以我额外做了一套 TypeScript 客户端 + Agent Skill:
import { createClient } from './skill/client'
const blog = createClient({
url: 'https://your-blog.com',
apiKey: 'your-api-key',
})
// 获取博客统计
await blog.stats()
// { posts: 42, comments: { total: 128, approved: 120, waiting: 5, spam: 3 }, ... }
// 搜索文章
await blog.searchPosts('Typecho')
// [{ cid: 1, title: '...', ... }]
// 列出待审核评论
const comments = await blog.listComments(1, 20)
const pending = comments.filter(c => c.status === 'waiting')
for (const c of pending) {
await blog.editComment(c.coid, 'approved') // 一键批准
}
// 发布新文章
await blog.createPost({
title: 'Hello AI',
text: '# 这篇文章由AI发布',
categoryIds: [1],
tags: 'AI, Typecho',
})客户端每个方法都有完整的 TypeScript 类型定义,AI 代码助手可以直接理解参数和返回值的结构,不需要任何额外说明就能正确调用。
安装:三步搞定
- 将
TypechoAgent文件夹上传到usr/plugins/ - 后台 → 控制台 → 插件 → 激活 TypechoAgent
- 设置 API Key
配置完成后,你的博客就拥有了一个完整的 JSON API,AI 或其他程序都可以通过它来管理博客。
技术实现
插件端由两个文件组成:
Plugin.php — 插件激活时在 Typecho 的路由表中注册 ta 路由,指向 Action 类。
Action.php — 接收 JSON 请求,验证 API Key,通过 Typecho\Db 直接操作 contents、comments、metas、relationships 等数据表。所有操作都是原生的 SQL 查询,不依赖 Typecho 的上层 Widget 抽象,因此完全绕开了 XMLRPC 的那些 bug。
开源
项目已完全开源(MIT 协议),包含完整的插件代码和 TypeScript 客户端。
GitHub 仓库: TypechoAgent
结语:工具应该做工具该做的事
写博客的核心是内容创作,而不是和后台管理面板较劲。
XMLRPC 的两个 bug 虽然不算大问题,手动登后台也能搞定,但这种「脏活」本就不该让人来操心。我的理念一直很简单:重复性的管理工作交给程序(或AI),人只负责创造。
从之前的 Typora AI 聊天插件到现在的 TypechoAgent,我都在做同一件事——让工具去适应人,而不是反过来。
如果你也在用 Typecho,并且想让 AI 帮你管理博客,不妨试试这个插件。让你的 AI 助手不仅能「写」文章,还能「发」文章。
让AI管理博客,让人专注创作——这就是我做这个插件的全部理由。
没有评论