先说效果:一条命令,30秒搞定一篇千字博客
我最近用 WorkBuddy AI 助手 + DeepSeek API,搞了一套自动化发博客的系统。现在只要在命令行敲一下,30秒内就能生成一篇千字技术文章,并自动发布到我的 Z-Blog 站点上。整个过程完全不用我动手写内容、调格式、点发布按钮,爽得很。
下面我就把怎么做到的,包括踩过的坑,都详细写出来。如果你也想偷懒(或者说提高效率),可以参考一下。
整体思路:WorkBuddy 写脚本,DeepSeek 写内容,Z-Blog 接发布
我的方案很简单:
- WorkBuddy:帮我写 Python 脚本,包括调用 DeepSeek API 和发布到 Z-Blog 的逻辑。
- DeepSeek:通过 API 生成文章内容,返回标题、正文、摘要、标签等结构化数据。
- Z-Blog:通过自带的 MetaWeblog XML-RPC 接口接收文章数据并发布。
最终我得到了两个核心脚本:ai_write_and_publish.py(主脚本)和 zblog_publisher.py(发布模块)。
第一步:让 WorkBuddy 帮我写 Python 脚本
我直接跟 WorkBuddy 说:“帮我写一个 Python 脚本,调用 DeepSeek API 生成一篇技术博客文章,然后通过 Z-Blog 的 XML-RPC 接口发布。” WorkBuddy 很快给出了初版代码,但有些细节需要调整,比如错误处理和参数配置。经过几轮对话,最终定稿。
核心脚本 ai_write_and_publish.py 的主要逻辑如下:
import requests
import xmlrpc.client
from datetime import datetime
# 配置参数
DEEPSEEK_API_KEY = 'your_deepseek_api_key'
Z_BLOG_URL = 'https://yourblog.com/xmlrpc.php'
Z_BLOG_USER = 'admin'
Z_BLOG_PASSWORD = 'yourpassword'
# 调用 DeepSeek API 生成文章
def generate_article(topic):
headers = {
'Authorization': f'Bearer {DEEPSEEK_API_KEY}',
'Content-Type': 'application/json'
}
data = {
'model': 'deepseek-chat',
'messages': [
{
'role': 'system',
'content': '你是一位技术博主,请生成一篇关于指定主题的技术博客文章。返回格式必须是JSON,包含title、content、excerpt、tags四个字段。'
},
{
'role': 'user',
'content': f'请写一篇关于{topic}的技术文章,要求:标题吸引人,正文1000字以上,摘要100-150字,标签4个以内。'
}
],
'response_format': { 'type': 'json_object' }
}
response = requests.post('https://api.deepseek.com/chat/completions', headers=headers, json=data)
if response.status_code == 200:
result = response.json()
return result['choices'][0]['message']['content']
else:
raise Exception(f'DeepSeek API 调用失败: {response.status_code}')
# 发布到 Z-Blog
def publish_to_zblog(article_data):
server = xmlrpc.client.ServerProxy(Z_BLOG_URL)
post = {
'title': article_data['title'],
'description': article_data['content'],
'categories': ['技术'], # 注意:这里要传分类名称,不是ID
'mt_keywords': ','.join(article_data['tags'])
}
post_id = server.metaWeblog.newPost('', Z_BLOG_USER, Z_BLOG_PASSWORD, post, True)
return post_id
# 主函数
if __name__ == '__main__':
import sys
if len(sys.argv) > 1:
topic = sys.argv[1]
else:
topic = 'AI自动化工具'
print(f'正在生成关于“{topic}”的文章...')
article_json = generate_article(topic)
import json
article_data = json.loads(article_json)
print('文章生成成功,正在发布...')
post_id = publish_to_zblog(article_data)
print(f'发布成功!文章ID: {post_id}')
这个脚本做了两件事:调用 DeepSeek API 拿文章数据,然后通过 XML-RPC 发布到 Z-Blog。WorkBuddy 帮我省掉了自己琢磨 API 调用和 XML-RPC 格式的时间。
第二步:对接 Z-Blog 的 MetaWeblog 接口,踩坑记录
Z-Blog 支持 MetaWeblog API,这是很多博客系统的标准接口。但对接时我遇到了几个坑:
坑1:Z-Blog 的 XML-RPC 不支持 blogger.getUsersBlogs
一开始我按常见教程,想先用 blogger.getUsersBlogs 测试连接,结果一直报错。查了 Z-Blog 文档才发现,它只实现了 metaWeblog 相关的方法,比如 metaWeblog.newPost。所以直接调用 metaWeblog.newPost 就行,不用绕弯子。
坑2:分类要传名称字符串,而不是 ID 数字
在构造 post 字典时,categories 字段我一开始传了数字 ID,比如 [1],结果发布后文章没分类。后来试了传分类名称 ['技术'],才成功。这点和某些博客系统不一样,需要注意。
坑3:Windows 命令行 GBK 编码导致脚本静默崩溃
我在 Windows 上跑这个脚本,有时候会莫名其妙地退出,不报错。折腾了好久才发现,是命令行默认的 GBK 编码和脚本里的 UTF-8 冲突,特别是处理中文字符时。解决方案是在运行脚本前设置环境变量:
set PYTHONIOENCODING=utf-8
python ai_write_and_publish.py "AI工具推荐"
或者在脚本开头加:
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
我选了第一种,更简单。
第三步:优化和封装
为了让脚本更健壮,我用 WorkBuddy 帮忙加了错误处理和日志记录,并把发布逻辑单独放到了 zblog_publisher.py 模块里。这样主脚本更清晰,也方便以后扩展。
zblog_publisher.py 的核心部分:
import xmlrpc.client
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
class ZBlogPublisher:
def __init__(self, url, user, password):
self.server = xmlrpc.client.ServerProxy(url)
self.user = user
self.password = password
def publish(self, title, content, categories, tags):
try:
post = {
'title': title,
'description': content,
'categories': categories,
'mt_keywords': ','.join(tags) if isinstance(tags, list) else tags
}
post_id = self.server.metaWeblog.newPost('', self.user, self.password, post, True)
logger.info(f'文章发布成功,ID: {post_id}')
return post_id
except Exception as e:
logger.error(f'发布失败: {e}')
raise
然后在主脚本里调用:
from zblog_publisher import ZBlogPublisher
publisher = ZBlogPublisher(Z_BLOG_URL, Z_BLOG_USER, Z_BLOG_PASSWORD)
post_id = publisher.publish(
article_data['title'],
article_data['content'],
['技术'],
article_data['tags']
)
使用方式:一条命令搞定
现在,我只需要打开命令行(确保设置了 PYTHONIOENCODING=utf-8),运行:
python ai_write_and_publish.py "WorkBuddy使用技巧"
脚本就会自动生成一篇关于 WorkBuddy 使用技巧的文章,并发布到博客。从执行到完成,大概 30 秒左右,真正实现了“躺平式”发博客。
注意事项
- API 费用:DeepSeek API 不是免费的,虽然价格不贵,但大量使用前最好先查一下计价方式。
- 内容质量:AI 生成的文章可能需要人工润色,特别是技术细节部分。我的做法是生成后快速浏览一遍,必要时手动调整。
- 错误处理:脚本里加了基础错误处理,但网络波动或 API 限流等情况还需要更完善的机制,比如重试。
- 安全性:API 密钥和博客密码不要硬编码在脚本里,建议用环境变量或配置文件管理。
总结
这套系统用下来,最大的感受就是“真省事”。WorkBuddy 帮我快速写出了可用的脚本,DeepSeek 保证了内容产出,Z-Blog 的接口让发布自动化。虽然踩了几个坑,但解决后流程就很顺畅了。
如果你也在用 Z-Blog 或者类似支持 MetaWeblog 的博客系统,不妨试试这个方案。代码我已经分享在上面,你可以根据自己的需求调整。有什么问题,欢迎在评论区交流。
本文来源:一江山水的随笔
本文地址:https://www.298.name/post/113.html
主要内容:WorkBuddy + DeepSeek:30秒自动写博客并发布,我的全流程实战
版权声明:如无特别注明,转载请注明本文地址!
