微信公众号文章智能发布
根据原始文章内容,完成标题生成 → 插图生成 → 排版美化 → 发布草稿的全流程。
配置文件
所有 API 密钥和参数从 config.json 读取。每次操作前执行:
cat config.json
字段说明:
volcano.api_key— 火山方舟引擎 API 密钥volcano.model_id— 图片生成模型 ID(doubao-seedream-4-5-251128)volcano.api_base— 图片生成 API 地址wechat.appid— 微信公众号 AppIDwechat.appsecret— 微信公众号 AppSecretwechat.author— 文章作者名("视野 UP")
工作流程
按顺序执行以下步骤,每步完成后向用户展示结果,获得确认后再进入下一步。
第一步:生成标题(5 个候选)
- 作为千万粉丝公众号博主视角,基于文章内容生成 5 个标题。
- 标题要求:有吸引力、符合公众号爆款调性、包含冲突/悬念/反常识/利益相关等爆款元素。
- 每个标题配推荐指数(1-10),并说明推荐理由。
- 将所有候选标题展示给用户,让用户选择最终使用的标题。
- 如果用户不指定,选择推荐指数最高的。
第二步:生成摘要
- 根据选定的标题和文章内容,生成一条摘要。
- 字数控制在 50 字以内(严格计数)。
- 要有吸引力,能激发阅读欲望,不使用"本文介绍了..."这类套话。
- 展示给用户确认。
第三步:确定插图位置和生成提示词
- 通读文章内容,找出 2-3 个最适合放插图的段落位置。
- 为每个位置编写图片生成提示词,要求:
- 用中文,具体且形象生动。
- 明确排除:灰色背景、水印。
- 要求:色彩鲜明、有趣、有吸引力、适合公众号插图。
- 可指定构图风格(如扁平插画、3D 渲染、摄影风格等)。
- 将每个插图的提示词和放置位置展示给用户确认。
第四步:生成插图
对每个确认的提示词,调用脚本生成图片:
python3 scripts/generate_image.py config.json "提示词内容" /tmp/wechat_img_1.png
注意事项:
- 图片不超过 3 张。
- 确认返回
image_path无误后继续。 - 如有失败,重试一次(最多重试 1 次)。
第五步:上传图片到公众号素材库
- 先获取 access_token:
python3 scripts/get_access_token.py <appid> <appsecret>
- 对每张生成的图片上传:
python3 scripts/upload_image.py <access_token> <image_path>
记录每个返回的 media_id。如果 access_token 过期(返回 40001),重新获取后重试。
第六步:格式化文章内容
对原始文章进行排版美化,输出为 HTML 格式。要求:
- 不改变文章内容(字词不改,顺序不变)。
- 不要添加"总结"段落、"发布时间"、"作者"等元信息。
- 使用
<section>进行段落分组,段落间距适当。 - 关键句/核心观点用
<strong>加粗。 - 根据语境对重点文字添加颜色:
<span style="color: #0077c8;">文字</span>(蓝色)、<span style="color: #e67e22;">文字</span>(橙色)可选。 - 在之前确定的插图位置插入
<img>标签,src 使用对应的 media_id 格式。 - 正文颜色建议
color: #333;,行高line-height: 1.8;。 - 整篇文章外层用
<section style="padding: 0 12px;">包裹。
最终 content 要输出为一段完整的 HTML 字符串。
第七步:创建公众号草稿
- 构造 payload JSON 文件
/tmp/draft_payload.json:
{
"articles": [{
"title": "选定的标题",
"author": "视野 UP",
"digest": "选定的摘要",
"content": "格式化后的 HTML 内容",
"content_source_url": "",
"thumb_media_id": "第一张插图或封面的 media_id",
"need_open_comment": 0,
"only_fans_can_comment": 0
}]
}
- 调用脚本创建草稿:
python3 scripts/create_draft.py <access_token> /tmp/draft_payload.json
- 如果返回
media_id,表示草稿创建成功。
⚠️ 中文编码注意:payload JSON 必须用 UTF-8 编码写入,脚本内部已设置 ensure_ascii=False。
最终输出格式
完成后,汇总展示:
一、生成的标题
1. xxxxxxxxxxx — 推荐指数 7
2. xxxxxxxxxxx — 推荐指数 9 ⭐
3. xxxxxxxxxxx — 推荐指数 6
4. xxxxxxxxxxx — 推荐指数 5
5. xxxxxxxxxxx — 推荐指数 8
使用标题:xxxxxxxxxxx
二、摘要
使用摘要:xxxxxxxxxxx(X字)
三、插图
1. 插图1:[在聊天窗口展示图片],文中位置:xxxx段落之后
2. 插图2:[在聊天窗口展示图片],文中位置:xxxx段落之后
四、草稿状态
✅ 草稿已创建,media_id: xxxxxxxxxxx
Scan to contact