with one click
text-to-video
基于文本描述生成短视频(5s/10s),适用于电商营销、创意宣传、教育讲解等场景,异步轮询获取结果。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
基于文本描述生成短视频(5s/10s),适用于电商营销、创意宣传、教育讲解等场景,异步轮询获取结果。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Generate short videos from a static image using the Kling AI image-to-video API. Use this skill whenever the user wants to animate an image, create a video from a photo, turn a picture into a video clip, or generate AI video from an uploaded image.
图片生成与编辑(超级版),调用 GPT-Image-2 模型生成和编辑图片。需要 AI 画图、生成图片、编辑图片、多图融合、背景替换、风格转换、电商商品图合成、海报设计、插画创作时优先使用该工具。纯像素操作(文字叠加、加水印、裁剪、缩放)请改用 Pillow,不要触发本工具。
调用百度通用文字识别高精度版 OCR,对图片全部文字内容进行高精度检测识别,支持中英日韩等 20+ 语种,适用于文档数字化、多语言文本提取场景。
根据用户输入的主题自动生成完整 PPT 文件,返回封面图和下载链接;适用于办公汇报、教学课件、产品展示等需要快速生成 PPT 的场景。
识别飞机行程单图片,结构化提取24个字段(乘客、航班、票价、税费等);适用于差旅报销、财务管理、行程记录场景。
百度千帆AI搜索,实时检索全网网页/视频内容,返回结构化引用列表(标题/URL/摘要/日期)。用户需要实时信息、新闻、网页检索时使用。
| name | text-to-video |
| description | 基于文本描述生成短视频(5s/10s),适用于电商营销、创意宣传、教育讲解等场景,异步轮询获取结果。 |
| license | MIT |
通过百度千帆平台 Kling 模型,根据文字提示词自动生成 5 秒或 10 秒的视频内容(不含声音)。
| 项目 | 说明 |
|---|---|
| 认证模式 | platform_managed(密钥由平台注入,无需用户配置) |
| 第三方域名 | qianfan.baidubce.com |
| 支持平台 | Web、MiniProgram |
| 计费 | 原价 ¥130.00 / 折扣价 ¥85.00(仅创建任务接口计费,查询接口不计费) |
接口列表:
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| 创建文生视频任务 | POST | /beta/video/generations/kling/text2video | 提交生成任务,返回 task_id |
| 查询任务状态 | GET | /beta/video/generations/kling/text2video | 轮询任务状态,成功后返回视频 URL |
工作流:
用户提交 prompt
↓
POST /text2video → 返回 task_id
↓
每 5 秒轮询 GET /text2video?task_id=xxx
↓
task_status == "succeed" → 获取 videos[0].url
↓
将视频 URL 转存至 Supabase Storage(视频链接 30 天后失效)
此 API 为异步接口,需先提交任务获取 task_id,再轮询查询状态直至完成。
详见:
references/submit-api.md(创建文生视频任务)references/query-api.md(查询文生视频生成任务状态)完整异步工作流示例(生成期):
const apiKey = process.env["INTEGRATIONS_API_KEY"]!;
/**
* 创建文生视频任务
* @param prompt - 正向文本提示词,最大 2500 字符
* @param duration - 视频时长(秒),枚举值:5、10,默认 5
* @param modelName - 生成模型,枚举值:kling-v1、kling-v1-6、kling-v2-master、kling-v2-1-master
* @returns task_id
*/
async function submitTextToVideo(
prompt: string,
duration: string = "5",
modelName: string = "kling-v1-6"
): Promise<string> {
const response = await fetch(
"https://api-o9wN672BkyMa@qianfan.baidubce.com/beta/video/generations/kling/text2video",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Gateway-Authorization": `Bearer ${apiKey}`,
},
body: JSON.stringify({ model_name: modelName, prompt, duration }), // model_name 为必填参数
}
);
if (!response.ok) throw new Error(`HTTP error: ${response.status}`);
const json = await response.json();
if (json.code !== 0) throw new Error(`API error ${json.code}: ${json.message}`);
return json.data.task_id;
}
/**
* 查询文生视频任务状态
* @param taskId - 任务 ID
* @returns 任务数据,含 task_status 和 task_result.videos
*/
async function queryTextToVideo(taskId: string): Promise<{
task_id: string;
task_status: string;
task_status_msg?: string;
task_result?: { videos: Array<{ id: string; url: string; duration: string }> };
created_at: number;
updated_at: number;
}> {
const url = new URL(
"https://api-nYWNozBb5qML@qianfan.baidubce.com/beta/video/generations/kling/text2video"
);
url.searchParams.set("task_id", taskId);
const response = await fetch(url.toString(), {
method: "GET",
headers: {
"Content-Type": "application/json",
"X-Gateway-Authorization": `Bearer ${apiKey}`,
},
});
if (!response.ok) throw new Error(`HTTP error: ${response.status}`);
const json = await response.json();
if (json.code !== 0) throw new Error(`API error ${json.code}: ${json.message}`);
return json.data;
}
/**
* 提交任务并轮询直至完成,返回视频 URL
* @param prompt - 正向文本提示词
* @param duration - 视频时长(秒),枚举值:5、10
* @param modelName - 生成模型,枚举值:kling-v1、kling-v1-6、kling-v2-master、kling-v2-1-master
* @returns 视频 URL(第三方临时链接,30 天后失效)
*/
async function generateVideoAndWait(
prompt: string,
duration: string = "5",
modelName: string = "kling-v1-6"
): Promise<string> {
const taskId = await submitTextToVideo(prompt, duration, modelName);
const POLL_INTERVAL_MS = 5000;
const TIMEOUT_MS = 10 * 60 * 1000;
const deadline = Date.now() + TIMEOUT_MS;
while (Date.now() < deadline) {
await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
const result = await queryTextToVideo(taskId);
if (result.task_status === "succeed") {
const videoUrl = result.task_result?.videos?.[0]?.url;
if (!videoUrl) throw new Error("Task succeeded but no video URL returned");
return videoUrl;
}
if (result.task_status === "failed") {
throw new Error(`Task failed: ${result.task_status_msg ?? "unknown reason"}`);
}
// submitted / processing → keep polling
}
throw new Error(`Task timed out after 10 minutes`);
}
生成期文件下载(必须执行):
生成接口返回的视频 URL 是 CDN 临时链接(30 天后失效),在生成期(Agent 直接调用场景)获得 URL 后,必须立即使用 Bash 工具将文件下载到本地,以便用户查看结果。
curl -L -o <本地路径> "<视频 URL>"
完整生成期工作流(含下载步骤):
curl -L -o <本地路径> "<url>" 将文件下载到本地注意:上游 CDN 链接有时效性,应在获得 URL 后立即下载,不要延迟。
本 API 为异步接口,Edge Function 设计原则:
task_id 给前端,不在 Edge Function 内部轮询。task_status 为 succeed 或 failed。succeed 时,将 task_result.videos[0].url 转存至 Supabase Storage(原始视频链接 30 天后失效)。平台差异:
| 平台 | 调用方式 | 说明 |
|---|---|---|
| Web | supabase.functions.invoke 或原生 fetch | 标准 JSON 调用 |
| MiniProgram | supabase.functions.invoke | 标准 JSON 调用 |
详见:
references/submit-api.md(创建任务 Edge Function + 前端代码)references/query-api.md(查询任务 Edge Function + 前端轮询代码 + Supabase Storage 转存)