social-carousel
ASecurityRuns 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
Works with
Security analysis
100/100Pro scans all 5 files and shows the line behind each finding
npx -y skills add shutckin/aivfx-content-kit --skill social-carousel --agent claude-codeAre you the author of social-carousel?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/shutckin-social-carousel)---
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.md
- examples/batch.example.json
- scripts/check_post.py
- templates/carousel-brief.md
- templates/week-plan.md
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.