feat(halo): 添加图片上传功能并完善发布流程

- 实现图片上传服务,支持检测并上传本地图片到 Halo
- 优化发布流程,添加详细日志和错误处理
- 更新任务清单和检查列表以反映完成状态
- 添加 Halo 博客写作技能文档
This commit is contained in:
2026-04-26 16:47:41 +08:00
parent 7d332d3b8c
commit 8ccc32be0b
13 changed files with 1149 additions and 92 deletions
+246
View File
@@ -0,0 +1,246 @@
---
name: halo-blog-writer
description: |
Halo 博客写作和管理助手。当用户需要:
(1) 发布博客文章
(2) 管理博客内容
(3) 更新/修改已发布的文章
(4) 导出/导入博客内容
(5) 查看博客状态
(6) 使用自然语言操作 Halo 博客时触发此技能
---
# Halo 博客写作助手
本技能帮助 AI Agent 通过 Halo CLI 管理用户的 Halo 博客(http://192.168.5.8:8090)。
## 快速开始
### 已配置的环境
用户已通过 npm 全局安装 Halo CLI
- 版本:1.3.0
- Node.jsv22.14.0
- 系统:Windows (PowerShell)
### CLI 配置
当前激活的配置(profile)是 `local`,连接地址:
```
http://192.168.5.8:8090
```
认证方式:Bearer Token(已存储在系统 keyring 中)
### 基本命令
```powershell
# 列出文章(分页显示)
halo post list --page 1 --size 20
# 查看单个文章详情
halo post get <name-or-id>
# 创建文章
halo post create --title "标题" --content "# 内容" --publish true
# 更新文章
halo post update <name-or-id> --title "新标题" --content "新内容"
# 导出文章为 Markdown
halo post export-markdown <name-or-id> --output ./post.md
# 导入 Markdown 文件创建文章
halo post import-markdown --file ./post.md
```
## 写作工作流
### 场景 1:发布新文章
当用户提供文章内容时:
1. 接收文章内容(可能是文件路径或直接文本)
2. 提取标题和正文
3. 判断是否立即发布(publish)还是仅创建草稿
4. 执行 `halo post create` 命令
5. 确认创建成功
```powershell
# 发布新文章
halo post create --title "文章标题" --content "# 文章内容..." --publish true
# 仅创建草稿
halo post create --title "文章标题" --content "# 文章内容..."
```
### 场景 2:从 Markdown 文件发布
当用户提供 `.md` 文件时:
1. 读取文件内容
2. 从文件名或第一行提取标题
3. 执行导入命令
```powershell
halo post import-markdown --file d:\path\to\article.md
```
### 场景 3:更新已发布的文章
当用户要求修改某篇文章时:
1. 先用 `halo post list` 找到文章
2. 获取文章 ID 或 name
3. 执行更新命令
```powershell
# 先查看文章列表
halo post list --page 1 --size 20
# 获取文章详情
halo post get <article-id>
# 更新文章
halo post update <article-id> --title "新标题" --content "新内容"
```
### 场景 4:批量操作
处理多篇文章:
1. 获取文章列表
2. 逐个处理
3. 报告完成状态
```powershell
# 获取所有文章(分页)
halo post list --page 1 --size 100
# 或者导出为 JSON 格式便于处理
halo post list --page 1 --size 100 --json
```
## 文件路径约定
用户的博客文章通常保存在:
```
d:\Code\OpenClaw\文件\博客\
```
常见文件格式:
- `.md` - Markdown 文件
- `.txt` - 纯文本文件
## 注意事项
### 内容格式
- Halo 支持 Markdown 和 HTML 格式
- 默认使用 Markdown`--raw-type markdown`
- 也支持 `--raw-type html`
### 发布状态
- `published` - 已发布
- `draft` - 草稿
- 可以在创建时指定 `--publish true` 立即发布
### 文章标识
文章可以用以下方式标识:
- **Name/Slug**:文章的唯一标识符(如 `019dbabc-86b9-74a0-a926-c25529309007`
- **ID**:文章内部 ID
### 错误处理
如果命令失败:
1. 检查网络连接
2. 确认 CLI 配置正确(`halo auth current`
3. 查看错误信息并重试
## 其他管理功能
```powershell
# 单页管理
halo single-page list
halo single-page create --title "标题" --content "内容"
# 插件管理
halo plugin list
# 主题管理
halo theme list
# 备份
halo backup list
halo backup create
# 评论管理
halo comment list
halo comment reply <comment-id> --content "回复内容"
```
## 安全提醒
- Bearer Token 已安全存储在系统 keyring 中
- 不要在命令输出中显示敏感信息
- 谨慎执行删除操作(`halo post delete`
## 常用命令速查
| 操作 | 命令 |
|------|------|
| 查看文章列表 | `halo post list --page 1 --size 20` |
| 查看文章详情 | `halo post get <id>` |
| 创建文章 | `halo post create --title "标题" --content "内容"` |
| 发布文章 | `halo post create --title "标题" --content "内容" --publish true` |
| 更新文章 | `halo post update <id> --title "标题" --content "内容"` |
| 删除文章 | `halo post delete <id> --force` |
| 导出为 Markdown | `halo post export-markdown <id> --output ./post.md` |
| 从文件导入 | `halo post import-markdown --file ./post.md` |
## 博客标签和分类
### 现有标签(共 11 个)
| 显示名称 | Slug | 颜色 |
|---------|------|------|
| 协会动态 | xie-hui-dong-tai | 🟢 #B8E986 |
| 5分钟速览 | 5fen-zhong-su-lan | 🔵 #50E3C2 |
| 技术深潜 | ji-shu-shen-qian | 🔷 #4A90E2 |
| 校园AI | xiao-yuan-ai | 🟣 #9013FE |
| 竞赛指南 | jing-sai-zhi-nan | 🟪 #BD10E0 |
| 项目实战 | xiang-mu-shi-zhan | 🟢 #417505 |
| 零基础入门 | ling-ji-chu-ru-men | 🟢 #7ED321 |
| 开源框架 | kai-yuan-kuang-jia | 🟤 #8B572A |
| 模型轻量化 | mo-xing-qing-liang-hua | 🟡 #F8E71C |
| 隐私计算 | yin-si-ji-suan | 🟠 #F5A623 |
| AI智能体 | aizhi-neng-ti | 🔴 #D0021B |
### 标签使用建议
| 文章类型 | 推荐标签 |
|---------|---------|
| 技术教程 / 开发工具 | 技术深潜 |
| 团队协作 / 开源项目 | 项目实战 |
| AI/LLM/模型相关 | 技术深潜, AI智能体 |
| 编程入门教程 | 技术深潜, 零基础入门 |
| 比赛通知 / 大赛解读 | 竞赛指南 |
| 协会通知 / 动态 | 协会动态 |
| AI 科普 / 入门 | 零基础入门, AI智能体 |
### 常用命令速查
| 操作 | 命令 |
|------|------|
| 查看所有标签 | `halo post tag list` |
| 查看所有分类 | `halo post category list` |
| 为文章添加标签 | `halo post update <id> --tags "标签1,标签2"` |
| 更新文章分类 | `halo post update <id> --category "分类名"` |
| 查看文章标签 | `halo post get <id> --json` |
详细命令参见 `references/command-reference.md`
## 参考文档
- CLI 完整帮助:`halo --help``halo post --help`
- 配置信息:`halo auth profile list`
- 高级用法:参见 `references/advanced-usage.md`
- 标签和分类命令:参见 `references/command-reference.md`