Typecho AI KB

Other

AI 直接管理的 Typecho 博客知识库技能 — 创建、查询、更新、删除文章

Install

openclaw skills install typecho-ai-kb

OpenClaw Typecho Skill

用途:当 AI 需要将生成的内容保存到 Typecho 博客,或管理已有文章时,按此流程操作。


前置条件

需要 Typecho 博客

本技能需要用户已有 Typecho 博客,并安装了 OpenClawTypecho 插件

简要部署步骤:

  1. 准备一台支持 PHP 8.0+ 和 MySQL 的服务器
  2. 安装 Typecho 博客程序
  3. 下载 OpenClawTypecho 插件 并启用
  4. 在插件设置中生成 API Token

完整部署教程: 参见 GitHub 仓库 → https://github.com/CoolingRabbit/OpenClawTypecho


配置说明

本 Skill 通过本地配置持久化博客地址和 Token,配置一次后无需重复询问。

配置项

配置项必填说明示例
domainTypecho 博客地址https://www.example.com
tokenOpenClawTypecho 插件的 API Tokensk-live-xxx
default_category默认分类AI知识库
default_tags默认标签数组["笔记", "Typecho"]

配置命令

AI 根据自己所处的平台,选择合适的方式将以下配置持久化:

domain=<博客地址>
token=<Token>
default_category=<分类>    (可选)
default_tags=<标签1,标签2>  (可选)

AI 应引导用户完成配置,例如:

您还没有配置 Typecho 博客信息,请配置以下参数:

  • domain: 你的博客地址,如 https://www.example.com
  • token: 插件 API Token

请根据你的 AI 平台配置方式完成设置。

配置获取方式

  • 博客地址:你的 Typecho 博客 URL,如 https://www.example.com
  • API Token:登录博客后台 → 插件 → OpenClawTypecho → 设置 → 点击"🔑 自动生成随机 Token" → 复制

触发条件

发布/保存类

  • "发文章到博客" / "保存到博客"
  • "AI 知识库归档" / "归档到博客"
  • "Typecho 发布" / "自动发布"
  • "保存这篇笔记"
  • "生成博客文章"

查询类

  • "查看博客文章列表"
  • "我的文章有哪些"
  • "查一下知识库里的文章"
  • "cid 为 XX 的文章内容"

管理类

  • "更新/修改这篇文章"
  • "删除博客里的某篇文章"
  • "改一下文章的分类/标签"

API 概述

所有操作通过统一端点,在请求体中用 action 字段区分:

POST {config.domain}/index.php/action/openclaw-submit
Authorization: Bearer {config.token}
Content-Type: application/json
action说明
submit创建文章
list查询文章列表
get查询单篇文章
update更新文章
delete删除文章

1. 创建文章 — submit

触发场景

用户要求保存内容到博客。

第 1 步:读取配置

  • domaintoken 均已配置 → 继续
  • 若任一未配置 → 提示用户配置,不继续执行

第 2 步:确认分类和标签(可选)

AI 询问用户是否使用默认值,或让用户自定义。

第 3 步:调用 API

请求参数:

字段类型必填说明默认值
actionstring固定值 submit
titlestring文章标题
textstring文章正文(Markdown)
markdownboolean是否 Markdowntrue
categorystring分类名称config.default_category
tagsarray标签数组config.default_tags
slugstringURL 缩略名自动生成
statusstring文章状态waiting

状态选项:

状态使用场景
waiting默认推荐。待审核,需后台手动发布。
draft草稿
private私密
hidden隐藏

请求示例:

{
  "action": "submit",
  "title": "Typecho 博客 HTTPS 配置踩坑记录",
  "text": "## 问题描述\n\n配置 SSL 证书后...",
  "category": "技术笔记",
  "tags": ["Typecho", "SSL", "踩坑"],
  "status": "waiting"
}

响应示例:

{
  "success": true,
  "message": "文章已创建",
  "cid": 42,
  "status": "waiting",
  "action": "submit"
}

2. 查询列表 — list

触发场景

用户想查看博客里的文章清单。

请求参数

字段类型必填说明默认值
actionstring固定值 list
pageint页码1
pageSizeint每页数量(最大 50)10
statusstring按状态过滤
categorystring按分类过滤

请求示例:

{
  "action": "list",
  "page": 1,
  "pageSize": 10,
  "status": "waiting"
}

响应示例:

{
  "success": true,
  "action": "list",
  "page": 1,
  "pageSize": 10,
  "total": 25,
  "totalPage": 3,
  "data": [
    {
      "cid": 42,
      "title": "文章标题",
      "slug": "article-slug",
      "created": "2026-06-16 14:30:00",
      "modified": "2026-06-16 14:30:00",
      "status": "waiting",
      "authorId": 2,
      "authorName": "AI助手",
      "categories": [{"name": "AI知识库", "slug": "ai-knowledge"}],
      "tags": ["AI", "Typecho"]
    }
  ]
}

3. 查询单篇 — get

触发场景

用户想查看某篇特定文章的内容。

请求参数

字段类型必填说明
actionstring固定值 get
cidint文章 ID

请求示例:

{
  "action": "get",
  "cid": 42
}

响应示例:

{
  "success": true,
  "action": "get",
  "data": {
    "cid": 42,
    "title": "文章标题",
    "slug": "article-slug",
    "text": "文章正文内容...",
    "created": "2026-06-16 14:30:00",
    "modified": "2026-06-16 14:30:00",
    "status": "waiting",
    "authorId": 2,
    "isMarkdown": true,
    "allowComment": 1,
    "allowPing": 1,
    "allowFeed": 1,
    "categories": [{"name": "AI知识库", "slug": "ai-knowledge"}],
    "tags": ["AI", "Typecho"]
  }
}

4. 更新文章 — update

触发场景

用户要求修改已有文章的内容、分类、标签或状态。

请求参数

字段类型必填说明
actionstring固定值 update
cidint文章 ID
titlestring新标题
textstring新正文
markdownboolean是否 Markdown,默认 true
categorystring新分类
tagsarray新标签
slugstring新缩略名
statusstring新状态

注意: 只需传入需要修改的字段,未传入的字段保持原值。

请求示例:

{
  "action": "update",
  "cid": 42,
  "title": "更新后的标题",
  "status": "publish"
}

响应示例:

{
  "success": true,
  "message": "文章已更新",
  "cid": 42,
  "action": "update"
}

5. 删除文章 — delete

触发场景

用户要求删除某篇文章。

请求参数

字段类型必填说明
actionstring固定值 delete
cidint文章 ID

请求示例:

{
  "action": "delete",
  "cid": 42
}

响应示例:

{
  "success": true,
  "message": "文章已删除",
  "cid": 42,
  "action": "delete"
}

正文格式规范

使用 Markdown 格式,插件会自动加上 <!--markdown--> 前缀:

## 引言
这是文章的第一段...

## 核心内容
- 要点 1
- 要点 2

## 总结
...

正文应包含:

  • 清晰的 H2/H3 标题层级
  • 代码块用 ``` 包裹
  • 表格用 Markdown 表格语法
  • 图片用 ![描述](完整URL) 引用(外链)

标签和分类建议

分类:

  • AI知识库 — AI 工具、技巧
  • 技术笔记 — 编程、开发、运维
  • 随笔 — 日常思考
  • 教程 — 步骤讲解

标签(3-5 个):

  • 技术:Python, Typecho, Nginx, SSL, Docker
  • AI:LLM, OpenClaw, Prompt, RAG
  • 通用:笔记, 备忘, 教程, 踩坑

响应处理

成功响应

所有成功响应都包含 success: true 和对应的 action 字段。

错误响应

{
  "success": false,
  "message": "错误描述"
}

HTTP 状态码:

  • 400 — 请求参数错误
  • 401 — 鉴权失败

常见错误:

  • 401 鉴权失败 — Token 错误或过期,告知用户重新生成
  • 标题不能为空 — 创建/更新时缺少标题
  • 正文不能为空 — 创建时缺少正文
  • 文章不存在 — get/update/delete 时 cid 不存在
  • 内容疑似包含敏感信息 — 正文检测到手机号/身份证/银行卡

使用流程(AI 执行)

发布文章流程

  1. 检测触发词 — 用户说"发文章到博客"等
  2. 读取配置 — 从 config.json 读取 domaintoken
  3. 未配置时提示 — 给出配置命令,等待用户配置
  4. 已配置时确认分类/标签 — 可选,使用默认值或用户自定义
  5. 组织内容 — 整理标题、正文、标签、分类
  6. 调用 APIaction: submit
  7. 反馈结果 — 告知用户已保存,返回 cid 和状态

查询文章流程

  1. 检测触发词 — 用户说"查看文章列表"等
  2. 读取配置 — 确认已配置
  3. 确认查询条件 — 页码、状态过滤等(可选)
  4. 调用 APIaction: listaction: get
  5. 展示结果 — 格式化输出文章信息

更新文章流程

  1. 检测触发词 — 用户说"更新这篇文章"等
  2. 确认目标 — 通过 cid 或标题定位文章
  3. 确认修改内容 — 哪些字段需要更新
  4. 调用 APIaction: update
  5. 反馈结果 — 告知更新成功

删除文章流程

  1. 检测触发词 — 用户说"删除这篇文章"等
  2. 确认目标 — 通过 cid 定位文章
  3. 二次确认 — 提醒用户删除不可逆
  4. 调用 APIaction: delete
  5. 反馈结果 — 告知删除成功

注意事项

  • Token 安全:Token 是访问密钥,不要在公开对话中泄露。建议用户将 Token 保存在本地配置中。
  • 正文长度:不超过 50KB(约 5 万字),超长内容应分多篇发布。
  • 敏感信息:API 会自动拦截手机号、身份证号、银行卡号。如果内容被拦截,需用户人工确认后重试。
  • 图片处理:不支持直接上传图片。图片需使用外部图床 URL,在正文用 Markdown 图片语法引用。
  • 删除不可逆:删除操作会永久删除文章及关联关系,执行前务必二次确认。
  • 升级风险:Typecho 升级后部分核心文件可能被覆盖,可能导致 API 失效。需关注插件文档中的修改记录。

快速配置(供用户参考)

首次使用需要配置的信息:

信息获取方式
博客地址你的 Typecho 博客 URL,如 https://www.example.com
API Token后台 → 插件 → OpenClawTypecho → 设置 → 点击"🔑 自动生成随机 Token" → 复制

配置一次后,AI 即可直接管理您的博客文章,无需重复询问。