klingai-camera-control

v2026.09.24

Control camera movements in Kling AI video generation. Use when creating cinematic shots, pans, tilts, zooms, or dolly moves. Trigger with phrases like 'klingai camera', 'kling ai camera motion', 'klingai cinematic', 'klingai pan zoom'.

GitHub
安装命令
npx skhub add jeremylongshore/klingai-camera-control
Markdown
SKILL.md

Kling AI Camera Control

Overview

Add controlled camera movements to text-to-video and image-to-video generation using the camera_control parameter. Supports pan, tilt, zoom, roll, and dolly. Available on v1.6+ models.

Supports: POST /v1/videos/text2video and POST /v1/videos/image2video

Camera Control Parameters

"camera_control": {
    "type": "simple",     # "simple" = one movement axis
    "config": {
        "horizontal": 0,  # Pan: -10 (left) to 10 (right)
        "vertical": 0,    # Tilt: -10 (down) to 10 (up)
        "zoom": 0,         # Zoom: -10 (out) to 10 (in)
        "roll": 0,         # Roll: -10 (CCW) to 10 (CW)
        "pan": 0,          # Dolly: -10 (left) to 10 (right)
        "tilt": 0,         # Dolly: -10 (down) to 10 (up)
    }
}

Rule: For type: "simple", only ONE field in config can be non-zero.

Cinematic Shot Examples

Slow Pan Right

response = requests.post(f"{BASE}/videos/text2video", headers=get_headers(), json={
    "model_name": "kling-v2-6",
    "prompt": "A medieval castle on a cliff at sunrise, fog in the valley below",
    "duration": "5",
    "mode": "professional",
    "camera_control": {
        "type": "simple",
        "config": {"horizontal": 5, "vertical": 0, "zoom": 0, "roll": 0, "pan": 0, "tilt": 0}
    },
})

Dramatic Zoom In

response = requests.post(f"{BASE}/videos/text2video", headers=get_headers(), json={
    "model_name": "kling-v2-6",
    "prompt": "Close-up of a tiger's face, intense eyes, jungle background",
    "duration": "5",
    "mode": "professional",
    "camera_control": {
        "type": "simple",
        "config": {"horizontal": 0, "vertical": 0, "zoom": 7, "roll": 0, "pan": 0, "tilt": 0}
    },
})

Tilt Up Reveal

response = requests.post(f"{BASE}/videos/text2video", headers=get_headers(), json={
    "model_name": "kling-v2-6",
    "prompt": "A skyscraper, starting from the base looking up, glass and steel",
    "duration": "5",
    "mode": "standard",
    "camera_control": {
        "type": "simple",
        "config": {"horizontal": 0, "vertical": 8, "zoom": 0, "roll": 0, "pan": 0, "tilt": 0}
    },
})

Dolly Forward

response = requests.post(f"{BASE}/videos/text2video", headers=get_headers(), json={
    "model_name": "kling-v2-master",
    "prompt": "Walking through a dark forest, trees on both sides, moonlight filtering through",
    "duration": "5",
    "mode": "standard",
    "camera_control": {
        "type": "simple",
        "config": {"horizontal": 0, "vertical": 0, "zoom": 0, "roll": 0, "pan": 0, "tilt": 5}
    },
})

Camera Control with Image-to-Video

# Animate a landscape photo with a slow zoom out
response = requests.post(f"{BASE}/videos/image2video", headers=get_headers(), json={
    "model_name": "kling-v2-1",
    "image": "https://example.com/landscape.jpg",
    "prompt": "Gentle wind, clouds moving slowly",
    "duration": "5",
    "camera_control": {
        "type": "simple",
        "config": {"horizontal": 0, "vertical": 0, "zoom": -5, "roll": 0, "pan": 0, "tilt": 0}
    },
})

Important: For image-to-video, camera_control is mutually exclusive with image_tail, dynamic_masks, and static_mask.

Shot Type Quick Reference

Shot TypeConfig FieldValueDescription
Pan righthorizontal5-8Slow pan, good for landscapes
Pan lefthorizontal-5 to -8Reveal from right to left
Tilt upvertical5-8Upward reveal (buildings, trees)
Tilt downvertical-5 to -8Downward motion
Zoom inzoom5-10Focus on subject, dramatic
Zoom outzoom-5 to -10Reveal, establishing shot
Dutch tiltroll3-5Unsettling, artistic angle
Push intilt3-5Dolly forward (depth effect)
Pull backtilt-3 to -5Dolly backward (reveal)

Intensity Guidelines

Value RangeEffect
1-3Subtle, barely perceptible
4-6Moderate, natural-feeling
7-8Strong, dramatic
9-10Maximum, may feel unnatural

Recommendation: Start at 4-6 for most cinematic shots. Go higher for dramatic reveals or action sequences.

Error Handling

ErrorCauseFix
400 invalid camera configMultiple non-zero values in simple modeSet only one field to non-zero
Jerky motionValue too highReduce to 4-6 range
No visible movementValue too low (1-2)Increase to 3+
Mutual exclusivity errorCombined with masks/image_tailUse only camera_control OR masks

Prerequisites

  • An approved visual brief, rights-cleared or synthetic source material, sandbox workspace, content-policy review, credit cap, draft-only destination, and removal owner.

Instructions

  1. Test one camera preset on a watermarked sandbox draft; do not use private or unlicensed source material.
  2. Verify motion settings, policy and rights outcome, duration, credit estimate, and draft destination before submission.
  3. Review the canary for unwanted movement or prohibited content, then halt and remove it on any policy, rights, or budget concern.
  4. Promote only after owner approval and retain a redacted receipt with the asset removed at the agreed boundary.

Output

Produce a camera-control receipt with brief classification, preset values, mode/duration, credit estimate, policy/rights outcome, draft status, approver, and retention/removal reference. Exclude prompts, identities, and asset URLs.

Examples

brief=synthetic-product-shot; pan=4; tilt=0; mode=standard; policy=pass; destination=draft-only; cleanup=24h is safe for review.

Resources

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

MIT

源路径

skills/.curated/klingai-camera-control

默认分支

main

最新提交

e5a6c3b

Tree SHA

c2dc8e8