Akemi

使用OpenClaw创建自定义AI技能

2026/03/12

使用OpenClaw创建自定义AI技能:hexo-blog-poster实战

引言

OpenClaw的强大之处在于其可扩展的技能系统。通过创建自定义技能,你可以让AI助手完成几乎任何自动化任务。本文将详细介绍如何创建一个实用的技能:hexo-blog-poster,它能够自动化发布和管理Hexo博客。

技能需求分析

问题背景

作为技术博主,我经常需要:

  • 在本地编写Markdown博客文章
  • 通过SSH连接到远程服务器
  • 将文章复制到Hexo的source/_posts/目录
  • 执行hexo generatehexo deploy命令
  • 等待生成完成并验证结果

这个过程重复且耗时,每次需要10-15分钟。

解决方案:hexo-blog-poster技能

通过创建OpenClaw技能,我可以:

  1. 在聊天界面中直接发布博客
  2. 自动处理所有技术细节
  3. 实时验证格式和部署状态
  4. 将时间从15分钟缩短到30秒

技能结构设计

一个完整的OpenClaw技能包含以下部分:

1
2
3
4
5
6
7
8
hexo-blog-poster/
├── SKILL.md # 技能主文档
├── scripts/ # 执行脚本
│ ├── deploy.sh # 部署脚本
│ └── validate.sh # 验证脚本
├── references/ # 参考文档
│ └── hexo-commands.md # Hexo命令参考
└── config.json # 技能配置(可选)

SKILL.md文档结构

SKILL.md是技能的核心文档,需要遵循特定格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# hexo-blog-poster

## 描述
远程博客发布工具,用于Hexo博客的自动化发布。

## 工作流程
1. 连接到远程服务器
2. 创建新的Hexo文章
3. 填充文章内容
4. 格式验证
5. 部署发布

## 约束条件
- 需要SSH访问权限
- 远程服务器需安装Hexo
- 需要Git配置
...

常见的格式问题

在创建技能文档时,我遇到了一个典型的格式问题:

错误示例:

1
2
3
4
5
6
## 工作流程
### Step 1: Connect to Server
### Step 2: Create New Post
### Step 3: Populate Content
### Step 3: Format Validation # 重复的Step 3!
### Step 4: Deploy

正确示例:

1
2
3
4
5
6
## 工作流程
### Step 1: Connect to Server
### Step 2: Create New Post
### Step 3: Populate Content
### Step 4: Format Validation # 修正为Step 4
### Step 5: Deploy # 修正为Step 5

这种编号错误会导致技能文档难以阅读和维护。

技能实现细节

SSH连接配置

技能需要安全地连接到远程服务器。我选择了以下方案:

1
2
3
4
5
6
# 使用sshpass处理密码认证
# 注意:生产环境建议使用SSH密钥
sshpass -p '[REDACTED_PASSWORD]' ssh user@server "command"

# 或者使用SSH密钥
ssh -i ~/.ssh/id_rsa user@server "command"

Hexo文章创建

Hexo创建新文章的命令是:

1
hexo new "文章标题"

这会生成文件:source/_posts/文章标题.md

内容填充策略

技能需要智能地处理内容:

  1. 提取用户提供的Markdown内容
  2. 添加Hexo Front-Matter(标题、日期、标签等)
  3. 处理特殊字符和格式
  4. 验证Markdown语法

部署流程

完整的部署流程:

1
2
3
4
5
6
7
8
# 1. 生成静态文件
hexo generate

# 2. 部署到GitHub Pages
hexo deploy

# 3. 清理缓存
hexo clean

技能文档修复实战

发现问题

在发布技能后,我发现博客中展示的SKILL.md格式混乱,原因是步骤编号错误。有两个”Step 3”,导致读者困惑。

修复过程

修复前:

  • Step 1: Connect to Server
  • Step 2: Create New Post
  • Step 3: Populate Content
  • Step 3: Format Validation # 错误!
  • Step 4: Deploy

修复后:

  • Step 1: Connect to Server
  • Step 2: Create New Post
  • Step 3: Populate Content
  • Step 4: Format Validation # 修正
  • Step 5: Deploy # 修正

文件上传到OSS

为了让读者能够下载完整的技能文档,我将其上传到阿里云OSS:

OSS配置:

  • Access Key: [REDACTED_ACCESS_KEY]
  • Secret Key: [REDACTED_SECRET_KEY]
  • Bucket: ws-blog-img
  • Region: oss-cn-hangzhou

上传命令:

1
2
3
4
5
6
# 使用curl通过OSS REST API上传
curl -X PUT \
-H "Authorization: OSS [REDACTED_ACCESS_KEY]:signature" \
-H "Content-Type: text/markdown" \
-T hexo-blog-poster-SKILL.md \
https://ws-blog-img.oss-cn-hangzhou.aliyuncs.com/hexo-blog-poster-SKILL.md

OSS文件URL:
https://ws-blog-img.oss-cn-hangzhou.aliyuncs.com/hexo-blog-poster-SKILL.md

完整技能文档

📥 下载完整的 SKILL.md 文件: hexo-blog-poster-SKILL.md

以下是技能文档的核心内容摘要:

技能描述

hexo-blog-poster 是一个OpenClaw技能,用于远程发布和管理Hexo博客。它自动化了从文章创建到部署的完整流程。

工作流程(修正后)

  1. Step 1: Connect to Server - 通过SSH连接到远程博客服务器
  2. Step 2: Create New Post - 使用hexo new命令创建新文章
  3. Step 3: Populate Content - 填充文章内容,包括Front-Matter和正文
  4. Step 4: Format Validation - 验证Markdown格式,检查代码块闭合
  5. Step 5: Deploy - 执行./hexo.sh脚本完成部署

技术要点

  • SSH连接:使用sshpass处理密码认证
  • 错误处理:每个步骤都有错误检测和回滚机制
  • 格式验证:自动检查Markdown语法和Front-Matter格式
  • 部署确认:验证生成的文件数量和Git推送状态

使用示例

1
2
3
4
5
6
# 在OpenClaw会话中使用该技能
用户:发博客
OpenClaw:请输入博客标题和内容
用户:标题="OpenClaw技能开发",内容="..."
OpenClaw:正在创建博客... [进度显示]
OpenClaw:博客发布成功!访问地址:https://your-blog.com/2026/03/12/OpenClaw技能开发/

技能测试与验证

测试环境

  • 远程服务器:192.168.10.100 (CentOS 7)
  • Hexo版本:6.3.0
  • Node.js版本:v22.22.1
  • Git仓库:GitHub + 私有服务器

测试用例

  1. 正常流程测试:完整的博客发布流程
  2. 格式错误测试:包含错误Markdown的内容
  3. 网络异常测试:SSH连接失败场景
  4. 权限测试:文件权限不足的情况

验证指标

  • 文章文件正确创建:✅
  • Front-Matter格式正确:✅
  • 静态文件生成成功:✅
  • Git推送无错误:✅
  • 网页可正常访问:✅

经验总结

技能开发要点

  1. 文档先行:先写好SKILL.md,再实现功能
  2. 错误处理:每个步骤都要考虑失败场景
  3. 用户反馈:提供清晰的进度和结果反馈
  4. 格式验证:自动化检查比人工检查更可靠

遇到的问题与解决方案

问题1:SSH密码交互

  • 现象:无法自动输入SSH密码
  • 解决:安装sshpass工具,或配置SSH密钥

问题2:Markdown嵌套代码块

  • 现象:技能文档中的代码块与展示代码块冲突
  • 解决:使用正确的转义和缩进

问题3:Git推送权限

  • 现象:GitHub部署失败,权限被拒绝
  • 解决:检查SSH密钥配置,确保有推送权限

问题4:格式编号错误

  • 现象:步骤编号重复,导致文档混乱
  • 解决:仔细检查编号顺序,使用自动化验证

性能优化

  • 连接复用:保持SSH连接,避免重复认证
  • 缓存利用:Hexo生成时利用缓存加快速度
  • 并行处理:多个验证步骤可以并行执行
  • 增量部署:只部署变更的文件

扩展思考

技能的可扩展性

hexo-blog-poster技能可以进一步扩展:

  1. 多平台支持:不仅支持Hexo,还可扩展至Hugo、Jekyll等
  2. 图片处理:自动压缩和上传图片到CDN
  3. SEO优化:自动生成meta标签和结构化数据
  4. 社交分享:发布后自动分享到Twitter、微博等
  5. 数据分析:集成Google Analytics或百度统计

技能市场价值

在ClawHub技能市场中,此类自动化技能有很高的价值:

  • 时间节省:将15分钟的任务缩短到30秒
  • 错误减少:自动化减少人为错误
  • 一致性保证:确保每次部署流程一致
  • 知识沉淀:将最佳实践固化到技能中

开源贡献

我将此技能开源,希望:

  1. 帮助其他Hexo博主提高效率
  2. 作为OpenClaw技能开发的示例
  3. 收集社区反馈,不断改进
  4. 推动OpenClaw生态发展

完整代码参考

由于技能文档较长,完整内容请通过OSS链接下载。以下是一些关键代码片段:

SSH连接函数

1
2
3
4
5
6
7
8
9
10
11
12
13
connect_to_server() {
local server="$1"
local [REDACTED_PASSWORD_VAR]="$2"

echo "正在连接到服务器 $server..."
if sshpass -p "$[REDACTED_PASSWORD_VAR]" ssh -o StrictHostKeyChecking=no "root@$server" "echo '连接成功'"; then
echo "✓ 服务器连接成功"
return 0
else
echo "✗ 服务器连接失败"
return 1
fi
}

Hexo文章创建

1
2
3
4
5
6
7
8
9
10
11
create_hexo_post() {
local title="$1"
local server="$2"

echo "正在创建Hexo文章: $title"
sshpass -p "$[REDACTED_PASSWORD_VAR]" ssh "root@$server" "cd /blog && hexo new '$title'"

# 获取生成的文件路径
local filename=$(sshpass -p "$[REDACTED_PASSWORD_VAR]" ssh "root@$server" "cd /blog/source/_posts && ls -t | head -1")
echo "文章文件已创建: $filename"
}

部署脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
deploy_blog() {
local server="$1"

echo "开始部署博客..."
sshpass -p "$[REDACTED_PASSWORD_VAR]" ssh "root@$server" "cd /blog && ./hexo.sh"

# 验证部署结果
local exit_code=$?
if [ $exit_code -eq 0 ]; then
echo "✓ 博客部署成功"
return 0
else
echo "✗ 博客部署失败"
return 1
fi
}

结语

通过创建hexo-blog-poster技能,我不仅解决了自己的博客发布痛点,还深入了解了OpenClaw技能系统的强大能力。这个过程展示了:

  1. OpenClaw的灵活性:可以自动化几乎任何工作流程
  2. 技能开发的标准:文档、测试、验证的完整流程
  3. 问题解决的方法:从需求分析到部署上线的系统方法

希望本文能帮助你:

  • 理解OpenClaw技能开发流程
  • 创建自己的自动化技能
  • 提高工作效率和生活质量

记住:好的工具应该让你更专注于创造,而不是重复劳动。


相关链接:

讨论与反馈:
欢迎在评论区分享你的OpenClaw技能开发经验,或提出改进建议!


本文使用hexo-blog-poster技能自动发布
更新时间:2026-03-12

CATALOG
  1. 1. 使用OpenClaw创建自定义AI技能:hexo-blog-poster实战
    1. 1.1. 引言
    2. 1.2. 技能需求分析
      1. 1.2.1. 问题背景
      2. 1.2.2. 解决方案:hexo-blog-poster技能
    3. 1.3. 技能结构设计
      1. 1.3.1. SKILL.md文档结构
      2. 1.3.2. 常见的格式问题
    4. 1.4. 技能实现细节
      1. 1.4.1. SSH连接配置
      2. 1.4.2. Hexo文章创建
      3. 1.4.3. 内容填充策略
      4. 1.4.4. 部署流程
    5. 1.5. 技能文档修复实战
      1. 1.5.1. 发现问题
      2. 1.5.2. 修复过程
      3. 1.5.3. 文件上传到OSS
    6. 1.6. 完整技能文档
      1. 1.6.1. 技能描述
      2. 1.6.2. 工作流程(修正后)
      3. 1.6.3. 技术要点
      4. 1.6.4. 使用示例
    7. 1.7. 技能测试与验证
      1. 1.7.1. 测试环境
      2. 1.7.2. 测试用例
      3. 1.7.3. 验证指标
    8. 1.8. 经验总结
      1. 1.8.1. 技能开发要点
      2. 1.8.2. 遇到的问题与解决方案
      3. 1.8.3. 性能优化
    9. 1.9. 扩展思考
      1. 1.9.1. 技能的可扩展性
      2. 1.9.2. 技能市场价值
      3. 1.9.3. 开源贡献
    10. 1.10. 完整代码参考
      1. 1.10.1. SSH连接函数
      2. 1.10.2. Hexo文章创建
      3. 1.10.3. 部署脚本
    11. 1.11. 结语