Генерация мемов
Создание настоящих изображений-мемов с выбором шаблона и наложением текста через Pillow. На выходе получаются реальные .png-файлы мемов.
Метаданные навыка
| Источник | Опционально — установка через vibeos skills install official/creative/meme-generation |
| Путь | optional-skills/creative/meme-generation |
| Версия | 2.0.0 |
| Автор | adanaleycio |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | creative, memes, humor, images |
| Связанные навыки | ascii-art, generative-widgets |
Справочник: полный SKILL.md
Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Агент видит эти инструкции, когда навык активен.
Генерация мемов
Создание настоящих изображений-мемов на заданную тему. Выбирается шаблон, пишутся подписи, и рендерится реальный .png-файл с наложенным текстом.
Когда использовать
- Пользователь просит сделать или сгенерировать мем
- Пользователь хочет мем на конкретную тему, ситуацию или проблему
- Пользователь говорит «замемь это» или что-то подобное
Доступные шаблоны
Скрипт поддерживает любые из ~100 популярных шаблонов imgflip по имени или ID, а также 10 тщательно подобранных шаблонов с ручной настройкой позиционирования текста.
Подобранные шаблоны (с настраиваемым размещением текста)
| ID | Название | Поля | Лучше всего для |
|---|---|---|---|
this-is-fine | This is Fine | верх, низ | хаос, отрицание |
drake | Drake Hotline Bling | отвергаю, одобряю | отвержение/предпочтение |
distracted-boyfriend | Distracted Boyfriend | отвлечение, текущее, человек | искушение, смена приоритетов |
two-buttons | Two Buttons | левое, правое, человек | невозможный выбор |
expanding-brain | Expanding Brain | 4 уровня | нарастающая ирония |
change-my-mind | Change My Mind | утверждение | спорные мнения |
woman-yelling-at-cat | Woman Yelling at Cat | женщина, кот | споры |
one-does-not-simply | One Does Not Simply | верх, низ | обманчиво сложные вещи |
grus-plan | Gru's Plan | шаг1-3, осознание | планы, которые идут не так |
batman-slapping-robin | Batman Slapping Robin | робин, бэтмен | пресечение плохих идей |
Динамические шаблоны (из API imgflip)
Любой шаблон, отсутствующий в подобранном списке, можно использовать по имени или ID imgflip. Для них применяется интеллектуальное размещение текста по умолчанию (верх/низ для 2 полей, равномерно для 3+). Поиск:
python "$SKILL_DIR/scripts/generate_meme.py" --search "disaster"
Порядок действий
Режим 1: Классический шаблон (по умолчанию)
- Прочитайте тему пользователя и определите основную динамику (хаос, дилемма, предпочтение, ирония и т.д.)
- Выберите наиболее подходящий шаблон. Используйте колонку «Лучше всего для» или выполните поиск через
--search. - Напишите короткие подписи для каждого поля (максимум 8–12 слов на поле, чем короче, тем лучше).
- Найдите директорию скрипта навыка:
SKILL_DIR=$(dirname "$(find ~/.vibeos/skills -path '*/meme-generation/SKILL.md' 2>/dev/null | head -1)") - Запустите генератор:
python "$SKILL_DIR/scripts/generate_meme.py" <template_id> /tmp/meme.png "подпись 1" "подпись 2" ... - Верните изображение с помощью
MEDIA:/tmp/meme.png
Режим 2: Пользовательское AI-изображение (когда доступен image_generate)
Используйте этот режим, если ни один классический шаблон не подходит или пользователь хочет что-то оригинальное.
- Сначала напишите подписи.
- Используйте
image_generateдля создания сцены, соответствующей концепции мема. НЕ включайте текст в промпт изображения — текст будет добавлен скриптом. Опишите только визуальную сцену. - Найдите путь к сгенерированному изображению из URL результата image_generate. При необходимости скачайте его локально.
- Запустите скрипт с флагом
--imageдля наложения текста, выбрав режим:- Наложение (текст прямо на изображении, белый с чёрным контуром):
python "$SKILL_DIR/scripts/generate_meme.py" --image /path/to/scene.png /tmp/meme.png "верхний текст" "нижний текст" - Полосы (чёрные полосы сверху/снизу с белым текстом — чище, всегда читаемо):
python "$SKILL_DIR/scripts/generate_meme.py" --image /path/to/scene.png --bars /tmp/meme.png "верхний текст" "нижний текст"
--bars, если изображение насыщенное/детализированное и текст на нём будет плохо читаться. - Наложение (текст прямо на изображении, белый с чёрным контуром):
- Проверьте через vision (если доступен
vision_analyze): Убедитесь, что результат выглядит хорошо:Если модель vision выявит проблемы (текст плохо читается, неудачное расположение и т.д.), попробуйте другой режим (переключитесь между наложением и полосами) или перегенерируйте сцену.vision_analyze(image_url="/tmp/meme.png", question="Текст читаем и хорошо расположен? Мем работает визуально?") - Верните изображение с помощью
MEDIA:/tmp/meme.png
Примеры
«Отладка продакшена в 2 часа ночи»:
python generate_meme.py this-is-fine /tmp/meme.png "СЕРВЕРЫ ГОРЯТ" "Всё в порядке"
«Выбор между сном и ещё одной серией»:
python generate_meme.py drake /tmp/meme.png "Выспаться 8 часов" "Ещё одну серию в 3 часа ночи"
«Этапы утра понедельника»:
python generate_meme.py expanding-brain /tmp/meme.png "Ставлю будильник" "Ставлю 5 будильников" "Проспал все будильники" "Работаю из кровати"
Список шаблонов
Чтобы увидеть все доступные шаблоны:
python generate_meme.py --list
Подводные камни
- Делайте подписи КОРОТКИМИ. Мемы с длинным текстом выглядят ужасно.
- Количество текстовых аргументов должно соответствовать количеству полей шаблона.
- Выбирайте шаблон, который подходит под структуру шутки, а не только под тему.
- Не создавайте оскорбительный, агрессивный или направленный на конкретных людей контент.
- Скрипт кеширует изображения шаблонов в
scripts/.cache/после первой загрузки.
Проверка
Результат корректен, если:
- .png-файл создан по указанному пути
- Текст читаем (белый с чёрным контуром) на шаблоне
- Шутка «заходит» — подпись соответствует структуре шаблона
- Файл можно передать через путь MEDIA: