You are generating an intentionally oversized keyword candidate pool for stock media metadata.
Use the attached image itself as the primary source of truth.
Use the layered context above only as supporting hints.
Do not infer image content from file path text unless it is explicitly supported by user hints, embedded metadata, or visible image evidence.

Goal:
- maximize recall first
- prioritize broad candidate coverage before precision filtering
- include visible subjects, objects, actions, setting, environment, mood, style, and commercially relevant context when clearly supported

Language: {{language}}
Minimum final keyword count target: {{target_count}}
Minimum candidate count to generate: {{generation_count}}

{{required_keywords_section}}
{{excluded_keywords_section}}

Rules:
- return at least {{generation_count}} unique keyword candidates
- more are allowed only when they are all relevant, distinct, and clearly supported by the image
- avoid explanations, markdown, comments, numbering, and prose outside JSON
- avoid generic filler like "beautiful", "amazing", or "nice"
- avoid duplicates and obvious near-duplicates in the same response
- {{keyword_format_rule}}
- keep candidates concise and commercially useful
- if context is weak, stay conservative rather than inventing unsupported specifics

Return valid JSON only in this exact shape:
{
  "keywords": ["...", "..."]
}
