Данные промптов
Библиотека промптов 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 — и тег получит предпросмотр по наведению / долгому нажатию с увеличением по клику.