Skip to content
Back to skills

social-carousel

ASecurity

Runs social media for a studio or small brand on a real stack: carousels and posts for Instagram and Threads (Pinterest optional). Topics come from real questions, frames from realistic photo generation (Seedream 5 Pro or Nano Banana via Higgsfield, look from film-look), text lives in a layout layer, with an Instagram caption and a separate short Threads post, owner approval of the batch, scheduled publishing from a server via official APIs, not from a laptop, a weekly rhythm, sameness review...

  • 1 star
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 8, 2026
ai-agentspythongogitapi

Works with

  • claude code
  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned October 8, 2026

npx -y skills add shutckin/aivfx-content-kit --skill social-carousel --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of social-carousel?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for social-carousel
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/shutckin-social-carousel/badge)](https://www.skillsdirectory.com/skills/shutckin-social-carousel)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: social-carousel
description: "Runs social media for a studio or small brand on a real stack: carousels and posts for Instagram and Threads (Pinterest optional). Topics come from real questions, frames from realistic photo generation (Seedream 5 Pro or Nano Banana via Higgsfield, look from film-look), text lives in a layout layer, with an Instagram caption and a separate short Threads post, owner approval of the batch, scheduled publishing from a server via official APIs, not from a laptop, a weekly rhythm, sameness review and measurement. A script checks the batch file: caption and hashtag limits, alt texts, repeated layouts, long dashes. Triggers: 'Instagram carousel', 'Threads post', 'weekly content plan', 'social media batch', 'scheduled posting', 'Pinterest pins'. Triggers (RU): «сделай карусель», «пост в инстаграм», «пост в тредс», «контент-план на неделю», «партия постов», «расписание публикаций», «автопостинг», «почему пост не вышел в Threads», «ревизия ленты», «пины для Pinterest»."
---

# Соцсети: карусели и посты на реальной связке

> Instructions are in Russian. Respond in the user's language.

## Зачем

Маленькая команда ведёт ленту урывками: неделю густо, потом пусто, а темы
выдумываются под картинку, которая уже нарисована. Отсюда три беды. Посты
не отвечают ни на чей вопрос. Лента ходит по кругу одних и тех же сюжетов и
раскладок. Публикация зависит от того, открыт ли ноутбук.

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

## На чём работает

| Что | Зачем здесь и что из чего |
|---|---|
| Подсказки поиска, форумы, группы, комментарии в Threads | сырьё для тем: что люди реально спрашивают |
| Таблица вопросов (Notion, Google Таблицы или аналог) | вопрос, кластер, куда пойдёт, статус; защита от повторов |
| Higgsfield: Seedream 5 Pro, Nano Banana (или аналог) | реалистичные кадры без текста; референсы реальных мест через `--image` |
| `film-look` | пресет лука хвостом в каждом промпте, соотношение сторон параметром |
| Слой вёрстки (HTML и CSS со скриншотом, Figma или аналог) | весь текст, нумерация, логотип поверх кадра; модели путают кириллицу |
| Claude Code (или другой агент) | собирает партию: темы, бриф, промпты, вёрстку, подписи, файл партии, проверку |
| Хранилище с публичными адресами (папка сайта, публичный репозиторий, облачное хранилище) | Instagram, Threads и Pinterest забирают картинку сами по ссылке, файл напрямую не принимают |
| Instagram Graph API, Threads API, Pinterest API | официальная публикация; Pinterest можно и массовой загрузкой из таблицы |
| Крон на сервере (GitHub Actions, VPS или аналог) | публикует очередь по расписанию, пока ноутбук спит |
| Журнал публикаций | что вышло, когда, с какими номерами постов; источник правды для проверок |
| `scripts/check_post.py` | проверка файла партии до показа и до постановки в очередь |
| Владелец | утверждает темы, кадры и тексты партии; только после его слова партия встаёт в очередь |

Агент не публикует сам и не держит ключи в файлах скилла. Код публикатора
и токены живут в вашем проекте и в секретах сервера.

## Когда включать

- Карусель или пост для Instagram и Threads, план или партия на неделю.
- Пост вышел в Instagram и не вышел в Threads, или вышел дважды.
- Лента начала повторяться, нужны ревизия или пины для Pinterest.

Обложки статей делает `article-cover`, ролики для Reels собираются через
`ai-video-concept` и `motion-graphics`, справочное уходит в статьи `blog-article`.

## Недельный цикл

1. **Вопросы.** Пополни таблицу вопросов (раздел ниже). Возьми строки со
   статусом «новый» и высоким спросом.
2. **План недели** по `templates/week-plan.md`: какие дни, какой жанр, какой
   вопрос закрывает каждый пост. Сверь с журналом публикаций, чтобы не
   показывать владельцу то, что уже вышло.
3. **Бриф карусели** по `templates/carousel-brief.md` на каждый пост.
4. **Кадры.** Генерация по брифу, 2-3 варианта на ключевые кадры.
5. **Вёрстка** слайдов, раскладки из разных, а не одной по кругу.
6. **Тексты:** подпись Instagram, отдельный пост Threads, альт-тексты.
7. **Файл партии** и `check_post.py`.
8. **Показ владельцу** одним сообщением: пронумерованные кадры, подписи,
   посты Threads. Ответ должен укладываться в «1 да, 2 переделать кадр 3».
9. **Очередь.** Только после «да»: кадры на публичные адреса, проверка
   доступности, запись в очередь сервера.
10. **Ревизия** раз в неделю и **замер** (разделы ниже).

## Темы из реальных вопросов

Тема поста берётся из вопроса, который кто-то задал, а не придумывается под
готовую картинку. Когда темы рождаются из картинки дня, лента через месяц
ходит по кругу трёх сюжетов, и ни один пост не отвечает ни на чей вопрос.

- **Где брать.** Подсказки поисковиков (то, что люди буквально набирают),
  форумы, тематические группы, вопросы под чужими постами в Threads.
  Часть площадок закрыта для агентов политикой или не отдаётся поиску,
  подсказки поиска обычно доступны.
- **Таблица вопросов.** Поля: вопрос, язык, кластер, куда (лента, статья,
  не брать), спрос, статус, пост, дата. После публикации ставь «вышел» и
  имя поста. Это и есть защита от повторов.
- **Картинка под тему, а не тема под картинку.**
- **Лента про то, ради чего читают.** Людей зовёт результат, приём,
  разбор, история. Чисто справочные темы (тарифы сервисов, настройки
  аккаунта, списки моделей, сравнение лимитов) устаревают за месяц и
  годятся в статьи, а не в ленту. Справочный пост забирают и забывают, на
  смысловой подписываются.
- **Регистры можно смешивать в одной карусели:** обложка со смыслом,
  середина полезная, финал спокойный. Титульный слайд решает, откроют ли
  остальные: смысловая фраза сильнее спеки («почему кожа в генерации
  выглядит пластиком» против «настройки Seedream 5 Pro для портрета»).

## Кадры

- **Только реалистичная фотогенерация.** Графика с нуля (иконки, бейджи,
  чертежи, типографические коллажи «фон плюс иконка плюс строка») после
  долгих итераций не выглядит убедительно, сколько её ни полируй. Это
  проблема подхода, а не исполнения.
- **Реальный продукт или место, реальный референс.** Если в кадре
  узнаваемый продукт, интерьер клиента или известное место, подставь
  настоящее фото через `--image` (для мест свободные лицензии ищутся на
  Wikimedia Commons). Без опоры модель дорисовывает несуществующие детали
  места или продукта. Для атмосферных кадров без узнаваемого объекта (руки,
  макро, фактура) референс не нужен.
- **Пост про результат: результат главный в кадре.** Человек или предмет
  уместен, пока не закрывает собой то, ради чего пост.
- **Смешивай крупности.** Крупный план и макро хуже выдают генерацию, чем
  общий план, где модель плывёт в деталях. Закладывай в карусель больше
  крупных, а не только общие и средние.
- **Разнообразие ракурсов.** Один и тот же угол и одна и та же точка
  съёмки из поста в пост узнаются за неделю. Перед генерацией смотри
  референс-доску (Pinterest или своя папка) и меняй угол, фокусное,
  крупность.
- **Лук** из `film-look` в конце каждого промпта, соотношение сторон
  только параметром модели (для ленты обычно 4:5 или 3:4).
- **Грабля загрузки референсов:** в Higgsfield CLI загрузка JPEG падает с
  ошибкой подписи хранилища в логе, но сама команда ошибку не возвращает, и
  генерация молча уходит без референса. Поэтому референсы только в PNG, а
  после запуска проверяй логи.
- **Показ до вставки.** Кадр сначала видит владелец, потом вёрстка и
  очередь. Вкус решает он, а не догадка по соседним кадрам.

## Вёрстка карусели

- **Текст держит слой вёрстки, а не модель.** Генерация даёт чистый кадр
  без надписей, заголовки, нумерация, логотип и призыв ставятся сверху
  (HTML и CSS со скриншотом в 1080x1350, Figma или аналог). Модели ломают
  кириллицу и рисуют буквы по-разному от слайда к слайду.
- **Формат:** портрет 1080x1350 (4:5) для Instagram, тот же файл годится
  в Threads.
- **Набор раскладок шире одной.** Держи 6-8 раскладок (обложка, крупная
  фраза сверху, крупное число, фраза вразрядку на всю ширину, светлое и
  жирное слово в одной строке, врезка-окно, финальная карточка) и выбирай
  сознательно. Одна и та же пятёрка в одном порядке на каждой карусели
  делает ленту шаблонной.
- **Без сплошных тёмных плашек под текстом.** Плашка выглядит приклеенной.
  Читаемость даёт градиентная вуаль прямо по фото.
- **Число слайдов** не обязано быть одним и тем же: 5 для простой мысли,
  6-8 для рассказа. Лимит слайдов в API бывает ниже, чем в приложении,
  проверь в документации.
- **Шрифты:** обычный санс, цифры с `tabular-nums`. Моноширинные шрифты и
  «терминальный» стиль (точки-префиксы, координатные сетки) не используй.

## Тексты

**Instagram.** Подпись до 2200 знаков, не больше 30 хэштегов. Первая строка
видна до «ещё», в ней мысль, а не приветствие.

**Threads: отдельный пост, а не копия.** Threads API отказывает при тексте
длиннее 500 знаков, а Instagram спокойно берёт 2200. Если публикатор шлёт
одну подпись в оба канала, карусель выходит в Instagram и падает в Threads,
причём уже после Instagram, когда откатывать нечего. Поэтому:

- у каждого поста своё поле для Threads, короче и разговорнее;
- первое предложение само объясняет, о чём речь: что это и про что.
  Читатель видит пост в ленте впервые и не знает, кто вы. Проверка: прочти
  только первую фразу;
- ссылку ставь первым ответом в ветке, а не в тело поста;
- сокращать утверждённую подпись сам агент не может, короткий вариант
  тоже утверждает владелец.

**Жанр зависит от темы, универсального нет:**

- *Приёмы и правила:* один проверяемый факт, число и что с
  ним делать. Не нравоучение без цифр.
- *Свои данные:* «посмотрели N записей, вот что вышло». Работает, когда
  открывается с объёма, а не с вывода.
- *Разборы и впечатления:* картинка, а не факт. Короткое обращение, что за
  ролик или кадр, что в нём сработало в настоящем времени, яркое сравнение
  в конце. Без чисел.

**Не выдумывать опыт.** Никаких «за годы работы» и личных эпизодов, которых
не было. Нужна история от первого лица: попроси у владельца реальный случай.
Не тащи в пост то, что к читателю не относится. Не повторяй одну мысль:
партию, где большинство постов про одно и то же, забракуют целиком.

**Альт-текст** у каждого слайда, пиши по самому кадру, открыв его.

## Публикация с сервера

- **Не с ноутбука.** Ноутбук спит, сервер нет: уснувшая машина пропускает
  запуск молча, и предупреждение внутри незапущенного скрипта тоже не
  срабатывает. Ставь крон на сервер.
- **Один запускающий.** Если включены и сервер, и локальный запуск, пост
  уйдёт дважды. Выключенный локальный запуск и пустой локальный лог это
  защита от дублей, а не поломка. Правду проверяй по журналу и самому
  аккаунту.
- **Instagram не удаляет, Threads удаляет.** Опубликованный пост Instagram
  через API не снять, только руками в приложении. Пост Threads API удалить
  умеет. Значит, повтор шага публикации при обрыве сети запрещён строго для
  Instagram: второй вызов даёт неудаляемый второй пост. Создание
  контейнера и опрос его статуса повторять безопасно в обоих каналах: пост
  появляется только на шаге публикации. Этим же удобно проверять лимиты,
  ничего не публикуя: создай контейнер и посмотри на ошибку.
- **Отметка до публикации.** Публикатор пишет «день занят» до вызова, а
  недоделанный день приходит владельцу уведомлением и доделывается руками.
  Автоматический повтор хуже ручной доводки.
- **Картинки по публичным адресам заранее.** Площадки скачивают кадр по
  ссылке. До первого вызова проверь, что каждый кадр карусели отдаёт 200:
  404 на третьем кадре даёт половину карусели.
- **Интервал держит публикатор, не крон.** Крон ежедневный, а «раз в три
  дня» публикатор считает по дате последнего поста. Запись «каждые 3 дня»
  в кроне на стыке месяцев даёт то три дня, то один.
- **Предохранители:** холостой прогон по умолчанию при ручном запуске,
  файл-пауза, предупреждение за сутки, если у завтрашнего поста нет кадров
  или подписи, отдельная папка для постов с ещё не работающими ссылками.
  Падение одной очереди не валит другую.
- **Токены живут ограниченно.** Долгий токен Meta живёт около 60 дней.
  Поставь напоминание продлить, иначе лента встанет молча.
- **Новый пост это строка в очереди и папка с кадрами,** а не задача для
  агента: в момент публикации решать нечего.

## Pinterest

- Берёт и чистые кадры, и карточки с текстом: кадры одной карусели дают
  несколько пинов.
- **Повтор не отсекается.** Повторная загрузка той же таблицы создала
  десятки дублей. Держи журнал загруженного и фильтруй партию по нему.
- **Дневной лимит.** По наблюдению в одном аккаунте после примерно 70 пинов
  за сутки создание перестало работать без явной ошибки. Проверь порог у
  себя: сначала пробник на 10 строк, основная партия только если за 2-3
  часа не пришло письмо об ошибке. В журнал загруженного пиши после этой
  паузы, не сразу.
- Одинаковые названия строк форма отклоняет, ссылку пина подбирай по
  точному совпадению адреса страницы, а не «похожей».
- Сначала кадры на публичные адреса, потом загрузка.

## Ритм недели

Пример ритма маленькой команды: **3-4 карусели в неделю** в Instagram и
Threads плюс отдельные короткие посты Threads в дни без карусели. Это план
выпуска, а не потолок. Ровный ритм важнее объёма. Партию готовь на неделю
вперёд и утверждай целиком: один разговор с владельцем, а не семь.

## Еженедельная ревизия

Раз в неделю, в один и тот же день, смотри ленту и очередь целиком подряд,
а не по одному посту. Ищи дрейф:

- одна и та же раскладка или одна и та же пятёрка раскладок подряд;
- один ракурс, одна крупность, один сюжет в нескольких постах;
- одна мысль в нескольких постах, темы не из таблицы вопросов;
- справочные темы, которым место в статьях;
- длинные тире, штампы, выдуманный опыт;
- здоровье очереди: у ближайших постов есть кадры по рабочим адресам,
  подписи и пост Threads, токен не истекает на этой неделе.

Новую находку дописывай в список ревизии, а не держи в голове.

## Замер

Раз в неделю одна таблица по каждому посту: охват, сохранения, репосты,
комментарии, переходы. Сохранения и репосты говорят о пользе и о том, что
постом захотели поделиться, лайки говорят мало. Сравнивай жанры между собой,
а не пост с постом. Переходы на сайт считай по коротким ссылкам с меткой
источника, а приход на сайте проверяй через `site-analytics`. Цифры бери из
статистики площадки, не по памяти.

## Файл партии и проверка

Партия хранится одним JSON: посты, слайды (картинка, альт, раскладка),
подпись Instagram, пост и ответ Threads, по желанию пины. Пример:
`examples/batch.example.json`.

```
python3 scripts/check_post.py examples/batch.example.json
python3 scripts/check_post.py batch.json --publish
```

Скрипт проверяет: Threads и ответ до 500 знаков, Instagram до 2200 и до 30
хэштегов, Threads не копия Instagram, у слайда есть картинка, альт и
раскладка, соседние раскладки и две карусели подряд не повторяются, кадры
не дублируются, указан вопрос, нет длинных тире, названия пинов разные.
С `--publish` ещё требует `"approved": true` от владельца и `https`-адреса
картинок. Код 1 при нарушениях. Смысл, вкус и кадры смотрит человек.

## Типичные ошибки

- Одна подпись в оба канала: Threads падает после Instagram.
- Повтор публикации Instagram при обрыве сети: два поста навсегда.
- Партия показана владельцу, а половина её уже вышла.
- В журнал Pinterest записали сразу после загрузки, а пины не создались.

## Чек-лист партии

- [ ] Каждый пост закрывает вопрос из таблицы, повторов с журналом нет.
- [ ] Кадры реалистичные, лук на месте, реальные продукты и места с референсом.
- [ ] Крупности и ракурсы разные, раскладки не повторяются подряд.
- [ ] Текст в слое вёрстки, без плашек, без моноширинных шрифтов.
- [ ] Пост Threads свой, до 500 знаков, первая фраза объясняет тему.
- [ ] Альт-тексты написаны по кадрам.
- [ ] `check_post.py` чисто.
- [ ] Владелец утвердил партию целиком.
- [ ] Кадры по публичным адресам отдают 200, очередь на сервере.

## Что устаревает первым

Лимиты площадок (знаки, хэштеги, слайды в карусели), срок жизни токенов,
имена моделей и флаги CLI, дневные пороги Pinterest. Факты проверены на
август-октябрь 2026, перед работой сверь с документацией площадок.

## Глубже

Полные шаблоны раскладок, разборы реальных партий и настройку очереди под
вашу команду студия AIVFX показывает в работе и в обучении: https://aivfx.ru.

Files in this skill

  • SKILL.md26.7 KB
  • examples/batch.example.json6.2 KB
  • scripts/check_post.py10.1 KB
  • templates/carousel-brief.md3.1 KB
  • templates/week-plan.md2.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.