Michael Johnson2026-06-30

Kling 3.0 Motion Control 사용법: 개발자 가이드 (웹 + API)

GPTProto를 통한 Kling 3.0 Motion Control 개발자 가이드 — pro와 std 비교, 입력 제한, 프롬프트 팁, 실행 가능한 API 코드(Python + cURL).

Kling 3.0 Motion Control 사용법: 개발자 가이드 (웹 + API)

Kling 3.0 Motion Control은 정적인 캐릭터 이미지에 참조 영상의 움직임을 적용합니다. 캐릭터 이미지와 사람이 움직이는 영상, 두 가지 입력을 제공하면 캐릭터가 자신의 얼굴, 의상, 외형은 유지하면서 동일한 안무를 수행하는 새로운 클립을 반환합니다.
 
이는 텍스트-모션 변환이 아니라 모션 전이입니다. 프롬프트로 동작을 설명하고 모델이 해석하기를 기대하는 대신, 동작을 프레임 단위로 직접 보여줍니다. 따라서 반복 가능한 캐릭터 애니메이션, 댄스, 제스처 작업에서 훨씬 안정적입니다.
 
이 가이드에서는 두 가지 방법을 모두 다룹니다. 일회성 클립을 위한 Kling 웹 앱과 Motion Control을 파이프라인에 연결하기 위한 GPTProto API입니다. 입력 및 제한 사항, `pro`와 `std` 등급, 프롬프트 작성법, 실행 가능한 전체 코드, 가격, 크레딧을 사용하기 전에 알아두어야 할 주요 실패 사례를 살펴봅니다.

목차

What Is Kling 3.0 Motion Control

Motion Control takes one character image and one driving (reference) video, then generates a video in which the character matches the reference's movements, facial expressions, and — optionally — camera orientation. The visual identity comes from your image; the motion comes from your video.

Spec Detail
Task type Image-to-video only (a character image is required; no text-to-video Motion Control)
Inputs 1 character image + 1 driving video (+ optional prompt / negative prompt)
Reference video length 3–30 seconds; output length aligns to the reference
Min extractable motion 3 seconds of continuous action
Image resolution Short edge ≥ 340px, long edge ≤ 3850px
Multi-character video The character occupying the largest frame area drives the motion
Tiers std (720p) and pro (1080p)
Orientation modes image (max 10s output) or video (max 30s output)

What changed from 2.6 to 3.0

If you used Motion Control on Kling 2.6, the 3.0 upgrade is about consistency and physics rather than a new interface:

  • Better identity preservation — less face drift across the clip.
  • Grounded physics — feet stay anchored instead of "sliding on ice."
  • Element consistency — multi-angle face and outfit detail hold up better through turns.
  • Longer outputs — up to 30 seconds when orientation follows the video.
  • Faster inference — materially quicker turnaround per generation.
    One behavior to keep in mind: 3.0 Motion Control transfers movement only. It does not blend scene elements from the driving video into your character — the output sticks to the character image you supplied.

Kling 3.0 pro Motion Control vs Kling 3.0 std Motion Control

The two tiers run the same model with different output quality. Use std while you iterate on the reference video and prompt, then switch to pro for the final render.

  Kling 3.0 std Motion Control Kling 3.0 pro Motion Control
Output resolution 720p 1080p
Best for Iteration, drafts, high-volume runs Final delivery, client work
Speed Faster Slightly slower
Price (Per Time) $0.3024 (20% off, market $0.378) $0.4032 (20% off, market $0.504)
API model slug kling-v3.0-std kling-v3.0-pro

"Per Time" means the final cost scales with the generation you run; the model page's playground shows the live total before you submit.


Input Requirements (Read This First — It Saves Credits)

Most failed generations come from bad inputs, not the model. The single biggest predictor of a clean result is the quality of frame 1 and the driving video.

Character image

  • One person, clean half-body or full-body framing.
  • Face clearly visible and reasonably large in the frame — small faces force the model to invent detail, and likeness drifts.
  • Match the framing roughly to your reference video (don't pair a head-and-shoulders portrait with a full-body dance video).
    Driving (reference) video
  • 3–30 seconds, single continuous shot, no cuts or hard camera moves — cuts can truncate the output.
  • One subject, full body and head visible and unobstructed.
  • Steady, moderate motion. Very fast or complex action may make the output shorter than the input, because only valid continuous segments are extracted.
  • Keep hands visible if you need good hands in the result.
    If less than 3 seconds of usable continuous motion can be extracted, the generation can fail and — per Kling's terms — those credits are not refunded. Validate your reference clip before submitting at scale.

How to Use Kling 3.0 Motion Control in the Web App

For one-off clips, the Kling web UI is the fastest route:

  1. Open Kling, select the 3.0 model, then click Motion Control.
  2. Upload your driving video into the "character actions to mimic" box.
  3. Upload your character image into the box on the right.
  4. (Optional) Add a prompt describing the scene — lighting, environment, camera. Do not describe the action; that comes from the video.
  5. Set character orientation: follow the video (up to 30s) or the image (up to 10s).
  6. Choose std (720p) or pro (1080p) and click Generate.
    That's enough for manual work. The rest of this guide is for automating it.

How to Use the Kling 3.0 Motion Control API

This is the part most teams come for: a guide to the Kling 3.0 Motion Control API you can run end to end. GPT Proto exposes Kling through a unified, OpenAI-compatible account with a single key, and the video tasks follow a create-then-poll pattern.

Step 1 — Get an API key

Sign up at gptproto.com/dashboard and generate a key. One key works across every model on the platform. Export it so the examples pick it up:

export GPTPROTO_API_KEY="your_key_here"

Step 2 — Create a Motion Control task

You submit the character image, the driving video, the tier, and an optional prompt. The API returns a task id you'll poll for the result.

Note: GPT Proto authenticates Kling with a Bearer token in the Authorization header. The Motion Control task takes image (character), video (driving clip), prompt, negative_prompt, character_orientation, and keep_original_sound.

cURL

curl -X POST "https://gptproto.com/api/v3/kling/kling-v3.0-pro/motion-control" \
  -H "Authorization: Bearer $GPTPROTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "https://example.com/character.jpg",
    "video": "https://example.com/driving-motion.mp4",
    "prompt": "studio lighting, plain grey background, static camera",
    "negative_prompt": "warped background, extra fingers, motion blur",
    "character_orientation": "video",
    "keep_original_sound": false
  }'

Swap kling-v3.0-pro for kling-v3.0-std to run the 720p tier.

Step 3 — Poll for the result

Video generation is asynchronous. Take the id from the create response and poll the predictions endpoint until status is finished, then read the output URL.

Python (end to end)

import os
import time
import requests
 
BASE = "https://gptproto.com/api/v3"
API_KEY = os.environ["GPTPROTO_API_KEY"]
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
 
def create_motion_control(image_url, video_url, prompt="", negative_prompt="",
                          tier="pro", orientation="video"):
    url = f"{BASE}/kling/kling-v3.0-{tier}/motion-control"
    payload = {
        "image": image_url,                       # character identity
        "video": video_url,                       # driving motion (3-30s, single shot)
        "prompt": prompt,                         # describe the SCENE, not the action
        "negative_prompt": negative_prompt,       # artifacts to suppress
        "character_orientation": orientation,     # "video" (<=30s) or "image" (<=10s)
        "keep_original_sound": False,
    }
    r = requests.post(url, json=payload, headers=HEADERS, timeout=60)
    r.raise_for_status()
    return r.json()["data"]["id"]
 
def wait_for_result(task_id, interval=5, timeout=600):
    deadline = time.time() + timeout
    while time.time() < deadline:
        r = requests.get(f"{BASE}/predictions/{task_id}/result", headers=HEADERS, timeout=60)
        r.raise_for_status()
        data = r.json()["data"]
        status = data.get("status")
        if status in ("succeeded", "completed"):
            return data["outputs"]          # list of output video URLs
        if status in ("failed", "error"):
            raise RuntimeError(data.get("error") or "generation failed")
        time.sleep(interval)
    raise TimeoutError(f"task {task_id} did not finish within {timeout}s")
 
if __name__ == "__main__":
    task_id = create_motion_control(
        image_url="https://example.com/character.jpg",
        video_url="https://example.com/driving-motion.mp4",
        prompt="studio lighting, plain grey background, static camera",
        tier="pro",
        orientation="video",
    )
    print("task:", task_id)
    outputs = wait_for_result(task_id)
    print("video:", outputs)

Confirm the exact status strings against the live response — the image-to-video docs expose data.status, data.outputs, and data.error, which is what the poller reads here.


Writing a Good Kling 3.0 Motion Control Prompt

The prompt in Motion Control is not where the action lives — the driving video handles that. A Kling 3.0 Motion Control prompt should describe everything except movement: the setting, lighting, wardrobe details, mood, and camera behavior.

Do describe:

  • Environment and background ("neon-lit alley at night", "plain white studio cyclorama")
  • Lighting ("soft key light from the left", "hard rim light")
  • Camera intent ("static camera", "locked-off tripod shot")
  • Style notes ("cinematic, shallow depth of field")
    Don't describe:
  • The action itself ("waving", "dancing", "turning around") — that comes from the reference video and a conflicting prompt can fight it.
    A reliable starting template:
[scene/background], [lighting], [camera behavior], [style]

Example: plain grey studio background, soft even lighting, static camera, cinematic

Use the negative prompt to suppress recurring artifacts: warped background, extra fingers, motion blur, duplicate limbs.


Orientation and Duration

character_orientation does double duty — it controls how the character is posed and caps the output length:

Setting Behavior Max output
video Character follows the reference video's orientation and camera 30s
image Character keeps the image's orientation 10s

Rule of thumb: if identity drifts, try image; if motion feels stiff or under-transferred, try video. The output length tracks the reference video, so a 12-second result needs a ~12-second driving clip and the video orientation.


Common Problems and Fixes

Symptom Likely cause Fix
Warped / wobbling background Camera moving too aggressively Add static background / static camera to the prompt; add warped background to negative prompt
Face likeness drifts Face too small in the source image Use an image where the face fills more of the frame; try character_orientation: image
Output shorter than the reference Fast/complex motion; only continuous segments extracted Slow the action; use a single clean continuous take
Bad / mangled hands Hands hidden in the reference video Use a reference where hands stay visible
Generation truncated Cuts or camera moves in the reference Use one continuous shot, no edits

Pricing

GPT Proto bills per task, pay-as-you-go — no subscription floor. Pricing is "Per Time," so the final cost scales with the generation you run; the model page's playground shows the live total before you submit.

Model Tier Motion Control Per Time rate
kling-v3.0-pro pro (1080p) $0.4032 (20% off, market $0.504)
kling-v3.0-std std (720p) $0.3024 (20% off, market $0.378)

Live rates are on each model page.


Next Steps

크리에이티브 스튜디오

프로덕션 API로 이미지, 영상 등을 생성해 보세요.

만들기 시작하기
크리에이티브 스튜디오
관련 모델
모든 모델
Kling
20% OFF
Kling
20% OFF
Claude
20% OFF
Google
40% OFF

자주 묻는 질문

캐릭터 이미지 없이 Motion Control을 사용할 수 있나요?

아니요. Motion Control은 이미지-비디오 변환만 지원하므로 캐릭터 이미지가 필수입니다. 텍스트-비디오 Motion Control 모드는 없습니다.

출력 영상은 얼마나 길게 만들 수 있나요?

character_orientation: video에서는 최대 30초, image에서는 최대 10초입니다. 출력 길이는 참조 영상과 일치합니다.

std와 pro의 차이는 무엇인가요?

std는 720p로 출력되며 반복 작업에 더 저렴하고 빠릅니다. pro는 최종 납품을 위해 1080p로 출력합니다. 동일한 모델과 API 구조를 사용하며, 슬러그와 품질만 다릅니다.

참조 영상에 두 사람이 등장하면 어떻게 되나요?

프레임에서 가장 큰 영역을 차지하는 캐릭터가 움직임을 주도합니다. 예측 가능한 결과를 얻으려면 한 명만 등장하는 참조 영상을 사용하세요.

참조 영상의 오디오도 유지되나요?

활성화한 경우에만 유지됩니다(keep_original_sound: true). 여기의 예제에서는 기본적으로 꺼져 있습니다.
제목을 렌더링하는 AI 영화 포스터 만드는 방법 (2026)

제목을 렌더링하는 AI 영화 포스터 만드는 방법 (2026)

AI 영화 포스터에서 어려운 부분은 그림이 아닙니다. 어떤 이미지 모델이든 약 20초면 분위기 있는 주인공 샷을 만들어 줍니다. 진짜 어려운 부분은 포스터처럼 보이게 만드는 모든 요소입니다. 엉망이 되지 않은 제목, 실제로 읽을 수 있는 태그라인, 하단의 크레딧 블록, 정사각형이 아닌 실제 영화 포스터 같은 프레임이 필요합니다. 주말 동안 다섯 가지 장르로 포스터를 생성해 보니, 거의 모든 실패는 세 가지 중 하나로 귀결되었습니다 — 잘못된 비율, 텍스트를 넣을 공간 부족, 또는 모델에게 한 번에 그림과 함께 긴 타이포그래피 문단까지 그리도록 요청한 경우였습니다. 이 가이드는 이 세 가지 문제를 해결합니다. 장르별로 복사해 붙여 넣을 수 있는 프롬프트, 직접 찍은 사진을 포스터로 바꾸는 프롬프트 모음, 제목을 선명하게 만드는 2단계 방법, 그리고 다섯 장이 아니라 쉰 장을 만들고 싶을 때 사용할 수 있는 실행 가능한 API 호출까지 제공합니다. 두 모델이 작업을 나눠 맡습니다. gpt-image-2 는 정밀하고 다국어 텍스트를, Gemini 3 Pro Image (많은 사람이 Nano Banana Pro라고 부르는 모델)는 스타일과 4K 출력을 담당합니다. 두 모델 모두 GPTProto를 통해 실행되므로, 한 줄만 바꾸면 모델을 전환할 수 있습니다.

Schuyler Stacy | 2026-06-16

Seedance 2.5는 아직 출시되지 않았나요? 출시일과 현재까지 실제로 알려진 내용 (2026)

Seedance 2.5는 아직 출시되지 않았나요? 출시일과 현재까지 실제로 알려진 내용 (2026)

이번 주에 ByteDance의 Seed 페이지를 보고 또 보면서 Seedance 2.5가 올라오기를 기다렸습니다. 지금까지는 아무것도 없습니다. 모델 페이지도, 사양표도, 날짜도 없습니다. 바로 이 공백 때문에 이 글을 작성했습니다. 현재 Seedance 2.5에 관해 확신에 찬 글이 많이 떠돌고 있는데, 대부분 추측을 사실처럼 제시하고 있습니다. 여기서는 둘을 명확히 구분한 다음, 오늘 실제로 사용할 수 있는 것을 안내하겠습니다.

Tiffany Layne | 2026-06-23

API로 AI 인플루언서 만들기 (실제 운영 비용은 얼마일까)

API로 AI 인플루언서 만들기 (실제 운영 비용은 얼마일까)

대부분의 사람들이 처음 만든 AI 인플루언서는 두 번째 이미지에서 실패합니다. 첫 번째 렌더링은 멋져 보입니다 — 믿을 만한 얼굴과 괜찮은 조명 말이죠. 그런데 두 번째 게시물을 생성하면 광대뼈가 움직이고, 코가 더 넓어지고, 눈 색깔이 달라집니다. 전혀 다른 사람입니다. 세 번째 게시물은 또 다른 사람이고요. 결국 인플루언서가 아니라, 머리카락 색깔만 우연히 같은 낯선 사람들의 폴더를 갖게 됩니다. 이 검색 결과 상위에 표시되는 노코드 도구들은 버튼 하나 뒤에 이 문제를 숨깁니다. 사진을 업로드하고, 생성을 클릭하고, 결과를 받습니다. 이미지 5개를 만들든 500개를 만들든 월 $19에서 $99 정도의 구독료를 내면서 하나의 모델과 스타일에 묶여 있는 동안에는 괜찮습니다. 하지만 규모를 키우거나, 분위기를 바꾸거나, 일정에 맞춰 게시물 100개를 실행하려는 순간 문제가 됩니다. 이 가이드는 다른 길인 API를 선택합니다. SaaS 버튼을 클릭하는 것보다 설정할 일이 많습니다 — 몇 줄의 코드를 작성하고 API 키를 관리해야 하죠. 그 대신 각 장면을 어떤 모델로 렌더링할지 직접 제어하고, 월정액이 아닌 이미지 단위로 비용을 지불하며, 전체 파이프라인을 자동화할 수 있습니다. 마지막에는 하나의 고정된 정체성, 일관성 있는 게시물 묶음, 선택 사항인 세로형 릴, 그리고 — 다른 가이드들이 모두 건너뛰는 부분인 — 실제 게시물당 비용까지 갖추게 됩니다. 왜 이런 일을 하는지 맥락을 살펴보면, 바르셀로나 에이전시 The Clueless가 만든 AI 모델 Aitana L&oacute;pez는 월 최대 &euro;10,000, 평균 약 &euro;3,000을 벌어들입니다. 제작자들에 따르면 , Euronews가 보도한 내용입니다. 이 숫자를 기억해 두세요. 실제 제작 비용을 파악한 뒤 다시 돌아오겠습니다. 이 두 수치 사이의 차이가 바로 이 비즈니스의 핵심이기 때문입니다.

Schuyler Stacy | 2026-06-17