一、目标
每次运行 Hugo 博客脚本发布新文章时,自动将该文章同步到 WordPress 作为备份。
二、整体流程
note.txt → 生成 MD 文件 → 复制到 Hugo content/posts
↓
Hugo 生成静态网站 (public / public2 / public3)
↓
Git push 到 GitHub / Git FTP 上传
↓
WordPress 自动同步(新增模块)
三、核心原理
1. 同步入口
在 all_fpt_ok.py 脚本末尾追加 WordPress 同步模块,每次运行 Hugo 发布脚本时自动触发,无需额外操作。
2. 文件定位
每次只同步今天生成的一篇文章(YYYY-MM-DD.md),通过当前日期匹配文件名。
3. 解析 Frontmatter
读取 MD 文件开头的 frontmatter,提取:
| 字段 | 示例 | 用途 |
|---|---|---|
title | "Debian 系统精簡" | WordPress 文章标题 |
date | 2025-12-12 | WordPress 文章发布日期 |
4. Markdown → HTML
使用 Python 的 markdown 库将 MD 正文转为 HTML,支持:
- 表格(
tables) - 代码块(
fenced_code)
5. 通过 REST API 发布
调用 WordPress REST API:
POST https://sv66.123450908.xyz/wp-json/wp/v2/posts
认证方式:Application Password(应用密码)
6. 状态记录(防重复)
同步完成后,将文件名和 MD5 记录到 .wp-sync-state.json:
{
"synced": {
"2026-04-12.md": {
"hash": "a1b2c3d4e5...",
"wp_id": 170
}
}
}
下次运行时:
- MD5 相同 → 跳过
- MD5 不同 → 更新文章
四、配置信息
| 配置项 | 值 |
|---|---|
| WordPress 地址 | https://sv66.123450908.xyz |
| REST API 端点 | /wp-json/wp/v2/posts |
| 用户名 | djd1226 |
| 认证方式 | Application Password |
| MD 源目录 | /storage/emulated/0/www/hugo/content/posts |
| 状态文件 | .wp-sync-state.json(脚本同目录) |
五、依赖
| 依赖 | 用途 |
|---|---|
| Python 3.13 | 运行环境 |
requests | HTTP 请求(调用 REST API) |
markdown | Markdown 转 HTML |
六、使用方式
不需要任何额外操作。 每次运行:
python3 /data/data/com.termux/files/home/some-py/hugo-blog/all_fpt_ok.py
脚本会依次完成:
- 从
note.txt生成 MD 文件 - Hugo 生成静态网站
- Git push 到 GitHub
- Git FTP 上传(public3)
- WordPress 同步发布 ← 新增
七、注意事项
- WordPress 应用密码 需要在后台生成,普通登录密码不能用于 REST API
- 每次只处理今天的文章,不会重复发布已同步的文章
- 如果需要同步旧文章,需手动删除
.wp-sync-state.json中的对应记录
