Claude-code-plugins-plus-skills klingai-text-to-video
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-text-to-video" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-klingai-text-to-video && rm -rf "$T"
manifest:
plugins/saas-packs/klingai-pack/skills/klingai-text-to-video/SKILL.mdsource content
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 |
|---|---|---|---|
| string | Yes | Model version (see model catalog) |
| string | Yes | Video description, max 2500 chars |
| string | No | What to exclude from generation |
| string | Yes | or seconds |
| string | No | (default), , , etc. |
| string | No | (default) or |
| float | No | Prompt adherence (0.0-1.0, default 0.5) |
| object | No | Camera movement config |
| 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 |
|---|---|---|
invalid prompt | Empty or >2500 chars | Check prompt length |
invalid model | Unsupported | Use valid model ID from catalog |
insufficient credits | Not enough credits | Top up account |
| Content policy violation or complexity | Simplify prompt, remove restricted content |