使用ガイド
Seedance-2.0-Fast と hiapi API でショート動画を制作する
TL;DR
- これは何か:hiapi API 経由で seedance-2.0-fast を使い、TikTok/Reels 風の縦型ショート動画を制作するための完全なワークフローです。最初の非同期タスク呼び出しから、バッチスクリプトで丸一週間分の投稿をレンダリングするところまでを扱います。下に埋め込まれたショート動画は、このガイドで示すリクエストとまったく同じものを使って生成されています。
- ショート動画にこのモデルを選ぶ理由:ネイティブな
9:16出力、長さは 4〜15 秒、720p レンダリングの価格は1 秒あたり $0.1772——5 秒の縦型ショート動画なら約$0.89です(最新の価格)。480p のドラフト枠は1 秒あたり $0.0843なので、最終レンダリングを決める前に冒頭のフックを低コストで何度も練り直せます。 - 検証済みの API 仕様:
prompt、resolution(480p|720p)、duration(整数、4〜15)が必須です。aspect_ratioは1:1、4:3、3:4、16:9、9:16、21:9、adaptiveを受け付けます。画像から動画への変換はimage_urlsで静止画を 1 枚渡します。すべては統一された非同期の/v1/tasksエンドポイントを通ります——動画専用の別 API を覚える必要はありません。 - ワークフロー:まず 480p でドラフトを出してコンセプトを固め、残す価値のあるバージョンを 720p で再レンダリングします。タスクの送信はブロックしないため、複数のプロンプトを並行して配信できます。
seedance-2.0-fast がショート動画のループに適している理由
ショート動画コンテンツは量の勝負です——1 本だけ投稿することは稀で、むしろキュー全体を投稿し、反応の良かったものを残します。そうなると、動画モデルに本当に求められるものが変わってきます。生の画質以上に、速いこと、安いこと、ネイティブな縦型出力が重要になるのです。seedance-2.0-fast はまさにこのトレードオフを中心に設計されています:
- 秒単位の課金が反復コストを抑えられる。480p なら 4 秒のドラフトは約 $0.34、下のような 5 秒のショート動画は 480p で $0.42、720p で $0.89 です。課金は完全に
duration × rateなので、durationが唯一のコストレバーになります——予算に織り込むべき別個の「画質」追加料金はありません(最新の価格ページで確認済み)。 - ネイティブな
9:16。aspect_ratioで直接縦型をレンダリングでき、16:9 のショート動画をクロップしてプロンプトが描写した構図を失うことはありません。 - 参照動画モードは高くなく、むしろ安い。スタイルや動きの指示のために
reference_video_urlsでショート動画を渡すと、料率は 720p で 1 秒あたり $0.1072、480p で 1 秒あたり $0.0486 まで下がります——あるスタイルをバッチ全体で繰り返したいと見つけたときに便利です。
日々のバッチコンテンツではなく重点作品を投稿する場合でも、以下のワークフローはそのまま使えます——より広いモデル紹介については、姉妹記事 seedance-2.0-fast の API 統合をご覧ください。
準備
hiapi API キーが必要です——SDK は不要です:
export HIAPI_API_KEY="sk-..."
hiapi 上のすべての動画モデルは同じ非同期タスクエンドポイントを通ります:POST https://api.hiapi.ai/v1/tasks が即座に taskId を返し、その後 GET /v1/tasks/{taskId} を完了するまでポーリングします。完全なリファレンスはドキュメントをご覧ください。
最初の縦型ショート動画
最小限の有効なリクエストには prompt、resolution、duration が必要です。ショート動画の画角にするには aspect_ratio: "9:16" を加えます:
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-fast",
"input": {
"prompt": "クローズアップの縦型ショット:両手が黄金色のパンケーキを、高いパンケーキの山のてっぺんに重ねていく。パンケーキは日差しの明るいカントリースタイルのキッチン、素朴な木のテーブルの上のガラス皿に盛られている。湯気が立ち上る。暖かな朝の光が左側から差し込む。その後、蜂蜜がゆっくりと一番上のパンケーキに注がれ、光を受けてきらめき、湯気が立ち上り続ける。居心地よく自然なハンドヘルド風のカメラ、浅い被写界深度、暖色系。テキストのオーバーレイなし。",
"resolution": "720p",
"aspect_ratio": "9:16",
"duration": 5
}
}'
レスポンスは即座にタスク ID を返します:
{"code": 200, "data": {"taskId": "tk-hiapi-..."}, "message": "success"}
status が success になるまでポーリングし、すぐに output[0].url をダウンロードしてください——この URL には有効期限があります。以下がこのリクエストで実際に生成されたショート動画です:
このレンダリングは 720×1280(きれいな 9:16)で、長さはちょうど 5 秒を超え、課金は$0.886——まさに 5 × $0.1772 で、秒単位課金が価格ページの記述だけでなく実際に確認できました。
実際の API で検証した入力スキーマ
seedance-2.0-fast のスキーマは厳格です——サポートされていないフィールドを送ると、黙って無視されるのではなく 400 が返ります:
| フィールド | 型 | 必須 | 値 |
|---|---|---|---|
prompt |
string | ✅ | ショットの説明 |
resolution |
string | ✅ | 480p、720p |
duration |
integer | ✅ | 4〜15(秒) |
aspect_ratio |
string | 任意 | 1:1、4:3、3:4、16:9、9:16、21:9、adaptive |
image_urls |
array | 任意 | 画像から動画への変換に使う元の静止画 |
必須フィールドを省略すると、何かが作成される前にタスクは拒否されます——不正な形式のリクエストには課金されません。この表のフィールド名に厳密に一致させてください。他の動画モデル向けに書かれたショート動画スクリプト(motion_strength、seed、first_frame_url を含むもの)は、ここでは無視されず 400 になります。
再利用可能な Python 関数
送信、ポーリング、ダウンロード——約 30 行で本番ループをカバーできます:
import os, time, requests
API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"}
def submit(prompt: str, duration: int = 5, resolution: str = "720p",
aspect_ratio: str = "9:16", **extra) -> str:
r = requests.post(API, headers=HEADERS, json={
"model": "seedance-2.0-fast",
"input": {"prompt": prompt, "duration": duration,
"resolution": resolution, "aspect_ratio": aspect_ratio, **extra},
}, timeout=60)
data = r.json()
task_id = (data.get("data") or {}).get("taskId")
if not task_id:
raise RuntimeError(f"submit failed: {data}")
return task_id
def wait(task_id: str, timeout_s: int = 900) -> dict:
deadline = time.time() + timeout_s
while time.time() < deadline:
task = requests.get(f"{API}/{task_id}", headers=HEADERS, timeout=30).json()["data"]
if task["status"] == "success":
return task
if task["status"] == "fail":
raise RuntimeError(f"task failed: {task.get('error')}")
time.sleep(8)
raise TimeoutError(task_id)
def make_clip(prompt: str, out_path: str, **kw):
task = wait(submit(prompt, **kw))
url = task["output"][0]["url"] # 有効期限あり——すぐにダウンロード
with open(out_path, "wb") as f:
f.write(requests.get(url, timeout=120).content)
5 秒の 720p レンダリングは通常 1〜2 分で完了します。負荷が高いときは、タイムアウトと判断するまで最大約 10 分を見込んでください。
画像から動画へ:固定フレームから始める
製品やブランドが主役のショート動画では、プロンプトのドリフトこそが本当のリスクです——画面にあなたの製品や皿を出したいのであって、モデルによる解釈ではありません。image_urls がこの問題を解決します:静止画を生成または撮影し、それを動かします。
task_id = submit(
"パンケーキの山が静かに落ち着き、湯気が立ち上り続け、その後蜂蜜が画面外から注がれ始め、最初の数滴が一番上のパンケーキに落ちる。ゆっくりと安定したハンドヘルド風の動き、暖かな朝の光。",
duration=5, resolution="720p", aspect_ratio="9:16",
image_urls=["https://your-cdn.example/pancake-still.jpg"],
)
構図、照明、被写体の位置は参照した静止画に固定されます——プロンプトは続いて起こる動きを描写するだけで済みます。冒頭のフレームがモデル自身の直感より重要なショート動画(一皿の料理、製品写真、ブランドのセット)には最適です。
1 日分のショート動画をバッチ生成する
/v1/tasks は非同期なので、バッチ生産とはつまりすべて送信してから回収するだけです。
briefs = [
("hook-pancakes", "クローズアップの縦型ショット:両手が黄金色のパンケーキを重ねていく……"),
("hook-latte", "縦型ショット:ミルクを注ぐと、淹れたてのラテから湯気が立ち上る……"),
("hook-citrus", "縦型マクロショット:ナイフが柑橘類を切り分ける……"),
]
tasks = {name: submit(p, duration=5) for name, p in briefs} # 並行して配信
for name, tid in tasks.items(): # 結果を回収
result = wait(tid)
url = result["output"][0]["url"]
open(f"{name}.mp4", "wb").write(requests.get(url, timeout=120).content)
課金は厳密に duration × rate なので、コストは予測可能なままです:
| プラン | 仕様 | コスト |
|---|---|---|
| ドラフト 1 回の反復 | 4 秒 · 480p | 約 $0.34 |
| 公開可能なショート動画 1 本 | 5 秒 · 720p | 約 $0.89 |
| ショート動画 5 本(毎日のバッチ) | 5 × 5 秒 · 720p | 約 $4.43 |
| スタイル一致バッチ | 5 秒 · 720p で reference_video_urls を使用 |
1 本あたり約 $0.54 |
実際にうまくいくワークフロー:すべてのアイデアを 480p でドラフトし、公開する価値のあるものだけを残し、それらだけを 720p で再レンダリングします。繰り返す価値のあるスタイルを見つけたら、reference_video_urls で新規 720p レンダリングより低い秒単価でスタイルを固定できます。
フィード向けのプロンプトのコツ
テストレンダリングで実際に出力を形作った要素、特にショート動画向けのもの:
- 画面を縦型として描写し、
aspect_ratio: "9:16"を一致させる。16:9 のシーン向けに書かれたプロンプトを 9:16 に強制すると中央でクロップされます。最初から近距離の縦型構図(上のパンケーキのショート動画のように)を描写すれば、被写体が画面を埋めます。 - セットではなく動きから始める。フィードのショート動画は冒頭の瞬間にすでに何かをしている必要があります——手がすでに重ねている、蜂蜜がすでに注がれ始めている——報われる前にゆっくりした定場ショットを入れるのではありません。
- 1 本につき明確なアクションは 1 つ。上の 5 秒レンダリングは順番にちょうど 2 つのことを行い(重ねる、そして注ぐ)、明快に読めます。無関係な 3 つのアクションを 1 本に詰め込むと、どれもぼやけてしまいがちです。
- 照明と素材を明示する。「暖かな朝の光」「立ち上る湯気」「きらめき」——具体的な感覚的ディテールこそが、具体的で食欲をそそるレンダリングを凡庸なものと区別する鍵です。
よくある質問
seedance-2.0-fast は特に TikTok や Reels に適していますか?
はい——ネイティブな 9:16 対応と秒単位課金(1 本あたりの固定料金ではない)により、複数の短い候補をレンダリングして最も強いものを残す投稿リズムに非常に適しています。
ショート動画 1 本にいくらかかりますか?
720p では、コストは 長さ(秒)× $0.1772 です。5 秒のショート動画は $0.886、10 秒のショート動画は $1.772 です。480p では料率が 1 秒あたり $0.0843 まで下がります。バッチ全体の予算を立てる前に、必ず価格ページで最新の料率を確認してください。
テキストからのみ生成するのではなく、静止画を動かすことはできますか?
はい、リクエストの image_urls で可能です——上の画像から動画へのセクションをご覧ください。特定の製品、皿、セットを撮影時とまったく同じように登場させる必要がある場合、より信頼できる方法です。
生成できる最短と最長のショート動画はどのくらいですか?
duration は 4〜15 秒の整数を受け付けます。秒の小数部分はサポートされていません。
解像度はピクセルサイズと価格以外に何か影響しますか?
スキーマ自体には影響しません——resolution は出力サイズと毎秒料率だけを制御します。構図と動きは完全にプロンプトと aspect_ratio によって決まります。
まとめ
seedance-2.0-fast でのショート動画制作は、1 つの非同期エンドポイント、3 つの必須フィールド、そして反復してから決めることを後押しする秒単位課金に集約されます:縦型コンセプトを 480p でドラフトし、特定の製品や被写体を完全に正確に登場させる必要がある場合は image_urls で勝ち筋の冒頭フレームを固定し、残す最終版を 720p で再レンダリングします。API キーを取得し、このガイド冒頭のリクエストから始めてください——seedance-2.0-fast のモデルページには完全なパラメータリファレンスと最新価格があり、さらに深く進めます。