- 飞书消息接收与处理(文字、图片、Word 文档) - WordPress REST API 文章发布 - 图片自动上传到媒体库 - Word 文档解析与发布 - HTML 格式化与分类自动匹配 - Python CLI 工具(避免 shell 引号冲突) - Webhook 服务器(8080 端口) - 完整日志系统
163 lines
4.8 KiB
Markdown
163 lines
4.8 KiB
Markdown
# WordPress 自动发布系统
|
||
|
||
基于 OpenClaw + WordPress REST API 的自动化文章发布系统,支持 Word 文档解析和文字 + 图片发布。
|
||
|
||
## 📁 目录结构
|
||
|
||
```
|
||
wp-publish/
|
||
├── config.py # 配置文件
|
||
├── README.md # 使用说明
|
||
├── logs/ # 日志目录
|
||
│ ├── publish.log # 发布日志
|
||
│ ├── debug.log # 调试日志
|
||
│ └── error.log # 错误日志
|
||
├── modules/ # 功能模块
|
||
│ ├── __init__.py # 模块包初始化
|
||
│ ├── wp_logger.py # 日志系统
|
||
│ ├── wp_parse_docx.py # Word 文档解析
|
||
│ ├── wp_image_handler.py # 图片处理与上传
|
||
│ ├── wp_formatter.py # HTML 格式化
|
||
│ ├── wp_api.py # WordPress API
|
||
│ └── wp_category.py # 分类匹配
|
||
├── scripts/ # 执行脚本
|
||
│ ├── wp_publish.py # 主发布脚本(Word 文档)
|
||
│ └── wp_publish_text.py # 文字 + 图片发布脚本
|
||
├── temp/ # 临时文件
|
||
└── templates/ # 模板文件
|
||
```
|
||
|
||
## 🚀 使用方法
|
||
|
||
### 1. Word 文档发布
|
||
|
||
```bash
|
||
# 基本用法
|
||
python3 /www/wwwroot/wp-publish/scripts/wp_publish.py /path/to/document.docx
|
||
|
||
# 指定分类
|
||
python3 /www/wwwroot/wp-publish/scripts/wp_publish.py /path/to/document.docx -c 9
|
||
|
||
# 指定指令(支持 #分类 格式)
|
||
python3 /www/wwwroot/wp-publish/scripts/wp_publish.py /path/to/document.docx -i "#分类 技术"
|
||
|
||
# 指定标签
|
||
python3 /www/wwwroot/wp-publish/scripts/wp_publish.py /path/to/document.docx -t "1,2,3"
|
||
|
||
# 预览模式(不实际发布)
|
||
python3 /www/wwwroot/wp-publish/scripts/wp_publish.py /path/to/document.docx -d
|
||
|
||
# 保存为草稿
|
||
python3 /www/wwwroot/wp-publish/scripts/wp_publish.py /path/to/document.docx -s draft
|
||
```
|
||
|
||
### 2. 文字 + 图片发布
|
||
|
||
```bash
|
||
# 基本用法
|
||
python3 /www/wwwroot/wp-publish/scripts/wp_publish_text.py "这是文章正文内容"
|
||
|
||
# 带图片发布
|
||
python3 /www/wwwroot/wp-publish/scripts/wp_publish_text.py "文章正文" -i /path/to/image1.jpg /path/to/image2.jpg
|
||
|
||
# 指定标题
|
||
python3 /www/wwwroot/wp-publish/scripts/wp_publish_text.py "文章正文" -t "自定义标题"
|
||
|
||
# 指定分类指令
|
||
python3 /www/wwwroot/wp-publish/scripts/wp_publish_text.py "文章正文" -c "#分类 ai"
|
||
|
||
# 指定标签
|
||
python3 /www/wwwroot/wp-publish/scripts/wp_publish_text.py "文章正文" -T "1,2,3"
|
||
```
|
||
|
||
## 📋 分类列表
|
||
|
||
| ID | 名称 | Slug | 说明 |
|
||
|----|------|------|------|
|
||
| 12 | Ai 科普 | ai-kepu | AI 科普类文章 |
|
||
| 11 | Ai 资讯 | ai-zixun | AI 行业新闻 |
|
||
| 16 | GEO | geo | GEO 优化相关 |
|
||
| 9 | 人工智能 | ai | 通用 AI 文章 |
|
||
| 5 | 技术资料 | jishu | 技术教程 |
|
||
| 10 | 好物分享 | fenxiang | 产品推荐 |
|
||
| 4 | 文章分享 | wenzhang | 转载文章 |
|
||
| 8 | 杂记 | zaji | miscellaneous |
|
||
| 7 | 随笔 | suibi | 个人随笔(默认) |
|
||
| 1 | 关于我们 | guanyu | 网站信息 |
|
||
|
||
## ⚙️ 配置说明
|
||
|
||
编辑 `config.py` 文件:
|
||
|
||
```python
|
||
# WordPress 配置
|
||
wp_url = 'https://www.nanlou.net'
|
||
wp_user = 'shaowu'
|
||
wp_password = 'your_app_password'
|
||
|
||
# 默认分类 ID
|
||
default_category = 7
|
||
|
||
# 是否自动匹配分类
|
||
auto_match_category = True
|
||
|
||
# 图片优化配置
|
||
optimize_images = True
|
||
image_max_width = 1200
|
||
image_quality = 85
|
||
|
||
# 默认发布状态
|
||
post_status = 'publish'
|
||
```
|
||
|
||
## 📝 日志说明
|
||
|
||
系统会生成三种日志:
|
||
|
||
| 日志文件 | 说明 | 级别 |
|
||
|---------|------|------|
|
||
| `logs/publish.log` | 发布操作日志 | INFO |
|
||
| `logs/debug.log` | 调试信息日志 | DEBUG |
|
||
| `logs/error.log` | 错误日志 | ERROR |
|
||
|
||
日志文件自动轮转,单个文件最大 10MB,保留最近 5 个备份。
|
||
|
||
## 🔧 依赖库
|
||
|
||
```bash
|
||
pip3 install python-docx requests Pillow
|
||
```
|
||
|
||
## 📌 注意事项
|
||
|
||
1. 确保 WordPress 已安装 Application Passwords 插件(WordPress 5.6+ 已内置)
|
||
2. 应用密码需要在 WordPress 后台生成
|
||
3. 图片会自动上传到 WordPress 媒体库
|
||
4. 第一张图片会自动设置为特色图片
|
||
5. 支持 Word 文档 (.docx) 格式
|
||
6. 图片格式支持:JPG, PNG, GIF, BMP, WebP
|
||
|
||
## 🐛 故障排除
|
||
|
||
### 常见问题
|
||
|
||
1. **发布失败 - 401 未授权**
|
||
- 检查 WordPress 用户名和应用密码是否正确
|
||
- 确认用户具有发布文章权限
|
||
|
||
2. **图片上传失败**
|
||
- 检查图片格式是否支持
|
||
- 确认 WordPress 媒体库权限设置
|
||
|
||
3. **分类匹配错误**
|
||
- 使用 `-c` 参数手动指定分类
|
||
- 检查分类 slug 是否正确
|
||
|
||
4. **Word 解析失败**
|
||
- 确保文件为 .docx 格式(不支持 .doc)
|
||
- 检查文件是否损坏
|
||
|
||
## 📞 技术支持
|
||
|
||
如有问题,请查看日志文件获取详细错误信息。
|