К основному содержанию
скилл CX Codex

runpod — скилл для Claude Code: облачные GPU через RunPod

Скилл для запуска открытых ИИ-моделей на облачных GPU через RunPod serverless. Пригодится, когда нужно обработать видео или картинку, а своей видеокарты не хватает.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add digitalsamba/claude-code-video-toolkit --skill runpod -a claude-code
Открыть на GitHub

Что делает runpod

Скилл описывает работу с RunPod serverless: пять образов из тулкита — qwen-edit, realesrgan, propainter, sadtalker и qwen3-tts. Каждый запускается командой вида uv run tools/image_edit.py --setup. Команда создаёт шаблон из Docker-образа, поднимает endpoint с подходящей GPU и сохраняет его ID в .env, например RUNPOD_QWEN_EDIT_ENDPOINT_ID.

Схема у всех инструментов одна: файл уходит в облачное хранилище, затем вызов /run, опрос /status/{job_id} и скачивание результата. Если настроен Cloudflare R2 (R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET_NAME), передача идёт через него, иначе — через бесплатные сервисы загрузки. Первый запрос после простоя поднимает воркер за 30–90 секунд, дальше ответы приходят за 5–15 секунд.

Заранее понадобится аккаунт RunPod и ключ в .env как RUNPOD_API_KEY. Учтите: ADA_24 (RTX 4090) на RunPod часто недоступен, поэтому в endpoint стоит прописывать несколько GPU через запятую — иначе задача может надолго застрять в очереди. Все инструменты тулкита сами отменяют задачу, если GPU не нашлась за 300 секунд.

Какие задачи решает

  • развернуть serverless endpoint из Docker-образа
  • выбрать GPU и объём VRAM под конкретную модель
  • посчитать стоимость обработки одного задания
  • найти endpoint по переменной окружения в .env
  • освободить воркеры, выставив workersMax=0

Примеры запросов агенту

  • настрой endpoint для image_edit через --setup
  • почему задача висит в очереди, проверь доступность GPU
  • покажи текущий расход по RunPod API

Как установить runpod

1Через Skills CLI (Vercel)

npx skills add digitalsamba/claude-code-video-toolkit --skill runpod -a claude-code

2Вручную: положить файлы

~/.claude/skills/runpod/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/runpod/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора8

ffmpeg Готовые команды FFmpeg для конвертации, сжатия, обрезки видео и подготовки ассетов к проектам на Remotion. CX Codex +1 11 700установок playwright-recording Скилл записывает действия в браузере как видео через Playwright — для демо, обзоров интерфейса и футажа под Remotion. CX Codex +1 1 300установок elevenlabs Набор инструкций для генерации озвучки, звуковых эффектов и клонирования голоса через ElevenLabs API. Пригодится при монтаже видео или записи подкастов. CX Codex +1 1 200установок moviepy Скилл для сборки видео на Python: накладывает читаемый текст на ролики LTX-2 и SadTalker, склеивает клипы в одном build.py. CX Codex +1 1 000установок qwen-edit Паттерны промптов и настройки параметров для редактирования изображений через Qwen-Image. Пригодится, когда нужно сохранить лицо на фото или переодеть персонажа. CX Codex +1 964установок acestep Скилл для генерации музыки и работы с аудио: фоновые треки, вокал, каверы, извлечение стемов. Пригодится, когда для видео нужен саундтрек или джингл. CX Codex +1 841установок ideogram4 Генерирует изображения с читаемым текстом и точной палитрой через Ideogram 4. Пригодится для обложек и плашек с надписями. CX Codex +1 471установок

Похожие

runpod-usage runpod Объясняет, как устроен Runpod: поды против Serverless, выбор GPU и VRAM, образы, хранилища и сеть. Пригодится, когда нужно решить, что запускать, до того как что-то запускать. CX Codex +1 12 500установок runpod-templates runpod Скилл находит официальные шаблоны Runpod Pod, подсказывает порты и автозапуск и чинит метаданные моделей в воркфлоу ComfyUI. CX Codex +1 10 100установок serverless-modal wanshuiyin Запускает обучение, инференс и обработку данных на бессерверных GPU в Modal. Помогает рассчитывать бюджет до старта и не переплачивать за простой серверов. CX Codex +1 463установок tao-train-image-classification NVIDIA Corporation Настраивает и запускает классификацию изображений в NVIDIA TAO на базе PyTorch. Пригодится для обучения бэкбонов ResNet или EfficientNet, дистилляции и экспорта в TensorRT. CX Codex +1 1 600установок create-a-backend vercel Скилл подбирает архитектуру бэкенда на платформе Vercel под конкретные задачи проекта. Он помогает определиться с компонентами до написания кода реализации. CX Codex +1 651установок cuopt-install NVIDIA cuOpt Team Помогает развернуть NVIDIA cuOpt для Python, C или REST-сервера через pip, conda и Docker, а также проверить готовность среды. Пригодится при настройке GPU-оптимизации маршрутов. CX Codex +1 2 500установок

Рядом в теме «Облака: AWS, Azure, GCP»

Всё по теме «Облака: AWS, Azure, GCP» →

Вопросы о runpod

Как установить runpod в Claude?

Выполните npx skills add digitalsamba/claude-code-video-toolkit --skill runpod -a claude-code. Скилл появится в ~/.claude/skills/runpod/SKILL.md.

Что делает скилл runpod?

Описывает запуск открытых ИИ-моделей на облачных GPU через RunPod serverless: создание шаблонов и endpoint'ов, управление воркерами, диагностику проблем и оценку расходов.

Что нужно, чтобы скилл заработал?

Аккаунт RunPod и ключ RUNPOD_API_KEY в .env. Для передачи файлов можно настроить Cloudflare R2, иначе инструменты используют бесплатные сервисы загрузки.

Исходный текст

SKILL.md · MIT
---
name: runpod
description: Cloud GPU processing via RunPod serverless. Use when setting up RunPod endpoints, deploying Docker images, managing GPU resources, troubleshooting endpoint issues, or understanding costs. Covers all 5 toolkit images (qwen-edit, realesrgan, propainter, sadtalker, qwen3-tts).
---

# RunPod Cloud GPU

Run open-source AI models on cloud GPUs via RunPod serverless. Pay-per-second, no minimums.

## Setup

```bash
# 1. Create account at https://runpod.io
# 2. Add API key to .env
echo "RUNPOD_API_KEY=your_key_here" >> .env

# 3. Deploy any tool with --setup
uv run tools/image_edit.py --setup
uv run tools/upscale.py --setup
uv run tools/dewatermark.py --setup
uv run tools/sadtalker.py --setup
uv run tools/qwen3_tts.py --setup
```

Each `--setup` command:
1. Creates a RunPod **template** from the Docker image
2. Creates a serverless **endpoint** with appropriate GPU
3. Saves the endpoint ID to `.env` (e.g. `RUNPOD_QWEN_EDIT_ENDPOINT_ID`)

## Available Images

All images are public on GHCR — no authentication needed.

| Tool | Docker Image | GPU | VRAM | Typical Cost |
|------|-------------|-----|------|-------------|
| image_edit | `ghcr.io/conalmullan/video-toolkit-qwen-edit:latest` | A6000/L40S | 48GB+ | ~$0.05-0.15/job |
| upscale | `ghcr.io/conalmullan/video-toolkit-realesrgan:latest` | RTX 3090/4090 | 24GB | ~$0.01-0.05/job |
| dewatermark | `ghcr.io/conalmullan/video-toolkit-propainter:latest` | RTX 3090/4090 | 24GB | ~$0.05-0.30/job |
| sadtalker | `ghcr.io/conalmullan/video-toolkit-sadtalker:latest` | RTX 4090 | 24GB | ~$0.05-0.15/job |
| qwen3_tts | `ghcr.io/conalmullan/video-toolkit-qwen3-tts:latest` | ADA 24GB | 24GB | ~$0.01-0.05/job |

**Total monthly cost:** Rarely exceeds $10 even with heavy use.

## How It Works

All tools follow the same pattern:

```
Local CLI → Upload input to cloud storage → RunPod API → Poll for result → Download output
```

1. **File transfer:** Tools use Cloudflare R2 when configured (`R2_ACCOUNT_ID`, `R2_ACCESS_KEY_ID`, `R2_SECRET_ACCESS_KEY`, `R2_BUCKET_NAME`), falling back to free upload services
2. **RunPod API:** Tools call the `/run` endpoint, then poll `/status/{job_id}` until complete
3. **Cold vs warm start:** First request after idle spins up a worker (~30-90s). Subsequent requests are fast (~5-15s)

## Endpoint Management

### Workers

```
workersMin: 0    — Scale to zero when idle (no cost)
workersMax: 1    — Max concurrent jobs (increase for throughput)
idleTimeout: 5   — Seconds before worker scales down
```

Across all endpoints, you share a total worker pool based on your RunPod plan. If you hit limits, reduce `workersMax` on endpoints you're not actively using.

### Checking Endpoint Status

Each tool stores its endpoint ID in `.env`:

| Tool | Env Var |
|------|---------|
| image_edit | `RUNPOD_QWEN_EDIT_ENDPOINT_ID` |
| upscale | `RUNPOD_UPSCALE_ENDPOINT_ID` |
| dewatermark | `RUNPOD_DEWATERMARK_ENDPOINT_ID` |
| sadtalker | `RUNPOD_SADTALKER_ENDPOINT_ID` |
| qwen3_tts | `RUNPOD_QWEN3_TTS_ENDPOINT_ID` |

### Disabling an Endpoint

To free worker slots without deleting the endpoint, set `workersMax=0` via the RunPod dashboard or GraphQL API.

## RunPod API Reference

Use these to query and manage endpoints programmatically. RunPod disables GraphQL introspection, so these field names are verified and must be exact.

### Authentication

All API calls require `Authorization: Bearer $RUNPOD_API_KEY`.

- **GraphQL:** `POST https://api.runpod.io/graphql`
- **REST (Serverless):** `https://api.runpod.ai/v2/{endpoint_id}/...`

### GraphQL Queries

**List all endpoints:**
```graphql
query { myself { endpoints { id name gpuIds templateId workersMax workersMin } } }
```

**Current spend rate:**
```graphql
query { myself { currentSpendPerHr spendDetails { localStoragePerHour networkStoragePerHour gpuComputePerHour } } }
```

**List pods:**
```graphql
query { myself { pods { id name runtime { uptimeInSeconds } machine { gpuDisplayName } desiredStatus } } }
```

> **Common mistakes:** Field names are camelCase with full words — `localStoragePerHour` not `localStoragePerHr`. Endpoints are `endpoints` not `serverlessWorkers`. `spending` is not a field — use `currentSpendPerHr` and `spendDetails`.

### GraphQL Mutations

**Update endpoint GPU or config:**
```graphql
mutation { saveEndpoint(input: {
  id: "endpoint_id",
  name: "endpoint-name",
  templateId: "template_id",
  gpuIds: "AMPERE_24",
  workersMin: 0,
  workersMax: 1
}) { id gpuIds } }
```

`saveEndpoint` requires `name` and `templateId` even for updates — query first to get current values.

### REST API (Serverless)

| Action | Method | URL |
|--------|--------|-----|
| Submit job | POST | `/v2/{id}/run` |
| Check status | GET | `/v2/{id}/status/{job_id}` |
| Cancel job | POST | `/v2/{id}/cancel/{job_id}` |
| List pending | GET | `/v2/{id}/requests` |
| Health/stats | GET | `/v2/{id}/health` |

**Health response** includes job counts and worker state:
```json
{
  "jobs": { "completed": 16, "failed": 1, "inProgress": 0, "inQueue": 2, "retried": 0 },
  "workers": { "idle": 0, "initializing": 1, "ready": 0, "running": 0, "throttled": 0 }
}
```

> **Note:** `/requests` only returns pending/queued jobs. Completed job history is not available via the API — check the RunPod web console for logs.

### GPU Type IDs

| ID | GPU | VRAM | Typical Cost |
|----|-----|------|-------------|
| `AMPERE_24` | RTX 3090 | 24GB | ~$0.34/hr |
| `ADA_24` | RTX 4090 | 24GB | ~$0.69/hr |
| `AMPERE_48` | A6000 | 48GB | ~$0.76/hr |
| `AMPERE_80` | A100 | 80GB | ~$1.99/hr |

**Availability note:** `ADA_24` (4090) is frequently throttled/unavailable on RunPod. Always configure endpoints with **multiple fallback GPU types** (comma-separated) to avoid jobs getting stuck in queue indefinitely:

```graphql
gpuIds: "AMPERE_24,ADA_24"   # Try 3090 first, fall back to 4090
```

All toolkit tools also enforce a 5-minute queue timeout — if no GPU is available within 300 seconds, the job is automatically cancelled to prevent runaway billing from failed initialization cycles.

### Cloudflare R2 via AWS CLI

R2 uses the S3-compatible API but requires `--region auto`:

```bash
AWS_ACCESS_KEY_ID="$R2_ACCESS_KEY_ID" \
AWS_SECRET_ACCESS_KEY="$R2_SECRET_ACCESS_KEY" \
aws s3api list-objects-v2 \
  --bucket "$R2_BUCKET_NAME" \
  --endpoint-url "https://${R2_ACCOUNT_ID}.r2.cloudflarestorage.com" \
  --region auto
```

> **Common mistake:** Omitting `--region auto` causes `InvalidRegionName` error. R2 valid regions: `wnam`, `enam`, `weur`, `eeur`, `apac`, `oc`, `auto`.

## Troubleshooting

### Force Image Pull

When you push a new Docker image version, RunPod may still use the cached old one. To force a pull:

1. Update the template's `imageName` to use `@sha256:DIGEST` notation
2. Wait for the worker to restart
3. Revert to `:latest` tag after confirming

### Cold Start Too Slow

- **qwen3-tts:** ~70s cold start, ~7s warm
- **sadtalker:** ~60s cold start, ~10s warm
- **image_edit:** ~90s cold start, ~15s warm

If cold starts are a problem, set `workersMin: 1` (costs money when idle).

### Job Fails with OOM

The model needs more VRAM than the GPU provides. Options:
- Use a larger GPU tier
- For dewatermark: reduce `--resize-ratio` (default 0.5 for safety)
- For image_edit: reduce `--steps`

### "No workers available"

You've hit your plan's concurrent worker limit. Either:
- Wait for a running job to finish
- Set `workersMax=0` on endpoints you're not using
- Upgrade your RunPod plan

## Docker Images

All Dockerfiles live in `docker/runpod-*/`. Images use `runpod/pytorch` as the base to share layers across tools.

Building for RunPod (from Apple Silicon Mac):
```bash
docker buildx build --platform linux/amd64 -t ghcr.io/conalmullan/video-toolkit-<name>:latest docker/runpod-<name>/
docker push ghcr.io/conalmullan/video-toolkit-<name>:latest
```

GHCR packages default to **private** — you must manually make them public for RunPod to pull them. Go to GitHub > Packages > Package Settings > Change Visibility.

## Cost Optimization

- Keep `workersMin: 0` on all endpoints (scale to zero)
- Only deploy endpoints you actively need
- Use `workersMax=0` to disable idle endpoints without deleting them
- Qwen3-TTS is significantly cheaper than ElevenLabs for voiceovers
- Check the RunPod dashboard for usage and billing

© digitalsamba · MIT · digitalsamba/claude-code-video-toolkit

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой