KL

klingai-text-to-video

A skill to generate videos from text prompts using Kling AI's API, supporting various models, aspect ratios, and camera controls.

Install

mkdir -p .claude/skills/klingai-text-to-video && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/8844" && unzip -o skill.zip -d .claude/skills/klingai-text-to-video && rm skill.zip

Installs to .claude/skills/klingai-text-to-video

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Generate videos from text prompts with Kling AI. Use when creating videos
73 chars✓ has a “when” trigger
Beginner

Key capabilities

  • Generate videos from text prompts using Kling AI.
  • Specify video duration as 5 or 10 seconds.
  • Apply negative prompts to exclude elements from video generation.
  • Configure camera movements like pan, tilt, zoom, and roll.
  • Generate synchronized native audio for videos with model v2.6+.

How it works

The skill sends a POST request to the Kling AI text2video endpoint with the specified parameters. It then provides a task ID to monitor the video generation process.

Inputs & outputs

You give it
A text prompt, model name, and desired duration, with optional parameters like negative prompt, aspect ratio, mode, cfg_scale, camera_control, and callback_url.
You get back
A task ID for the video generation job, which can then be polled for completion and the video URL.

When to use klingai-text-to-video

  • Build automated text-to-video pipelines
  • Experiment with prompt engineering for video
  • Configure custom camera movements and aspect ratios
  • Generate professional grade video content via API

About this skill

Kling AI Text-to-Video

Overview

Generate videos from text prompts using the /v1/videos/text2video endpoint. Supports models v1 through v2.6, standard/professional modes, camera control, negative prompts, and native audio (v2.6+).

Endpoint: POST https://api.klingai.com/v1/videos/text2video

Request Parameters

ParameterTypeRequiredDescription
model_namestringYesModel version (see model catalog)
promptstringYesVideo description, max 2500 chars
negative_promptstringNoWhat to exclude from generation
durationstringYes"5" or "10" seconds
aspect_ratiostringNo"16:9" (default), "9:16", "1:1", etc.
modestringNo"standard" (default) or "professional"
cfg_scalefloatNoPrompt adherence (0.0-1.0, default 0.5)
camera_controlobjectNoCamera movement config
callback_urlstringNoWebhook URL for completion notification

Complete Example — Python

import jwt, time, os, requests

BASE = "https://api.klingai.com/v1"

def get_headers():
    ak, sk = os.environ["KLING_ACCESS_KEY"], os.environ["KLING_SECRET_KEY"]
    token = jwt.encode(
        {"iss": ak, "exp": int(time.time()) + 1800, "nbf": int(time.time()) - 5},
        sk, algorithm="HS256", headers={"alg": "HS256", "typ": "JWT"}
    )
    return {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}

# Create text-to-video task
response = requests.post(f"{BASE}/videos/text2video", headers=get_headers(), json={
    "model_name": "kling-v2-6",
    "prompt": "Aerial drone shot of a coral reef at golden hour, "
              "tropical fish swimming through crystal clear water, "
              "sun rays penetrating the surface, cinematic 4K",
    "negative_prompt": "blurry, low quality, distorted, watermark",
    "duration": "5",
    "aspect_ratio": "16:9",
    "mode": "professional",
    "cfg_scale": 0.5,
})

task = response.json()
task_id = task["data"]["task_id"]

# Poll for completion
while True:
    time.sleep(15)
    result = requests.get(
        f"{BASE}/videos/text2video/{task_id}", headers=get_headers()
    ).json()

    status = result["data"]["task_status"]
    if status == "succeed":
        video = result["data"]["task_result"]["videos"][0]
        print(f"Video URL: {video['url']}")
        print(f"Duration: {video['duration']}s")
        break
    elif status == "failed":
        raise RuntimeError(result["data"]["task_status_msg"])
    # else: submitted/processing — keep polling

With Camera Control

# Camera movement types: pan, tilt, zoom, roll
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",
    "duration": "5",
    "mode": "standard",
    "camera_control": {
        "type": "simple",
        "config": {
            "horizontal": 5,    # pan right (negative = left), range -10 to 10
            "vertical": 0,      # tilt (negative = down, positive = up)
            "zoom": 3,          # zoom in (positive) or out (negative)
            "roll": 0,          # rotation
            "pan": 0,           # dolly left/right
            "tilt": -2,         # dolly up/down
        }
    },
})

Rule: Only one non-zero field in config for type: "simple".

With Native Audio (v2.6 only)

response = requests.post(f"{BASE}/videos/text2video", headers=get_headers(), json={
    "model_name": "kling-v2-6",
    "prompt": "A jazz band performing in a dimly lit club, saxophone solo, "
              "audience clapping, warm amber lighting",
    "duration": "10",
    "mode": "professional",
    "motion_has_audio": True,  # generates synchronized audio
})

Prompt Engineering Tips

TechniqueExample
Scene + action + style"A samurai walking through cherry blossoms, cinematic slow motion"
Lighting cues"golden hour", "neon-lit", "overcast diffused light"
Camera language"close-up", "wide establishing shot", "tracking shot"
Negative prompt"blurry, watermark, text overlay, distorted faces"
Material/texture"brushed steel", "hand-painted watercolor", "photorealistic"

Cost Reference

DurationStandardProfessional
5 seconds10 credits35 credits
10 seconds20 credits70 credits

Error Handling

ErrorCauseFix
400 invalid promptEmpty or >2500 charsCheck prompt length
400 invalid modelUnsupported model_nameUse valid model ID from catalog
402 insufficient creditsNot enough creditsTop up account
task_status: failedContent policy violation or complexitySimplify prompt, remove restricted content

Resources

When not to use it

  • When generating videos from images or existing videos.
  • When the prompt exceeds 2500 characters.

Limitations

  • Prompt length is limited to a maximum of 2500 characters.
  • Only one non-zero field is allowed in camera_control config for 'simple' type.
  • Native audio generation is only available for model v2.6+.

How it compares

This skill automates the video generation process from text, allowing for programmatic control over video parameters, unlike manual creation through a user interface.

Compared to similar skills

klingai-text-to-video side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
klingai-text-to-video (this skill)127dCautionBeginner
massgen-develops-massgen15moReviewAdvanced
wox-plugin-creator11moReviewIntermediate
code-execution19moNo flagsAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

More by jeremylongshore

View all by jeremylongshore

analyzing-logs

jeremylongshore

Analyze application logs to detect performance issues, identify error patterns, and improve stability by extracting key insights.

14123

ollama-setup

jeremylongshore

Configure auto-configure Ollama when user needs local LLM deployment, free AI alternatives, or wants to eliminate hosted API costs. Trigger phrases: "install ollama", "local AI", "free LLM", "self-hosted AI", "replace OpenAI", "no API costs". Use when appropriate context detected. Trigger with relevant phrases based on skill purpose.

1167

backtesting-trading-strategies

jeremylongshore

Backtest crypto and traditional trading strategies against historical data. Calculates performance metrics (Sharpe, Sortino, max drawdown), generates equity curves, and optimizes strategy parameters. Use when user wants to test a trading strategy, validate signals, or compare approaches. Trigger with phrases like "backtest strategy", "test trading strategy", "historical performance", "simulate trades", "optimize parameters", or "validate signals".

1071

generating-database-seed-data

jeremylongshore

Process this skill enables AI assistant to generate realistic test data and database seed scripts for development and testing environments. it uses faker libraries to create realistic data, maintains relational integrity, and allows configurable data volumes. u... Use when working with databases or data models. Trigger with phrases like 'database', 'query', or 'schema'.

1033

cursor-codebase-indexing

jeremylongshore

Execute set up and optimize Cursor codebase indexing. Triggers on "cursor index setup", "codebase indexing", "index codebase", "cursor semantic search". Use when working with cursor codebase indexing functionality. Trigger with phrases like "cursor codebase indexing", "cursor indexing", "cursor".

885

testing-mobile-apps

jeremylongshore

Execute mobile app testing on iOS and Android devices/simulators. Use when performing specialized testing. Trigger with phrases like "test mobile app", "run iOS tests", or "validate Android functionality".

810

Search skills

Search the agent skills registry