Перейти к основному содержимому

Генерация мемов

Создание настоящих изображений-мемов с выбором шаблона и наложением текста через 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-fineThis is Fineверх, низхаос, отрицание
drakeDrake Hotline Blingотвергаю, одобряюотвержение/предпочтение
distracted-boyfriendDistracted Boyfriendотвлечение, текущее, человекискушение, смена приоритетов
two-buttonsTwo Buttonsлевое, правое, человекневозможный выбор
expanding-brainExpanding Brain4 уровнянарастающая ирония
change-my-mindChange My Mindутверждениеспорные мнения
woman-yelling-at-catWoman Yelling at Catженщина, котспоры
one-does-not-simplyOne Does Not Simplyверх, низобманчиво сложные вещи
grus-planGru's Planшаг1-3, осознаниепланы, которые идут не так
batman-slapping-robinBatman Slapping Robinробин, бэтменпресечение плохих идей

Динамические шаблоны (из API imgflip)​

Любой шаблон, отсутствующий в подобранном списке, можно использовать по имени или ID imgflip. Для них применяется интеллектуальное размещение текста по умолчанию (верх/низ для 2 полей, равномерно для 3+). Поиск:

python "$SKILL_DIR/scripts/generate_meme.py" --search "disaster"

Порядок действий​

Режим 1: Классический шаблон (по умолчанию)​

  1. Прочитайте тему пользователя и определите основную динамику (хаос, дилемма, предпочтение, ирония и т.д.)
  2. Выберите наиболее подходящий шаблон. Используйте колонку «Лучше всего для» или выполните поиск через --search.
  3. Напишите короткие подписи для каждого поля (максимум 8–12 слов на поле, чем короче, тем лучше).
  4. Найдите директорию скрипта навыка:
    SKILL_DIR=$(dirname "$(find ~/.vibeos/skills -path '*/meme-generation/SKILL.md' 2>/dev/null | head -1)")
  5. Запустите генератор:
    python "$SKILL_DIR/scripts/generate_meme.py" <template_id> /tmp/meme.png "подпись 1" "подпись 2" ...
  6. Верните изображение с помощью MEDIA:/tmp/meme.png

Режим 2: Пользовательское AI-изображение (когда доступен image_generate)​

Используйте этот режим, если ни один классический шаблон не подходит или пользователь хочет что-то оригинальное.

  1. Сначала напишите подписи.
  2. Используйте image_generate для создания сцены, соответствующей концепции мема. НЕ включайте текст в промпт изображения — текст будет добавлен скриптом. Опишите только визуальную сцену.
  3. Найдите путь к сгенерированному изображению из URL результата image_generate. При необходимости скачайте его локально.
  4. Запустите скрипт с флагом --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, если изображение насыщенное/детализированное и текст на нём будет плохо читаться.
  5. Проверьте через vision (если доступен vision_analyze): Убедитесь, что результат выглядит хорошо:
    vision_analyze(image_url="/tmp/meme.png", question="Текст читаем и хорошо расположен? Мем работает визуально?")
    Если модель vision выявит проблемы (текст плохо читается, неудачное расположение и т.д.), попробуйте другой режим (переключитесь между наложением и полосами) или перегенерируйте сцену.
  6. Верните изображение с помощью 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: