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

loop-cover — скилл для Claude Code: что делает и как установить

Превращает обложку рассылки или блога в аккуратный зацикленный GIF размером 896x640 на 180 кадров. Оживляет ровно одну деталь, сохраняя первый кадр законченным.

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

Что делает loop-cover

Скилл принимает готовую иллюстрацию в PNG с соотношением 7:5 или HTML-вёрстку обложки. Он анимирует строго один названный элемент: луч маяка, прорисовку линии или плавное свечение. Картинка вокруг остаётся неподвижной, а камера фиксируется на месте через генерацию масок в коде.

Цикл длится 9 секунд при 20 кадрах в секунду. Скилл смещает кадры так, чтобы на первом отображался готовый рисунок, ведь почтовые клиенты часто показывают превью без запуска анимации. Готовый ряд кадров кодируется через ffmpeg без дизеринга, чтобы однородные цвета не мерцали.

Перед рендером процесс запрашивает бренд-файлы brand.md и MOTION.md либо параметры фирменного стиля. Для сборки анимации и проверки стыка обязательно нужны установленные ffmpeg и python3. Без них агент не сможет посчитать метрику seam и проверить разницу кадров.

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

  • оживить обложку рассылки без сдвига камеры и лишнего визуального шума
  • поставить готовое изображение на первый кадр для корректных превью в почте
  • измерить стык между концом и началом цикла через консольный скрипт
  • собрать GIF без дизеринга для защиты от мерцания плоских фонов

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

  • Сделай зацикленный GIF из обложки cover.png, пусть пульсирует только оранжевая линия
  • Анимируй cover.html: добавь медленный дрейф для луча маяка на 180 кадров

Как установить loop-cover

1Через Skills CLI (Vercel)

npx skills add charlie947/motion-graphics-skills --skill loop-cover -a claude-code

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

~/.claude/skills/loop-cover/SKILL.md

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

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

Вопросы о loop-cover

Как установить loop-cover в Claude Code?

Выполните в терминале команду npx skills add charlie947/motion-graphics-skills --skill loop-cover -a claude-code. Скилл загрузится в каталог ~/.claude/skills/loop-cover/SKILL.md.

Что делает loop-cover?

Скилл конвертирует статичную картинку или HTML-макет в GIF-анимацию на 180 кадров. Он двигает только один выбранный объект и проверяет математическую разницу между первым и последним кадрами.

Зачем скилл смещает начало цикла на готовый рисунок?

Почтовые сервисы и генераторы превью для ссылок берут первый кадр как статичную миниатюру. Смещение гарантирует, что читатель сразу увидит завершённую иллюстрацию, а не пустой экран.

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

SKILL.md · MIT
---
name: loop-cover
description: Turn a newsletter or blog cover into a seamless looping GIF at 896 x 640, 180 frames at 20fps. Only the one element you name moves, the loop is rotated so frame 1 shows the finished picture, and the seam is measured, not eyeballed. Use when someone says "animated cover", "make my cover move", "looping GIF cover", "newsletter cover GIF", "animate my thumbnail" or wants a cover that moves in the inbox without looking busy.
---

# Looping cover GIF

A cover that moves gets noticed in a feed full of stills. It only works if the move is small, the loop never jumps and the first frame still makes sense on its own.

**Before you start:** read `brand.md` and `MOTION.md` if they exist. If not, run `brand-intake` first, or ask for hex codes, a font and a logo file. Never call a result on-brand without them.

## Step 1: Ask for three things, then wait

1. **The cover.** A finished still (PNG) or a cover built in HTML. 896 x 640, or a larger image with the same 7:5 shape.
2. **The one element that moves,** named plainly. "The lighthouse beam." "The orange line drawing itself." "The lines between the cells."
3. **How it moves.** A pulse, a draw-on, a slow drift or a glow. One move, not three.

## Step 2: Build it

**If the cover is HTML:** animate only the named element as a pure function of time, add `window.seek(seconds)`, and capture 180 frames at 20fps (9 seconds).

**If the cover is an image:** animate the still in code. Make a mask of the named element by colour (for example every pixel where blue is much stronger than red), soften its edge a few pixels, and change only those pixels, frame by frame. Nothing outside the mask moves.

For both, use one clean sine cycle or one draw-on, hold and fade across the 9 seconds, so the last frame flows into the first.

**Rotate the loop so frame 1 is the finished picture.** Inboxes and link previews show frame 1 as a still. Frame i draws the moment `((i + offset) mod 180) / 20` seconds, where `offset` puts the fully drawn state first.

Encode with no dithering, because dither adds flicker to every frame of a flat image:

```
ffmpeg -y -framerate 20 -i f%03d.png -filter_complex "split[x][y];[x]palettegen=max_colors=128:stats_mode=full[p];[y][p]paletteuse=dither=none" -loop 0 cover.gif
```

## Step 3: Measure it

```
ffmpeg -v error -y -i cover.gif -vf scale=216:154,format=gray -f rawvideo frames.raw
python3 -c "
n = 216 * 154
d = open('frames.raw', 'rb').read()
f = [d[i:i + n] for i in range(0, len(d), n)]
diff = lambda a, b: sum(abs(x - y) for x, y in zip(a, b)) / n
print('frames', len(f))
print('seam', round(diff(f[-1], f[0]), 2))
print('excursion', round(max(diff(x, f[0]) for x in f), 2))
"
```

Targets from covers I shipped: 180 frames, a seam of 0.0 to 0.3, an excursion of about 0.7 to 2.8, and a file between 0.6 and 2.3 MB. An excursion near zero means nothing visible moves.

## What I learned the hard way

- **"You changed the image entirely."** My first GIF swept a band across the whole frame. Animate only the thing that was named.
- **A video model adds a camera move.** Told "camera holds completely still", it still pushed in. Animating the still in code is the only way to lock the camera.
- **Never measure motion at the halfway frame.** A sine is back at zero there, so a working animation reports no motion. Measure the biggest change against frame 0.
- **In ffmpeg's `eq` filter, add `eval=frame`,** or the expression runs once and nothing moves.
- **Shrink it to 240px wide and look again.** That is the size in an inbox. If the moving element disappears, it is too small.
- **Upload the GIF itself.** Some upload tools convert to PNG and the animation is silently gone. Check the uploaded link still ends in `.gif`.

© charlie947 · MIT · charlie947/motion-graphics-skills

Похожие скиллы

Всё по теме «Дизайн» →
motion-graphics Liamrjohnston Проверяет подлинность ассетов и блокирует генерацию моушн-графики до прохождения проверок через promptible-gate.mjs. Помогает собирать ролики для соцсетей. CX Codex +1 1 000установок motion-broll Barty-Bart Создаёт моушн-графику и перебивки для разговорных видео по таймкодам субтитров. Генерирует анимации с морфингом одного элемента в такт речи спикера. CX Codex +1 1 700установок video-to-gif zc277584121 Делает из видео несколько GIF с разными настройками и складывает их в одну папку, чтобы вы глазами выбрали подходящий. CX Codex +1 3 900установок demo-video Alireza Rezvani Превращает описания сцен и скриншоты в готовые демо-ролики или GIF с озвучкой и анимацией прямо в Claude Code. 708установок remotion-motion-graphics haidrrrry Скилл для ИИ-кодинга, который заставляет агента писать код Remotion по правилам моушн-дизайна, а не выдавать линейные фейды и плоские фоны. CX Codex +1 1 100установок hyperframes-registry heygen-com Находит и добавляет в проект около 450 готовых визуальных блоков HyperFrames — от титров до шейдеров. Пригодится, когда видеоэффект проще взять из базы, чем верстать с нуля. CX Codex +1 1 000 000установок

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

motion-effects Собирает один из 16 моушн-эффектов в вашем бренде как зацикленный HTML-файл на 8 секунд, который покадрово выгружается в MP4 или GIF. CX Codex +1 1 500установок model-showdown Готовит честное видео-сравнение моушн-графики от трёх нейросетей по единому брифу. Сводит результаты первой попытки в ролик 16:9 или рилс 1080x1920. CX Codex +1 1 400установок newsletter-promo Собирает 12–20-секундный промо-клип для LinkedIn, Instagram или X из одного выпуска рассылки: хук, три кадра-доказательства и финальная карточка. CX Codex +1 1 400установок milestone-reveal Собирает 12-секундный зацикленный ролик, где тысячи точек слетаются в вашу реальную цифру подписчиков, выручки или клиентов. CX Codex +1 1 400установок apple-launch-film Собирает лонч-фильм в стиле Apple для Mac целиком в коде: меню-бар, чёлку, виджеты и градиентные обои. Пригодится, когда нужен ролик без записи экрана и After Effects. CX Codex +1 1 500установок title-sequence-3d Скилл собирает кинематографичный 3D-опенер на Three.js в одном HTML-файле. Пригодится, когда для видеоролика или рассылки нужна яркая заставка с неоновыми вывесками и логотипами. CX Codex +1 1 500установок brand-intake Скилл проводит короткое интервью и разбирает 3–5 референсов, чтобы собрать brand.md и MOTION.md — файлы, из которых остальные скиллы пака берут цвета, шрифты и тайминги. CX Codex +1 1 500установок motion-brief-writer Превращает сырую идею анимированной графики в точный build-промпт для Claude. Спрашивает недостающее, не выдумывает числа. CX Codex +1 1 500установок

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

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