关于 giggle-generation-video
通过 giggle.pro Generation API 生成 AI 视频的技能,适用于文本生成视频和图片生成视频。它提交异步任务并主动查询进度,支持多种模型及视频参数。
主要功能
- 01支持文本生成视频与图片生成视频
- 02提供多种视频模型
- 03设置时长、画幅和分辨率
- 04主动轮询异步任务进度
适用场景
- 01将文本描述生成视频
- 02以起始帧或结束帧生成视频
- 03跟踪视频任务直至完成
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ giggle-official/ skills --skill giggle-generation-video安装后在 Claude Code 中输入/giggle-generation-video确认已加载。
附带文件requirements.txtscripts/generation_api.py
详细介绍
Giggle 视频生成
来源:giggle-official/skills · API:giggle.pro
通过 giggle.pro 的 Generation API 生成 AI 视频。支持文本生成视频和图像生成视频。提交任务后,Agent 会主动轮询,并使用 --query 查询直至完成(参见持续更新进度)。无需 Cron,也无需写入文件——所有操作都通过 exec 执行。
安装要求
| 要求 | 值 |
|---|---|
| 二进制文件 | python3 |
| 环境变量 | GIGGLE_API_KEY(必需;见下文) |
| Pip | requests |
获取 GIGGLE_API_KEY 的方式:在已登录状态下打开 giggle.pro → 左侧边栏 → API Key(API 密钥)→ 创建或复制密钥。然后运行 export GIGGLE_API_KEY=your_api_key。如果尚未配置,脚本会提示你。
出错时不重试:如果脚本执行遇到错误,请勿重试。直接向用户报告错误并停止。
支持的模型
| 模型 | 支持时长(秒) | 默认值 | 描述 |
|---|---|---|---|
| grok | 6、10 | 6 | 综合能力强,推荐使用 |
| grok-fast | 6、10 | 6 | grok 的快速版本 |
| sora2 | 4、8、12 | 4 | OpenAI Sora 2 |
| sora2-pro | 4、8、12 | 4 | Sora 2 Pro |
| sora2-fast | 10、15 | 10 | Sora 2 Fast |
| sora2-pro-fast | 10、15 | 10 | Sora 2 Pro Fast |
| kling25 | 5、10 | 5 | Kling 视频模型 |
| seedance15-pro | 4、8、12 | 4 | Seedance Pro(带音频) |
| seedance15-pro-no-audio | 4、8、12 | 4 | Seedance Pro(无音频) |
| veo31 | 4、6、8 | 4 | Google Veo 3.1(带音频) |
| veo31-no-audio | 4、6、8 | 4 | Google Veo 3.1(无音频) |
| minimax23 | 6 | 6 | MiniMax 模型 |
| wan25 | 5、10 | 0 | 万象模型 |
注意:--duration 必须选择模型支持的时长,否则 API 会报错。
帧参考(图像生成视频)
对于图像生成视频,--start-frame 和 --end-frame 支持三种互斥格式:
| 方法 | 格式 | 示例 |
|---|---|---|
| asset_id | asset_id:<ID> | asset_id:lkllv0yv81 |
| url | url:<URL> | url:https://example.com/img.jpg |
| base64 | base64:<DATA> | base64:iVBORw0KGgo... |
每个帧参数只能使用其中一种方法。
执行流程:提交并查询
视频生成采用异步方式(通常需要 60–300 秒)。先提交任务以获取 task_id,然后持续查询,直到任务进入终止状态。所有命令都通过 exec 执行;API 密钥从系统环境变量中读取。
持续更新进度(默认行为;用户无需在提示词中提出)
视频任务通常需要约 1–5 分钟以上(有时更久)。用户无需要求你检查进度。
- 提交后立即告知用户已提交,提供
task_id,并根据模型和负载情况给出合理的预计等待时间范围(如果处理流程通常更慢,请勿笼统地说“1–3 分钟”)。 - 主动轮询:每隔约 15–30 秒运行一次
--query,直至任务进入终止状态——不要等用户提出要求。 - 每次查询后,用自然语言简要报告状态;如果 stdout 返回的 JSON 尚未处于终止状态(例如
processing),请转述状态并说明你会再次检查——不要保持沉默。 - 完成后:成功时提供完整的带签名视频链接;失败时清楚说明原因。如果持续约 20 分钟后仍未进入终止状态(如果用户或模型的具体情况表明通常需要更久,可相应调整),请停止盲目轮询,说明情况,保留
task_id,并建议重试或稍后手动检查。 - 如果用户明确选择不轮询(例如“不要轮询”“我会再问”),则只提交一次,提供
task_id,并仅在用户提出要求时运行--query。
第 1 步:提交任务
首先向用户发送一条消息:视频生成任务已提交;你会按计划查询进度并报告更新——用户无需催促。收到 JSON 响应后,将 task_id 一并告知用户。
# Text-to-video (default grok-fast)
python3 scripts/generation_api.py \
--prompt "Camera slowly pushes forward, person smiling in frame" \
--model grok-fast --duration 6 \
--aspect-ratio 16:9 --resolution 720p
# Image-to-video - use asset_id as start frame
python3 scripts/generation_api.py \
--prompt "Person slowly turns around" \
--start-frame "asset_id:lkllv0yv81" \
--model grok-fast --duration 6 \
--aspect-ratio 16:9 --resolution 720p
# Image-to-video - use URL as start frame
python3 scripts/generation_api.py \
--prompt "Scenery from still to motion" \
--start-frame "url:https://example.com/img.jpg" \
--model grok-fast --duration 6
# Image-to-video - both start and end frame
python3 scripts/generation_api.py \
--prompt "Scene transition" \
--start-frame "asset_id:abc123" \
--end-frame "url:https://example.com/end.jpg" \
--model grok --duration 6
响应示例:
{"status": "started", "task_id": "55bf24ca-e92a-4d9b-a172-8f585a7c5969"}
将 task_id 存储在记忆中(addMemory):
giggle-generation-video task_id: xxx (submitted: YYYY-MM-DD HH:mm)
第 2 步:查询直到完成(默认:主动轮询)
每次提交当前任务后,都要反复运行(每隔约 15–30 秒一次,直到进入终止状态或超时),无需等待用户询问:
python3 scripts/generation_api.py --query --task-id <task_id>
两次查询之间,在 shell 中短暂 sleep(例如 15–30 秒),或延迟后分别调用工具——不要长时间不回复;向用户概述每次查询的结果。
输出处理:
| stdout 模式 | 操作 |
|---|---|
| 含视频链接的纯文本(例如就绪消息) | 原样转发给用户;停止轮询此任务 |
| 含错误信息的纯文本 | 原样转发给用户;停止轮询此任务 |
JSON {"status": "processing", "task_id": "..."}(或类似的非终止状态) | 告知用户当前状态以及你会很快再次查询;按本节要求继续轮询 |
如果用户在你已经轮询期间询问进度,使用最新已知状态作答(必要时额外运行一次 --query)。
链接返回规则:结果中的视频链接必须是完整的签名 URL(包含 Policy、Key-Pair-Id、Signature 查询参数)。如果 API 返回了 response-content-disposition=attachment,不要移除;原样转发(脚本只会将 ~ 编码为 %7E)。
新请求与查询旧任务
**当用户发起新的视频生成请求时,**必须运行第 1 步提交新任务。不要复用记忆中的旧 task_id。
对于正在进行的任务,按上述方式主动轮询。对于较早的任务(用户提及先前的视频或先前的 task_id),在用户询问时查询该 task_id;如果用户希望持续获取该特定任务的更新,则继续轮询。
参数参考
| 参数 | 默认值 | 说明 |
|---|---|---|
--prompt | 必填 | 视频描述提示词 |
--model | grok | 参见“支持的模型”表格 |
--duration | 模型默认值 | 必须从模型支持的时长中选择 |
--aspect-ratio | 16:9 | 16:9、9:16、1:1、3:4、4:3 |
--resolution | 720p | 480p、720p、1080p |
--start-frame | - | 图像转视频的起始帧:asset_id:ID、url:URL 或 base64:DATA |
--end-frame | - | 图像转视频的结束帧,格式与起始帧相同 |
注意:base64 参数支持经过 base64 编码的图像。请直接传入原始 Base64 字符串,不要添加 data:image/xxx;base64, 前缀。
交互指南
如果用户的请求含糊不清,请按照以下步骤引导。如果用户已提供足够信息,则直接运行命令。
第 1 步:选择模型(必需)
生成前,必须介绍可用模型,并让用户选择。显示“支持的模型”表格中的模型列表。等待用户明确选择后再继续。
第 2 步:视频时长
显示所选模型支持的时长选项。默认使用该模型的默认时长。
第 3 步:生成模式
Question: "Do you need reference images as start/end frame?"
Options: No - text-to-video only / Yes - image-to-video (set start/end frame)
第 4 步:宽高比
Question: "What aspect ratio do you need?"
Options: 16:9 - Landscape (recommended) / 9:16 - Portrait / 1:1 - Square
第 5 步:执行并展示
按照以下流程:发送消息 → 第 1 步提交 → 第 2 步主动轮询直到进入终止状态,并在每次查询后向用户发送简短进度更新。在适当情况下(尤其是最终链接和错误),将 exec 标准输出原样转发给用户。