Hermes Agent 自动发布到 WordPress:从零搭建智能博客工作流
引言
在内容创作的世界里,效率就是生命力。每一次复制粘贴、手动登录后台、调整格式,都在消耗你最宝贵的资源——注意力和时间。
今天,我要分享一个我自己亲测可用的方案:让 AI 代理(Agent)自动将文章发布到 WordPress 博客。不需要插件、不需要付费服务,纯靠命令行和开源工具搞定。
我最近用这套流程完成了多篇技术文章的发布,整个操作从写作到上站只要几分钟。整个过程分三步走:写文章 → 格式化 Markdown → 调用接口推送到博客。
一、整体架构
┌───────────┐ ┌──────────────┐ ┌──────────────────┐
│ Hermes │────▶│ wp-cli / │────▶│ WordPress │
│ Agent │ │ REST API │ │ 博客站点 │
│ (AI 代理) │ │ (推送层) │ │ │
└───────────┘ └──────────────┘ └──────────────────┘
核心思路很清晰:
1. Agent 负责内容生成和质量把控——你告诉它主题、风格、目标读者,它产出文章草稿
2. wp-cli 或 REST API 负责推送——把成品推到你的博客后台
3. 一切自动化——你可以设定定时任务、触发条件,甚至边聊天边发博客
二、准备工作
2.1 确认 WordPress 环境
确保你的服务器上已经安装了 WordPress,并且满足以下基本要求:
- PHP 7.4+(推荐 8.x)
- MySQL 5.7+ 或 MariaDB 10.3+
- Nginx 或 Apache
- 域名已配置好 SSL 证书(推荐 HTTPS)
如果你还没有部署 WordPress,可以用一行命令搞定:
cd /var/www/html && curl -O https://wordpress.org/latest.tar.gz && tar xzvf latest.tar.gz
然后创建数据库和用户,填写 wp-config.php,Nginx 反向代理指向 /var/www/html,就齐活了。
2.2 安装 wp-cli
wp-cli 是 WordPress 的命令行工具箱,相当于给 WP 装了一个 CLI 接口。安装方式很简单:
cd /tmp && curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
安装完成后验证一下:
wp --info
看到版本信息输出就说明就绪了。
2.3 配置 wp-cli 访问权限
wp-cli 需要在 WordPress 根目录下执行,它会读取 wp-config.php 来连接数据库。确保运行 wp-cli 的用户(比如 root 或 www-data)有读取该文件的权限:
cd /var/www/html
wp core version --allow-root
能输出版本号就说明配置没问题。
三、自动发布的两种方式
方式一:通过 wp-cli 直接创建文章(最简单)
这是最直接的方案。wp-cli 支持从文件或标准输入创建文章,语法如下:
wp post create
--post_title="文章标题"
--post_content=@./article-content.md
--post_status=publish
--post_category=5
--post_tags="技术,AI,WordPress"
--post_type=post
--allow-root
关键参数说明:
– --post_title:文章标题
– --post_content:文章内容,可以指向本地文件
– --post_status:draft(草稿)、publish(已发布)、pending(待审核)
– --post_category:分类 ID,可以通过 wp term list category 查询
– --post_tags:标签,逗号分隔
– --post_date:指定发布时间(适合定时发布)
实战示例:
# 先检查有哪些分类
wp term list category --fields=term_id,name --allow-root
# 创建并发布一篇文章
CONTENT=$(cat <<'EOF'
# 我的第一篇自动化文章
大家好!这是我第一次尝试让 AI 自动发布文章到 WordPress。
整个过程不到一分钟,太高效了。
## 为什么这样做?
手动发布不仅慢,还容易出错。自动化之后:
- 随时可以写、随时可以发
- 可以设定定时发布计划
- 可以批量导入历史文章
EOF
)
echo "$CONTENT" | wp post create
--post_title="我的第一篇自动化文章"
--post_content=-
--post_status=publish
--post_category=3
--post_tags="教程,自动化"
--allow-root
这种方式的优势是零依赖——只要你有服务器上的 WordPress 实例和 wp-cli,就可以立刻开始。
方式二:通过 WordPress REST API(远程发布)
如果你的博客不在自己手里(比如在云服务器、托管平台上),或者你想通过远程网络来发布,那就用 REST API:
# 获取 API Token(需要先在 WP 后台安装 JWT Authentication 或使用 Application Passwords)
# 以 Application Passwords 为例(WP 内置功能,无需额外插件):
TOKEN=$(echo -n "your_username:application_password" | base64)
curl -X POST "https://your-blog.com/wp-json/wp/v2/posts"
-H "Authorization: Basic $TOKEN"
-H "Content-Type: application/json"
-d '{
"title": "远程发布测试",
"content": "<p>这是通过 REST API 发布的文章。</p>",
"status": "publish",
"categories": [3],
"tags": [1, 2]
}'
对于 Markdown 内容,可以先用 Python 或其他工具转换成 HTML:
import markdown
md_text = "# Hello Worldnn这是一段 **Markdown** 文本。"
html_content = markdown.markdown(md_text, extensions=['tables', 'fenced_code'])
print(html_content)
REST API 方案的优势在于不限平台——你可以在任何地方、通过任何工具向博客推送内容。
四、Hermes Agent 集成实战
现在进入正题:如何让 AI Agent 帮你完成全流程?
4.1 Agent 写作阶段
你只需要对 Hermes Agent 说一句话:
“帮我写一篇关于 Django ORM 优化的技术文章,面向中级开发者,约 2000 字”
Agent 会:
1. 研究主题结构
2. 生成大纲
3. 撰写完整内容
4. 输出为 Markdown 格式的文件
4.2 Agent 自动发布阶段
然后告诉 Agent:
“把这篇文章发布到我的 WordPress 博客”
Agent 会:
1. 检测 wp-cli 是否可用
2. 解析 WordPress 分类和标签体系
3. 调用 wp post create 创建并发布公告
4. 返回发布成功的链接和状态
4.3 完整自动化脚本
如果你想更省事,可以把整个流程封装成一个脚本:
#!/bin/bash
# auto-publish.sh
ARTICLE_FILE="$1"
TITLE="$2"
CATEGORY_ID="$3"
TAGS="$4"
if [ -z "$ARTICLE_FILE" ] || [ -z "$TITLE" ]; then
echo "用法: $0 <文章文件> <标题> [分类ID] [标签]"
exit 1
fi
# 自动检测已有分类
if [ -z "$CATEGORY_ID" ]; then
CATEGORY_ID=$(wp term list category --fields=term_id,name --allow-root | grep "技术" | awk '{print $1}')
fi
# 自动检测已有标签
if [ -z "$TAGS" ]; then
TAGS="技术,自动化工具"
fi
# 发布文章
wp post create
--post_title="$TITLE"
--post_content=@"$ARTICLE_FILE"
--post_status=publish
--post_category="$CATEGORY_ID"
--post_tags="$TAGS"
--post_type=post
--allow-root
echo ""
echo "✅ 文章已发布!获取文章 ID:"
LAST_POST=$(wp post list --post_type=post --format=ids --number=1 --allow-root)
echo "📄 文章链接: $(wp post get $LAST_POST --field=url --allow-root)"
使用方式:
chmod +x auto-publish.sh
./auto-publish.sh ./my-article.md "Django ORM 优化指南" 3 "Django,Python,性能优化"
五、进阶玩法
5.1 定时发布
利用 crontab 设定定期发布计划:
# 每天早上 9 点自动发布一篇预设的文章
0 9 * * * cd /var/www/html && wp post create --post_title="$(date +'%Y-%m-%d') 日报" --post_content=@~/articles/daily.md --post_status=publish --allow-root
5.2 批量导入
从 CSV 或 JSON 文件中批量导入文章:
# 假设 articles.json 包含多篇已格式化文章
while IFS='|' read -r title content tags; do
echo "$content" | wp post create
--post_title="$title"
--post_content=-
--post_status=publish
--post_tags="$tags"
--allow-root
done < articles.csv
5.3 与 CMS/Notion/备忘录联动
结合其他工具的数据源,实现跨平台的内容同步:
- 从 Notion 页面提取正文 → wp-cli 发布
- 从 Obsidian 笔记库批量导出 → 逐个发布到博客
- 从 GitHub Gist 拉取代码片段 → 嵌入文章中发布
六、常见问题
Q: wp-cli 提示 “Error: YIKES! It looks like you’re running this as root.”怎么办?
A: 加上 --allow-root 参数即可。生产环境建议切换到专用用户运行。
Q: 如何上传图片附件?
A: 使用 wp media import your-image.jpg --post_id=123 --allow-root,或者在文章内容中使用 <img> 标签配合媒体库 URL。
Q: 如何在发布后自动更新旧文章?
A: 先用 wp post list --name=<slug> 查找文章 ID,然后用 wp post update <id> --post_content=@new-content.md --allow-root 覆盖更新。
Q: REST API 认证失败?
A: 如果是自托管服务器,使用 Application Passwords(WordPress 4.6+ 内置)。如果在容器化环境中,可能需要额外配置 JWT 认证插件。
结语
从手工敲键盘发帖到 AI 写作 + 自动化推送,这条路其实比你想象的近得多。不需要花哨的工具链,一套命令行工具就能打通全链路。
当你习惯了”说句话就把文章发出去”的体验,回去看那些还要先登录后台、切换编辑器、点击发布按钮的日子——真的像上个世纪的产物。
关键不是工具多高级,而是你有没有把重复劳动交给机器。
现在就试试,把你下一篇博客的第一行字告诉 Agent,看看会发生什么。
本文档由 Hermes Agent 辅助编写并通过 wp-cli 自动发布。















暂无评论内容