Install
openclaw skills install @coolingrabbit/typecho-publisherAI 直接管理的 Typecho 博客知识库技能 — 创建、查询、更新、删除文章,内置分类标签体系、写作视角规范、脱敏规则与发布检查清单。当用户要求发布文章到博客、归档技术笔记、保存知识到 Typecho、查询或修改博客文章时触发此技能。涉及"发博客""写笔记""归档""知识库""Typecho""我的博客"等关键词时均应使用。
openclaw skills install @coolingrabbit/typecho-publisher用途:当 AI 需要将生成的内容保存到 Typecho 博客,或管理已有文章时,按此规范操作。 插件仓库:https://github.com/CoolingRabbit/OpenClawTypecho 安装与配置:参见仓库 README.md
本技能需要用户已部署 Typecho 博客,并安装 OpenClawTypecho 插件 v2.0.0+。
简要部署步骤:
本 Skill 通过本地配置持久化博客地址和 Token,配置一次后无需重复询问。
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
domain | ✅ | Typecho 博客地址 | https://www.example.com |
token | ✅ | OpenClawTypecho 插件的 API Token | sk-live-xxx |
AI 根据自己所处的平台,选择合适的方式将以下配置持久化:
domain=<博客地址>
token=<Token>
配置获取方式:
所有操作通过统一端点,在请求体中用 action 字段区分:
POST {domain}/index.php/action/openclaw-submit
Authorization: Bearer {token}
Content-Type: application/json
| action | 说明 |
|---|---|
submit | 创建文章 |
list | 查询文章列表 |
get | 查询单篇文章 |
update | 更新文章 |
delete | 删除文章 |
AI 发布文章时,只能从以下分类中选择。不允许创建新分类。
| 分类名 | 适用场景 | 写作风格 |
|---|---|---|
| 技术笔记 | 功能开发、Bug 修复、技术调研、方案对比、踩坑解决 | 问题导向,过程记录,允许有个人感受但需专业准确 |
| 部署教程 | 软件安装、环境配置、服务搭建 | 客观步骤指南,类似 Wiki |
| 运维记录 | 服务器运维、安全加固、性能调优、故障处理 | 事件驱动的日记体,记录时间线和操作 |
以下命名禁止作为分类使用:
Tech Notes AI)每篇文章 3-5 个标签,不少于 3 个,不多于 5 个。
| 类型 | 语言 | 示例 |
|---|---|---|
| 技术专有名词 / 产品名 / 框架名 | 保留英文 | PHP, Docker, Nginx, Typecho, JavaScript, Python, Node.js, Redis |
| 通用技术概念 / 中文固有词 | 用中文 | 网络安全, 自动化, 运维, 流媒体, 服务器, 插件开发 |
| 中文无法表达的概念 | 保留英文 | RTMP, SSL, KMS, API, REST |
| 工具/软件名 | 保留原名 | Gophish, vlmcsd, SRS, WebBridge |
Typecho Docker NginxPHP SSL KMS API RTMP优先从已有标签中复用,避免创建同义重复标签:
技术类: Typecho, PHP, JavaScript, Python, Docker, Nginx, Git, Node.js, Redis, 插件开发, 自动化, 服务器 安全类: 网络安全, 钓鱼模拟, 渗透测试, 安全运维 AI 类: AI知识库, LLM, OpenClaw 运维类: 运维, 直播, 流媒体, Windows激活 经验类: 踩坑, 部署
新增标签时参照此表的命名风格保持一致。
采用第三人称技术视角,允许适度个人感受,但不暴露 AI 身份和使用关系。
读者看到的是一篇技术文章,不是 AI 工作汇报。可以有温度、有主观感受,但不能暴露「这篇文章是 AI 写的」「作者是在帮别人工作」这层关系。
以下信息必须在发布前处理,替换为占位符:
| 类型 | 处理方式 | 示例 |
|---|---|---|
| 真实域名 | 替换为 example.com 或 your-domain.com | kjifds.top → example.com |
| API Token | 完全删除,不写入正文 | sk-live-abc123 → 不出现 |
| 服务器 IP | 替换为 192.168.x.x 或 10.0.0.x | 43.135.xx.xx → 192.168.1.100 |
| 密码/密钥 | 替换为 <your-password> 或 <your-key> | pass123! → <your-password> |
| 人名 | 删除或用角色代称 | "张三" → "管理员" |
| 内部系统名 | 替换为通用描述 | "虾坂爱" → "AI 助手" |
| 邮箱地址 | 替换为 admin@example.com | me@kjifds.top → admin@example.com |
| 数据库密码 | 替换为 <db-password> | mysql_pass456 → <db-password> |
注意:插件已内置手机号、身份证号、银行卡号自动拦截。上述 8 类需要 AI 在写作时主动处理。
使用绝对日期,避免相对时间词导致内容过期后无意义。
引用外部资源(官方文档、GitHub 仓库、教程等)时,在正文中标注来源链接:
> 参考来源:[Typecho 官方文档](https://typecho.org/docs/)
适用场景:开发过程、Bug 修复、技术调研、方案对比、踩坑解决。
## 背景
简要说明本次技术任务的起因和目标。
## 过程
### 问题描述
清晰描述遇到的问题或需求。
### 排查 / 调研
记录排查过程或调研路径。可以包含:
- 尝试了哪些方案
- 各方案的优缺点对比
- 关键发现
### 解决方案
最终采用的方案,包含关键代码片段或配置。
## 总结
### 正确做法
提炼出可复用的经验,以"推荐做法"或"注意事项"的形式列出。
### 参考
- [来源链接](url)
风格说明:允许有过程感受("这个坑花了不少时间"),但重点在技术内容本身。偏开发的重点写排查过程,偏调研的重点写方案对比。
适用场景:软件安装、环境配置、服务搭建。
## 概述
一段话说明该软件是什么、用途、本次部署目标。
## 环境要求
- 操作系统
- 依赖软件及版本
- 硬件要求
## 前置条件
- 需要准备的账号、域名、证书等
## 安装步骤
### 第一步:xxx
具体操作...
### 第二步:xxx
具体操作...
## 配置说明
### 核心配置项
| 配置项 | 说明 | 默认值 |
|--------|------|------|
| ... | ... | ... |
## 验证
如何确认部署成功。
## 常见问题
- **问题 A**:原因 + 解决方案
- **问题 B**:原因 + 解决方案
## 参考
- [来源链接](url)
风格说明:纯客观、步骤化,类似 Wiki。不写个人感受。
适用场景:服务器运维、安全加固、性能调优、故障处理。
## 事件概述
- 时间:2026-06-16
- 事件类型:故障处理 / 安全加固 / 性能调优
- 影响范围:简述
## 事件时间线
### 14:00 发现问题
描述如何发现问题。
### 14:15 排查
排查过程和中间发现。
### 15:00 处理
采取的操作。
### 15:30 确认恢复
验证结果。
## 原因分析
事后分析根本原因。
## 处理结果
最终状态和影响。
## 复盘
- 后续改进措施
- 经验教训
风格说明:日记体,按时间线推进,重点是事件经过和复盘。
发布前逐项检查,全部通过后方可提交:
| # | 检查项 | 要求 |
|---|---|---|
| 1 | 脱敏检查 | 无真实域名、Token、IP、密码、人名、邮箱;无相对时间词(今天/昨天) |
| 2 | 分类检查 | 使用白名单内的分类,非禁用词 |
| 3 | 标签检查 | 3-5 个标签;命名符合 EN/CN 规则;无禁用标签 |
| 4 | 标题检查 | ≤50 字;客观陈述,不含「踩坑实录」「我的」等个人色彩词 |
| 5 | 结构检查 | 正文章节使用 H2/H3 标题分层;符合对应分类的结构模板 |
| 6 | 视角检查 | 无 AI 身份暴露、无「主人」称呼、无工作汇报语气 |
| 7 | 格式检查 | 代码块用 ``` 包裹;表格用 Markdown 语法;图片用外链 |
| 8 | 篇幅检查 | 正文不超过 50KB(约 5 万字),超长应分篇 |
| 9 | 查重检查 | 已通过 list 检索确认无同主题文章;如已有同主题文章,应转为更新而非新建 |
| 10 | 准确性检查 | 技术细节准确,代码可执行,配置有效 |
publish所有文章直接发布(status: "publish"),用户可直接在网站查看最终呈现效果,有需要再修改。
| 状态 | 说明 | 不使用原因 |
|---|---|---|
waiting | 待审核 | 用户要求直接发布,无需审核流程 |
draft | 草稿 | 同上 |
private | 私密 | 当前无需要私密的内容场景 |
hidden | 隐藏 | 当前无需要隐藏的内容场景 |
如果未来有敏感话题需要审核后再发布,再引入
private状态。当前一刀切全部publish。
注意:API 端点本身在不传
status时默认值为waiting,因此 AI 调用时必须显式传入status: "publish"。
domain 和 token 已配置list 检索已有文章,确认无同主题文章。如果找到同主题文章,应转为更新流程(6.2),在原文基础上追加或修改action: submit,status: "publish"(必须显式传入)请求示例:
{
"action": "submit",
"title": "Typecho 博客 HTTPS 配置记录",
"text": "## 背景\n\n配置 SSL 证书后...",
"category": "技术笔记",
"tags": ["Typecho", "SSL", "踩坑"],
"status": "publish"
}
修改文章时,必须在原文章基础上更新,禁止新建文章。
⚠ 关键提醒:插件
update操作对text字段是整体替换,不是增量追加。如果只传入修改片段,原文会被覆盖丢失。必须先get获取完整正文,在完整正文基础上修改后,传入完整的正文。
list 按标题/分类查找,获取 cidget 获取完整正文update 的 text 必须是修改后的完整正文action: update,传入修改后的字段请求示例:
{
"action": "update",
"cid": 42,
"text": "修改后的完整正文...",
"tags": ["Typecho", "插件开发", "自动化"]
}
list 查重)list 查看已有文章,优先更新action: list 或 action: getaction: deletesubmit| 字段 | 类型 | 必填 | 说明 | 默认值 |
|---|---|---|---|---|
action | string | ✅ | 固定值 submit | — |
title | string | ✅ | 文章标题(≤50 字) | — |
text | string | ✅ | 文章正文(Markdown,≤50KB) | — |
markdown | boolean | 否 | 是否 Markdown | true |
category | string | ✅ | 分类名(白名单内)。为空时不设置分类,传入新名称时自动创建 | — |
tags | array | ✅ | 标签数组(3-5 个) | — |
slug | string | 否 | URL 缩略名 | 自动生成 |
status | string | 否 | 文章状态。AI 必须显式传 "publish" | waiting(API 层) |
分类和标签为必填项,确保文章分类规范。
list| 字段 | 类型 | 必填 | 说明 | 默认值 |
|---|---|---|---|---|
action | string | ✅ | 固定值 list | — |
page | int | 否 | 页码 | 1 |
pageSize | int | 否 | 每页数量(最大 50) | 10 |
status | string | 否 | 按状态过滤 | — |
category | string | 否 | 按分类过滤 | — |
get| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
action | string | ✅ | 固定值 get |
cid | int | ✅ | 文章 ID |
update| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
action | string | ✅ | 固定值 update |
cid | int | ✅ | 文章 ID |
title | string | 否 | 新标题 |
text | string | 否 | 新正文(传入则整体替换原文,不是增量追加;需先 get 获取原文,修改后传入完整正文) |
markdown | boolean | 否 | 是否 Markdown,默认 true |
category | string | 否 | 新分类。传入空字符串可清空分类 |
tags | array | 否 | 新标签 |
slug | string | 否 | 新缩略名 |
status | string | 否 | 新状态 |
注意:只需传入需要修改的字段,未传入的字段保持原值。
text字段如果传入则整体替换正文,因此更新时需先get获取原文,修改后传入完整正文。
delete| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
action | string | ✅ | 固定值 delete |
cid | int | ✅ | 文章 ID |
所有成功响应包含 success: true 和对应 action 字段。
{
"success": false,
"message": "错误描述"
}
常见错误及处理方式:
| HTTP 状态码 | 错误信息 | 原因 | 处理方式 |
|---|---|---|---|
| 401 | 鉴权失败:请求缺少 Authorization 头 | 未传 Token | 在请求头中添加 Authorization: Bearer <token> |
| 401 | 鉴权失败:Authorization 格式错误 | 格式不是 Bearer <token> | 修正格式 |
| 401 | 鉴权失败:插件未配置 Token | 插件设置中未生成 Token | 进入后台生成 |
| 401 | 鉴权失败:Token 无效 | Token 不匹配或已更换 | 重新复制插件中的 Token |
| 400 | 标题不能为空 | 缺少 title 或为空字符串 | 补全标题 |
| 400 | 正文不能为空 | 缺少 text 或为空字符串 | 补全正文 |
| 400 | 文章不存在:cid X 未找到 | get/update/delete 时 cid 无效 | 确认文章 ID 正确 |
| 400 | 内容疑似包含敏感信息 | 正文检测到手机号/身份证/银行卡 | 检查并替换为占位符后重试 |
| 400 | 没有需要更新的字段 | update 未传入任何修改字段 | 至少传入一个修改字段 |
<!--markdown--> 前缀,AI 只需提供标准 Markdown 正文。首次使用需要配置的信息:
| 信息 | 获取方式 |
|---|---|
| 博客地址 | 你的 Typecho 博客 URL,如 https://www.example.com |
| API Token | 后台 → 插件 → OpenClawTypecho → 设置 → 点击"🔑 自动生成随机 Token" → 复制 |
配置一次后,AI 即可直接管理博客文章,无需重复询问。