整体流程
火山方舟豆包 API 生成文章 → Markdown 转 HTML → WordPress REST API 自动发布,分准备配置、Python 完整脚本、高级优化、避坑指南四部分。
一、前置配置(必做)
1. 获取豆包 API 密钥(火山方舟)
- 登录火山引擎方舟平台,完成实名认证
- 创建推理接入点,复制:
ARK_API_KEY(鉴权密钥)ENDPOINT_ID(模型 ID,推荐doubao-pro-32k)
- API 固定地址:
https://ark.cn-beijing.volces.com/api/v3/chat/completions
2. WordPress 站点开启 API 并生成应用密码
- 后台→设置→永久链接,选择非朴素链接(否则 REST API 失效)
- 用户→你的个人资料,拉到最下方应用密码
- 新建名称(如 AI 自动发文),复制生成的密码(空格分隔,完整保存)
- 记录 3 个参数:
- WP 网站地址:
https://你的域名 - WP 后台用户名
- WP 应用密码
- WP 网站地址:
3. 本地环境依赖
pip install requests python-dotenv markdown
二、完整可运行 Python 脚本(一键生成 + 发布)
新建.env文件存放密钥(防止硬编码泄露)
# .env配置文件 # 豆包火山方舟 ARK_API_KEY=你的方舟API密钥 ENDPOINT_ID=doubao-pro-32k # WordPress配置 WP_SITE=https://你的wp网站域名 WP_USER=wp后台用户名 WP_APP_PWD=wp应用密码 # 发布状态 publish立即发布 / draft草稿 POST_STATUS=publish # 文章分类ID(后台文章分类编辑页地址末尾数字) CAT_ID=1
主程序ai_publish_wp.py
import os
import requests
import markdown
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# ========== 配置读取 ==========
ARK_API_KEY = os.getenv("ARK_API_KEY")
ENDPOINT_ID = os.getenv("ENDPOINT_ID")
WP_SITE = os.getenv("WP_SITE")
WP_USER = os.getenv("WP_USER")
WP_APP_PWD = os.getenv("WP_APP_PWD")
POST_STATUS = os.getenv("POST_STATUS")
CAT_ID = int(os.getenv("CAT_ID"))
# 1. 调用豆包API生成文章(输出标准Markdown)
def generate_article(prompt: str) -> dict:
url = "https://ark.cn-beijing.volces.com/api/v3/chat/completions"
headers = {
"Authorization": f"Bearer {ARK_API_KEY}",
"Content-Type": "application/json"
}
# System指令强制输出固定结构:标题+正文Markdown
sys_prompt = """
你是专业文案写手,严格按照以下格式输出,不要多余解释:
# 文章标题
正文使用标准markdown,包含分段、小标题、列表,适合博客发布
输出仅返回标题+正文,不要前言后语
"""
payload = {
"model": ENDPOINT_ID,
"messages": [
{"role": "system", "content": sys_prompt},
{"role": "user", "content": prompt}
],
"temperature": 0.7
}
resp = requests.post(url, headers=headers, json=payload)
if resp.status_code != 200:
raise Exception(f"豆包API调用失败:{resp.text}")
full_text = resp.json()["choices"][0]["message"]["content"].strip()
# 拆分标题和正文
lines = full_text.split("\n", 1)
title = lines[0].replace("# ", "").strip()
md_content = lines[1].strip() if len(lines) > 1 else full_text
# Markdown转WordPress支持的HTML
html_content = markdown.markdown(md_content, extensions=["extra"])
return {"title": title, "html": html_content}
# 2. 发布内容到WordPress REST API
def publish_to_wp(title: str, html_content: str):
wp_api = f"{WP_SITE}/wp-json/wp/v2/posts"
# Basic鉴权:用户名:应用密码base64编码
auth_str = f"{WP_USER}:{WP_APP_PWD}"
headers = {
"Authorization": f"Basic {requests.utils.b64encode(auth_str.encode()).decode()}",
"Content-Type": "application/json"
}
post_data = {
"title": title,
"content": html_content,
"status": POST_STATUS,
"categories": [CAT_ID], # 分类ID数组,多分类追加
"excerpt": html_content[:120] # 自动摘要
}
resp = requests.post(wp_api, headers=headers, json=post_data)
res = resp.json()
if resp.status_code == 201:
print(f"✅ 发布成功!文章ID:{res['id']}")
print(f"文章地址:{res['link']}")
return res
else:
raise Exception(f"WP发布失败:{res}")
# 3. 一键执行入口
if __name__ == "__main__":
# 修改这里为你的写作需求
user_prompt = "写一篇2000字新手WordPress建站完整教程,通俗易懂"
print("🔄 正在调用豆包生成文章...")
article = generate_article(user_prompt)
print(f"📄 生成完成,标题:{article['title']}")
print("🚀 正在发布到WordPress...")
publish_to_wp(article["title"], article["html"])
三、运行与使用
- 填充
.env内所有密钥参数 - 修改代码底部
user_prompt为你需要写作的主题 - 执行脚本
python ai_publish_wp.py
执行逻辑:
- 请求豆包生成结构化 Markdown 文章
- 自动拆分标题,Markdown 转为 WP 兼容 HTML
- 通过 WP 官方 REST 接口自动新建文章(草稿 / 直接发布)
四、进阶扩展功能
1. 自动生成文章标签
在generate_article的 system 指令增加标签输出,解析后传入 WP 接口:
# payload增加标签输出,解析tags数组 post_data["tags"] = [12,15] # 标签ID列表
2. 自动上传特色图
调用图床 API 获取图片 URL,在 WP 请求增加featured_media(媒体 ID)
3. 批量生成发布
循环 prompt 列表,增加异常捕获、失败重试
4. 网页可视化操作(简易前端)
使用 Flask 搭建页面,输入 prompt 点击按钮触发整套流程,实现网页端 “一键发布”
五、常见报错与避坑
- WordPress 401 鉴权失败
- 应用密码必须完整复制(包含空格),不要手动改空格
- 不能使用登录密码,必须后台生成应用密码
- 豆包 API 401/403
- ARK_API_KEY 复制完整,检查接入点是否正常开通、有余额
- WP 404 接口不存在
- 永久链接不能是朴素链接,保存一次固定链接
- 访问
域名/wp-json/wp/v2/posts测试接口是否可访问
- Markdown 排版错乱
- 指令强制 AI 输出标准 markdown,使用
markdown.extensions["extra"]支持表格、代码块
- 指令强制 AI 输出标准 markdown,使用
- 服务器部署注意
- 关闭 WP 站点防盗链、IP 限制,否则服务器无法调用 WP API
- 密钥文件
.env禁止公开,加入.gitignore
六、无代码替代方案(不懂编程)
- 工具:AutoGPT、n8n、简道云
- 流程:
- HTTP 请求节点调用豆包 API 生成文本
- Markdown 转 HTML 工具节点
- 第二个 HTTP 节点请求 WordPress REST API 完成发布
- 优势:拖拽可视化流程,无需编写代码,适合非开发人员
