视频自动化发布:从新闻素材到多平台分发

? 视频自动化发布:从新闻素材到多平台分发
一条命令搞定热点抓取 → AI 视频生成 → 全平台发布
在信息爆炸的时代,新闻资讯类短视频的时效性就是生命线。人工剪辑、手动上传不仅效率低下,而且难以覆盖多个平台。本文将分享一套完整的自动化工作流:通过 Python 脚本抓取新闻热点,利用 Coze 的 AI 工作流自动生成视频,再通过蚁小二的 API 实现多平台一键分发。整个流程从新闻素材到发布完成,仅需几分钟。
一、为什么需要视频自动化发布?
运营过新闻资讯号的团队都有体会:每天需要追踪几十个热点,撰写标题和描述,剪辑短视频,再分别上传到抖音、快手、视频号、B 站……重复劳动占据了大量时间。而且热点转瞬即逝,人工响应速度很难跟上。我们的目标是构建一条自动化管道:
原料 → 加工 → 分发 全链路无人值守,将运营人力从执行层解放到策略层。
二、整体架构
整个系统分为三个核心模块:
- 新闻热点抓取 & 内容提炼 — 定时爬取主流新闻源,提取标题和摘要描述。
- AI 视频自动生成 — 调用 Coze 工作流,将文本转化为配音视频。
- 多平台自动分发 — 通过蚁小二 API 将视频分发至各平台。
三、模块一:新闻热点抓取与内容提取
我们选择爬取多个主流新闻聚合源(如百度热搜、微博热搜、今日头条等)。为了避免被封 IP,建议使用代理池并控制请求频率。关键代码如下:
import requests
from bs4 import BeautifulSoup
def fetch_hot_news():
url = "https://top.baidu.com/board?tab=realtime"
headers = {"User-Agent": "Mozilla/5.0 ..."}
resp = requests.get(url, headers=headers, timeout=10)
soup = BeautifulSoup(resp.text, "html.parser")
items = soup.select(".content_1YWBm")
news_list = []
for item in items[:10]:
title = item.select_one(".c-single-text-ellipsis").text.strip()
desc = item.select_one(".hot-desc_1m_wR")
desc = desc.text.strip() if desc else title
news_list.append({"title": title, "description": desc})
return news_list
提取到原始内容后,还需要用 LLM(如 Coze 内置的大模型节点)对文本进行润色和摘要,生成适合口播的脚本。这一步可以在 Coze 工作流中统一完成。
爬虫踩坑记录
- 踩坑 反爬策略升级:百度等站点频繁更新 DOM 结构,建议用正则 + 关键词兜底,不要完全依赖 CSS 选择器。
- 踩坑 请求频率限制:每轮抓取间隔至少 5 秒,配合随机 User-Agent 和代理 IP。
- 踩坑 编码问题:部分站点返回 GBK 编码,需用
resp.encoding = 'gbk'显式指定。
四、模块二:Coze 视频生成工作流
Coze(扣子)提供了强大的工作流编排能力,可以串联多个 AI 节点来完成视频生成。我们的工作流程如下:
- 输入:新闻标题 + 描述文本
- LLM 节点:对文本进行润色,生成 30-60 秒的口播脚本
- 语音合成节点:调用 TTS 将脚本转为配音音频
- 视频合成节点:使用 Coze 内置的视频能力,将音频 + 背景图/字幕合成为 MP4
- 输出:返回视频文件的下载链接
import requests
COZE_API_KEY = "your_coze_api_key"
WORKFLOW_ID = "your_workflow_id"
def generate_video(title, description):
url = f"https://api.coze.cn/v1/workflow/{WORKFLOW_ID}/run"
payload = {
"parameters": {
"title": title,
"description": description
}
}
headers = {"Authorization": f"Bearer {COZE_API_KEY}"}
resp = requests.post(url, json=payload, headers=headers)
data = resp.json()
return data.get("data", {}).get("video_url")
Coze 工作流的同步调用有 60 秒超时限制。而视频生成涉及的 TTS + 合成通常需要 2-5 分钟。直接同步调用几乎必然超时。
解决方案:使用 Coze 的异步执行模式。先调用 /run 获取 execute_id,然后轮询 /status 接口直到任务完成,最后通过 /result 获取视频链接。
def generate_video_async(title, desc):
# 1. 提交异步任务
run_resp = requests.post(
f"https://api.coze.cn/v1/workflow/{WORKFLOW_ID}/run",
json={..., "is_async": True}
)
execute_id = run_resp.json()["execute_id"]
# 2. 轮询状态(最多等待 300 秒)
for _ in range(60):
status = requests.get(
f"https://api.coze.cn/v1/workflow/{execute_id}/status"
).json()
if status["state"] == "succeeded":
return status["output"]["video_url"]
time.sleep(5)
raise TimeoutError("视频生成超时")
更多 Coze 踩坑记录
- 踩坑 视频生成失败:Coze 的 TTS 对中文长文本有时会出现静默或截断。解决方法是拆分长脚本为多句,每句单独合成再拼接。
- 踩坑 素材尺寸要求:Coze 视频节点默认输出 16:9 横屏,但抖音、视频号偏好 9:16 竖屏。需在工作流中明确指定输出分辨率为
1080×1920。 - 踩坑 API 调用频率:Coze 免费版有每分钟 10 次的速率限制。建议添加重试机制(指数退避)。
- 踩坑 字幕渲染:Coze 视频节点默认不添加字幕。如果平台需要字幕,需单独调用 OCR 或字幕合成脚本。
五、模块三:蚁小二多平台分发
蚁小二是一个专业的短视频多平台管理工具,提供了比较完善的 API 接口。我们可以通过 API 将 Coze 生成的视频自动发布到抖音、快手、视频号、B 站、小红书等平台。
import requests
YX_API_KEY = "your_yx_api_key"
YX_API_URL = "https://api.yixiaoer.com/videoupload"
def publish_to_platforms(video_path, title, platforms):
files = {"video": open(video_path, "rb")}
data = {
"title": title,
"platforms": ",".join(platforms), # dy,ks,wx,bilibili,xhs
"description": "#新闻 #热点 #AI视频",
"schedule_type": "immediately"
}
headers = {"Authorization": f"Bearer {YX_API_KEY}"}
resp = requests.post(YX_API_URL, headers=headers, data=data, files=files)
return resp.json()
蚁小二对上传视频有严格的格式校验,踩过的坑如下:
- 编码格式:必须为 H.264,码率建议 2000-8000 kbps。VP9 或其他编码会被拒绝。
- 分辨率:要求 16:9(1920×1080)或 9:16(1080×1920),不接受其他比例。
- 时长限制:单条视频 15-300 秒,超出会被截断或退回。
- 文件大小:单文件不超过 500MB。
- 音频编码:必须为 AAC,采样率 44100Hz。
import subprocess
def validate_video(file_path):
cmd = ["ffprobe", "-v", "quiet", "-print_format", "json", "-show_streams", file_path]
result = subprocess.run(cmd, capture_output=True, text=True)
streams = json.loads(result.stdout)["streams"]
video = [s for s in streams if s["codec_type"] == "video"][0]
audio = [s for s in streams if s["codec_type"] == "audio"][0]
checks = [
video["codec_name"] == "h264",
audio["codec_name"] == "aac",
audio["sample_rate"] == "44100",
float(video["duration"]) <= 300
]
return all(checks)
更多蚁小二踩坑记录
- 踩坑 发布频率限制:每个平台每天发布的次数有限制,过度发布可能导致账号被限流。建议在蚁小二中设置每日发布上限。
- 踩坑 平台账号授权:需要先在蚁小二后台完成各平台的账号授权,且授权有时效(部分平台 7 天过期),需要定期刷新。
- 踩坑 水印检测:抖音、快手等平台会自动检测视频中的竞品水印,发现后可能限流。建议在 Coze 生成视频时使用纯色背景或无版权素材。
- 踩坑 描述和话题:蚁小二 API 的
description字段在各平台表现不一致。测试发现:B 站支持完整描述,抖音只展示前 40 字,建议重要信息放标题。
六、组装完整流水线
将三个模块串联成一个 Python 脚本,配合定时任务(cron / APScheduler)即可实现全自动运行:
# 1. 抓取热点
news_list = fetch_hot_news()
for news in news_list:
try:
# 2. Coze 生成视频
video_url = generate_video_async(
news["title"], news["description"]
)
video_path = download_video(video_url)
# 3. 格式校验
if not validate_video(video_path):
video_path = convert_format(video_path) # ffmpeg 转码
# 4. 多平台分发
result = publish_to_platforms(
video_path, news["title"],
platforms=["dy", "ks", "wx", "bilibili"]
)
logger.info(f"发布成功: {news['title']}")
except Exception as e:
logger.error(f"处理失败: {news['title']} - {e}")
time.sleep(10) # 失败后等待,避免连续报错
该流水线上线运行 3 个月后,团队取得的成果:
- 日均自动发布 30-50 条视频,覆盖 4 个主流平台
- 人工介入率从 100% 降低至约 15%(仅需处理生成失败的视频)
- 从热点出现到视频发布平均耗时 6 分 20 秒
- 单条视频的运营成本降低约 80%
七、总结与展望
本文介绍的这套「新闻热点 → AI 视频 → 多平台分发」全自动流水线,已在实际运营中证明了其价值。核心收获有三点:
- 异步设计是关键:Coze 工作流超时问题是最大的瓶颈,改用异步轮询模式后问题彻底解决。
- 格式兼容性需要主动防御:视频编码、分辨率、时长等细节在上传前必须做前置校验,否则蚁小二 API 会静默拒绝。
- 失败重试和监控不可缺:任何一环都可能出问题(API 限流、网络波动、平台规则变更),需要完善的日志和告警机制。
未来的优化方向包括:
- 接入多模态大模型,根据新闻内容自动匹配背景视频素材(而非使用静态模板);
- 引入 A/B 测试能力,对标题和描述进行多版本自动分发,统计各平台的数据反馈;
- 将 Webhook 机制接入 Coze,实现视频生成完成后的主动回调,代替轮询。
希望通过本文的分享,能帮助更多内容运营团队从繁琐的重复劳动中解放出来,把精力放在真正创造价值的内容策略上。
本文发布于 2026 年 · 技术博客 · 转载需注明出处