# Film look The look is decided twice: once in the keyframe prompts (light, lens, film stock words, so the stills already feel photographed), and once in assembly (`scripts/assemble-film.mjs` applies one grade, bloom, grain and vignette over every shot so the cut feels like one roll of film). Pick the grade before writing any prompt; it sets `locks.look`, the line appended to every keyframe prompt. ## Choose the grade by mood | Grade | Looks like | Use for | Avoid for | |---|---|---|---| | `teal-amber` | Teal shadows and water, warm amber skin and highlights, lifted blacks, slightly muted | Resorts, coast, travel, summer, sport, anything with water or sky | Food (greens turn grey), pale skincare packaging | | `warm-kodak` | Warm, creamy, gentle contrast, Portra-like skin | Food and drink, hospitality interiors, family, autumn, fashion in natural light | Night city (turns muddy orange) | | `cool-fuji` | Cool greens and blues, soft and low contrast | Nordic, winter, wellness, architecture, tech, rain | Sunset and candlelight (kills the warmth) | | `natural` | True colour with a soft film curve | Products whose colour must stay exact (cosmetics shades, paint, fashion colourways) | When the brief asks for a strong look | | `none` | Untouched | When the user grades it themselves | | A product whose colour matters (a lipstick shade, a sneaker colourway): use `natural`, or check the graded product beside the original photo. ## Keyframe vocabulary Lenses (say the focal length, the model follows it): - 14–24 mm: drone and establishing, underwater, big interiors; exaggerates depth. - 35 mm: the "documentary" lens; arrivals, walking shots, environmental portraits. - 50 mm: natural perspective; mediums, silhouettes. - 85 mm: close-ups, hands, hair, product hero; soft background. - 100 mm macro: inserts of texture, droplets, fabric weave. Film stocks and capture words that give believable texture: - Daylight: "Kodak Vision3 250D", "Kodak Portra 400", "Fujifilm Eterna 250D". - Night and blue hour: "Kodak Vision3 500T" (tungsten-balanced; warm practicals, blue ambient). - Always add: "gentle film grain, soft halation on highlights, no HDR, no digital over-sharpening". Light that reads as real: - Golden hour: "low warm sun from the left, long soft shadows". - Backlight: "sun behind the subject, warm rim on hair and shoulders, slight lens flare". - Silhouette: "camera faces the low sun; the figure is a dark silhouette with only a thin rim of light". - Blue hour: "deep blue ambient light, warm practical lights (windows, lanterns) glowing". - Overcast and interiors: "soft window light from the side, gentle falloff into shadow". - Underwater: "sun caustics on the sand, god rays from the silver surface". Avoid: "8k", "ultra detailed", "hyperrealistic", "masterpiece", "cinematic lighting" on its own. They push toward glossy, over-sharpened images that read as AI. ## Assembly controls | Control | Default | Range | Notes | |---|---|---|---| | `grade` | from film.json | teal-amber, warm-kodak, cool-fuji, natural, none | ffmpeg `colorbalance` + `curves` + `eq` chains, see `GRADES` in assemble-film.mjs | | `bloom` | 0.08 | 0–0.4 | Screen-blended blur of the brightest parts: halation around sun, water glints and lamps. Above 0.15 looks dreamy and milky. | | `grain` | 6 | 0–20 | Temporal luma noise. 4–8 for 720p web; 10+ looks like 16 mm. Grain makes files bigger; use `--max-mb` for previews. | | `vignette` | 0.35 | 0–1 | Subtle darkening of the corners. 0 for product films on white. | | `dissolve` | 0.6 s | 0.2–1.5 | Only used where a shot has `transition_in: "dissolve"`. | | `letterbox` | none | none, 2.39, 2.00 | Black bars for a widescreen feel on 16:9. Keep title text inside the picture area. | | `crop` | none | 9:16, 1:1, 4:5 | Centre crop at native size (never upscaled). A crop is a fallback; generate natively vertical for a real vertical film. | ## Title and end cards `scripts/text-card.mjs` draws the text from a TrueType font you pass with `--title-font` (and optionally `--small-font` for kicker and subline). The text is exactly what is in film.json, so spelling never depends on a model, and it works with ffmpeg builds that have no `drawtext` filter. Free fonts that work (Google Fonts, SIL Open Font License; download the `.ttf` and pass its path; do not ship fonts inside the Skill): - Cormorant Garamond (italic for titles, regular small caps style for kickers): elegant, fashion and hospitality. - EB Garamond: classic book serif, calmer. - Playfair Display: high-contrast, editorial, luxury. - For a modern brand, a clean sans such as Inter or Manrope also works; keep it light weight and widely tracked. Variable fonts (`Name[wght].ttf`) render their default weight. CFF `.otf` files are refused with a message; download the `.ttf`. Rules: - Title on the first shot, starting about 1 s in, held 3–4 s with soft fades. Size 0.10–0.14 of frame height. Centre, or lower third if the centre is busy. - Use the user's exact words. Do not invent taglines; a kicker line is only added if the user wrote one. - Light text (#F3ECE0 warm white) over the picture; if the background is bright, move the title to a darker part (`position: lower-third` or `upper-third`) or put it on a darker shot (`on_shot`). - End card on near-black, 3 s, the brand name and at most one line under it. ## Sound The default film is silent (`--audio none`), which is what web previews and autoplaying pages need anyway. - Music: only tracks the user owns or has licensed: their own composer, a stock music library licence, or a royalty-free source whose licence covers advertising use. Never download or rip tracks from streaming sites, YouTube or social apps, and never use "sounds like" covers of known songs. Keep the licence with the delivery. - `--music track.mp3` loops the track if it is shorter than the film, trims it to the film length, fades it in over 1 s and out over the last 2.5 s, at `--music-volume` (default 0.8). With `--audio clips` as well, the ambience is turned down to 55% and mixed under the music. - `--audio clips` keeps the sound Seedance generated with each clip (waves, wind, fire, birds). It is model-made: listen to the whole film before shipping it, and cut it if you hear voices, music, clicks or sounds that do not match the picture. Clip audio is crossfaded at dissolves and cut at cuts. - Speech, voice-over or lip-sync are out of scope for this Skill; record a real voice-over and lay it in with an editor. - Reels, Shorts and TikTok apply their own music rules and libraries: for those, export silent (or ambience only) and add music in the app from its licensed library.