Claude-code-plugins-plus klingai-upgrade-migration

install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/klingai-pack/skills/klingai-upgrade-migration" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-klingai-upgrade-migration && rm -rf "$T"
manifest: plugins/saas-packs/klingai-pack/skills/klingai-upgrade-migration/SKILL.md
source content

Kling AI Upgrade & Migration

Overview

Guide for migrating between Kling AI model versions. Covers breaking changes, parameter differences, feature availability, and parallel testing strategies.

Version History

VersionReleaseKey Changes
v1.02024-06Initial T2V + I2V
v1.52024-091080p, motion brush, I2V-only model
v1.62024-11Lip sync, camera paths, effects API
v2.02025-03Quality leap,
kling-v2-master
v2.12025-06Optimized I2V,
kling-v2-1-master
for T2V
v2.5 Turbo2025-0940% faster, best speed/quality ratio
v2.62025-12Native audio, 30-48 FPS, highest quality

Migration: v1.x to v2.x

# v1.x request
body = {
    "model_name": "kling-v1-6",
    "prompt": "A sunset over mountains",
    "duration": "5",
    "mode": "standard",
}

# v2.x -- only model_name changes
body["model_name"] = "kling-v2-master"

Breaking changes:

  • kling-v2-1
    is I2V-only (no text-to-video support)
  • Camera control intensities produce different results at same values
  • Generation times differ (v2.x generally slower, higher quality)

Migration: v2.x to v2.6 with Audio

body["model_name"] = "kling-v2-6"
body["motion_has_audio"] = True  # NEW: synchronized audio

# Cost impact: audio multiplies credits 5x
# 5s standard: 10 -> 50 credits

Feature Availability Matrix

Featurev1.0v1.5v1.6v2.0v2.1v2.5Tv2.6
Text-to-videoYYYYI2V onlyYY
Image-to-videoYYYYYYY
Camera control--YYYYY
Motion brush-YYYYYY
Lip sync--YYYYY
Effects--YYYYY
Native audio------Y
1080p-YYYYYY

Parallel A/B Comparison

def compare_models(prompt, models):
    """Generate same prompt across models for comparison."""
    results = {}
    for model in models:
        r = requests.post(f"{BASE}/videos/text2video", headers=get_headers(), json={
            "model_name": model, "prompt": prompt, "duration": "5", "mode": "standard",
        }).json()
        results[model] = {"task_id": r["data"]["task_id"], "start": time.time()}

    # Poll all
    while any("url" not in r for r in results.values()):
        for model, info in results.items():
            if "url" in info or "error" in info:
                continue
            r = requests.get(
                f"{BASE}/videos/text2video/{info['task_id']}", headers=get_headers()
            ).json()
            if r["data"]["task_status"] == "succeed":
                info["url"] = r["data"]["task_result"]["videos"][0]["url"]
                info["time"] = round(time.time() - info["start"])
            elif r["data"]["task_status"] == "failed":
                info["error"] = r["data"].get("task_status_msg")
        time.sleep(10)

    for model, info in results.items():
        print(f"{model}: {info.get('url', info.get('error'))} ({info.get('time', '?')}s)")
    return results

Rollback Strategy

# Feature flag for instant rollback
KLING_MODEL = os.environ.get("KLING_MODEL_VERSION", "kling-v2-master")
body["model_name"] = KLING_MODEL

# To rollback: export KLING_MODEL_VERSION=kling-v1-6

Resources