Данные промптов

Библиотека промптов IMGPrompt собрана из открытых источников, promptoMANIA, sd-webui-prompt-all-in-one, а также awesome-gpt-image-2-prompts (CC BY 4.0). После дедупликации, стандартизации и локализации на 18 языков получилось 5000+ записей в 16 основных категориях и сотнях подкатегорий.

Структура данных

Все данные промптов хранятся в каталоге проекта src/app/data:

src
└── app
    └── data
        ├── prompt              # Промпты на 18 языках
        │   ├── prompt-zh.json  # Упрощённый китайский (базовый; остальные языки производны от него)
        │   ├── prompt-en.json  # Английский
        │   ├── prompt-ja.json  # Японский
        │   └── ......          # Остальные 15 языков
        └── prompt-custom.json  # Пользовательские промпты (загружаются для всех языков)

Каждый промпт — это JSON-объект:

{
  "displayName": "portrait",
  "langName": "Портрет",
  "object": "Фигура",
  "attribute": "Базовый",
  "description": "(необязательно) описание или указание автора",
  "preview": "(необязательно) URL превью"
}

Описание полей

Поле Обязательное Описание
displayName ✅ Да Уникальный английский промпт — именно этот текст вставляется в поле промпта
langName ✅ Да Локализованная подпись, отображаемая на теге в интерфейсе
object ✅ Да Основная категория (например, Фигура / Среда / Фотография / Художественный стиль)
attribute ✅ Да Подкатегория (например, Базовый / Возраст / Фокусировка объектива / Портрет)
description ❌ Нет Дополнительный текст во всплывающем окне предпросмотра (авторство, заметки по применению и т. п.) — показывается при наведении (десктоп) / долгом нажатии (сенсорный экран)
preview ❌ Нет URL превью — показывается во всплывающем окне при наведении (десктоп) или долгом нажатии ~0,5 с (сенсорный экран); клик / касание по миниатюре открывает lightbox

💡 Поле preview обеспечивает предпросмотр по наведению / долгому нажатию и увеличение по клику. На десктопе срабатывает наведение, на сенсорных устройствах — долгое нажатие, поэтому короткое касание по-прежнему только добавляет / удаляет тег.

Советы по сопровождению данных

  • displayName должен быть уникальным — дубликаты игнорируются и снижают качество подсказок.
  • Соглашение о запятых: ", " (запятая + пробел) — разделитель тегов в приложении; внутри агрегированных записей склеивайте слова запятой без пробела "," (например, snow,ice). Запятые с пробелом или полноширинные запятые отклоняются на этапе сборки (проверка sliceData).
  • Используйте одни и те же значения object / attribute во всех языках, чтобы навигация по категориям оставалась согласованной.
  • Делайте langName максимально лаконичным, чтобы подпись тега не обрезалась.
  • Для preview лучше всего подходит WebP ≤ 150 КБ с квадратной композицией (1:1) — так превью оптимально смотрится во всплывающем окне.

Добавление собственных промптов

Чтобы расширить библиотеку, преобразуйте свои данные в стандартный формат с помощью конвертера данных IMGPrompt и сохраните результат в src/app/data/prompt-custom.json. Этот файл загружается при запуске приложения и действует для всех языков.

Пример:

[
  {
    "displayName": "cyberpunk cityscape",
    "langName": "Киберпанк-город",
    "object": "Среда",
    "attribute": "Город"
  },
  {
    "displayName": "cinematic lighting",
    "langName": "Кинематографическое освещение",
    "object": "Эффекты света и тени",
    "attribute": "Световые эффекты",
    "description": "Мягкий направленный свет + контровой свет для объёма",
    "preview": "https://example.com/preview/cinematic.webp"
  }
]

Пользовательские записи отображаются по тем же правилам, что и встроенные: добавьте preview — и тег получит предпросмотр по наведению / долгому нажатию с увеличением по клику.