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.zipInstalls 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 videosKey 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
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
| Parameter | Type | Required | Description |
|---|---|---|---|
model_name | string | Yes | Model version (see model catalog) |
prompt | string | Yes | Video description, max 2500 chars |
negative_prompt | string | No | What to exclude from generation |
duration | string | Yes | "5" or "10" seconds |
aspect_ratio | string | No | "16:9" (default), "9:16", "1:1", etc. |
mode | string | No | "standard" (default) or "professional" |
cfg_scale | float | No | Prompt adherence (0.0-1.0, default 0.5) |
camera_control | object | No | Camera movement config |
callback_url | string | No | Webhook 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
| Technique | Example |
|---|---|
| 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
| Duration | Standard | Professional |
|---|---|---|
| 5 seconds | 10 credits | 35 credits |
| 10 seconds | 20 credits | 70 credits |
Error Handling
| Error | Cause | Fix |
|---|---|---|
400 invalid prompt | Empty or >2500 chars | Check prompt length |
400 invalid model | Unsupported model_name | Use valid model ID from catalog |
402 insufficient credits | Not enough credits | Top up account |
task_status: failed | Content policy violation or complexity | Simplify 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.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| klingai-text-to-video (this skill) | 1 | 27d | Caution | Beginner |
| massgen-develops-massgen | 1 | 5mo | Review | Advanced |
| wox-plugin-creator | 1 | 1mo | Review | Intermediate |
| code-execution | 1 | 9mo | No flags | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
massgen-develops-massgen
massgen
Guide for using MassGen to develop and improve itself. This skill should be used when agents need to run MassGen experiments programmatically (using automation mode) OR analyze terminal UI/UX quality (using visual evaluation tools). These are mutually exclusive workflows for different improvement goals.
wox-plugin-creator
Wox-launcher
Create and scaffold Wox plugins (nodejs, python, script-nodejs, script-python). Use when cloning official SDK templates, generating script plugin templates, or preparing plugins for publish.
code-execution
mhattingpete
Execute Python code locally with marketplace API access for 90%+ token savings on bulk operations. Activates when user requests bulk operations (10+ files), complex multi-step workflows, iterative processing, or mentions efficiency/performance.
mcp-chaining
parcadei
Research-to-implement pipeline chaining 5 MCP tools with graceful degradation
windsurf-sdk-patterns
jeremylongshore
Apply production-ready Windsurf SDK patterns for TypeScript and Python. Use when implementing Windsurf integrations, refactoring SDK usage, or establishing team coding standards for Windsurf. Trigger with phrases like "windsurf SDK patterns", "windsurf best practices", "windsurf code patterns", "idiomatic windsurf".
skills
emergencescience
Instructions for AI coding agents (Claude Code, Hermes, Cursor, etc.) contributing to this project.