版本 :v2.6
撰写日期 :2026-06-14
核心定位 :以 Coze 工作流编排 Seedance 2.0 为 AI 引擎、自建前端 + 自建账户体系 的图生视频 SaaS 产品。本阶段聚焦实现 :把"图 + 文案 → Seedance 2.0 出片"的完整链路开发跑通。
配套交付:
- 4 张 D2 架构图(
v2_diagrams/)- 1 套可直接打开的前端体验 Demo(
speedreel_demo.html,单文件、桌面双击即可体验)- 完整对外文案(落地页、API 介绍、社交媒体话术)
一、产品定位
1.1 一句话定位
「上传一张图,写一句话,30 秒生成一条专业短视频。」
------ 速影 AI · SwiftReel,最懂中文创作者的图生视频 SaaS。
1.2 目标用户画像
| 客群 | 占比目标 | 核心痛点 |
|---|---|---|
| 个人创作者 / 自媒体(小红书 / 抖音 / B站) | 60% | 不会剪辑、出片慢、买不起专业工具 |
| 电商商家 / 个体卖家 | 25% | 商品视频化批量制作、人手不够 |
| MCN / 代运营机构 / 教培机构 | 10% | 日更需求大、要 API 和子账号 |
| B 端 SaaS / 集成方 | 5% | 需稳定 OpenAPI、SLA |
1.3 差异化卖点(vs Coze 套壳 / 同类产品)
- 只用 SOTA 的精品定位:全平台只跑 Seedance 2.0(2026 榜首),音画一体 4K 直出,不用二流模型凑数。
- 失败自动重试 / 不出片不留痕:生成失败自动重试或重新排队,体验顺滑。
- 本土化合规 :接 1w+ 火山方舟预置虚拟形象规避肖像权,AI 标识水印依法烧入。
- B 端可白牌 :企业版支持自定义 logo / 域名 / 工作流,可作为客户自有 SaaS 输出。
二、整体技术架构

关键设计原则:
- Coze 只做"AI 引擎",不做"产品" :Coze 工作流以"无界面 OpenAPI"形式被业务后端调用,前端 / 账户 / OSS 全部自建,杜绝 Coze 套壳风险与平台依赖。
- 单模型 = 2 条工作流 :在 Coze 里只维护"单条生成 / 批量生产"2 条工作流,均由 Seedance 2.0 驱动,画质仅靠入参
resolution(1080p/4K)区分;Seedance 限流时只需切直连火山方舟兜底,对外接口不变。 - 用量记录:账户体系保留生成记录(时长 / 清晰度 / 状态)落 MySQL,为运营分析与排障提供数据。
- Webhook 异步回调:Coze 工作流执行时长 30--180s,必须异步 + Webhook,前端用 WebSocket / SSE 推进度。
三、Coze 引擎设计(核心 · 单模型 Seedance 2.0)

产品决策(v2.3) :只接 Seedance 2.0 一个模型,不接其他 (即梦 / 可灵 / Sora / Runway / ComfyUI 全部不做)。理由:Seedance 2.0 是 2026 SOTA、原生音画一体、4K 直出,一个模型即可覆盖全部画质需求,架构大幅简化------无需多模型路由、无需 Auto 跨模型选择、无需多档位工作流。
3.1 为什么"单模型 + Coze 编排"
| 维度 | Coze 编排 Seedance | 直连火山方舟 | 自建 ComfyUI |
|---|---|---|---|
| 上线速度 | 1 周 | 2--3 周 | 6--10 周 |
| 文案扩写 / 合成 / 字幕 | Coze 节点拖拽即用 | 需自己写 | 需自己写 |
| 维护成本 | 低(可视化改流程) | 中 | 高 |
| 平台依赖 | 中(保留直连兜底缓解) | 低 | 无 |
| 画质 | Seedance 2.0 顶级 | 同左 | 受限开源模型 |
结论:Seedance 的"文案扩写 → 图生视频 → 字幕 → 合成"链路用 Coze 拖拽节点编排最快;直连火山方舟仅作故障兜底(§3.5)。
3.2 单工作流设计(无档位)
只维护 2 条 Coze 工作流,均由 Seedance 2.0 驱动,差异仅在"单条 / 批量":
| 工作流 ID | 名称 | 模型 | 入参 | 业务用途 |
|---|---|---|---|---|
wf_seedance_single |
单条生成 | Seedance 2.0 | {images[], text, duration, ratio, resolution} |
C 端创作 / API 单条 |
wf_seedance_batch |
批量生产 | Seedance 2.0 | 同上 + count |
MCN 日更 / 电商批量 |
画质差异 只通过入参 resolution(1080p / 4K)控制,不再有"经济/标准/高端/旗舰"档位概念 。Seedance 2.0 原生音画一体,配音 / BGM / 口型在模型内一次生成,省掉独立 TTS 与剪映合成节点。
3.3 生成前置:需求澄清 + 效果预演 + 消耗预估(省资源 / 省成本)
核心思想 :调用 Seedance 2.0 出片是整条链路里最贵、最慢的一步。在真正调模型之前,先用文字层把需求对齐、把效果预演出来、把消耗预估清楚,确认无误后再生成------这样能大幅减少"生成完才发现不对 → 反复重做"造成的算力与成本浪费。
⚠️ 这一层必须用最好的模型(如 Claude),不要图便宜用小模型 :需求理解是否到位、分镜脚本写得好不好,直接决定喂给 Seedance 的 prompt 质量,进而决定整条成片效果------garbage in, garbage out。相比一次视频生成,文字层即便用顶级模型开销仍可忽略,却是整条链路里性价比最高、最值得投入的一步。
三步前置闸门,全部在文字 / 轻量 LLM 层完成,不触发视频生成:
| 步骤 | 做什么 | 用什么 | 价值 |
|---|---|---|---|
| ① 需求澄清对话 | 多轮确认关键参数:画面主体、风格、镜头运动、时长、比例、清晰度、配音 / BGM / 字幕;缺失项主动追问 | 顶级 LLM(Claude) | 避免参数不全就开跑 |
| ② 文字效果预演 | 不生成视频,先产出"分镜 / 画面描述 / 预期成片说明 / 优化后的 Seedance prompt"给用户预览;满意才进入生成,不满意在文字层反复改 | 顶级 LLM(Claude)生成分镜脚本 | 零视频算力消耗地试错,直接决定成片质量 |
| ③ 消耗预估 | 依据确认后的参数(时长 × 分辨率 × 批量)估算本次资源量级(token / 算力)与预估成本区间,展示后再提交 | 预估函数 | 让用户"看到代价"再决定 |
预估口径(伪代码,单价 / 系数待实测标定后填入):
python
def estimate(duration: int, resolution: str, batch: int = 1) -> dict:
# 分辨率系数:4K 资源消耗约为 1080p 的 N 倍(N 待实测标定)
res_factor = {"1080p": 1.0, "4k": RES_4K_FACTOR}[resolution]
units = duration * res_factor * batch # 预估消耗单元
return {
"est_units": units, # 预估资源 / token 量级
"est_cost": units * UNIT_PRICE, # 预估成本(单价后续填)
"note": "实际以生成完成后回传的真实消耗为准",
}
落地形态 :把这三步做成生成按钮前的"确认弹层"------展示分镜预览 + 预估消耗 ,用户点「确认生成」才真正调用 §3.4 的
create_video()。澄清与预演这一层用顶级模型(Claude)承担,把模糊需求打磨成高质量分镜与 prompt,再交给 Seedance 出片------它是整条链路的"质量入口"。
3.4 调用方式(伪代码 · 生成链路)
python
import uuid, requests
COZE_API = "https://api.coze.cn/open_api/v1/workflow/run"
WF_SINGLE = "7421...wf_seedance_single_id"
WF_BATCH = "7421...wf_seedance_batch_id"
def create_video(user_id: str, images: list, text: str,
duration: int, ratio: str = "9:16",
resolution: str = "1080p", batch: int = 1) -> dict:
# 1. 内部生成 task_id
task_id = f"vid_{uuid.uuid4().hex[:16]}"
# 2. 提交 Coze 工作流(异步)
resp = requests.post(COZE_API, json={
"workflow_id": WF_BATCH if batch > 1 else WF_SINGLE,
"parameters": {
"images": images, "text": text,
"duration": duration, "ratio": ratio,
"resolution": resolution, "count": batch,
"task_id": task_id,
"callback_url": f"https://api.swiftreel.ai/v1/webhook/coze/{task_id}",
},
}, headers={"Authorization": f"Bearer {COZE_TOKEN}"}, timeout=30)
resp.raise_for_status()
# 3. 写库(记录用量)
db.tasks.insert(task_id=task_id, user_id=user_id,
duration=duration, resolution=resolution, count=batch,
coze_run_id=resp.json()["run_id"], status="running")
return {"task_id": task_id}
3.5 Coze 单点依赖与降级方案
单模型 + 单平台,依赖链更短但单点更集中。两层降级(不再有"跨档位降级"):
| 层级 | 触发条件 | 降级行为 |
|---|---|---|
| L1 | Coze 工作流返回 5xx / 超时 | 重试 2 次(指数退避) |
| L2 | Coze 平台整体故障(健康探测 3 次失败) | 切直连火山方舟 Seedance API,旁路 Coze(业务侧自己做文案扩写 + 合成) |
直连火山方舟兜底链路 通过功能开关(Feature Flag)控制,平时 0 流量灰度(每天定时探活),故障时秒级切换。由于上游同为 Seedance 2.0,切换后画质完全一致,用户无感。
⚠️ 单模型集中风险:若 Seedance 2.0 本身(字节侧)限流 / 下线 / 收紧对外开放,Coze 与直连两条链路会同时受影响。这是单模型策略的核心风险,详见 §10 风险评估。
3.6 Coze 配额与 QPS 管理
Coze 企业版单 Token 默认限制(当前 60/min,并发 10),高峰期撑不住。三招扩容:
- Token 池化:申请 5--10 个企业 Token 轮询使用,单池 QPS × 5
- 优先级队列:4K / 急单走 P0 队列、1080p 走 P2 队列
- 流量整形:业务侧 Redis 令牌桶预限流,避免下游 429
3.7 可观测性(日志 / 追踪 / 告警)
- Trace ID 全链路 :业务 → Coze → Seedance → OSS,每个调用透传
X-Trace-Id - Coze 调用日志持久化 :每次调用入参 / 出参 / 耗时 / 结果保存到 MySQL 数据库 ,保留 90 天
- 三大核心告警 (企业微信 / PagerDuty):
- 失败率 > 5%(5 分钟滑动窗口)
- P95 延迟 > 240s
- 单小时 Seedance 调用量异常突增
- 每日运营报表:调用次数、失败率、平均时长、清晰度分布
四、用户旅程

4.1 首次激活漏斗(关键指标)
| 步骤 | 目标转化率 | 优化手段 |
|---|---|---|
| 访问首页 → 注册 | 25% | Hero 区直接放"立即免费试用"按钮,无需注册可先体验 1 次 |
| 注册 → 首次生成 | 70% | 注册成功跳工作台,已预填示例图 + 文案模板 |
| 首次生成 → 二次生成 | 50% | 出片页推荐相似模板 + "再生成一条" |
| 二次生成 → 留存 | --- | 引导收藏作品 + 关注公众号 |
4.2 留存与召回
- 次日推送:站内信 + 微信公众号"你昨天的作品已被 X 人收藏"
- 7 日召回:推送"新模板上线,来试试"
- 30 日召回:流失用户推送"新功能解锁"
五、前端产品结构

5.1 页面清单
| 页面 | 路由 | 关键模块 |
|---|---|---|
| 首页 | / |
Hero 视频墙 + 案例瀑布流 + CTA |
| 工作台 | /studio |
上传 / 文案 / 清晰度 / 时长 / 进度 |
| 我的作品 | /works |
网格列表 / 详情 / 重新生成 / 下载 |
| 账户 | /account |
用量记录(生成历史) |
| API 文档 | /docs |
Quickstart / Reference / Webhook |
| 帮助中心 | /help |
教程 / 案例 / 社区 / 联系客服 |
5.2 可直接体验的 Demo
打开仓库根目录的 speedreel_demo.html(双击即可在浏览器打开),包含完整可交互的:
- 首页(Hero + 案例)
- 工作台(图片拖拽上传 + 清晰度/时长切换 + 模拟生成进度)
- 账户页(用量记录 mock)
注:Demo 用 setTimeout 模拟生成进度,无需后端即可演示完整用户流。可用作客户演示、UI 评审。
5.3 视频规格矩阵(必备产品配置)
| 维度 | 选项 | 说明 |
|---|---|---|
| 比例 | 9:16(抖音/视频号/小红书)/ 16:9(B 站/横屏)/ 1:1(朋友圈/IG) | 默认 9:16,覆盖 80% 创作场景 |
| 时长 | 3s / 5s / 8s / 10s / 15s | Seedance 2.0 单镜最长 15s |
| 清晰度 | 1080p / 4K | 4K 分辨率更高,渲染资源消耗更大 |
| 帧率 | 24 / 30 fps | 默认 24,电影感 |
| 音轨 | 静音 / 音画一体(含配音+BGM+口型) | Seedance 2.0 原生画-声同步,模型内一次生成 |
六、模板市场与风格预设(核心黏性)
6.1 为什么模板是护城河
API 谁都能调,模板才是差异化与黏性来源。模板 = "封装好的工作流 + 预设参数 + 示例素材",让用户从"自己写脚本"降级为"换图换文案即可出片"。
6.2 三类模板矩阵
| 类别 | 示例 | 目标用户 |
|---|---|---|
| 场景模板 | 书单号 / 商品口播 / 探店 Vlog / 地产看房 / 教培金句 / 婚礼快剪 | 自媒体、电商、教培 |
| 风格预设 | 电影感 / 二次元 / 国风 / 赛博朋克 / 黏土风 / 复古胶片 | 全人群 |
| 节日模板 | 春节祝福 / 双 11 倒计时 / 七夕表白 / 圣诞带货 | 短期热点 |
6.3 模板生态(UGC)
- 官方模板:内部出品,免费提供
- 创作者模板:UGC 用户可发布自制模板到模板市场(激励机制后续设计)
- 模板审核:上架前内容审核 + 法务审版权
6.4 实现层(Coze 工作流变体)
每个模板对应一个 Coze 工作流 variant:
wf_template_bookreview_v3 # 书单号 v3
wf_template_movie_style # 电影感预设
wf_template_clay_animation # 黏土风预设
用户选模板 → 业务后端把对应 workflow_id 替换路由表 → 同样的 OpenAPI 调用,效果完全不同。
6.5 模板挖掘机制(增长飞轮)
- 监控用户手工组合的高频参数 → 自动生成"推荐模板"候选
- 爆款作品(点赞 / 分享 Top 1%)→ 提取参数 → 沉淀为可复用模板
- 模板趋势榜首页透出,制造 FOMO
七、B 端 API 工程细节
7.1 OpenAPI 设计(OpenAI 兼容)
http
POST /v1/videos
Authorization: Bearer sk-xxxxxx
Content-Type: application/json
Idempotency-Key: req_xxxxxx ← 幂等
X-Trace-Id: trace_xxxxxx ← 追踪
{
"model": "seedance-2.0", // 单模型,固定值
"images": ["https://..."],
"prompt": "...",
"duration": 5, // 秒,3-15
"ratio": "9:16",
"resolution": "1080p" | "4k",
"addons": ["subtitle", "voice_clone"],
"webhook_url": "https://your.app/cb"
}
版本管理 :URL 内嵌版本号(/v1/),重大变更出 /v2/ 并提供 12 个月并行期。
7.2 Rate Limit 策略(多维限流)
| 维度 | 默认 | 可申请上限 |
|---|---|---|
| 单 API Key QPS | 5 / s | 100 / s |
| 单 API Key 并发任务 | 10 | 200 |
| 单 IP QPS(防爬) | 20 / s | --- |
| 单租户月度调用量 | 10 万次 | 协商 |
超限返回 429 Too Many Requests + Retry-After header,SDK 自动指数退避。
7.3 Webhook 设计与签名验证
业务方 webhook_url 在任务完成 / 失败 / 超时时被调用,必须验签:
POST {webhook_url}
X-SwiftReel-Signature: sha256=<HMAC-SHA256(secret, body)>
X-SwiftReel-Timestamp: 1733846400
X-SwiftReel-Event: video.completed
{
"task_id": "vid_xxx",
"status": "succeeded" | "failed",
"video_url": "https://...",
"duration_actual": 5.0,
"resolution": "1080p"
}
重试策略 :失败按 1/5/30/120 分钟指数退避,最多 5 次,24h 内可通过控制台手动重投。
7.4 沙箱环境(Free / 无审核)
- 独立域名
sandbox.swiftreel.ai,与生产完全数据隔离 - 用模拟工作流返回固定示例视频,不真实调用 Seedance
- 用于客户集成测试 / Demo / CI
7.5 多租户数据隔离
- 逻辑隔离 :MySQL 行级
tenant_id,Redis key 前缀t:{tenant_id}:... - 物理隔离(企业版):独立数据库实例 / 独立 OSS Bucket / 独立 Coze 工作流副本
- 数据导出:企业用户可申请导出全量数据(图片 + 视频 + 流水),24h 内 SLA 交付
7.6 SSO 与团队权限
- SSO 接入:钉钉 / 企业微信 / 飞书 / OIDC / SAML 2.0
- 角色矩阵:Owner / Admin / Editor / Viewer 四种
- 审批流:高额 / 批量调用需上级审批(企业版)
7.7 审计日志
所有 API 调用、登录、权限变更入审计日志,保留 1 年,企业用户可申请按月导出符合等保 / ISO27001 审计要求。
八、合规与备案(中国市场上线硬门槛)
⚠️ 没有这一章,任何 AI 视频生成 SaaS 在国内都无法合法上线。 必须在 MVP 上线前 60 天启动以下流程。
8.1 三大法规与三大备案
| 法规 | 监管单位 | 我们需做的备案 |
|---|---|---|
| 《互联网信息服务深度合成管理规定》(2023.1) | 网信办 | 深度合成服务备案 |
| 《生成式人工智能服务管理暂行办法》(2023.8) | 网信办 + 工信部 | 生成式 AI 服务备案 |
| 《互联网信息服务算法推荐管理规定》(2022.3) | 网信办 | 算法备案(填报算法名称、应用场景、风险评估) |
周期 :每项 30--90 天,建议并行启动(需预留三方咨询 / 安全评估的时间)。
8.2 基础备案
- ICP 备案:阿里云 / 腾讯云协助办理,10--20 天
- 公安备案:网站上线后 30 天内
- EDI 经营许可证(涉及增值电信业务):可选,B 端 API 业务建议办
8.3 用户协议三件套(法务必备)
| 文档 | 关键条款 |
|---|---|
| 《用户服务协议》 | 服务范围、账户规则、禁止行为、争议解决(中国法律 / 北京仲裁) |
| 《隐私政策》 | 数据收集范围、用途、保存期、第三方共享(Coze / 模型供应商)、用户权利(查询/删除/导出) |
| 《商用授权协议》 | 生成视频的版权归属(归用户)、商用范围、二次分发、模型方权益保护 |
8.4 数据保留与销毁
- 原始素材:30 天后自动删除(用户可在账户内一键提前清空)
- 成片:保留 90 天(长期保存策略后续定)
- 日志:90 天滚动
- 删除请求:用户可申请永久删除全部数据,7 天内执行(《个人信息保护法》合规)
8.5 未成年人保护
- 未成年人禁用真人脸生成 / 上传
- 实名认证强制(< 18 岁限制使用 + 内容审核 100% 通过)
- 每日生成次数封顶 5 次(防成瘾)
九、内容安全与审核
9.1 三道审核关(任何一关不过即拦截)
[用户上传图片] → 图像审核 ───┐
├→ [LLM 文案扩写] → 文本审核 ─┐
[用户输入文案] → 文本审核 ───┘ ├→ [Coze 生成视频] → 视频审核 → [输出给用户]
↓
拦截 → 失败回滚 + 站内信
9.2 第三方审核服务对接
| 厂商 | 主打能力 | 我们的使用场景 |
|---|---|---|
| 数美 | 涉政 / 涉黄 / 暴恐 / 广告 / 版权图识别 | 主用:图片 + 文本 |
| 网易易盾 | 多媒体 + AIGC 鉴伪 | 视频后审 |
| 阿里绿网 | 综合内容安全 | 备用 + 兜底 |
| 本地 NSFW | 离线 CLIP 模型 | 沙箱 / 高频粗筛 |
多供应商策略 :主用数美 + 兜底易盾,任一拦截即视为命中(误伤率高于漏放率的产品哲学)。
9.3 AI 生成内容强制标识(不可绕过)
按《深度合成规定》第十六/十七条:
- 视觉水印 :右下角 "由速影 AI 生成" 字样 + 平台 LOGO,视频底层硬烧入,不可去除
- 元数据标识 :MP4 metadata 中写入
ai_generated=true+ 模型版本 + 时间戳
⚠️ 注意区分两种水印:LOGO 商业水印 (将来可做成可去除的增值项)与 AI 标识水印("由速影 AI 生成",依法强制保留、不可去除)。宣传文案中必须严格区分。
9.4 申诉机制
- 用户对审核结果不服可申诉,48h 内人工复审
- 误伤 → 重新生成(补偿形式后续定)
- 累计 3 次申诉成功 → 该用户标签转白名单
9.5 风控与黑名单
- 指纹库:拒绝服务名单(IP / 设备 / 手机号 / 实名信息)
- 行为风控:同 IP 1 小时 > 10 个账号注册 → 验证码强制
- 薅羊毛识别:免费试用被批量刷取的设备 / IP 立即拉黑
- 政治敏感关键词:实时更新词库(厂商提供)
十、风险评估
⚠️ 单模型策略最大的风险是"把鸡蛋全放在 Seedance 一个篮子里"(下表 #2),这是本次产品决策的核心代价,必须有预案。
| # | 风险 | 概率 | 影响 | 应对 |
|---|---|---|---|---|
| 1 | 政策风险:网信办收紧 AIGC 监管,要求重审备案 | 中 | 高 | 备案提前 2 个月、专职法务跟进 |
| 2 | 🔴 单模型集中风险:Seedance 2.0 限流 / 下线 / 停止对外 API | 中 | 致命 | 预留"快速接入第二模型"的抽象层(VideoProvider 接口),最坏 72h 内可接可灵 / 即梦应急;保持 1 个候选模型的接入预研 |
| 3 | Coze 平台风险:Coze 限流 / 下线 | 中 | 高 | §3.5 两层降级 + 直连火山方舟 Seedance 旁路 Coze |
| 4 | 版权 / 肖像诉讼:用户上传他人肖像生成视频被告 | 中 | 高 | 强制人脸授权确认 + 火山方舟 1w+ 预置形象 + 用户协议免责 |
| 5 | 同质化竞争:即梦 / 可灵 / 字节自家出 C 端工具 | 高 | 中 | 模板生态 + KOL 创作者经济 + 产品体验层差异化 |
| 6 | 内容安全事故:用户生成违规内容流出 | 低 | 致命 | 三道审核 + 第三方兜底 + 实名制 + 24h 应急响应 |
| 7 | 数据安全事故:用户素材泄露 | 低 | 高 | 加密存储 + 访问审计 + 渗透测试 |
| 8 | 核心人员流失:技术或运营核心离职 | 中 | 中 | 双备份岗位 + 文档化交付 |
十一、完整对外文案
11.1 一句话定位(30 字以内)
- 官方版:「上传一张图,写一句话,30 秒生成电影级短视频。」
- 小红书版:「这就是我做爆款短视频的神器,姐妹们冲!」
- B 端版:「Seedance 2.0 图生视频 API,一行代码出片。」
11.2 三段式价值主张
给个人创作者
不会剪辑、不会写脚本、不会配音都没关系。把照片和一句话丢给我们,30 秒后你拿到的是一条带配音、带口型、带 BGM 的电影级成片(Seedance 2.0 音画一体直出)------ 直接发抖音、小红书、视频号。
给电商商家 / MCN
一张商品图 → 一条会说话的带货视频。批量提交、商用授权、API 集成全部支持,比请剪辑实习生灵活得多。
给开发者 / SaaS 集成方
一个 OpenAI 风格的
POST /v1/videos接口,专注 Seedance 2.0 这一个 SOTA 模型(2026 Artificial Analysis 榜首,超越 Veo 3 / Sora 2 / Gen-4.5)。Webhook 异步回调、Coze 故障自动旁路直连火山方舟。
11.3 落地页 Hero 区文案
━━━━━━━━━━━━━━━━━━━━━━━━━━
上传一张图 写一句话
↓
30 秒 出片
━━━━━━━━━━━━━━━━━━━━━━━━━━
速影 AI · SwiftReel
Seedance 2.0 驱动,最懂中文创作者的图生视频
[ 立即免费试用 ] [ 查看案例 ]
✓ 只用最强:Seedance 2.0(2026 SOTA,音画一体 4K)
✓ 一次生成:画面 + 配音 + 口型 + BGM
✓ 30 秒出片:进度条丝滑无感
✓ 中文优先:方言 / 网感文案 / 抖音风
11.4 核心功能点(Feature 列表)
🚀 30 秒出片 异步队列 + 边缘 CDN,进度条丝滑无感
🏆 只用 SOTA 专注 Seedance 2.0,不用二流模型凑数
🎵 音画一体 一次生成 4K 画面 + 配音 + 口型 + BGM
🎙️ 音色克隆 上传 30 秒样音,AI 复刻你的声线
📱 一键分享 抖音 / 小红书 / 视频号原生跳转
🔌 OpenAPI 接入 5 分钟接入,OpenAI 兼容协议
11.5 API 介绍文案(B 端落地页)
速影 OpenAPI · 专注 Seedance 2.0,一行代码出片
curl -X POST https://api.swiftreel.ai/v1/videos \
-H "Authorization: Bearer sk-..." \
-d '{
"model": "seedance-2.0",
"images": ["https://..."],
"prompt": "夕阳下的海滩,镜头慢慢推近",
"duration": 10,
"resolution": "4k"
}'
→ { "task_id": "vid_xxx" }
✓ OpenAI 兼容协议,迁移零学习成本
✓ Webhook 异步回调,无需轮询
✓ Coze 故障自动旁路直连火山方舟
11.6 社交媒体话术(推广物料)
抖音 / 小红书短文案:
「我用 1 张图 + 1 句话,做出了爆款短视频。✨
工具就是这个 → 速影 AI
- 用的是 Seedance 2.0,画面+配音一次出,电影级
- 30 秒出片,零剪辑基础
#图生视频 #AI神器 #自媒体工具」
朋友圈一句话:
「试了 10 几个 AI 视频工具,最后留下这个:速影 AI。只用最强的 Seedance 2.0,30 秒出片。」
十二、运营策略与增长
12.1 冷启动(0 → 1w 用户,前 30 天)
- 小红书种草:投 1w 粉以下博主,每人发 1 篇带 Demo 视频的种草笔记
- 知乎软文:技术博主写"如何用 Coze 搭 SaaS",植入产品
- 开发者社区:掘金 / V2EX / GitHub 发开源工具(如"Coze 工作流模板包")反向引流
- 裂变:邀请好友注册,双方各得免费试用次数
12.2 增长(1w → 10w,30--90 天)
- 信息流投放:百度 / 抖音信息流引流
- B 端切入:与 MCN 谈定制工作流
- 创作者口碑:作品广场 + 模板复用带来自然传播
12.3 创作者经济与 KOL 合作(核心增长杠杆)
创作者经济三件套:
| 机制 | 给创作者的激励 | 平台收益 |
|---|---|---|
| 模板复用 | 模板被他人使用 → 作者获激励 | UGC 内容供给 + 黏性 |
| 作品广场 | 优质作品被展示 → 作者得粉丝 + 曝光 | 内容广场 SEO + 二次传播 |
| KOL 入驻 | 1k+ 粉认证 + 推广合作 | 自带流量 + 转化率高 |
KOL 三级合作矩阵:
- 种子 KOL(1w 粉以下):月任务奖励、官方私聊
- 腰部 KOL(1--10w 粉):流量扶持 + 模板冠名
- 头部 KOL(10w+ 粉):年度独家合作 + 共同发布会 + 联名工作流
12.4 内容广场 / 社区
- 每个用户作品默认公开(可关闭),他人可"参考此作品"一键复刻
- 周榜 / 月榜 → 模板趋势 → 模板市场反哺
- 评论 / 点赞 / 关注体系,沉淀创作者社交关系
12.5 北极星指标
- N 星:周生成视频数 / 周活跃用户(衡量"工具的使用密度")
- 辅助指标:注册转化率、首次生成成功率、月留存、模板被使用率
十三、上线 Roadmap
| 时间 | 里程碑 |
|---|---|
| W1(已就绪) | Coze 单条 + 批量 2 条 Seedance 工作流跑通;前端 Demo 可演示 |
| W2 | 上线官网 + 账户 + Seedance 单条生成(1080p),免费试用 |
| W3 | 开放 4K + 批量生产 + 我的作品 + 用量记录 |
| W4 | 上线 API 控制台 + Webhook 文档;开启小红书投放 |
| M2 | 子账号 + 商用授权;B 端商务启动 |
| M3 | 上线直连火山方舟兜底链路;预研第二模型抽象层(防单点) |
| M6 | 企业白牌(私有化部署 + 子账号体系深化) |
十四、未来扩展(M6+ 锦上添花)
| # | 方向 | 触发条件 | 备注 |
|---|---|---|---|
| 1 | iOS / Android 原生 App | H5 月活 > 1w | 拍照即剪、推送通知 |
| 2 | 企业 SSO + 钉钉 / 企微 / 飞书 | 第一个 B 端客户提出 | 标配 OIDC / SAML 2.0 |
| 3 | 团队协作 / 共享空间 / 审批流 | 团队客户增多 | 角色矩阵 + 评论 + 修改建议 |
| 4 | A/B 测试框架 | 全功能上线后 | 内嵌 GrowthBook / 自建 |
| 5 | 私有化部署(Docker / K8s) | 政企 / 金融客户咨询 | 对接客户自有火山方舟账号 / 私有 Seedance 实例 |
| 6 | AIGC 鉴伪 SaaS 反向产品 | 商业化探索 | 给媒体 / 平台用,识别 AI 视频 |
| 7 | 视频再编辑 / 重生成某一段 | 用户高频反馈 | 局部 inpainting + 片段重生 |
十五、技术效果
bash
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>速影 AI · SwiftReel --- 图生视频体验 Demo</title>
<style>
:root{
--blue:#3b82f6; --blue-bg:#dbeafe;
--green:#22c55e; --green-bg:#dcfce7;
--purple:#a855f7; --purple-bg:#f3e8ff;
--orange:#f97316; --orange-bg:#ffedd5;
--yellow:#eab308; --yellow-bg:#fef3c7;
--red:#ef4444; --red-bg:#fee2e2;
--gray:#64748b; --gray-bg:#f1f5f9;
--ink:#0f172a; --muted:#64748b; --line:#e2e8f0;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,"PingFang SC","Microsoft YaHei",Helvetica,Arial,sans-serif;
color:var(--ink);background:#f8fafc;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.wrap{max-width:1080px;margin:0 auto;padding:0 20px}
header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.9);
backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;gap:8px;height:60px}
.logo{font-weight:800;font-size:20px;display:flex;align-items:center;gap:8px}
.logo .dot{width:26px;height:26px;border-radius:8px;
background:linear-gradient(135deg,var(--blue),var(--purple));display:inline-block}
.nav .tabs{display:flex;gap:4px;margin-left:24px}
.nav .tabs button{border:0;background:none;padding:8px 14px;border-radius:8px;
font-size:15px;cursor:pointer;color:var(--muted);font-weight:600}
.nav .tabs button.active{background:var(--blue-bg);color:var(--blue)}
.nav .spacer{flex:1}
.free-chip{display:flex;align-items:center;gap:8px;background:var(--green-bg);
border:1px solid var(--green);border-radius:999px;padding:6px 14px;font-weight:700;font-size:13px;color:#15803d}
section.page{display:none;padding:32px 0 80px}
section.page.active{display:block}
.hero{text-align:center;padding:56px 0 28px}
.hero .badge{display:inline-block;background:var(--orange-bg);color:var(--orange);
border:1px solid var(--orange);border-radius:999px;padding:4px 14px;font-size:13px;font-weight:700;margin-bottom:18px}
.hero h1{font-size:46px;line-height:1.2;letter-spacing:-1px}
.hero h1 .grad{background:linear-gradient(135deg,var(--blue),var(--purple));
-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p.sub{font-size:18px;color:var(--muted);margin:16px auto 26px;max-width:560px}
.btn{border:0;border-radius:12px;padding:13px 26px;font-size:16px;font-weight:700;cursor:pointer}
.btn.primary{background:linear-gradient(135deg,var(--blue),var(--purple));color:#fff;
box-shadow:0 6px 20px rgba(99,102,241,.35)}
.btn.ghost{background:#fff;border:1px solid var(--line);color:var(--ink)}
.btn:active{transform:translateY(1px)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.hero .cta{display:flex;gap:12px;justify-content:center}
.checks{display:flex;flex-wrap:wrap;gap:14px 28px;justify-content:center;margin-top:30px;color:var(--muted);font-size:14px}
.checks span::before{content:"✓ ";color:var(--green);font-weight:800}
.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:46px}
.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px}
.card .ico{font-size:26px}
.card h3{font-size:16px;margin:8px 0 4px}
.card p{font-size:13px;color:var(--muted)}
.cases{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:30px}
.thumb{aspect-ratio:9/16;border-radius:14px;position:relative;overflow:hidden;
display:flex;align-items:flex-end;padding:12px;color:#fff;font-size:13px;font-weight:700}
.thumb span{position:relative;z-index:2;text-shadow:0 1px 6px rgba(0,0,0,.6)}
.thumb::after{content:"▶";position:absolute;inset:0;display:flex;align-items:center;
justify-content:center;font-size:30px;color:rgba(255,255,255,.85);z-index:1}
h2.sec{font-size:24px;margin:46px 0 6px;text-align:center}
p.sec-sub{text-align:center;color:var(--muted);margin-bottom:8px}
.studio{display:grid;grid-template-columns:1.3fr 1fr;gap:24px;align-items:start}
.panel{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px}
.panel h3{font-size:16px;margin-bottom:14px}
.drop{border:2px dashed var(--line);border-radius:14px;padding:26px;text-align:center;
color:var(--muted);cursor:pointer;transition:.15s}
.drop:hover{border-color:var(--blue);background:var(--blue-bg)}
.drop.has{border-style:solid;border-color:var(--green);background:var(--green-bg);color:var(--ink)}
.thumbs{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.thumbs .t{width:54px;height:54px;border-radius:8px;background:linear-gradient(135deg,#cbd5e1,#94a3b8);
display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;font-weight:700}
textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px;font-size:14px;
font-family:inherit;resize:vertical;min-height:80px;margin-top:8px}
.lbl{font-size:13px;font-weight:700;color:var(--muted);margin:18px 0 8px;display:block}
.seg{display:flex;gap:8px;flex-wrap:wrap}
.seg button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 14px;
cursor:pointer;font-size:14px;font-weight:600}
.seg button.on{border-color:var(--blue);background:var(--blue-bg);color:var(--blue)}
.dur-row{display:flex;align-items:center;gap:14px;margin-top:8px}
input[type=range]{flex:1;accent-color:var(--blue)}
.dur-val{font-weight:800;font-size:18px;min-width:54px;text-align:right}
.side{background:var(--gray-bg);border-radius:14px;padding:18px;position:sticky;top:80px}
.side .row{display:flex;justify-content:space-between;font-size:14px;padding:6px 0;color:var(--muted)}
.side .row b{color:var(--ink)}
.free-note{margin-top:12px;font-size:13px;padding:10px 12px;border-radius:10px;background:var(--green-bg);color:#15803d}
.gen-btn{width:100%;margin-top:14px}
.progress-wrap{margin-top:16px;display:none}
.bar{height:10px;background:var(--line);border-radius:999px;overflow:hidden}
.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue),var(--purple));
border-radius:999px;transition:width .3s}
.stage{font-size:13px;color:var(--muted);margin-top:8px}
.result-video{margin-top:16px;display:none;aspect-ratio:9/16;max-width:240px;border-radius:14px;
background:linear-gradient(135deg,#1e293b,#0f172a);color:#fff;align-items:center;justify-content:center;
flex-direction:column;gap:8px;text-align:center;padding:16px;position:relative}
.result-video .play{font-size:40px}
.wm{position:absolute;right:8px;bottom:8px;font-size:10px;color:rgba(255,255,255,.7)}
table{width:100%;border-collapse:collapse;background:#fff;border-radius:14px;overflow:hidden;
border:1px solid var(--line);font-size:14px}
th,td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line)}
th{background:var(--gray-bg);font-size:13px;color:var(--muted)}
tr:last-child td{border-bottom:0}
.chip{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:700}
.chip.ok{background:var(--green-bg);color:#15803d}
.chip.run{background:var(--yellow-bg);color:#a16207}
.works-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:20px}
.work{aspect-ratio:9/16;border-radius:14px;position:relative;overflow:hidden;color:#fff;
display:flex;align-items:flex-end;padding:10px;font-size:12px;font-weight:700;
background:linear-gradient(135deg,#334155,#0f172a)}
.work .play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:28px;color:rgba(255,255,255,.85)}
.work span{position:relative;z-index:2}
.toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%) translateY(80px);
background:var(--ink);color:#fff;padding:12px 22px;border-radius:12px;font-weight:600;
opacity:0;transition:.3s;z-index:99}
.toast.show{transform:translateX(-50%) translateY(0);opacity:1}
.footnote{text-align:center;color:var(--muted);font-size:12px;margin-top:50px}
.stage-banner{background:var(--yellow-bg);border:1px solid var(--yellow);color:#a16207;
border-radius:12px;padding:10px 16px;font-size:13px;margin-bottom:20px;text-align:center}
@media(max-width:820px){
.feature-grid{grid-template-columns:repeat(2,1fr)}
.cases,.works-grid{grid-template-columns:repeat(2,1fr)}
.studio{grid-template-columns:1fr}
.hero h1{font-size:34px}
.nav .tabs{display:none}
}
</style>
</head>
<body>
<header>
<div class="wrap nav">
<div class="logo"><span class="dot"></span>速影 AI <span style="font-weight:500;color:var(--muted);font-size:14px">· SwiftReel</span></div>
<div class="tabs">
<button data-go="home" class="active">首页</button>
<button data-go="studio">创作工作台</button>
<button data-go="works">我的作品</button>
</div>
<div class="spacer"></div>
<div class="free-chip">🎬 体验版</div>
</div>
</header>
<!-- ============ HOME ============ -->
<section class="page active" id="home">
<div class="wrap">
<div class="hero">
<span class="badge">🏆 Seedance 2.0 驱动 · 2026 全球 SOTA</span>
<h1>上传一张图,写一句话<br><span class="grad">30 秒生成电影级短视频</span></h1>
<p class="sub">最懂中文创作者的图生视频工具。只用最强的 Seedance 2.0,画面 + 配音 + 口型一次生成。</p>
<div class="cta">
<button class="btn primary" data-go="studio">立即免费体验</button>
<button class="btn ghost" data-go="works">查看作品</button>
</div>
<div class="checks">
<span>只用最强:Seedance 2.0(音画一体 4K)</span>
<span>一次生成:画面 + 配音 + 口型 + BGM</span>
<span>30 秒出片:进度丝滑无感</span>
<span>中文优先:方言 / 网感文案 / 抖音风</span>
</div>
</div>
<h2 class="sec">为什么选速影</h2>
<p class="sec-sub">一个模型打天下,简单到极致</p>
<div class="feature-grid">
<div class="card"><div class="ico">🚀</div><h3>30 秒出片</h3><p>异步队列 + 边缘 CDN,进度条丝滑无感。</p></div>
<div class="card"><div class="ico">🏆</div><h3>只用 SOTA</h3><p>专注 Seedance 2.0,超越 Veo3 / Sora2 / Gen-4.5,不用二流模型凑数。</p></div>
<div class="card"><div class="ico">🎵</div><h3>音画一体</h3><p>一次生成 4K 画面 + 配音 + 口型 + BGM,无需后期。</p></div>
<div class="card"><div class="ico">🎙️</div><h3>音色克隆</h3><p>上传 30 秒样音,AI 复刻你的声线。</p></div>
<div class="card"><div class="ico">📱</div><h3>一键分享</h3><p>抖音 / 小红书 / 视频号原生跳转。</p></div>
<div class="card"><div class="ico">🔌</div><h3>OpenAPI 接入</h3><p>5 分钟接入,OpenAI 兼容协议,B 端友好。</p></div>
</div>
<h2 class="sec">网红同款案例</h2>
<p class="sec-sub">点击「创作工作台」即可复刻</p>
<div class="cases">
<div class="thumb" style="background:linear-gradient(135deg,#f59e0b,#ef4444)"><span>夕阳海滩 · 治愈Vlog</span></div>
<div class="thumb" style="background:linear-gradient(135deg,#3b82f6,#8b5cf6)"><span>商品口播 · 带货</span></div>
<div class="thumb" style="background:linear-gradient(135deg,#10b981,#059669)"><span>书单号 · 金句</span></div>
<div class="thumb" style="background:linear-gradient(135deg,#ec4899,#be185d)"><span>探店 · 美食</span></div>
</div>
</div>
</section>
<!-- ============ STUDIO ============ -->
<section class="page" id="studio">
<div class="wrap">
<div class="stage-banner">🚧 开发体验阶段:上传图片与文案,一键生成短视频。</div>
<h2 class="sec">创作工作台</h2>
<p class="sec-sub">上传图片 → 写文案 → 选时长/清晰度 → 一键生成</p>
<div class="studio" style="margin-top:24px">
<div>
<div class="panel">
<h3>① 上传图片(1--9 张)</h3>
<div class="drop" id="drop">
<div style="font-size:30px">📁</div>
<div>点击此处添加示例图片(Demo 模拟)</div>
<div style="font-size:12px;margin-top:4px">支持拖拽 1--9 张 · JPG/PNG</div>
</div>
<div class="thumbs" id="thumbs"></div>
<label class="lbl">② 文案 / 主题</label>
<textarea id="prompt" placeholder="例:夕阳下的海滩,镜头缓缓推近,温柔治愈的氛围...">夕阳下的海滩,镜头缓缓推近,温柔治愈的氛围</textarea>
<label class="lbl">③ 画面比例</label>
<div class="seg" id="ratioSeg">
<button class="on" data-ratio="9:16">9:16 抖音</button>
<button data-ratio="16:9">16:9 横屏</button>
<button data-ratio="1:1">1:1 朋友圈</button>
</div>
<label class="lbl">④ 清晰度</label>
<div class="seg" id="resSeg">
<button class="on" data-res="1080p">1080p 标准</button>
<button data-res="4k">4K 高清</button>
</div>
<label class="lbl">⑤ 时长:<span id="durLabel">5</span> 秒</label>
<div class="dur-row">
<input type="range" id="dur" min="3" max="15" step="1" value="5">
<span class="dur-val"><span id="durLabel2">5</span>s</span>
</div>
</div>
</div>
<div>
<div class="side">
<h3 style="margin-bottom:10px">📋 本次生成参数</h3>
<div class="row"><span>模型</span><b>Seedance 2.0</b></div>
<div class="row"><span>比例</span><b id="qRatio">9:16</b></div>
<div class="row"><span>清晰度</span><b id="qRes">1080p</b></div>
<div class="row"><span>时长</span><b id="qDur">5 秒</b></div>
<div class="row"><span>音轨</span><b>音画一体(含配音/BGM)</b></div>
<div class="free-note">🎬 确认参数后,一键生成。</div>
<button class="btn primary gen-btn" id="genBtn">⚡ 生成视频</button>
<div class="progress-wrap" id="progWrap">
<div class="bar"><i id="barFill"></i></div>
<div class="stage" id="stageTxt">排队中...</div>
</div>
<div class="result-video" id="resultVideo">
<div class="play">▶</div>
<div>生成完成!</div>
<div style="font-size:12px;opacity:.8">点击下载 / 分享到抖音·小红书</div>
<div class="wm">由速影 AI 生成</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ============ WORKS ============ -->
<section class="page" id="works">
<div class="wrap">
<h2 class="sec">我的作品</h2>
<p class="sec-sub">记录你生成过的作品与参数</p>
<h3 style="margin:24px 0 10px">作品列表</h3>
<div class="works-grid" id="worksGrid">
<div class="work"><div class="play">▶</div><span>示例 · 夕阳海滩 5s</span></div>
</div>
<h3 style="margin:30px 0 10px">用量记录</h3>
<table id="usageTable">
<tr><th>时间</th><th>模型</th><th>比例</th><th>清晰度</th><th>时长</th><th>状态</th></tr>
<tr><td>Jun 10 01:12</td><td>Seedance 2.0</td><td>9:16</td><td>4K</td><td>15s</td><td><span class="chip ok">成功</span></td></tr>
<tr><td>Jun 10 01:08</td><td>Seedance 2.0</td><td>9:16</td><td>1080p</td><td>5s</td><td><span class="chip ok">成功</span></td></tr>
<tr><td>Jun 10 12:48</td><td>Seedance 2.0</td><td>16:9</td><td>1080p</td><td>10s</td><td><span class="chip ok">成功</span></td></tr>
</table>
<p class="footnote">本页为演示 Demo:用量记录存于浏览器 LocalStorage,生成进度为前端模拟,无真实后端。</p>
</div>
</section>
<div class="toast" id="toast"></div>
<script>
const $ = id => document.getElementById(id);
/* nav */
document.querySelectorAll('[data-go]').forEach(b=>b.addEventListener('click',()=>go(b.dataset.go)));
function go(id){
document.querySelectorAll('.page').forEach(p=>p.classList.toggle('active',p.id===id));
document.querySelectorAll('.tabs button').forEach(t=>t.classList.toggle('active',t.dataset.go===id));
window.scrollTo({top:0,behavior:'smooth'});
}
/* studio config */
let cfg = { ratio:'9:16', res:'1080p', dur:5, imgs:0 };
$('drop').addEventListener('click',()=>{
if(cfg.imgs>=9){ toast('最多 9 张'); return; }
cfg.imgs++;
const t=document.createElement('div'); t.className='t'; t.textContent='图'+cfg.imgs;
$('thumbs').appendChild(t);
$('drop').classList.add('has');
$('drop').querySelector('div:nth-child(2)').textContent = `已添加 ${cfg.imgs} 张图片(点击继续添加)`;
});
function segPick(segId,cb){
document.querySelectorAll('#'+segId+' button').forEach(b=>{
b.addEventListener('click',()=>{
document.querySelectorAll('#'+segId+' button').forEach(x=>x.classList.remove('on'));
b.classList.add('on'); cb(b); syncParams();
});
});
}
segPick('ratioSeg',b=>cfg.ratio=b.dataset.ratio);
segPick('resSeg',b=>cfg.res=b.dataset.res);
$('dur').addEventListener('input',e=>{
cfg.dur=+e.target.value;
$('durLabel').textContent=cfg.dur; $('durLabel2').textContent=cfg.dur;
syncParams();
});
function syncParams(){
$('qRatio').textContent=cfg.ratio;
$('qRes').textContent=cfg.res==='4k'?'4K':'1080p';
$('qDur').textContent=cfg.dur+' 秒';
}
/* generate (mock) */
let busy=false;
$('genBtn').addEventListener('click',()=>{
if(busy) return;
if(cfg.imgs===0){ toast('请先上传至少 1 张图片'); return; }
busy=true; $('genBtn').textContent='生成中...'; $('genBtn').disabled=true;
$('progWrap').style.display='block'; $('resultVideo').style.display='none';
const stages=['排队中...','LLM 扩写分镜提示词...','Seedance 2.0 图生视频...','音画一体合成...','烧入 AI 标识水印...','上传 OSS / CDN...'];
let p=0,si=0;
const timer=setInterval(()=>{
p+=Math.random()*16+6; if(p>100)p=100;
$('barFill').style.width=p+'%';
const ns=Math.min(stages.length-1,Math.floor(p/100*stages.length));
if(ns!==si){si=ns;$('stageTxt').textContent=stages[si];}
if(p>=100){
clearInterval(timer);
$('stageTxt').textContent='✅ 完成!';
$('resultVideo').style.display='flex';
busy=false; $('genBtn').textContent='⚡ 再生成一条'; $('genBtn').disabled=false;
recordUsage();
toast('生成成功!');
}
},420);
});
function recordUsage(){
const now=new Date();
const hh=String(now.getHours()).padStart(2,'0'), mm=String(now.getMinutes()).padStart(2,'0');
// 用量记录
const row = `<tr><td>Jun 12 ${hh}:${mm}</td><td>Seedance 2.0</td><td>${cfg.ratio}</td>
<td>${cfg.res==='4k'?'4K':'1080p'}</td><td>${cfg.dur}s</td><td><span class="chip ok">成功</span></td></tr>`;
$('usageTable').querySelector('tr').insertAdjacentHTML('afterend',row);
// 作品网格
const w=document.createElement('div'); w.className='work';
w.innerHTML=`<div class="play">▶</div><span>${cfg.res==='4k'?'4K':'1080p'} · ${cfg.dur}s</span>`;
$('worksGrid').insertBefore(w,$('worksGrid').firstChild);
}
/* toast */
let tt;
function toast(msg){
const el=$('toast'); el.textContent=msg; el.classList.add('show');
clearTimeout(tt); tt=setTimeout(()=>el.classList.remove('show'),2200);
}
/* init */
syncParams();
</script>
</body>
</html>

修订记录
| 版本 | 日期 | 修订 |
|---|---|---|
| v2.0 | 2026-06-12 | 初版:SaaS 产品设计 + Coze 引擎 |
| v2.2 | 2026-06-12 | 新增章节:模板市场 / B 端工程 / 合规备案 / 内容审核 / 风险评估 |
| v2.3 | 2026-06-12 | 收敛为单模型 Seedance 2.0(去掉多模型 / 多档位) |
| v2.5 | 2026-06-14 | 本阶段聚焦实现:全文聚焦"图 + 文案 → Seedance 2.0 出片"链路;架构图收敛为 4 张 |
| v2.6 | 2026-06-14 | 第三章新增 §3.3 生成前置闸门(需求澄清 + 文字效果预演 + 消耗预估),在调用模型前用文字层试错,省算力 / 省成本;原 3.3--3.6 顺延为 3.4--3.7 |