Smithery Logo
MCPsSkillsDocsPricing
Login
NewFlame, an assistant that learns and improves. Available onTelegramSlack
    jeremylongshore

    klingai-camera-control

    jeremylongshore/klingai-camera-control
    Design
    1,221

    About

    SKILL.md

    Install

    • Telegram
      Telegram
    • Slack
      Slack
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    • Download skill
    ├─
    ├─
    └─
    Smithery Logo

    Give agents more agency

    Resources

    DocumentationPrivacy PolicySystem Status

    Company

    PricingAboutBlog

    Connect

    © 2026 Smithery. All rights reserved.

    About

    Manage control camera movements in Kling AI video generation. Use when creating cinematic effects, dynamic shots, or specific camera movements...

    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 Type Config Field Value Description
    Pan right horizontal 5-8 Slow pan, good for landscapes
    Pan left horizontal -5 to -8 Reveal from right to left
    Tilt up vertical 5-8 Upward reveal (buildings, trees)
    Tilt down vertical -5 to -8 Downward motion
    Zoom in zoom 5-10 Focus on subject, dramatic
    Zoom out zoom -5 to -10 Reveal, establishing shot
    Dutch tilt roll 3-5 Unsettling, artistic angle
    Push in tilt 3-5 Dolly forward (depth effect)
    Pull back tilt -3 to -5 Dolly backward (reveal)

    Intensity Guidelines

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

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

    Error Handling

    Error Cause Fix
    400 invalid camera config Multiple non-zero values in simple mode Set only one field to non-zero
    Jerky motion Value too high Reduce to 4-6 range
    No visible movement Value too low (1-2) Increase to 3+
    Mutual exclusivity error Combined with masks/image_tail Use only camera_control OR masks

    Resources

    • Camera Control Guide
    • Motion Control Guide
    • Developer Portal
    Recommended Servers
    Browserbase
    Browserbase
    Nanobanana
    Nanobanana
    vastlint - IAB XML VAST validator and linter
    vastlint - IAB XML VAST validator and linter
    Repository
    jeremylongshore/claude-code-plugins-plus-skills
    Files