Install
openclaw skills install @nikolay-gerasimenko/kandinskyГенерация изображений и видео через Kandinsky API (модели Kandinsky K6/K5, GigaAvatar). Используй, когда пользователь просит "сгенерируй картинку", "нарисуй", "перерисуй (i2i)", "оживи картинку", "сделай видео из фото или по тексту", "апскейл/увеличь картинку", "озвучь аватар". Покрывает t2i, i2i, super-resolution (×2/×4), t2v (text-to-video), i2v (image-to-video, lite/sd/hd) и giga_avatar (фото+аудио → говорящий аватар). Триггеры: Kandinsky, Кандинский, Kandinsky API, K6, K5, t2i, i2i, t2v, i2v, апскейл, оживить, аватар.
openclaw skills install @nikolay-gerasimenko/kandinskyСкилл для генерации через Kandinsky API — REST-сервис с моделями Kandinsky (K6 — изображения, K5 — видео) и GigaAvatar.
http://87.242.117.37:5051http://87.242.117.37:5051/docs · спека: /openapi.jsonAuthorization: Bearer $KANDINSKY_API_TOKEN
на каждом запросе к /tasks/.... Токен берётся из env KANDINSKY_API_TOKEN
(спроси у пользователя, если его нет). Базу можно переопределить через
KANDINSKY_API_BASE.scripts/kandinsky.pyВ скилл вшит Python-клиент (только stdlib, без зависимостей). Предпочитай его вместо ручных curl-запросов: он сам создаёт задачу, поллит статус и сохраняет файл.
Требует env KANDINSKY_API_TOKEN (и опц. KANDINSKY_API_BASE).
Как библиотека:
from kandinsky import KandinskyClient
c = KandinskyClient()
c.generate_image("закатные горы, кинематографично", resolution="1024x1024", out="pic.png")
c.edit_image("pic.png", "в стиле акварели", out="water.png")
c.upscale("pic.png", upscale=2, out="big.png")
c.text_to_video("волны на берегу", pro=True, out="clip.mp4")
c.animate_image("pic.png", "камера медленно облетает объект", quality="lite", out="anim.mp4")
c.avatar("face.png", "speech.wav", "говорящий аватар", out="avatar.mp4")
Как CLI:
python scripts/kandinsky.py t2i "закатные горы" --resolution 1024x1024 -o pic.png
python scripts/kandinsky.py i2i pic.png "в стиле акварели" -o water.png
python scripts/kandinsky.py superres pic.png --upscale 2 -o big.png
python scripts/kandinsky.py t2v "волны на берегу" --pro -o clip.mp4
python scripts/kandinsky.py i2v pic.png "камера облетает" --quality hd -o anim.mp4
python scripts/kandinsky.py avatar face.png speech.wav "аватар" -o avatar.mp4
python scripts/kandinsky.py status <task_id>
python scripts/kandinsky.py result <task_id> -o out.bin
Ниже — описание сырого API на случай отладки или вызова без клиента.
Все генерации асинхронные. Паттерн всегда один:
1. POST /tasks/<тип> → { "task_id": "..." }
2. GET /tasks/{task_id} → { "status": "..." } # поллить раз в ~5–10 сек
3. когда готово:
GET /tasks/{task_id}/result # забрать результат
Тело POST-запроса всегда обёрнуто так:
{
"censor": true,
"params": { ... }
}
censor (по умолчанию true) — цензура текста промпта и входных картинок, плюс
проверка результата перед выдачей. Оставляй true, если не просят иначе.
/tasks/k6-image-t2i — текст → картинка.
params: query (промпт), resolution ∈ 1024x1024 | 768x768 | 768x1280 | 1280x768 | auto, beautificator? ∈ enabled | disabled | gigachat-max
(дефолт enabled)./tasks/k6-i2i — картинка(и) + текст → картинка.
params: query, image (массив base64-строк), beautificator?./tasks/k6_superres — апскейл.
params: image (base64), upscale ∈ 2 | 4, one_step_t? (0..1 — сила
следования оригиналу, напр. 0.3333). Только кратное ×2/×4, дробного нет./tasks/k5_video_t2v_lite — текст → видео (lite).
params: query, resolution ∈ 512x512 | 512x768 | 768x512, beautificator?./tasks/k5_video_t2v_pro — текст → видео (pro).
params: query, resolution ∈ 768x1280 | 1280x768, beautificator?./tasks/k5-i2v-lite — картинка → видео (lite). (этим оживляли ежа)
params: query (промпт движения), image (base64), beautificator?./tasks/k5-i2v-sd — картинка → видео (SD). params: те же./tasks/k5-i2v-hd — картинка → видео (HD, дефолт beautificator
gigachat-max). params: те же./tasks/giga_avatar — фото + аудио → говорящий аватар.
params: query, image (base64), audio (base64)./tasks/{task_id} → { "status": "..." }. Наблюдаемые значения:
new (в очереди) → processing (выполняется) → done (готово); ошибка — fail./tasks/{task_id}/result → результат (картинка/видео). Сохрани в файл.k6-image-t2i, либо уже готовый файл →
переведи в base64.POST /tasks/k5-i2v-lite (или -sd/-hd под качество) с image и
query-промптом движения. Видео короткое — уложи действие в один кадр смысла.GET /tasks/{task_id} до done, затем GET .../result, сохрани mp4.Промпт движения делай про сам объект, а не только про камеру, иначе объект
застынет, а двигаться будет лишь камера. Подробнее — references/prompting.md.
new — воркер не берёт задачу.
Не полль бесконечно: после ~1–2 мин в new скажи пользователю и предложи
альтернативу (сгенерить сразу в нужном разрешении / повторить позже).ffmpeg -i video.mp4 -vf fps=2 frame_%03d.png и посмотри кадры.BASE="${KANDINSKY_API_BASE:-http://87.242.117.37:5051}"
# 1) создать t2i
curl -s -X POST "$BASE/tasks/k6-image-t2i" \
-H "Authorization: Bearer $KANDINSKY_API_TOKEN" -H "Content-Type: application/json" \
-d '{"censor":true,"params":{"query":"cinematic mountain landscape at sunrise","resolution":"1024x1024"}}'
# → {"task_id":"abc123"}
# 2) статус
curl -s "$BASE/tasks/abc123" -H "Authorization: Bearer $KANDINSKY_API_TOKEN"
# → {"status":"processing"} (поллить до "done")
# 3) результат
curl -s "$BASE/tasks/abc123/result" -H "Authorization: Bearer $KANDINSKY_API_TOKEN" -o out.png
Полную схему всегда можно сверить в Swagger: http://87.242.117.37:5051/docs.
Шпаргалка по эндпоинтам — references/api-cheatsheet.md, промптинг —
references/prompting.md.