Prompt Data

IMGPrompt's prompt library is compiled from online sources, promptoMANIA, sd-webui-prompt-all-in-one, and awesome-gpt-image-2-prompts (CC BY 4.0). After deduplication, standardization, and localization across 18 languages, we have 5,000+ entries across 16 main categories and hundreds of subcategories.

Data Structure

All prompt data lives under src/app/data:

src
└── app
    └── data
        ├── prompt              # Prompts in 18 languages
        │   ├── prompt-zh.json  # Simplified Chinese (source of truth; others derived from it)
        │   ├── prompt-en.json  # English
        │   ├── prompt-ja.json  # Japanese
        │   └── ......          # 15 other languages
        └── prompt-custom.json  # User-defined prompts (loaded for all languages)

Each prompt is a JSON object:

{
  "displayName": "portrait",
  "langName": "Portrait",
  "object": "Character",
  "attribute": "Basics",
  "description": "(Optional) description or author credit",
  "preview": "(Optional) preview image URL"
}

Field Reference

FieldRequiredDescription
displayName✅ YesUnique English prompt — the actual text inserted into the prompt box
langName✅ YesLocalized label shown in the UI
object✅ YesMain category (e.g., Character, Environment, Photography, Art Style)
attribute✅ YesSubcategory (e.g., Basics, Expression, Camera Focus, Portrait)
description❌ NoExtra text shown inside the preview popover (author credits, usage notes, etc.) — surfaced on hover (desktop) / long-press (touch)
preview❌ NoPreview image URL — shown inside the popover on hover (desktop) or long-press for ~0.5s (touch); click / tap the thumbnail to open the lightbox

💡 The preview field powers the hover/long-press preview + click-to-zoom experience. Entries with a preview image get a small indicator icon and stand out visually. Desktop uses hover; touch devices use long-press, so a quick tap still just adds / removes the tag.

Data Hygiene Tips

  • Keep displayName unique — duplicates are ignored and reduce suggestion quality.
  • Reuse the same object / attribute values across languages so navigation stays consistent.
  • Keep langName concise to avoid chip truncation.
  • For preview, WebP ≤ 150 KB with a 1:1 (square) aspect ratio renders best inside the hover / long-press popover.

Adding Custom Prompts

Use the IMGPrompt Data Converter to convert your data to the standard shape, then save to src/app/data/prompt-custom.json. This file is loaded at startup and applies to all languages.

Example:

[
  {
    "displayName": "cyberpunk cityscape",
    "langName": "Cyberpunk Cityscape",
    "object": "Environment",
    "attribute": "Scene"
  },
  {
    "displayName": "cinematic lighting",
    "langName": "Cinematic Lighting",
    "object": "Lighting",
    "attribute": "Basics",
    "description": "Soft directional light + rim light for depth",
    "preview": "https://example.com/preview/cinematic.webp"
  }
]

Custom entries follow the exact same display rules as built-ins: include a preview to enable the hover / long-press preview + click-to-zoom treatment.