Cinematography with genmedia
Use this skill when the user needs cinematic direction, not generic "make it
cinematic" prompting. Load references as needed:
references/shot-language.md
references/lighting-lens-color.md
references/examples.md
Load model-routing alongside this skill for default endpoint choices.
Write concrete visual direction. Avoid empty prestige words and em dashes.
Inputs to collect
Ask only for what affects the shot:
- Subject and action.
- Medium: still image, video, image-to-video, edit, storyboard frame.
- Genre and mood.
- Framing: close-up, medium, wide, overhead, POV, profile, locked-off.
- Camera motion for video: push-in, dolly, tracking, handheld, crane, drone.
- Lens feel: wide, normal, telephoto, macro, shallow or deep focus.
- Lighting: natural, practical, studio, noir, high key, low key, backlit.
- Output: aspect ratio, duration, first frame, last frame, download path.
- Preferred model, if the user wants a specific cinematography model or
quality/cost profile.
Genmedia workflow
Start from routed endpoint IDs.
genmedia models --endpoint_id openai/gpt-image-2 --json
genmedia models --endpoint_id fal-ai/nano-banana-pro --json
genmedia models --endpoint_id bytedance/seedance-2.0/text-to-video --json
genmedia models --endpoint_id bytedance/seedance-2.0/image-to-video --json
genmedia models --endpoint_id xai/grok-imagine-video/text-to-video --json
Use text search only as fallback discovery for a missing camera-control
role:
genmedia models "cinematic video generation camera movement" --json
genmedia docs "video generation camera movement prompt" --json
Inspect schema and use only supported controls.
genmedia schema <endpoint_id> --json
genmedia pricing <endpoint_id> --json
Upload references when using image-to-video, first frame, last frame, style
reference, or character/product continuity.
genmedia upload ./frame.png --json
Run stills with direct download.
genmedia run <endpoint_id> \
--prompt "<cinematography prompt>" \
--download "./outputs/cinema/{request_id}_{index}.{ext}" \
--json
Run video async.
genmedia run <endpoint_id> \
--prompt "<shot prompt>" \
--image_url "<uploaded frame if supported>" \
--async \
--json
genmedia status <endpoint_id> <request_id> \
--download "./outputs/cinema/{request_id}_{index}.{ext}" \
--json
Prompt build order
Use the SCLCAM structure:
- Subject: who or what is in frame.
- Context: location, time, weather, story moment.
- Lens/framing: distance, angle, focal length feel, depth of field.
- Camera motion: only for video or if motion blur is desired.
- Atmosphere: haze, rain, practicals, reflections, texture.
- Mood/color: palette, contrast, grade, exposure style.
- Output controls: aspect ratio, duration, first-frame continuity.
Example structure:
[subject] in [context], framed as [shot size and angle], [lens feel],
[lighting setup], [camera movement if video], [color grade], [texture],
[duration or aspect ratio], [continuity constraints]
Model routing
- Premium realistic still: use
openai/gpt-image-2.
- Premium stylized still: use
openai/gpt-image-2, then
fal-ai/nano-banana-pro, then fal-ai/nano-banana-2.
- Fast draft still: use
fal-ai/flux-2/klein/9b.
- Highest quality video: use
bytedance/seedance-2.0/text-to-video or
bytedance/seedance-2.0/image-to-video.
- Motion from a strong frame: use
bytedance/seedance-2.0/image-to-video.
- Fast or lower-cost video: use
xai/grok-imagine-video/text-to-video or
xai/grok-imagine-video/image-to-video.
- Complex camera language: inspect Seedance 2.0 first, then Kling v3 when
multi-prompt or element controls matter.
- Story sequence: use the storytelling skill with this skill as shot-language
support.
- Character or product continuity: use the relevant domain skill first, then
apply cinematography as the variable block.
Quality bar
Before returning, check:
- Camera movement is physically plausible for the scene.
- Lens, shot size, and camera angle do not contradict each other.
- Lighting direction is clear and consistent.
- Color grade supports the mood without flattening subject detail.
- Video prompt describes one shot unless the selected model supports multiple
prompts or shot lists.
- Downloaded files come from
downloaded_files[].
If a result looks generic, improve specificity in camera, blocking, light, and
environment before adding more adjectives.
1---2name: cinematography3description: Design cinematic image and video prompts for genmedia. Use this for shot language, camera movement, lighting, lens choices, color grade, film texture, scene blocking, and production-ready visual direction.4---5
6# Cinematography with genmedia
7
8Use this skill when the user needs cinematic direction, not generic "make it
9cinematic" prompting. Load references as needed:
10
11- `references/shot-language.md`
12- `references/lighting-lens-color.md`
13- `references/examples.md`
14
15Load `model-routing` alongside this skill for default endpoint choices.
16
17Write concrete visual direction. Avoid empty prestige words and em dashes.
18
19## Inputs to collect
20
21Ask only for what affects the shot:
22
23- Subject and action.
24- Medium: still image, video, image-to-video, edit, storyboard frame.
25- Genre and mood.
26- Framing: close-up, medium, wide, overhead, POV, profile, locked-off.
27- Camera motion for video: push-in, dolly, tracking, handheld, crane, drone.
28- Lens feel: wide, normal, telephoto, macro, shallow or deep focus.
29- Lighting: natural, practical, studio, noir, high key, low key, backlit.
30- Output: aspect ratio, duration, first frame, last frame, download path.
31- Preferred model, if the user wants a specific cinematography model or
32 quality/cost profile.
33
34## Genmedia workflow
35
361. Start from routed endpoint IDs.
37
38 ```bash
39 genmedia models --endpoint_id openai/gpt-image-2 --json
40 genmedia models --endpoint_id fal-ai/nano-banana-pro --json
41 genmedia models --endpoint_id bytedance/seedance-2.0/text-to-video --json
42 genmedia models --endpoint_id bytedance/seedance-2.0/image-to-video --json
43 genmedia models --endpoint_id xai/grok-imagine-video/text-to-video --json
44 ```
45
46 Use text search only as fallback discovery for a missing camera-control
47 role:
48
49 ```bash
50 genmedia models "cinematic video generation camera movement" --json
51 genmedia docs "video generation camera movement prompt" --json
52 ```
53
542. Inspect schema and use only supported controls.
55
56 ```bash
57 genmedia schema <endpoint_id> --json
58 genmedia pricing <endpoint_id> --json
59 ```
60
613. Upload references when using image-to-video, first frame, last frame, style
62 reference, or character/product continuity.
63
64 ```bash
65 genmedia upload ./frame.png --json
66 ```
67
684. Run stills with direct download.
69
70 ```bash
71 genmedia run <endpoint_id> \
72 --prompt "<cinematography prompt>" \
73 --download "./outputs/cinema/{request_id}_{index}.{ext}" \
74 --json
75 ```
76
775. Run video async.
78
79 ```bash
80 genmedia run <endpoint_id> \
81 --prompt "<shot prompt>" \
82 --image_url "<uploaded frame if supported>" \
83 --async \
84 --json
85
86 genmedia status <endpoint_id> <request_id> \
87 --download "./outputs/cinema/{request_id}_{index}.{ext}" \
88 --json
89 ```
90
91## Prompt build order
92
93Use the SCLCAM structure:
94
951. Subject: who or what is in frame.
962. Context: location, time, weather, story moment.
973. Lens/framing: distance, angle, focal length feel, depth of field.
984. Camera motion: only for video or if motion blur is desired.
995. Atmosphere: haze, rain, practicals, reflections, texture.
1006. Mood/color: palette, contrast, grade, exposure style.
1017. Output controls: aspect ratio, duration, first-frame continuity.
102
103Example structure:
104
105```text
106[subject] in [context], framed as [shot size and angle], [lens feel],
107[lighting setup], [camera movement if video], [color grade], [texture],
108[duration or aspect ratio], [continuity constraints]
109```
110
111## Model routing
112
113- Premium realistic still: use `openai/gpt-image-2`.
114- Premium stylized still: use `openai/gpt-image-2`, then
115 `fal-ai/nano-banana-pro`, then `fal-ai/nano-banana-2`.
116- Fast draft still: use `fal-ai/flux-2/klein/9b`.
117- Highest quality video: use `bytedance/seedance-2.0/text-to-video` or
118 `bytedance/seedance-2.0/image-to-video`.
119- Motion from a strong frame: use `bytedance/seedance-2.0/image-to-video`.
120- Fast or lower-cost video: use `xai/grok-imagine-video/text-to-video` or
121 `xai/grok-imagine-video/image-to-video`.
122- Complex camera language: inspect Seedance 2.0 first, then Kling v3 when
123 multi-prompt or element controls matter.
124- Story sequence: use the storytelling skill with this skill as shot-language
125 support.
126- Character or product continuity: use the relevant domain skill first, then
127 apply cinematography as the variable block.
128
129## Quality bar
130
131Before returning, check:
132
133- Camera movement is physically plausible for the scene.
134- Lens, shot size, and camera angle do not contradict each other.
135- Lighting direction is clear and consistent.
136- Color grade supports the mood without flattening subject detail.
137- Video prompt describes one shot unless the selected model supports multiple
138 prompts or shot lists.
139- Downloaded files come from `downloaded_files[]`.
140
141If a result looks generic, improve specificity in camera, blocking, light, and
142environment before adding more adjectives.