每天写博客最烦的是什么?发布流程。
写完文章 → 登录后台 → 粘贴内容 → 设置分类 → 上传封面图 → 写摘要 → 点发布。一套流程下来,10分钟没了。
今天教你一个方法:用AI+WordPress REST API搭建自动发布工作流。写完文章后,一条命令搞定所有发布步骤 🚀
🔧 你需要准备什么
1. 一个WordPress网站(已启用REST API,默认就是开启的)
2. 一个WordPress应用密码(比用账号密码安全10倍)
3. Python环境(或者Node.js,任选一个)
4. AI API(OpenAI/Claude/通义千问都行)
🔑 第一步:创建WordPress应用密码
登录WordPress后台 → 用户 → 个人资料 → 应用程序密码
输入一个名称(如"AI发布工具"),点击生成。系统会给你一串密码,立即复制保存,离开页面就看不到了 ⚠️
应用密码的好处:
- 不暴露你的主账号密码
- 可以随时撤销
- 可以限制权限
🐍 第二步:Python自动发布脚本
这是一个完整的自动发布脚本,可以直接用:
import requests
import base64
import json
import sys
# ===== 配置区 =====
WP_URL = "https://your-site.com"
WP_USER = "your_username"
WP_APP_PASSWORD = "xxxx xxxx xxxx xxxx xxxx xxxx" # 应用密码
WP_CATEGORY_ID = 4 # 分类ID
# ===== 认证 =====
def get_auth():
credentials = f"{WP_USER}:{WP_APP_PASSWORD}"
token = base64.b64encode(credentials.encode()).decode()
return f"Basic {token}"
# ===== 发布文章 =====
def publish_article(title, content, category_id, slug=None, status="publish"):
auth = get_auth()
data = {
"title": title,
"content": content,
"status": status,
"categories": [category_id],
}
if slug:
data["slug"] = slug
response = requests.post(
f"{WP_URL}/wp-json/wp/v2/posts",
headers={
"Authorization": auth,
"Content-Type": "application/json"
},
json=data
)
if response.status_code == 201:
post = response.json()
print(f"✅ 发布成功!")
print(f" 文章ID: {post['id']}")
print(f" 链接: {post['link']}")
return post
else:
print(f"❌ 发布失败: {response.status_code}")
print(response.text)
return None
# ===== 使用示例 =====
if __name__ == "__main__":
title = "我的AI工具推荐文章"
content = "<p>这是文章内容,支持HTML格式</p>"
post = publish_article(
title=title,
content=content,
category_id=WP_CATEGORY_ID,
slug="ai-tools-recommendation"
)
📤 第三步:上传媒体文件(封面图)
文章有了,还得上传封面图。同样可以用API搞定:
def upload_media(file_path, title=""):
auth = get_auth()
with open(file_path, "rb") as f:
file_data = f.read()
# 根据文件扩展名判断MIME类型
ext = file_path.split(".")[-1].lower()
mime_map = {
"jpg": "image/jpeg",
"jpeg": "image/jpeg",
"png": "image/png",
"gif": "image/gif",
"webp": "image/webp"
}
mime_type = mime_map.get(ext, "image/jpeg")
filename = file_path.split("/")[-1]
response = requests.post(
f"{WP_URL}/wp-json/wp/v2/media",
headers={
"Authorization": auth,
"Content-Disposition": f'attachment; filename="{filename}"',
"Content-Type": mime_type
},
data=file_data
)
if response.status_code == 201:
media = response.json()
print(f"✅ 上传成功!媒体ID: {media['id']}")
return media["id"]
else:
print(f"❌ 上传失败: {response.status_code}")
return None
# 上传后设置为文章特色图片
def set_featured_image(post_id, media_id):
auth = get_auth()
response = requests.post(
f"{WP_URL}/wp-json/wp/v2/posts/{post_id}",
headers={
"Authorization": auth,
"Content-Type": "application/json"
},
json={"featured_media": media_id}
)
if response.status_code == 200:
print(f"✅ 封面图设置成功!")
else:
print(f"❌ 设置失败: {response.status_code}")
🤖 第四步:让AI帮你生成内容
现在把AI集成进来,实现从选题到发布的全自动:
import openai
def generate_article(topic, keyword):
"""用AI生成博客文章"""
client = openai.OpenAI(api_key="your-api-key")
prompt = f"""请写一篇WordPress博客文章:
主题:{topic}
目标关键词:{keyword}
字数:1500-2000字
风格:微信公众号技术号,短句,有emoji
要求:
1. HTML格式,使用内联style
2. 包含H2标题结构
3. 有实用的操作步骤
4. 结尾有互动引导
5. 不能有AI痕迹(不能用"此外""值得一提"等词)"""
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
# ===== 一键发布流程 =====
def auto_publish(topic, keyword, category_id):
"""从生成到发布一条龙"""
print("📝 正在生成文章...")
content = generate_article(topic, keyword)
print("📤 正在发布文章...")
slug = topic.lower().replace(" ", "-")[:50]
post = publish_article(
title=topic,
content=content,
category_id=category_id,
slug=slug
)
if post:
print(f"\n🎉 完成!")
print(f" 链接: {post['link']}")
return post
⚡ 进阶:定时批量发布
如果你有多个选题,可以一次性生成,然后定时发布:
from datetime import datetime, timedelta
def schedule_posts(topics, start_date, days_interval=1):
"""批量定时发布"""
current_date = start_date
for topic in topics:
content = generate_article(topic["title"], topic["keyword"])
# 创建为草稿,设置日期
data = {
"title": topic["title"],
"content": content,
"status": "future", # 定时发布状态
"date": current_date.isoformat(),
"categories": [topic["category_id"]],
"slug": topic["slug"]
}
# POST到WordPress
response = requests.post(
f"{WP_URL}/wp-json/wp/v2/posts",
headers={"Authorization": get_auth()},
json=data
)
if response.status_code == 201:
print(f"✅ 已排期: {topic['title']} → {current_date.strftime('%Y-%m-%d')}")
current_date += timedelta(days=days_interval)
# 示例:一次性排期一周的文章
topics = [
{"title": "周一:AI写作工具推荐", "keyword": "AI写作", "category_id": 3, "slug": "ai-writing-tools"},
{"title": "周三:ChatGPT提示词技巧", "keyword": "ChatGPT提示词", "category_id": 6, "slug": "chatgpt-prompts"},
{"title": "周五:AI做数据分析教程", "keyword": "AI数据分析", "category_id": 4, "slug": "ai-data-analysis"},
]
schedule_posts(
topics,
start_date=datetime(2026, 8, 18),
days_interval=2
)
🛡️ 安全注意事项
1. 应用密码不要提交到GitHub——用环境变量存储
2. API密钥同理——写在.env文件里,.gitignore排除
3. 先用draft测试——正式发布前先设status="draft"检查效果
4. 控制频率——WordPress有API速率限制,别一口气发太多
这套工作流我用了3个月,现在每周日花2小时生成下周的文章,然后自动定时发布。剩下的时间专心做内容策划和数据分析,效率提升了不止一个档次 💪
你有在用WordPress REST API吗?评论区聊聊你的使用场景 👇