搭一个朋友圈自动发布机器人:素材准备与发布窗口
·
朋友圈自动发布是私域运营的高频需求。sns/publish 接口本身不复杂,但朋友圈发布的工程难点不在接口调用,而在两件事:素材准备和发布窗口控制。这两件事做不好,要么发不出去,要么发出去就被限流。
参考API文档
WTAPI框架开发文档weiti.apifox.cn 为准。
一、朋友圈接口能力
WTAPI朋友圈接口支持发布(sns/publish)、点赞(sns/likeSns)、获取动态列表(sns/getList)等。发布接口支持图文、视频等内容类型,具体参数以官方文档为准。
二、素材准备:先转存再发布
朋友圈的图片、视频不能直接用外部URL,必须先上传到微信侧。工程上要做一条素材管线:
- 拉取素材:从业务素材库(OSS、本地存储)拉取待发布的图片/视频
- 上传转存:调用WTAPI的媒体上传接口,把素材转存到微信侧,拿到
mediaId - 缓存复用:同一个素材只上传一次,缓存
mediaId,后续发布直接引用
def publish_moment(instance_id, text, image_urls):
# 1. 上传图片拿mediaId
media_ids = []
for url in image_urls:
# 先检查缓存
cached = redis.get(f"media:{url}")
if cached:
media_ids.append(cached)
continue
# 调用上传接口,具体路径与字段以官方文档为准
media_id = upload_media(instance_id, url)
redis.setex(f"media:{url}", 86400 * 7, media_id)
media_ids.append(media_id)
# 2. 发布朋友圈
resp = requests.post(
f"{BASE}/finder/v2/api/sns/publish",
headers=HEADERS,
json={
"appId": "<appId>",
"instanceId": instance_id,
"content": text,
"mediaIds": media_ids,
},
timeout=30,
).json()
return resp
三、发布窗口控制
朋友圈发布不能想发就发,要控制两个维度:
时间窗口:避开凌晨和深夜,选用户活跃时段(如早8-9点、午12-13点、晚20-22点)。用定时任务(APScheduler、Celery Beat)在指定时间触发发布。
频率控制:单账号单日发布次数要有上限,短时间内连续发布多条极易触发风控。建议单账号每天不超过3-5条,每条间隔30分钟以上。
from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler()
def schedule_publish(instance_id, publish_time, text, images):
scheduler.add_job(
publish_moment,
"date",
run_date=publish_time,
args=[instance_id, text, images],
misfire_grace_time=300,
)
# 定时在今晚20:00发布
schedule_publish(
"<instanceId>",
"2026-09-22 20:00:00",
"今日好物推荐",
["https://cdn.example.com/1.jpg"],
)
四、失败补偿
发布失败要区分原因:
- 素材上传失败:重试上传,超过次数告警
- 发布接口失败:记录失败任务,支持手动重发
- 风控限流:暂停该账号后续发布,延迟到下一个窗口
所有发布任务要落库(状态:待发布/发布中/成功/失败),支持后台重发失败任务。
五、发布后的互动
发布完成后,可以用 sns/likeSns 给好友动态点赞,用 sns/getList 获取动态列表做互动分析。但互动操作同样要控频,不要一上来就批量点赞。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)