使用指南
使用 happyhorse-1.1 文生视频 API 制作短视频:端到端工作流
短视频是一场数量游戏。TikTok、Reels 和 Shorts 都会奖励每天发布的账号,而最大的制作瓶颈通常是 B-roll:那些承载钩子、产品亮点或令人满足的循环的 3–8 秒竖屏片段。HappyHorse 1.1 文生视频 特别适合这一场景,因为它在同一次调用中生成原生音频——无需单独配乐或拟音——并且直接支持 9:16 竖屏输出,因此后期无需裁剪。
本指南是端到端工作流:为短视频调校的提示词模式、异步任务生命周期、一次运行渲染一周视频的批量生产脚本,以及各平台的成本计算。下面嵌入的每个片段都是用旁边所示完全相同请求生成的——音频开启,直接来自 API。
前置条件。 你需要一个 hiapi key(
Authorization: Bearer sk-…)。如果你之前没有调用过/v1/tasks,请先浏览 异步 API 创建 文档或 happyhorse-1.1 curl + Python 教程——本文基于该教程,聚焦短视频工作流。
为什么这个模型适合短视频
三个特性对这种格式很重要:
- 原生音频。 环境音、拟音和一次性音效与视频一起生成。对于“莫名解压”和 B-roll 内容,声音就是内容——有真实音频的片段明显优于创作者用库存音乐填充的无声 AI 片段。
- 一等公民的 9:16。
aspect_ratio接受9:16(以及16:9、1:1、4:5、21:9、9:21等),因此你可以原生渲染竖屏,而不是裁剪横屏母版并丢失构图。 - 3–15 秒范围。
duration接受 3 到 15 的任意整数——正好是短视频的区间。钩子是 3 秒,产品亮点是 4–6 秒,完整的微故事可容纳在 12–15 秒内。
输入模式刻意保持小巧。只有 prompt 是必填的;有用的参数是:
| 字段 | 值 | 短视频默认值 |
|---|---|---|
prompt |
字符串(必填) | 参见下方模式 |
aspect_ratio |
16:9、9:16、3:4、4:3、4:5、5:4、1:1、9:21、21:9 |
9:16 |
resolution |
720p、1080p |
草稿用 720p,主推帖子用 1080p |
duration |
整数 3–15(秒) | 3–5 |
有两件事它不接受,这样你就不会浪费一次请求去发现:没有 audio 开关(音频始终开启),也没有 seed。发送其中任何一个都会返回 400 验证错误。
三个真实片段,三种短视频类型
这些是主导短视频信息流的三种格式,每个都在一次 API 调用中生成。提示词遵循一个可重复的模式,你可以调整:格式标签 → 主体和动作 → 构图 → 光线 → 音频提示。
1. 生活方式 B-roll(咖啡馆经典)
{
"model": "happyhorse-1.1/text-to-video",
"input": {
"prompt": "竖屏短视频测试:一位咖啡师在明亮的咖啡馆里拉花,手机风格的竖屏构图,牛奶蒸煮和咖啡馆交谈的自然音频。",
"duration": 4,
"resolution": "720p",
"aspect_ratio": "9:16"
}
}
注意提示词末尾的音频提示(“牛奶蒸煮和咖啡馆交谈”)。明确说出你想要的声音是使用这个模型时最有杠杆效应的技巧——不提示的话,它仍然会生成音频,但描述出来能得到可用的环境音轨。
2. 产品发布预告
{
"model": "happyhorse-1.1/text-to-video",
"input": {
"prompt": "产品发布预告,竖屏 9:16:一只奶油色和焦橙色的厚底复古跑鞋在哑光黑色转盘上缓慢旋转,硬质轮廓光勾勒出它的剪影,细微灰尘颗粒在光束中飘动,深色影棚背景,上方留有充足空白空间用于标题叠加。冲击力强,电影感。原生音频:低沉的贝斯嗡嗡声,以及鞋子完成旋转时的一声柔和呼啸。",
"duration": 3,
"resolution": "720p",
"aspect_ratio": "9:16"
}
}
这里有两个短视频特有的技巧。第一,“上方留有充足空白空间用于标题叠加”——你将在剪辑器中在这个片段上放文字,所以要求模型留出负空间,而不是让你的字幕去争抢画面。第二,音频是设计出来的,不是环境音:一个低音嗡嗡声加上与动作节拍同步的一声呼啸,这正是产品预告片所使用的。
3. 莫名解压微距循环
{
"model": "happyhorse-1.1/text-to-video",
"input": {
"prompt": "莫名解压微距,竖屏 9:16:一把锋利的调色刀干净地切过白色桌面上的一块淡薄荷色动力沙,切面在慢动作中碎裂,颗粒倾泻而下,柔和均匀的影棚光线,极端特写充满画面。原生音频:切割时干燥的颗粒嘎吱声,无音乐。",
"duration": 3,
"resolution": "720p",
"aspect_ratio": "9:16"
}
}
“无音乐”很重要:对于 ASMR 类内容,模型应将其音频预算花在拟音(颗粒嘎吱声)上,明确说明可以防止它添加通用配乐。
适用于短视频的提示词模式
从上述片段及其背后的运行中提炼:
- 以格式开头。 用“竖屏短视频”、“产品发布预告,竖屏 9:16”、“莫名解压微距”开头。模型会为你指定的画幅进行构图——手机风格构图与宽银幕电影镜头的观感不同。
- 一个主体,一个动作。 3–5 秒是一个节拍。“咖啡师拉花”可行;4 秒内讲三幕故事只会给你一团糊。如果你需要多个节拍,生成多个片段并将它们剪辑在一起——这也是真实短视频的剪辑方式。
- 用一句话编写音频脚本。 每个提示词以
原生音频:<你想要的 1–3 种声音>结尾。环境底噪(“咖啡馆交谈”)、拟音(“干燥的颗粒嘎吱声”)或设计的一次性音效(“低沉的贝斯嗡嗡声和一声柔和呼啸”)都可行。 - 预留叠加空间。 如果片段要承载字幕或标题,要求“上方空白空间”或“顶部三分之一的干净负空间”。比后期重新构图更便宜。
- 以可循环状态结束。 信息流会自动循环。结束于开始之处的提示词(“鞋子完成旋转”)循环干净,并悄悄积累重复观看。
异步工作流:提交、轮询、下载
每次生成都是一个异步任务:POST /v1/tasks 立即返回一个 taskId,你轮询 GET /v1/tasks/:id 直到 status 为 success,然后下载 output[0].url。一个 4 秒 720p 片段通常渲染约 1–3 分钟。
curl -s -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse-1.1/text-to-video",
"input": {
"prompt": "竖屏短视频测试:一位咖啡师在明亮的咖啡馆里拉花,手机风格的竖屏构图,牛奶蒸煮和咖啡馆交谈的自然音频。",
"duration": 4,
"resolution": "720p",
"aspect_ratio": "9:16"
}
}'
# → {"code":200,"data":{"taskId":"tk-hiapi-…"},"message":"success"}
一条会让人吃亏的操作规则:输出 URL 会过期。 响应中的 output[0].url 带有 expireAt——任务成功后立即下载 mp4 并放入你自己的存储。不要把热链接 URL 写进 CMS 或调度工具。
批量生产:一次运行生成一周片段
当你并行提交时,任务 API 大放异彩。因为创建会立即返回,正确的量级模式是先提交所有任务,再轮询所有任务——五个片段大约在一个片段的实际耗时内渲染完成。
import os, time, requests
API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"}
BATCH = [
("mon-coffee", "竖屏短视频:手冲咖啡在慢动作中闷蒸,蒸汽卷曲,温暖的晨光。原生音频:水流声,柔和的咖啡馆环境音。", 4),
("tue-sneaker", "产品发布预告,竖屏 9:16:一只霓虹跑鞋溅入浅水,水滴在半空中冻结,深色背景。原生音频:一声深沉的溅水声。", 3),
("wed-sand", "莫名解压微距,竖屏 9:16:一块薰衣草色动力沙被细线切开,切面碎裂。原生音频:干燥的颗粒嘎吱声,无音乐。", 3),
("thu-city", "竖屏短视频:夜晚雨淋淋的霓虹街道,雨伞经过,倒影荡漾。原生音频:雨声和远处的车流声。", 5),
("fri-dessert", "竖屏短视频微距:一把勺子敲碎焦糖布丁的焦糖壳,下面的蛋奶馅屈服。原生音频:清脆的碎裂声,然后寂静。", 3),
]
def submit(prompt, duration):
r = requests.post(API, headers=HEADERS, json={
"model": "happyhorse-1.1/text-to-video",
"input": {"prompt": prompt, "duration": duration,
"resolution": "720p", "aspect_ratio": "9:16"},
}, timeout=60)
return r.json()["data"]["taskId"]
# 1) 先提交所有任务
tasks = {key: submit(p, d) for key, p, d in BATCH}
# 2) 轮询直到全部终态
while tasks:
time.sleep(10)
for key, tid in list(tasks.items()):
t = requests.get(f"{API}/{tid}", headers=HEADERS, timeout=30).json()["data"]
if t["status"] == "success":
url = t["output"][0]["url"] # 会过期——立即下载
open(f"{key}.mp4", "wb").write(requests.get(url, timeout=180).content)
print(f"done: {key}.mp4")
del tasks[key]
elif t["status"] == "fail":
print(f"FAILED {key}: {t.get('error')}")
del tasks[key]
大规模运行这种脚本形态的生产笔记:
- 失败时重新提交,而不是重新轮询。失败的任务是终态;用相同输入提交一个新任务(如果因内容原因失败两次,偶尔改写提示词)。
- 维护清单。 随时将
{key, prompt, taskId, local_path}写入 JSON 文件,重启时跳过 mp4 已存在的键。批处理作业会被中断;如果提前规划,可恢复性是免费的。 - 注意并发限制。 如果你要提交几十个任务,将提交间隔一到两秒,而不是在同一瞬间发出 50 个。
成本是多少
计费按输出视频秒数计算(定价页面):720p 为 $0.16/秒,1080p 为 $0.21/秒,与宽高比无关。时长是唯一的成本杠杆,这使得短视频成为使用该模型最便宜的地方:
| 片段 | 规格 | 成本 |
|---|---|---|
| 钩子 / 解压循环 | 3秒 · 720p | $0.48 |
| 标准 B-roll 节拍 | 4秒 · 720p | $0.64 |
| 产品预告 | 5秒 · 720p | $0.80 |
| 主推帖子 | 5秒 · 1080p | $1.05 |
| 每日发布,每月 30 × 4秒草稿 | 720p | ~$19.20 |
一个实用的两级流程:在 3秒/720p 下迭代提示词(每次尝试约半美元),只将胜出的重新渲染为 1080p 用于发布。提示词在分辨率之间干净地转移,因此你不是在重做创意工作——只是在知道片段值得后才为像素付费。
从 API 输出到已发布帖子
模型交给你一个带音频的成品竖屏片段;剩下的是包装:
- 各平台时长: 3–5 秒片段在 TikTok 和 Reels 上作为循环效果很好;对于 Shorts,将两三个节拍拼接成 10–15 秒往往能更长时间留住观众。
duration最高 15 秒可在一次调用中覆盖完整微故事,如果你不想剪辑的话。 - 文字叠加: 在剪辑器中添加字幕(CapCut、Premiere、ffmpeg drawtext)。这就是“留出空白空间”提示词技巧重要的原因。
- 保留原生音频 作为基础层,即使你添加音乐——音乐床下的真实拟音比只有音乐更能体现制作价值。
- 一致的系列: 短视频奖励格式重复。固定提示词骨架(构图、光线、音频风格),只改变主体——上述三个类型模板就是这样设计来复用的。
如果你的系列以品牌资产为核心——真实产品照片、吉祥物、面孔——将此工作流与 happyhorse-1.1 图生视频 配合使用:生成或拍摄一次关键帧,然后从它驱动运动,让主体在每个帖子中保持相同。
开始渲染
最快的路径:获取一个 key,复制本页的咖啡师请求,几分钟内你就会有第一个带音频的竖屏片段。happyhorse-1.1 文生视频模型页面 有实时参数参考和定价,快速开始 涵盖认证,如果这是你第一次调用 hiapi。渲染三个草稿,保留最好的一个,你就以不到一杯咖啡的价格得到了明天的帖子。