Builds a look (one visual style) for image and video generation prompts and bakes it into the prompt for a specific model: Seedream, Nano Banana, GPT-Image, Midjourney, Seedance, Kling, Veo, Higgsfield and others. Removes AI over-sharpening, plastic smoothing and the HDR look and keeps one soft film style across a project. Three look levels (core, grade, video block), six bundled presets including the AIVFX studio look, a questionnaire for your own look, a prompt builder script that strips as...
Installs into .claude/skills of the current project.
Are you the author of film-look?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/shutckin-film-look)
---
name: film-look
description: "Builds a look (one visual style) for image and video generation prompts and bakes it into the prompt for a specific model: Seedream, Nano Banana, GPT-Image, Midjourney, Seedance, Kling, Veo, Higgsfield and others. Removes AI over-sharpening, plastic smoothing and the HDR look and keeps one soft film style across a project. Three look levels (core, grade, video block), six bundled presets including the AIVFX studio look, a questionnaire for your own look, a prompt builder script that strips aspect ratio and breaker words, and a prompt checker. Use when writing or editing a generation prompt, when project frames look inconsistent, or when images are oversharpened or plastic. Triggers: 'look preset', 'film look prompt', 'style preset for image generation', 'remove AI sharpening'. Triggers (RU): «собери лук», «стиль для промптов», «пресет стиля», «плёночный вид», «убери перешарп», «убери мыло», «единый стиль кадров», «вшей лук в промпт»."
---
# Лук для генеративных промптов
> Instructions are in Russian. Respond in the user's language.
## Зачем
Генеративные модели по умолчанию рисуют одинаково: пересушенная резкость,
пластиковая кожа, HDR-небо, глянец как в дешёвой рекламе. Зритель узнаёт
такой кадр за секунду. Вторая беда: кадры одного проекта выходят в разных
стилях, потому что каждый промпт писали заново.
Лук это короткий блок текста, который дописывается к каждому промпту
проекта без изменений. Он описывает съёмку языком оператора: камера,
оптика, плёнка, диафрагма, зерно, контраст. Модель знает, как выглядят
настоящие камеры и плёнки, и тянет картинку к ним, а не к своему
«улучшайзингу».
## На чём работает
| Что | Зачем здесь |
|---|---|
| Higgsfield, CLI или веб | основной вход в модели: Seedream 5 Pro и Nano Banana Pro или 2 для фото, Seedance, Kling, Veo для видео. CLI удобен для серий скриптом, но тратит кредиты и упирается в лимит параллельных задач; веб по подписке подходит для ручной работы |
| Агрегатор вроде Flowith или аналог | тот же Nano Banana и другие модели через браузер, когда CLI не нужен |
| Пресет лука (этот скилл) | один текст на весь проект, куда его ставить в промпте каждой модели, смотри таблицу «Куда вставлять лук по моделям» |
| Скрипты `scripts/` | собирают промпт из сцены и пресета и проверяют готовый промпт на слова, ломающие лук |
| Агент | пишет сцену, добавляет лук, передаёт соотношение сторон параметром |
| Владелец | утверждает пресет по первым кадрам проекта, дальше он не меняется |
## Когда включать
- Пишешь или правишь промпт для любой модели картинок или видео.
- Правишь готовый кадр (i2i, точечная правка): ядро лука нужно и тут, оно
удерживает модель от перешарпа исходника.
- Кадры проекта выглядят как из разных фильмов.
- Картинка пересушена, кожа пластиковая, небо как в HDR.
- Нужно завести свой лук под новый проект или клиента.
Обложки статей делает `article-cover`, а лук для них берётся отсюда.
## Три уровня лука
**1. Ядро. Всегда, для фото и видео, в любой модели.** Камера, оптика,
плёнка, диафрагма, глубина резкости, ореолы, зерно, контраст, чёрные и в
конце `no sharpening, no HDR`. Именно ядро лечит перешарп (`no sharpening`,
`low contrast`, зерно) и пластик с HDR-видом (`no HDR`, приподнятые чёрные,
ореолы). Из ядра ничего не выкидывай, даже если для предметки кажется
лишним. Поле `core` в пресете.
**2. Грейд. По умолчанию да, но снимается.** Палитра и источники света:
какой тон у кожи, какие цвета у дерева, ламп, окна, теней. Поле `grade`.
Грейд снимай (`--no-grade` или пресет без грейда) в двух случаях:
- **светлые интерьеры и предметка с фирменными цветами** (упаковка,
косметика, карточки маркетплейсов, продукт в точном цвете): тёплый грейд
утягивает картинку в жёлтый монохром и уводит цвета бренда;
- **тёмная сцена с одной тёплой лампой:** тёплый грейд поверх тёплого
света даёт коричневое мыло.
И ещё когда задан холодный, монохромный, неоновый или клинический стиль, а
грейд у пресета тёплый.
Оставляй грейд, когда в кадре люди, еда, lifestyle, интерьер в обычном
смешанном свете и нет жёстких требований к цвету.
**3. Видео-блок. Только для видео.**
- Строка движения камеры (поле `video_motion`), например `Handheld with
micro-drift, never locked off.` Добавляй во все видео, кроме случаев,
когда явно нужен штатив, слайдер, дрон или строгий оборот продукта.
- Строка про живую игру и синхрон реплик (поле `video_dialogue`), например
`Naturalistic performance, real dialogue sync, no music.` Только если в
кадре говорят. В видео без реплик её не добавляй: модель начнёт рисовать
говорящие головы.
В фото видео-блок не добавляй вообще.
## Жёсткое правило: соотношение сторон только параметром
Соотношение сторон никогда не пишется в тексте промпта. Только параметром
модели: `--aspect_ratio 16:9`, поле в интерфейсе, `--ar 16:9` в
Midjourney. Если в тексте стоит `4:3`, а в параметре `9:16`, модель
кадрирует мимо: обрезает голову, ставит объект на край. В режиме i2i без
параметра модели часто отдают квадрат 1:1.
`build_prompt.py` вырезает из сцены `4:3`, `16:9`, `--ar ...` и подобное,
предупреждает и выводит соотношение отдельной строкой «Параметр модели».
## Слова, которые ломают лук
Эти слова просят у модели цифровую резкость и рекламный пластик. С луком
они спорят, и побеждают обычно они. Убирай их из сцены:
`8k`, `4k`, `16k`, `ultra detailed`, `highly detailed`, `intricate details`,
`hyperrealistic`, `ultra realistic`, `sharp focus`, `razor sharp`,
`crisp details`, `HDR`, `masterpiece`, `best quality`, `high quality`,
`octane render`, `unreal engine`, `trending on artstation` и подобные.
Полный общий список в `scripts/look_common.py` (`BANNED_COMMON`). У
каждого пресета есть свои дополнительные слова в `banned_words`: например
для чёрно-белого лука ломает `vibrant colors`.
Вместо «резкости» работают слова про фактуру: `natural skin texture`,
`believable imperfections`, `natural imperfect sharpness`.
## Куда вставлять лук по моделям
| Модель | Куда | Что |
|---|---|---|
| Seedream | в конец основного описания, тем же абзацем | ядро (+ грейд) |
| Nano Banana | отдельным абзацем в конце | ядро (+ грейд) |
| GPT-Image | в блок `Style:` | ядро (+ грейд) |
| Midjourney | перед параметрами `--`, `--ar` в самом конце | ядро (+ грейд) |
| Seedance | в конец, отдельным абзацем после описания камеры и стиля | ядро + грейд + видео-блок |
| Kling | в блок `Style:` | ядро + грейд + видео-блок |
| Veo | в блок `Style:` | ядро + грейд + видео-блок |
| Higgsfield (CLI и браузер) | в конец `--prompt` | по типу генерации: фото или видео |
| Прочие | отдельным абзацем в конце | ядро (+ грейд), для видео видео-блок |
При правке готового кадра (i2i) ядро тоже добавляй. Для коротких
инструкций правки («замени X на Y, остальное не трогай») ставь ядро
последней фразой.
Если модель обрезает длинный промпт, сокращай сцену, а не ядро.
## Скрипт сборки
```
python3 scripts/build_prompt.py --list
python3 scripts/build_prompt.py --preset dark-roast --model seedream --mode photo --aspect 3:4 "сцена"
python3 scripts/build_prompt.py --preset dark-roast --model kling --mode dialogue --aspect 9:16 --file scene.txt
python3 scripts/build_prompt.py --preset dark-roast --model nano-banana --mode photo --no-grade "сцена"
python3 scripts/build_prompt.py --preset my-look.json --model other --mode video "сцена"
```
- `--preset`: имя из папки `presets` или путь к своему json.
- `--model`: seedream, nano-banana, gpt-image, midjourney, seedance, kling,
veo, higgsfield, other.
- `--mode`: `photo` (только ядро и грейд), `video` (плюс движение камеры),
`dialogue` (плюс строка про реплики).
- `--no-grade`: без грейда.
- `--aspect`: соотношение сторон. Для Midjourney уходит в `--ar`, для
остальных печатается строкой «Параметр модели: aspect_ratio=...». Эту
строку в промпт не вставляй, это значение для поля модели.
Готовый промпт идёт в stdout, предупреждения в stderr: что вырезано из
сцены и почему. Скрипт только стандартная библиотека Python 3.
## Скрипт проверки
```
python3 scripts/check_prompt.py prompt.txt --preset dark-roast --mode photo
python3 scripts/build_prompt.py ... 2>/dev/null | python3 scripts/check_prompt.py --preset dark-roast --mode dialogue
```
Ловит: ядро пресета не целиком (поправили одно слово, и это уже не тот
лук), соотношение сторон в тексте, слова-ломатели, видео-блок в фото,
строку реплик без диалога. Код выхода 1 при ошибках, 0 если чисто. Полезно
для промптов, которые писали руками или правили после сборки.
## Пресеты в комплекте
| Пресет | Что это | Когда брать | Когда не брать |
|---|---|---|---|
| `dark-roast` | фирменный лук студии AIVFX: 35 мм, плёнка 500T, тёплая кожа, холодное окно | люди, интерьер, еда, lifestyle, обложки с человеком | бренд-цвета, точный цвет продукта, холодный или неоновый стиль |
| `neutral-product` | то же ядро без грейда, нейтральный баланс белого | предметка, маркетплейсы, упаковка, косметика, фирменные цвета | атмосферные кадры с людьми |
| `nordic-cold` | холодный пасмурный свет, светлое дерево, приглушённая палитра | техника, медицина, SaaS, минималистичные интерьеры | еда, уют, тёплые бренды |
| `neon-night` | ночной город, неон, мокрый асфальт, ореолы вокруг вывесок | ночная улица, бары, музыка, киберпанк-отсылки | дневные сцены, точный цвет |
| `documentary-16mm` | 16 мм, дневная плёнка, ручная камера, живые локации | репортаж, путешествия, UGC, истории людей | глянцевая реклама, предметка |
| `silver-bw` | чёрно-белая плёнка Double-X, серебряное зерно | портреты с характером, архивная подача | цвет продукта или бренда важен |
Подробные списки «брать / не брать» в самих json и в выводе `--list`.
Один проект, один лук. Смешивать пресеты внутри одной серии кадров нельзя:
именно это даёт разнобой. Исключение: предметные кадры серии на
`neutral-product` рядом с атмосферными на флагмане, у них общее ядро.
## Свой лук с нуля
1. Заполни опросник `templates/look-brief.md`: камера и формат, оптика,
плёнка или сенсор, диафрагма и глубина, зерно, контраст и чёрные,
палитра и источники света, кожа, движение камеры, что запрещено.
2. Пиши реальными названиями: `Cooke S4/i`, `Kodak Vision3 250D`,
`Arriflex 416`. Слова «кинематографично» и «красиво» модель понимает
как угодно.
3. Из референсов бери свет, палитру и фактуру (зерно, контраст, тон кожи),
а не сюжет. Лук должен работать на любой сцене проекта.
4. Ядро заканчивай `no sharpening, no HDR`. Соотношение сторон в ядро не
пиши.
5. Скопируй любой json из `presets`, заполни поля и проверь, что он
читается: `python3 -m json.tool my-look.json`.
## Как проверить лук
- **Один и тот же кадр с луком и без.** Та же сцена, та же модель, тот же
сид (если модель даёт его задать). Разница должна быть видна на глаз:
мягче переходы, живая кожа, зерно, нет ореола перешарпа по контурам.
- **2-3 варианта показать владельцу проекта до использования.** Лук
заходит в каждый кадр, поэтому ошибка в нём размножается. Пока нет «да»,
в работу не пускай.
- **Признаки, что лук не сработал:**
- контуры с белым ореолом, волосы и ресницы «нарисованы»;
- кожа гладкая, как у куклы, без пор;
- небо и окна без пересвета, всё видно и в тенях, и в светах (HDR);
- чёрные глубокие и чистые, нет зерна;
- цвет продукта уехал в тёплый (забыли снять грейд).
Если так: ищи в сцене слова-ломатели (`check_prompt.py`), проверь, что
ядро дошло целиком, а не обрезалось по длине промпта.
## Чек-лист
- [ ] Выбран один пресет на весь проект или собран свой по опроснику.
- [ ] Ядро вставлено целиком, без правок.
- [ ] Грейд снят, если есть бренд-цвета, точный цвет продукта или
холодный, монохромный, неоновый стиль.
- [ ] Видео-блок только в видео, строка реплик только если говорят.
- [ ] Соотношение сторон передано параметром, в тексте его нет.
- [ ] Слова-ломатели убраны из сцены.
- [ ] Лук вставлен в то место, которое ждёт модель (таблица выше).
- [ ] `check_prompt.py` даёт «Чисто».
- [ ] Для нового лука: проверка «с луком и без», 2-3 варианта показаны,
получено «да».
## Связи с другими скиллами набора
- `article-cover`: обложки статей. Пресет лука в конце каждого промпта
обложки берётся отсюда, грейд снимается в тех же случаях, что выше.
## Что устаревает первым
Имена и версии моделей, куда именно модель лучше принимает блок стиля,
лимиты длины промпта. Названия камер, оптики и плёнок не устаревают.
Таблица мест вставки проверена на октябрь 2026, перепроверь по справке
модели перед работой.
## Глубже
Библиотеку промптов студии, пресеты под конкретных клиентов и разбор, как
лук ведёт себя в каждой модели на реальных проектах, студия AIVFX
показывает в работе и в обучении: https://aivfx.ru.