fix: cover images — simplified coherent prompts, no style conflicts

Проблема: VISUAL CONCEPT и STYLE из COVER_STYLES противоречили друг другу
  (sculptor on marble + frosted glass style = модель рисовала свой дефолт)

Решение: 3 простых параметра на статью без конфликтов:
  SUBJECT: что изображено (из getVisualMetaphor)
  SETTING: антураж (12 вариантов по articleId % 12):
    oak desk | marble | slate | workbench | velvet | dawn mist |
    terracotta | city night | concrete | library | frost | brick
  LIGHTING: конкретный свет (golden hour, studio, rim light, etc.)
  COLOR TEMPERATURE: warm amber / cool whites / etc.

Убраны STYLE/PALETTE/MOOD/COMPOSITION блоки которые путали модель.
Теперь каждая статья = уникальная физическая сцена с конкретным светом.
This commit is contained in:
Ник (Claude)
2026-06-13 09:29:40 +03:00
parent 170c7b7b16
commit 2360e1f7ae
+38 -11
View File
@@ -167,20 +167,47 @@ function buildCoverPrompt({ title, tags = [], articleId = 0, channelStyle = null
paletteDesc = PALETTES[channelStyle.image_palette] || null;
}
const visualMetaphor = getVisualMetaphor(title, tags, articleId);
// Выбираем сцену — конкретное место + свет + цвет
// Привязаны к articleId чтобы каждая статья имела уникальный антураж
const SCENES = [
{ setting: 'warm oak desktop surface, afternoon sunlight through window from left casting long shadows',
lighting: 'golden hour, soft shadows', temp: 'warm amber tones' },
{ setting: 'white marble surface, clean studio setup, diffused overhead light',
lighting: 'flat professional studio lighting', temp: 'cool whites and greys' },
{ setting: 'dark slate table, single focused spotlight from above',
lighting: 'dramatic single point light, deep shadows', temp: 'high contrast, near-monochrome' },
{ setting: 'weathered wooden workbench outdoors, overcast daylight',
lighting: 'soft even overcast light, no harsh shadows', temp: 'muted natural greens and browns' },
{ setting: 'black velvet surface in studio, rim lighting from behind',
lighting: 'rim lit, glowing edges, dark center', temp: 'rich blacks with gold highlights' },
{ setting: 'blue morning mist, outdoor scene at dawn, dew on surfaces',
lighting: 'early morning blue hour, soft mist', temp: 'cool blues and pale greys' },
{ setting: 'terracotta-tiled floor, Mediterranean afternoon, dappled shade',
lighting: 'dappled sunlight through leaves', temp: 'warm sienna and ochre tones' },
{ setting: 'glass surface over city lights at night, reflections below',
lighting: 'city glow from below, urban night', temp: 'multicolored bokeh, deep navy' },
{ setting: 'rough concrete surface, industrial warehouse, fluorescent light',
lighting: 'harsh overhead fluorescent, cool and flat', temp: 'grey concrete tones, accent cyan' },
{ setting: 'antique wooden library floor, surrounded by stacked books, candlelight',
lighting: 'warm candlelight from one side', temp: 'deep amber and aged parchment' },
{ setting: 'frosted glass surface, winter morning, ice crystals at edges',
lighting: 'diffused winter morning light', temp: 'icy blues and whites' },
{ setting: 'warm brick wall background, artisan workshop, window light',
lighting: 'soft side window light', temp: 'warm brick reds and natural wood' },
];
const scene = SCENES[articleId % SCENES.length];
const visualConcept = getVisualMetaphor(title, tags, articleId);
return `Create a wide 16:9 editorial cover illustration.
return `Generate a 16:9 editorial cover photograph or illustration.
VISUAL CONCEPT: ${visualMetaphor}
SUBJECT: ${visualConcept}
SETTING: ${scene.setting}
LIGHTING: ${scene.lighting}
COLOR TEMPERATURE: ${scene.temp}
${tagHint ? `THEMATIC CONTEXT: ${tagHint}` : ''}
${channelStyle?.image_prompt_instructions ? `CHANNEL STYLE: ${channelStyle.image_prompt_instructions}` : ''}
STYLE: ${styleDesc}.
${paletteDesc ? `COLOR PALETTE: ${paletteDesc}.` : ''}
MOOD: ${moodDesc}.
COMPOSITION: ${compositionDesc}
${tagHint ? `THEME (abstract cues only): ${tagHint}.` : ''}
${channelStyle?.image_prompt_instructions ? `\nCHANNEL STYLE: ${channelStyle.image_prompt_instructions}` : ''}
RULE: absolutely no text, no letters, no words, no logos, no real human faces.`;
RULES: photorealistic or illustrated — either works. NO text, NO letters, NO logos, NO human faces.`;
}
/**