Install
openclaw skills install @thcjp/hugo-blog-tool-freeopenclaw skills install @thcjp/hugo-blog-tool-free本工具为个人博主提供 Hugo 博客文章发布的自动化流程,将 Markdown 文章自动转换为符合 Hugo 规范的博客文章并推送到远程仓库。通过自动分析内容提取标题、标签、分类,生成标准化的 Front Matter,添加截断标记,并执行 Git 推送,简化从写作到发布的全流程。免费版聚焦单篇文章的发布场景,提供开箱即用的发布模板与标签映射。
| 能力模块 | 描述 | 典型用法 |
|---|---|---|
| 内容分析 | 自动提取标题、标签、分类 | 帮我发布这篇博客 |
| Front Matter 生成 | 生成 Hugo 标准格式 | 自动创建 YAML 头部 |
| 截断标记 | 自动添加 <!--more--> | 列表页显示摘要 |
| Git 推送 | 自动提交并推送 | git push |
| 标签映射 | 英文 slug 映射中文显示 | 自动创建 _index.md |
技术实现要点:核心能力基于input_params参数与output_format配置实现,支持创建/查询/修改/删除等操作模式,通过config_options进行运行时配置。 |
用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 按照skill规范执行核心功能执行操作,遵循单一意图原则。 输出: 返回核心功能执行的执行结果,包含操作状态和输出数据。
input_params参数,支持创建/查询/导出操作用config_options参数进行配置。
输入: 用户提供参数配置与调用所需的指令和必要参数。 处理: 按照skill规范执行参数配置与调用操作,遵循单一意图原则。 输出: 返回参数配置与调用的执行结果,包含操作状态和输出数据。
config_options参数,支持修改/重置/导入操作用output_format参数进行配置。
输入: 用户提供结果处理与输出所需的指令和必要参数。 处理: 按照skill规范执行结果处理与输出操作,遵循单一意图原则。 输出: 返回结果处理与输出的执行结果,包含操作状态和输出数据。
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:Markdown、文章发布到、自动生成、并推送到远程仓库、面向个人博主的、博客发布工具、简化文章发布流程、自动分析文章内容、生成符合、规范的、自动添加截断标记、推送发布到远程仓等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。博主写完一篇技术文章,需要发布到 Hugo 博客。
用户:帮我发布这篇 blog(附文章内容)
助手:自动完成以下步骤
1. 分析内容
- 标题:从内容中提取
- 标签:根据主题判断(如 AI → ["ai"])
- 分类:根据类型判断(如技术文章 → ["tech"])
2. 生成文件名
- 格式:content/posts/{slug}.md
- slug:标题转为 URL 友好格式(小写、连字符)
3. 渲染 Front Matter
---
title: "文章标题"
date: 2026-07-18
draft: false
tags: ["ai", "programming"]
categories: ["tech"]
description: "文章描述"
---
4. 添加截断标记
在第一段后添加 <!--more-->
5. Git 推送
cd {博客路径}
git add content/posts/{文件名}
git commit -m "新增:{文章标题}"
git push
6. 返回部署链接
文章使用了一个博客中还不存在的标签,需要创建映射文件。
# frontmatter 中使用英文 slug
# tags: ["ssg", "ssr"]
# categories: ["tech"]
# 如果遇到新标签没有映射文件,创建 _index.md
# 标签映射文件
cat > content/tags/new-tag/_index.md << 'EOF'
---
title: "新标签中文名"
---
EOF
# 分类映射文件
cat > content/categories/new-category/_index.md << 'EOF'
---
title: "新分类中文名"
---
EOF
博主想在发布前先本地预览效果。
# 1. 本地预览
cd {博客路径}
hugo server -D # -D 包含草稿
# 2. 浏览器访问 http://localhost:1313 预览
# 3. 确认无误后发布
# 将 draft 改为 false
sed -i 's/draft: true/draft: false/' content/posts/{文件名}.md
# 4. 推送发布
git add content/posts/{文件名}.md
git commit -m "新增:{文章标题}"
git push
以下场景Hugo博客发布免费版不适合处理:
需要生成营销文案、写作内容、标题优化、内容创作时使用。不适用于非本工具能力范围的需求。
---
title: "文章标题"
date: 2026-07-18
draft: false
tags: ["tag1", "tag2"]
categories: ["Category"]
description: "文章描述"
---
重要规则:
tech, aidate 字段中指定,文件名不包含日期| Slug | 中文显示 |
|---|---|
| tech | 技术 |
| photo | 摄影 |
| ai | AI |
| investment | 投资 |
| tech-news | 科技资讯 |
| science | 科学 |
| art | 艺术 |
| life | 生活 |
| reading-notes | 读书笔记 |
| Slug | 中文显示 |
|---|---|
| ai | AI |
| llm | 大语言模型 |
| agent | 智能体 |
| programming | 编程 |
| thinking | 思考 |
| photography | 摄影 |
| camera | 相机 |
| photo | 照片 |
| go | Go |
| kubernetes | Kubernetes |
| rag | RAG |
AI、RAG、NLP、Kubernetes、Go、Elasticsearch、PHP、SQL、SSG、SSR 等技术名称用英文 slug
结果处理: 执行完成后,查看输出结果确认操作状态。成功时输出包含处理摘要和结果数据;失败时根据错误信息排查问题,查阅错误处理章节获取恢复步骤。
在第一段或导言后添加 <!--more-->,让列表页显示摘要。
---
title: "我的文章"
date: 2026-07-18
draft: false
tags: ["programming"]
categories: ["tech"]
---
这是文章的导言部分,会在列表页显示。
<!--more-->
这是正文内容,不会在列表页显示。
# 从博客目录自动检测 git 状态并推送
cd {博客路径}
# 添加新文章
git add content/posts/{文件名}.md
# 提交(建议用"新增:"前缀)
git commit -m "新增:{文章标题}"
# 推送到远程
git push
此工具会自动尝试从以下位置读取博客配置:
如果未找到配置,才询问用户。
slug 使用英文:文件名使用小写英文,不要用中文
# 正确
content/posts/getting-started-with-hugo.md
# 错误
content/posts/Hugo入门指南.md
标签用英文 slug:frontmatter 中用英文,页面展示用中文(通过 _index.md)
截断标记位置:放在第一段结束后的空行,或导言和正文之间
commit message 规范:建议用 新增: 前缀
git commit -m "新增:Hugo 博客发布指南"
发布前预览:使用 hugo server -D 本地预览
配置 SSH Key:确保 git push 不需要每次输入密码
# 英文标题:直接转为小写连字符
"Getting Started with Hugo" → "getting-started-with-hugo"
# 中文标题:可用拼音或英文关键词
"Hugo 入门指南" → "hugo-getting-started" 或 "hugo-ru-men-zhi-nan"
# 创建标签映射文件
mkdir -p content/tags/new-tag
cat > content/tags/new-tag/_index.md << 'EOF'
---
title: "新标签"
---
EOF
# 1. 检查 draft 是否为 false
grep "draft:" content/posts/{文件名}.md
# 2. 检查日期是否是未来时间
grep "date:" content/posts/{文件名}.md
# 3. 本地预览(包含草稿)
hugo server -D
# 4. 检查文件路径是否正确
ls content/posts/
# 1. 编辑文章
# 2. 更新 date 或添加 lastmod
---
title: "文章标题"
date: 2026-07-18
lastmod: 2026-07-19
---
# 3. 推送更新
git add content/posts/{文件名}.md
git commit -m "更新:{文章标题}"
git push
# 方案一:配置 SSH Key
ssh-keygen -t ed25519 -C "your_email@example.com"
# 将公钥添加到 Git 平台
# 方案二:配置凭据缓存
git config --global credential.helper cache
git config --global credential.helper "cache --timeout=3600"
# 批量添加
git add content/posts/*.md
# 批量提交
git commit -m "新增:批量发布多篇文章"
# 推送
git push
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Hugo | 静态站点生成器 | 推荐 | gohugo.io 下载 |
| Git | 命令行工具 | 必需 | 系统包管理器安装 |
| LLM API | API | 必需 | 由 Agent 内置 LLM 提供 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |