让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 博客的插件。

设计思路很简单

  1. 在 Typecho 中注册一个路由 POST /action/ta
  2. 接收 JSON 请求,直接读写数据库表
  3. 返回 JSON 响应
  4. 附带一套 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 代码助手可以直接理解参数和返回值的结构,不需要任何额外说明就能正确调用

安装:三步搞定

  1. TypechoAgent 文件夹上传到 usr/plugins/
  2. 后台 → 控制台 → 插件 → 激活 TypechoAgent
  3. 设置 API Key

配置完成后,你的博客就拥有了一个完整的 JSON API,AI 或其他程序都可以通过它来管理博客。

技术实现

插件端由两个文件组成:

Plugin.php — 插件激活时在 Typecho 的路由表中注册 ta 路由,指向 Action 类。

Action.php — 接收 JSON 请求,验证 API Key,通过 Typecho\Db 直接操作 contentscommentsmetasrelationships 等数据表。所有操作都是原生的 SQL 查询,不依赖 Typecho 的上层 Widget 抽象,因此完全绕开了 XMLRPC 的那些 bug。

开源

项目已完全开源(MIT 协议),包含完整的插件代码和 TypeScript 客户端。

GitHub 仓库: TypechoAgent

结语:工具应该做工具该做的事

写博客的核心是内容创作,而不是和后台管理面板较劲。

XMLRPC 的两个 bug 虽然不算大问题,手动登后台也能搞定,但这种「脏活」本就不该让人来操心。我的理念一直很简单:重复性的管理工作交给程序(或AI),人只负责创造

从之前的 Typora AI 聊天插件到现在的 TypechoAgent,我都在做同一件事——让工具去适应人,而不是反过来。


如果你也在用 Typecho,并且想让 AI 帮你管理博客,不妨试试这个插件。让你的 AI 助手不仅能「写」文章,还能「发」文章。

项目地址GitHub - TypechoAgent

让AI管理博客,让人专注创作——这就是我做这个插件的全部理由。