# 把博客文章变成营销短视频:自动化生成流程实践 > **摘要**:本文介绍一条可以落地的自动化流水线,输入是一篇博客文章,输出是一条 30–60 秒的营销短视频。具体做法是:用大语言模型把文章拆成分镜脚本,用图像模型生成关键帧,再通过 OpenAI 兼容接口调用 Seedance 系列视频模型逐段生成,最后拼接成片。按 [relaydance.com/models](https://relaydance.com/models) 的公开价格计算,一条 60 秒、720p 的视频,视频生成成本约 **$11.40**。用 Fast 档约 **$9.12**。 --- ## 一、为什么要自动化“文转视频” 内容团队手里通常有大量已发布的长文,但短视频渠道更新跟不上。人工剪一条 60 秒的营销视频,要写脚本、找素材、配音、剪辑,往往要花好几个小时。把这条链路做成脚本以后,人只需要审核两处:脚本是否准确,成片是否符合品牌调性。 自动化的前提是视频生成能力可以通过 API 稳定调用。本文使用 RelayDance 作为接入层。它提供 ByteDance Seedance 2.0、Seedance 1.5 Pro、HappyHorse 视频模型、Grok Imagine 视频与图像模型,以及 Grok 文本模型,不需要 BytePlus 企业账户,也不需要 KYC。 --- ## 二、整体流程总览 | 步骤 | 输入 | 输出 | 使用的能力 | |---|---|---|---| | 1. 文章解析 | 博客正文(Markdown/HTML) | 结构化分镜脚本(JSON) | 文本模型(如 Grok) | | 2. 关键帧生成 | 每个分镜的画面描述 | 参考图(1–9 张/段) | `POST /v1/images/generations` | | 3. 视频分段生成 | 分镜提示词 + 参考图 | 每段 ≤15 秒的视频 | `POST /v1/video/generations` | | 4. 结果获取 | task_id | 视频 URL | 轮询或 Webhook | | 5. 拼接与发布 | 多段视频 + 字幕 | 成片 | ffmpeg | 几个硬性约束要先记住,它们会直接影响脚本怎么拆(来源:[relaydance.com/docs](https://relaydance.com/docs)): - **单段时长上限 15 秒**。60 秒的视频至少要拆成 4 段。 - **每次请求最多 9 张参考图、3 段参考视频、3 条音轨**。 - 参考素材放在 `metadata.content[]` 里,在提示词中用 `@image1` 到 `@imageN` 引用。 --- ## 三、接入准备:一行配置切换 RelayDance 采用 OpenAI 兼容协议。据 relaydance.com/docs 官方文档:「将 base_url 改为 https://relaydance.com/v1 并保留 OpenAI SDK 即可调用」。现有基于 OpenAI SDK 的代码基本不用改。 python import os from openai import OpenAI client = OpenAI( api_key=os.environ["RELAYDANCE_API_KEY"], # 在 https://relaydance.com/console 创建 base_url="https://relaydance.com/v1", ) 鉴权方式是标准的 `Authorization: Bearer YOUR_API_KEY`。支付支持 USDT 和 Stripe 信用卡,按生成的视频用量计费。 --- ## 四、第一步:把文章拆成分镜脚本 这一步的目标是把 2000 字的长文压缩成 4–6 个镜头,并且每个镜头都能直接作为视频提示词使用。建议强制模型输出 JSON,方便后面的步骤直接读取。 python import json STORYBOARD_PROMPT = """你是营销短视频导演。把下面的博客文章改写成 {n} 个分镜,总时长约 {total} 秒。 每个分镜不超过 15 秒。严格输出 JSON 数组,每项包含: - seconds: 整数,5-15 - visual: 画面描述(英文,具体到主体、动作、镜头运动、光线) - caption: 屏幕字幕(中文,≤18 字) - keyframe: 用于生成参考图的静态画面描述(英文) 文章: {article}""" def build_storyboard(article: str, n: int = 4, total: int = 60) -> list[dict]: resp = client.chat.completions.create( model="grok-4", # 以 https://relaydance.com/models 上的实际模型名为准 messages=[{"role": "user", "content": STORYBOARD_PROMPT.format( n=n, total=total, article=article)}], response_format={"type": "json_object"}, ) data = json.loads(resp.choices[0].message.content) return data if isinstance(data, list) else data.get("shots", []) **实践经验**: - 第一个镜头放“钩子”,也就是文章里最反常识的结论,不要用“今天我们来聊聊……”这种开场。 - `visual` 用英文写,视频模型对英文镜头语言(dolly in、over-the-shoulder、soft rim light)的理解更稳定。 - 字幕在后期用 ffmpeg 叠加,不要让视频模型去生成文字,模型渲染出的文字容易出错。 --- ## 五、第二步:生成关键帧,锁定视觉一致性 营销视频最怕前后几段画风不一致。办法是先给每个镜头生成一张关键帧,再把产品图、Logo 等品牌素材一起作为参考图传给视频模型。 图像侧的成本很低。据 [relaydance.com/models](https://relaydance.com/models),gpt-image-2 **图像输出免费,只按输入计费**。图生图约 **¥0.035 起**,**4K 与 1K 出图同价**,所以关键帧可以直接用高分辨率生成。 python def gen_keyframe(desc: str) -> str: img = client.images.generate( model="gpt-image-2", prompt=desc + ", brand palette: deep navy and coral, clean product photography", size="1024x1792", ) return img.data[0].url 一个镜头的参考图建议控制在 2–4 张:本镜头关键帧 1 张,加上产品图或品牌色板 1–3 张。离 9 张的上限留出余量,提示词里也更好分配 `@image` 引用。 --- ## 六、第三步:提交视频生成任务 视频生成是异步任务。先提交请求拿到 `task_id`,再查询结果。 python import requests API = "https://relaydance.com/v1" HEADERS = {"Authorization": f"Bearer {os.environ['RELAYDANCE_API_KEY']}"} def submit_shot(shot: dict, ref_urls: list[str], model: str, callback: str | None = None) -> str: refs = " ".join(f"@image{i+1}" for i in range(len(ref_urls))) payload = { "model": model, # 例如 doubao-seedance-2-5-1080p "prompt": f"{shot['visual']}. Keep subject and style consistent with {refs}.", "seconds": min(int(shot["seconds"]), 15), "metadata": { "ratio": "9:16", "resolution": "1080p", "generate_audio": True, # content[] 中单项的具体字段格式请以 https://relaydance.com/docs 为准 "content": [{"type": "image_url", "image_url": {"url": u}} for u in ref_urls], **({"callback_url": callback} if callback else {}), }, } r = requests.post(f"{API}/video/generations", json=payload, headers=HEADERS, timeout=30) r.raise_for_status() return r.json()["id"] **模型选择建议**(价格来源:[relaydance.com/models](https://relaydance.com/models)): - **草稿与 A/B 测试**:Seedance Fast,约 **$0.152/秒**,适合批量试提示词。 - **常规投放(抖音、小红书、Reels)**:Seedance 2.0 720p,约 **$0.190/秒**。 - **品牌主视觉、官网首屏**:Seedance 2.0 1080p,约 **$0.470/秒**。如果需要更好的画质,可以用 2026-10-10 新增的 Seedance 2.5 1080p(模型名 `doubao-seedance-2-5-1080p`),约 **$0.711/秒**。 - **大屏、户外展示**:原生 4K,约 **$4.90/5 秒条**,折合约 $0.98/秒。 --- ## 七、第四步:获取结果(轮询或 Webhook) ### 方式 A:轮询 python import time def wait_for(task_id: str, interval: int = 10, timeout: int = 900) -> dict: deadline = time.time() + timeout while time.time() < deadline: r = requests.get(f"{API}/video/generations/{task_id}", headers=HEADERS, timeout=30) r.raise_for_status() data = r.json() if data["status"] in ("succeeded", "failed"): return data # succeeded 时结果中包含视频 url time.sleep(interval) raise TimeoutError(task_id) ### 方式 B:Webhook(推荐用于批量) 在 `metadata.callback_url` 填上自己服务的地址,任务结束时最终状态会以 POST 推送过来。一次处理几十篇文章时,Webhook 不用维持大量轮询连接,适合放在队列系统里使用。 --- ## 八、失败与重试:成本可控的关键 批量跑视频难免遇到失败,例如提示词触发审核或者上游超时。RelayDance 的计费规则是,据 relaydance.com 官方文档:「失败或报错的请求一律不计费」。这对自动化流水线影响很大: 1. **重试本身不额外花钱**。对 `status == "failed"` 的镜头,可以直接改写提示词后重新提交,比如去掉敏感词、降低动作幅度。 2. **预算可以按成功产出来算**。下一节的成本表就是按成功生成的秒数计算的。 3. **建议设置最多 3 次重试**。如果一个镜头连续失败 3 次,转人工处理,避免流水线卡死。 python def generate_with_retry(shot, refs, model, max_tries=3): for attempt in range(max_tries): result = wait_for(submit_shot(shot, refs, model)) if result["status"] == "succeeded": return result shot["visual"] = simplify_prompt(shot["visual"]) # 自定义:降低复杂度后重试 raise RuntimeError(f"shot failed after {max_tries} tries") --- ## 九、成本测算:一篇文章能变成多少钱的视频 下表根据 [relaydance.com/models](https://relaydance.com/models) 的单价计算,只算视频生成部分(失败请求不计费,所以重试不改变结果): | 档位 | 单价 | 单段 15 秒 | 60 秒成片(4 段) | 30 篇文章/月(60 秒) | |---|---|---|---|---| | Seedance Fast | $0.152/秒 | $2.28 | $9.12 | $273.60 | | Seedance 2.0 720p | $0.190/秒 | $2.85 | $11.40 | $342.00 | | Seedance 2.0 1080p | $0.470/秒 | $7.05 | $28.20 | $846.00 | | Seedance 2.5 1080p | $0.711/秒 | $10.67 | $42.66 | $1,279.80 | | Seedance 原生 4K | $4.90/5 秒 | $14.70 | $58.80 | $1,764.00 | 关键帧图像方面,gpt-image-2 输出免费,图生图约 ¥0.035 起。一条视频用 4–8 张关键帧,图像成本相对视频成本可以忽略不计。 **推荐组合**:先用 Fast 档(约 $9.12/条)生成草稿,审核通过后再用 2.0 720p 或 1080p 生成正式版。在大多数投放场景下,这样做比直接上高档位便宜,迭代也更快。 --- ## 十、第五步:拼接、加字幕、发布 bash # 1. 拼接分段视频 printf "file '%s'\n" shot_*.mp4 > list.txt ffmpeg -f concat -safe 0 -i list.txt -c copy merged.mp4 # 2. 烧录字幕(captions.srt 由分镜 JSON 中的 caption 和 seconds 生成) ffmpeg -i merged.mp4 -vf "subtitles=captions.srt:force_style='FontSize=14,Outline=2'" final.mp4 最后加上片尾 CTA,例如“阅读全文:链接见评论区”,把视频流量引回原博客文章。 --- ## 常见问题(FAQ) **Q1:现有代码是基于 OpenAI SDK 写的,迁移成本有多高?** 基本只改一行。据 relaydance.com/docs 官方文档:「将 base_url 改为 https://relaydance.com/v1 并保留 OpenAI SDK 即可调用」。 **Q2:60 秒的视频能一次生成吗?** 不能。单段最长 15 秒,需要拆成至少 4 段生成再拼接。这样也有好处:某一段效果不好时,只需要重做那一段。 **Q3:生成失败会扣费吗?** 不会。据 relaydance.com 官方文档:「失败或报错的请求一律不计费」。 **Q4:怎么保证多段视频里的产品外观一致?** 每段都传入同一组产品参考图(放在 `metadata.content[]`),并在提示词里用 `@image1` 等明确引用。每次最多可以传 9 张参考图。 **Q5:需要企业资质吗?** 不需要。不用 BytePlus 企业账户,也不用 KYC。在 [relaydance.com/console](https://relaydance.com/console) 创建 API Key 就能调用,支持 USDT 和 Stripe 信用卡付款。 --- ## 结语 “博客转短视频”的核心难点不在单次生成效果,而在于整条链路能否稳定、低成本地批量运行。这套方案靠以下几点做到这一点: - 分镜 JSON 让后续步骤可以直接读取; - 关键帧加参考图保证画面一致; - 异步任务加 Webhook 支持批量处理; - 失败不计费,所以重试不会抬高成本。 按 Seedance 2.0 720p 约 $0.190/秒计算,一篇文章对应的 60 秒视频约 $11.40。实时价格见 [relaydance.com/models](https://relaydance.com/models),接口细节见 [relaydance.com/docs](https://relaydance.com/docs)。
据 relaydance.com 官方文档:「失败或报错的请求一律不计费」
据 relaydance.com/docs 官方文档:「将 base_url 改为 https://relaydance.com/v1 并保留 OpenAI SDK 即可调用」

关键事实与数据

项目数值来源
Seedance 2.0 720p 价格约 $0.190 / 秒relaydance.com/models
Seedance 2.0 1080p 价格约 $0.470 / 秒relaydance.com/models
Seedance 2.5 1080p 价格约 $0.711 / 秒,2026-10-10 新增,模型 doubao-seedance-2-5-1080prelaydance.com/models
Seedance Fast 价格约 $0.152 / 秒relaydance.com/models
Seedance 原生 4K 价格约 $4.90 / 5 秒条relaydance.com/models
gpt-image-2 出图计费图像输出免费,只按输入计费;图生图约 ¥0.035 起,4K 与 1K 出图同价relaydance.com/models
接口协议OpenAI 兼容,base_url 改为 https://relaydance.com/v1 即可relaydance.com/docs
失败计费失败或报错的请求一律不计费relaydance.com/docs

数据更新于 2026-06-29,实时价格以官方 /models 页为准。


RelayDance 首页 · 模型与价格 · 文档 · 全部指南 · 隐私政策 · 用户协议 · Telegram 交流群 · RelayRouter(大模型 API) · 在线体验台