@kolbo/mcp 1.75.5 → 1.75.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skill/GENERATED.md +1 -1
- package/skill/SKILL.md +2 -0
- package/skill/references/models/creative-director.md +14 -0
- package/skill/references/models/gpt-image.md +1 -0
- package/skill/references/models/nano-banana.md +1 -0
- package/skill/references/models/seedance25.md +1 -1
- package/skill/references/workflows/marketing-studio.md +9 -0
- package/skill/references/workflows/product-photoshoot.md +3 -0
- package/skill/references/workflows/thumbnails.md +117 -0
- package/skill/references/workflows/ugc-smartphone.md +238 -0
- package/src/apps/widgets/generation.js +12 -3
package/package.json
CHANGED
package/skill/GENERATED.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AUTO-GENERATED — do not edit
|
|
2
2
|
|
|
3
|
-
This tree is mirrored from kolbo-code@
|
|
3
|
+
This tree is mirrored from kolbo-code@b950100, the single source of truth.
|
|
4
4
|
Canonical source: packages/opencode/skills/kolbo/
|
|
5
5
|
Distribution: .github/workflows/sync-skill-to-plugin.yml
|
|
6
6
|
|
package/skill/SKILL.md
CHANGED
|
@@ -70,6 +70,8 @@ For multi-scene / batch work this pairs with `generate_creative_director` (see b
|
|
|
70
70
|
| Build a **dashboard / data viz / interactive widget / mini-game / UI mockup** | `references/models/visual-code.md` |
|
|
71
71
|
| Generate with **any other model** (Flux, Kling, Sora, Hailuo, ElevenLabs, DeepDub, …) — also covers universal prompt-engineering basics | `references/models/prompt-copilot.md` |
|
|
72
72
|
| Build a **UGC ad / TV spot / branded video / unboxing / product review / virtual try-on** | `references/workflows/marketing-studio.md` |
|
|
73
|
+
| Make anything look **shot on a phone** — UGC, selfie, candid, "authentic", a product photo that must not look like an ad (image OR video) | `references/workflows/ugc-smartphone.md` |
|
|
74
|
+
| Make a **YouTube / Shorts / Reels thumbnail** or video cover | `references/workflows/thumbnails.md` |
|
|
73
75
|
| Compose a **DTC ad image** (brand kit + ad format + avatar + product + reference media) | `references/workflows/dtc-ads.md` |
|
|
74
76
|
| Generate **brand product imagery** (studio shot, lifestyle, Pinterest pin, hero banner, carousel, ad pack, virtual try-on, conceptual, restyle) | `references/workflows/product-photoshoot.md` |
|
|
75
77
|
| Generate **marketplace listing cards** (Amazon main + secondary + A+ content) | `references/workflows/marketplace-cards.md` |
|
|
@@ -104,3 +104,17 @@ For any ad / story / scene-based video **created from scratch** featuring a Visu
|
|
|
104
104
|
3. **Animate each frame** with `generate_video_from_image`, passing each approved frame as `image_url`.
|
|
105
105
|
|
|
106
106
|
Skip frames-first only when the user says "go straight to video / skip the storyboard", on single-shot quick experiments, or when the user supplies their own approved frames.
|
|
107
|
+
|
|
108
|
+
## UGC sets and thumbnail sets
|
|
109
|
+
|
|
110
|
+
Two batch shapes come up constantly and both have their own craft file:
|
|
111
|
+
|
|
112
|
+
- **UGC set** — same creator or product, several angles, all pretending to be one camera
|
|
113
|
+
roll. Put the phone-look line in EVERY scene worded identically (a look written once at
|
|
114
|
+
the top drifts by scene 4), vary the angle and the moment rather than the look, and never
|
|
115
|
+
mix a graded scene into the set. See `workflows/ugc-smartphone.md`.
|
|
116
|
+
- **Thumbnail set** — vary the CONCEPT (bold → minimal → saturated → dark moody →
|
|
117
|
+
typography-forward), never the words; keep the text to 2–4 quoted words and forbid every
|
|
118
|
+
other word on the image. See `workflows/thumbnails.md`. Kolbo also ships a dedicated
|
|
119
|
+
**Thumbnail Generator** tool that runs on Creative Director and fans out 4–8 art-directed
|
|
120
|
+
variations of one topic — name it when the user just wants options.
|
|
@@ -19,6 +19,7 @@ Load this file when the user wants a **GPT Image 2 / gpt-image-2** image (OpenAI
|
|
|
19
19
|
- **Structure + goal**: write prompts in a consistent order — background/scene → subject → key details → constraints → declared intended use (ad / UI mock / infographic / poster / logo / etc.). The "intended use" line sets the mode and polish level.
|
|
20
20
|
- **Format**: prefer skimmable templates over clever syntax. Use short labeled segments or line breaks for complex requests. Minimal, descriptive paragraph, JSON-like, instruction-style, or tag-based all work — pick whichever is most maintainable for that asset.
|
|
21
21
|
- **Specificity + quality cues**: be concrete about materials, shapes, textures, and medium (photo / watercolor / 3D render / vector). Add targeted quality levers only when needed (`film grain`, `textured brushstrokes`, `macro detail`).
|
|
22
|
+
- **Phone-shot / UGC / "authentic" realism**: photorealism triggers are not enough — that look needs deep depth of field, computational-HDR flatness, named available light and deliberate imperfection. Read `workflows/ugc-smartphone.md`.
|
|
22
23
|
- **Photorealism trigger**: include the literal word **"photorealistic"** to engage the model's photorealistic mode. Supporting phrases: "real photograph", "taken on a real camera", "professional photography", "iPhone photo", "35mm film". Camera specs (lens mm, aperture) work for high-level look but are loosely interpreted — use for vibe, not physics.
|
|
23
24
|
- **Composition**: specify framing/viewpoint (close-up, wide, top-down), perspective (eye-level, low-angle), lighting/mood (soft diffuse, golden hour, high-contrast). If layout matters, call out placement ("logo top-right", "subject centered, negative space on left").
|
|
24
25
|
- **People, pose, action**: describe scale, body framing, gaze, object interactions ("full body visible, feet included", "looking down at the open book, not at the camera", "hands naturally gripping the handlebar").
|
|
@@ -72,6 +72,7 @@ Layer these onto any framework to lift good → breathtaking.
|
|
|
72
72
|
- **Natural**: "golden hour backlighting with long shadows", "overcast diffused light", "blue-hour twilight ambient".
|
|
73
73
|
|
|
74
74
|
### Camera, lens, focus (hardware = visual DNA)
|
|
75
|
+
- **`iPhone` is a vibe word, not a look** — for a real phone-capture image (and for a product photo that must not read as an ad) read `workflows/ugc-smartphone.md` and write the optics/processing/light/imperfection stack.
|
|
75
76
|
- **Hardware vibe**: `GoPro` for distorted action immersion · `Fujifilm` for authentic color science · `disposable camera` for raw nostalgic flash · `Hasselblad medium format` for editorial fashion · `iPhone` for everyday realism · `ARRI ALEXA` for cinematic.
|
|
76
77
|
- **Lens / focus**: "low-angle shot, shallow depth of field f/1.8", "wide-angle for vast scale", "macro for intricate detail", "85mm portrait compression", "anamorphic 2.39:1 bokeh".
|
|
77
78
|
|
|
@@ -33,7 +33,7 @@ then timecoded `SHOT N — 0:00–0:02 — Medium / camera position` beats. Full
|
|
|
33
33
|
|
|
34
34
|
2.5 is where this format earns its keep: 15 shots timed to 30s, ~5k characters, one locked look so every cut matches camera / grade / cast. Do not skip the three blocks. Do not restack GLOBAL LOOK inside shots.
|
|
35
35
|
|
|
36
|
-
UGC / phone vertical: NEVER write "cinematic". GLOBAL LOOK is phone-native. Use `N connected phone shots, Xs total, 9:16, Multishot ON` and restate `9:16 vertical phone frame` inside every shot.
|
|
36
|
+
UGC / phone vertical (full craft: `workflows/ugc-smartphone.md`): NEVER write "cinematic". GLOBAL LOOK is phone-native. Use `N connected phone shots, Xs total, 9:16, Multishot ON` and restate `9:16 vertical phone frame` inside every shot.
|
|
37
37
|
|
|
38
38
|
## Prompt length
|
|
39
39
|
|
|
@@ -54,6 +54,15 @@ The mode determines which Kolbo MCP tool to call, what defaults to set, and what
|
|
|
54
54
|
|
|
55
55
|
**Pick the actual model** with `list_models({ type: "..." })` and validate caps before firing — see SKILL.md "Resolution / Aspect / Duration — validate against caps".
|
|
56
56
|
|
|
57
|
+
## The Look Itself — read `workflows/ugc-smartphone.md`
|
|
58
|
+
|
|
59
|
+
The modes and defaults below decide WHAT gets made. The physics that make it read as a
|
|
60
|
+
real phone capture — deep depth of field, computational HDR, named available light,
|
|
61
|
+
imperfect framing — live in `workflows/ugc-smartphone.md`. Read it before writing any
|
|
62
|
+
UGC prompt: **"smartphone" on its own does not produce a smartphone look**, and that file
|
|
63
|
+
is also where the still-image cases live (a user's product photo re-shot as a customer
|
|
64
|
+
snapshot, the to-camera vs observational subject dial).
|
|
65
|
+
|
|
57
66
|
## UGC Family Defaults (CRITICAL)
|
|
58
67
|
|
|
59
68
|
When ANY `ugc*` mode is selected, snap to these unless the user explicitly overrides:
|
|
@@ -171,6 +171,9 @@ NO captions, NO watermarks, NO extra text.
|
|
|
171
171
|
@image1 (the product) in a {real-world scene description},
|
|
172
172
|
natural {time-of-day} light, {natural action involving the product}.
|
|
173
173
|
Photographic, editorial style, {iPhone | 35mm film | medium format} feel.
|
|
174
|
+
<!-- "iPhone feel" is not a look on its own — for a genuine phone-shot / UGC product
|
|
175
|
+
photo (deep focus, computational HDR, named available light, real clutter, and the
|
|
176
|
+
rules for keeping label identity intact) read workflows/ugc-smartphone.md. -->
|
|
174
177
|
{Optional: include hands, partial face — never identifiable people}.
|
|
175
178
|
{Brand palette baked into props/clothing}.
|
|
176
179
|
NO captions, NO watermarks.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Thumbnails — YouTube, Shorts, Reels, TikTok covers
|
|
2
|
+
|
|
3
|
+
Load this file when the user wants a **thumbnail, video cover, first-frame card, or
|
|
4
|
+
channel art**: "thumbnail for my video", "YouTube cover", "Shorts cover", "make it
|
|
5
|
+
clickable", "higher CTR".
|
|
6
|
+
|
|
7
|
+
A thumbnail is not a nice image at small size. It is a different craft with a different
|
|
8
|
+
success test: **it is judged at ~200px inside a scrolling feed, next to a hundred others.**
|
|
9
|
+
Everything below follows from that.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## The four layers
|
|
14
|
+
|
|
15
|
+
Every thumbnail that works has exactly these, in this order of importance.
|
|
16
|
+
|
|
17
|
+
### 1. ONE hero subject — 40–70% of the frame
|
|
18
|
+
|
|
19
|
+
A face with a big, readable emotion (eyes visible, mouth doing something), or a single
|
|
20
|
+
object caught mid-action. Crop tight — chest-up for a person.
|
|
21
|
+
|
|
22
|
+
Kill on sight: full-body wide shots, three competing focal points, a floating UI panel, an
|
|
23
|
+
abstract gradient, "a person at a desk". If the concept has no surprise, wit, or
|
|
24
|
+
impossibility in it, it will not stop a scroll — write the concept as one sentence first,
|
|
25
|
+
and if that sentence is boring, invent harder before generating.
|
|
26
|
+
|
|
27
|
+
### 2. Extreme separation
|
|
28
|
+
|
|
29
|
+
The subject must pop off the background: a dark field behind a bright subject, or one
|
|
30
|
+
saturated accent against its complement. **Mid-tone on mid-tone is the number-one
|
|
31
|
+
unreadable-thumbnail failure.** Muted, tasteful palettes lose in a feed.
|
|
32
|
+
|
|
33
|
+
### 3. Text — 2 to 4 words, maximum
|
|
34
|
+
|
|
35
|
+
- Quote the exact words in the prompt: `render only this text: "STOP DOING THIS"`.
|
|
36
|
+
- Topmost layer, above every element and effect.
|
|
37
|
+
- Roughly **35–45% of the canvas width**. Heavy condensed sans.
|
|
38
|
+
- White or a single accent colour with a **thick dark outline or a solid backing bar** —
|
|
39
|
+
raw text on a busy image is illegible small.
|
|
40
|
+
- Upper or lower third. **Never across the face.**
|
|
41
|
+
- Forbid everything else explicitly: `no other text, no taglines, no watermark, no logo,
|
|
42
|
+
no captions, no placeholder text`.
|
|
43
|
+
|
|
44
|
+
Long strings come back mangled from every image model. If the user wrote a sentence, put
|
|
45
|
+
three words on the image and tell them the rest belongs in the video title. For brand
|
|
46
|
+
names, spell them letter-by-letter in the prompt and raise quality when the type is small.
|
|
47
|
+
|
|
48
|
+
**Depth trick:** let the subject overlap one word slightly (subject in front of one
|
|
49
|
+
letter). Instant production value.
|
|
50
|
+
|
|
51
|
+
### 4. Platform-safe composition
|
|
52
|
+
|
|
53
|
+
| Format | Rules |
|
|
54
|
+
|---|---|
|
|
55
|
+
| **16:9 — YouTube** | Centre-weighted. Nothing critical in the outer 15%: the duration chip sits bottom-right and the red progress bar covers the bottom edge on watched videos. |
|
|
56
|
+
| **9:16 — Shorts / Reels / TikTok** | Every critical element must survive a **centre-square crop** (feeds and grids crop vertical media to its middle). Keep the top ~15% and the bottom ~20% clear of the platform's title, avatar, caption and buttons. |
|
|
57
|
+
| **1:1** | Community posts and square feeds. |
|
|
58
|
+
|
|
59
|
+
**Verification is a release gate, not a suggestion:** view the render at ~200px, and for
|
|
60
|
+
9:16 crop the centre square first. If the words or the face don't survive, iterate.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Model choice
|
|
65
|
+
|
|
66
|
+
Text fidelity is the entire constraint. Pick the image model that renders type most
|
|
67
|
+
reliably, and raise the quality setting when the words are small or multi-font. If the
|
|
68
|
+
words come back garbled twice, generate the image **text-free** and tell the user to set
|
|
69
|
+
the type in the Canvas tool — a clean plate plus real type beats a third mangled attempt.
|
|
70
|
+
|
|
71
|
+
## Routing in Kolbo
|
|
72
|
+
|
|
73
|
+
| Ask | Tool |
|
|
74
|
+
|---|---|
|
|
75
|
+
| One cover | `generate_image` (a single `text_to_image`) |
|
|
76
|
+
| Several options at once | The in-app **Thumbnail Generator** — topic + style + font + aspect, and it fans out 4–8 art-directed variations in one run (it uses Creative Director underneath) |
|
|
77
|
+
| A batch with a locked character or product | `generate_creative_director` with a Visual DNA attached |
|
|
78
|
+
| Cover for a video the user already made | Never crop a frame out of the video — generate a fresh comp. A film frame is exposed for motion, not for a 200px grid |
|
|
79
|
+
|
|
80
|
+
## Variation ladder
|
|
81
|
+
|
|
82
|
+
When producing a set, vary the **concept**, never the words. This is the ladder the in-app
|
|
83
|
+
tool uses, and it is a good default order:
|
|
84
|
+
|
|
85
|
+
1. Bold dynamic — high contrast, dramatic light, scroll-stopping energy
|
|
86
|
+
2. Clean minimal — one focal point, premium negative space
|
|
87
|
+
3. Vibrant saturated — rich colour, maximum visual impact
|
|
88
|
+
4. Cinematic wide — epic scale, movie-poster feeling
|
|
89
|
+
5. Close-up dramatic — intense subject detail, emotional impact
|
|
90
|
+
6. Typography-forward — the text is the hero, graphic art direction
|
|
91
|
+
7. Dark moody — deep shadows, selective highlights
|
|
92
|
+
8. Flat bright illustration — playful shapes, bold outlines
|
|
93
|
+
|
|
94
|
+
## Faces
|
|
95
|
+
|
|
96
|
+
If the channel has a host, lock them with a **character Visual DNA**
|
|
97
|
+
(`workflows/visual-dna.md`) so every thumbnail in the series is the same person. Expression
|
|
98
|
+
is the payload: shock, delight, disbelief, triumph. A neutral face is a wasted thumbnail.
|
|
99
|
+
|
|
100
|
+
## Phone-shot thumbnails
|
|
101
|
+
|
|
102
|
+
A "raw / authentic" cover is a real style — a phone-shot frame with big type over it beats
|
|
103
|
+
a polished render for vlog and UGC channels. Build the plate from
|
|
104
|
+
`workflows/ugc-smartphone.md`, then apply the text rules above unchanged. The type stays
|
|
105
|
+
graphic and deliberate even when the photo is deliberately casual.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Checklist
|
|
110
|
+
|
|
111
|
+
- [ ] One subject, 40–70% of frame, tight crop
|
|
112
|
+
- [ ] Subject separates hard from the background
|
|
113
|
+
- [ ] ≤ 4 words, quoted verbatim, everything else forbidden
|
|
114
|
+
- [ ] Text has an outline or backing bar, sits off the face
|
|
115
|
+
- [ ] Correct aspect, critical content inside the safe area
|
|
116
|
+
- [ ] Checked at 200px (and centre-cropped first, for 9:16)
|
|
117
|
+
- [ ] No watermark, no stray words, no gibberish letters
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# UGC / Smartphone Look — Images and Video
|
|
2
|
+
|
|
3
|
+
Load this file whenever the user asks for anything that should look like a real person's
|
|
4
|
+
phone captured it: "UGC", "shot on my phone", "iPhone photo", "selfie", "candid",
|
|
5
|
+
"authentic", "organic", "TikTok / Reels / Shorts", "creator video", "unboxing", "POV",
|
|
6
|
+
"talking head", or a product photo that "shouldn't look like an ad".
|
|
7
|
+
|
|
8
|
+
For the *campaign* layer around this — ad modes, hooks, avatars, brand kits — see
|
|
9
|
+
`workflows/marketing-studio.md`. This file is the LOOK: the physics that make a
|
|
10
|
+
generation read as a phone capture instead of a commercial.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## The one rule everything else follows
|
|
15
|
+
|
|
16
|
+
**Writing "smartphone photo" does not produce a smartphone photo.**
|
|
17
|
+
|
|
18
|
+
Image and video models treat "phone" as a subject label, not a rendering instruction.
|
|
19
|
+
The model has already decided what a good picture looks like — shallow depth of field,
|
|
20
|
+
sculpted key light, clean background, retouched skin — and the word "phone" does not
|
|
21
|
+
overrule any of it. You have to specify the *causes*.
|
|
22
|
+
|
|
23
|
+
Every UGC prompt states four things. Miss one and it drifts back to a commercial.
|
|
24
|
+
|
|
25
|
+
### 1. Optics — the biggest tell
|
|
26
|
+
|
|
27
|
+
> `shot on a phone, 24mm-equivalent wide lens, tiny sensor: DEEP depth of field, the
|
|
28
|
+
> background as sharp as the subject`
|
|
29
|
+
|
|
30
|
+
Deep focus is the single strongest signal. A creamy blurred background instantly reads
|
|
31
|
+
"produced" — it is physically what a phone cannot do without portrait mode. Add:
|
|
32
|
+
|
|
33
|
+
- mild wide-angle distortion toward the frame edges
|
|
34
|
+
- close-focus perspective: the nearest hand / nose / product reads slightly large
|
|
35
|
+
- the camera stands where a person stands — chest height, arm's length, or above a table
|
|
36
|
+
|
|
37
|
+
### 2. Processing — what the phone's chip does after the shutter
|
|
38
|
+
|
|
39
|
+
> `computational HDR: flat contrast, lifted shadows, highlights held right at clipping,
|
|
40
|
+
> over-sharpened micro-detail, heavy noise reduction with faint luminance noise in the shadows`
|
|
41
|
+
|
|
42
|
+
This is the "digital" texture people recognise without being able to name. It is the
|
|
43
|
+
opposite of a graded image: nothing is crushed, nothing is filmic, edges are a little
|
|
44
|
+
too crisp.
|
|
45
|
+
|
|
46
|
+
### 3. Light — available only, and NAMED
|
|
47
|
+
|
|
48
|
+
Never "natural lighting". Name the actual source:
|
|
49
|
+
|
|
50
|
+
| Source | What it does |
|
|
51
|
+
|---|---|
|
|
52
|
+
| Window daylight | soft from one side, faint pane shadows, cool |
|
|
53
|
+
| One ceiling bulb | top-down, warm, shadowed eye sockets |
|
|
54
|
+
| Phone / laptop screen glow | up-lit face, cool cast, dark room |
|
|
55
|
+
| Supermarket / office fluorescents | flat, green-ish, no modelling |
|
|
56
|
+
| Direct on-camera flash at night | hard shadow thrown on the wall behind, hot falloff, dark background |
|
|
57
|
+
|
|
58
|
+
**Mixed white balance in one frame is the strongest realism cue that exists** — warm bulb
|
|
59
|
+
inside plus cool daylight through a window, and the model stops rendering a studio.
|
|
60
|
+
|
|
61
|
+
### 4. Imperfection — the part everyone skips
|
|
62
|
+
|
|
63
|
+
- framing slightly off-centre, a few degrees of tilt, head near the top edge or lightly cropped
|
|
64
|
+
- caught mid-gesture or mid-blink, not on a posed peak
|
|
65
|
+
- faint motion blur on a moving hand
|
|
66
|
+
- visible pores, flyaway hair, creased clothing, chapped lips — no beauty retouching
|
|
67
|
+
- **a real cluttered background**: cables, a mug, an unmade bed corner, a full dish rack.
|
|
68
|
+
Empty minimal sets are the AI default and the giveaway.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## The subject dial — ask once, then state it
|
|
73
|
+
|
|
74
|
+
Users often want the subject facing camera. **Often — not always.** Decide it explicitly
|
|
75
|
+
and write it into the prompt:
|
|
76
|
+
|
|
77
|
+
- **TO-CAMERA** — arm's-length selfie geometry, direct eye contact, talking to the viewer
|
|
78
|
+
like a friend. Default for a talking head, review, testimonial, or hook.
|
|
79
|
+
- **OBSERVATIONAL** — candid, subject unaware, filmed by someone standing where a person
|
|
80
|
+
would stand. Default for lifestyle, product-in-use, and "day in the life".
|
|
81
|
+
|
|
82
|
+
Do not silently assume to-camera for every UGC ask; an observational frame is what makes a
|
|
83
|
+
product shot feel found rather than staged.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Product + UGC (the most common image case)
|
|
88
|
+
|
|
89
|
+
The user uploads a product and wants a photo a customer could have taken.
|
|
90
|
+
|
|
91
|
+
**Route first:**
|
|
92
|
+
|
|
93
|
+
| What they want | Tool |
|
|
94
|
+
|---|---|
|
|
95
|
+
| The SAME uploaded photo re-rendered as a phone shot | `generate_image_edit` (`image_editing`) |
|
|
96
|
+
| The product in a NEW scene — a hand, a counter, a gym bag | `generate_image` with the product image as a reference |
|
|
97
|
+
|
|
98
|
+
**Then four hard rules:**
|
|
99
|
+
|
|
100
|
+
1. **Identity is not creative latitude.** `keep the label artwork, typography, colours,
|
|
101
|
+
proportions and closure exactly as in the reference — do not redesign, re-letter or
|
|
102
|
+
re-colour the packaging`. Models rewrite label text unless forbidden. If the label
|
|
103
|
+
carries words, quote them verbatim in the prompt.
|
|
104
|
+
2. **Relight it into the room.** A studio pack-shot dropped into a kitchen is the classic
|
|
105
|
+
fake. Demand: the same light direction and colour temperature as the scene, a contact
|
|
106
|
+
shadow where it meets the surface, the room reflected in glossy or laminated faces, a
|
|
107
|
+
matching noise level, and no leftover white-cyclorama edge glow.
|
|
108
|
+
3. **Human scale.** A real hand holding or using it — unmanicured nails, natural grip,
|
|
109
|
+
slight motion blur — or set down mid-use (open, half-full, cap beside it). Never
|
|
110
|
+
centred like a catalogue.
|
|
111
|
+
4. **One product per frame**, label toward camera at least once.
|
|
112
|
+
|
|
113
|
+
For recurring products, make a **product Visual DNA** (`workflows/visual-dna.md`) so the
|
|
114
|
+
identity survives every generation instead of being re-described each time.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Video
|
|
119
|
+
|
|
120
|
+
Everything above still applies. On top of it:
|
|
121
|
+
|
|
122
|
+
- **The word "cinematic" is banned** — not in the header, not in GLOBAL LOOK, not in a
|
|
123
|
+
shot. It is the single line that turns a phone video back into a commercial.
|
|
124
|
+
- **Frame:** `9:16 vertical phone frame`, restated **inside every shot**. Forbid letterbox,
|
|
125
|
+
pillarbox and 16:9 inserts — multishot models silently flip a later shot to widescreen
|
|
126
|
+
when the prompt reads filmic.
|
|
127
|
+
- **Single shot vs multi-shot** — ask, don't assume:
|
|
128
|
+
- *Single* (default): `single unbroken take, no cuts`. One continuous handheld take is
|
|
129
|
+
what most UGC actually is.
|
|
130
|
+
- *Multi*: `N connected phone shots, Xs total, 9:16, Multishot ON`. Every shot must be an
|
|
131
|
+
angle one person with one phone could actually have grabbed — never crew coverage.
|
|
132
|
+
Vary the angle and the moment (selfie arm → held out at the product → set down on the
|
|
133
|
+
counter → mid-use), never the look.
|
|
134
|
+
- **Camera:** the phone is in a hand. Slight sway with constant micro-corrections,
|
|
135
|
+
reframing a beat late, selfie-arm at arm's length, or propped on a surface. NEVER dolly,
|
|
136
|
+
crane, gimbal glide, orbit, crash zoom, or a locked tripod master.
|
|
137
|
+
- **Product:** it is HANDLED, not displayed — picked up, opened, used, label turned to the
|
|
138
|
+
lens at least once, and locked identical across every shot.
|
|
139
|
+
- **Audio:** room tone and the phone's own mic. No score, no SFX layer, no burned-in
|
|
140
|
+
captions or subtitles unless the user explicitly asked (they add those in CapCut, and
|
|
141
|
+
baked-in captions kill reuse).
|
|
142
|
+
|
|
143
|
+
Seedance's phone-vertical exception in `references/models/seedance25.md` is the same rule
|
|
144
|
+
from the model's side — read it before compiling a multi-shot UGC prompt.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## The negative list (append it every time)
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
no cinematic colour grade, no teal-and-orange, no shallow depth of field or bokeh,
|
|
152
|
+
no anamorphic flare, no studio softbox or rim light, no beauty retouching or skin
|
|
153
|
+
smoothing, no film-grain overlay, no perfect symmetry, no watermark, no added text
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Aspect
|
|
157
|
+
|
|
158
|
+
9:16 for social and Stories. 4:3 / 3:4 for a camera-roll photo. Widescreen only if asked.
|
|
159
|
+
|
|
160
|
+
## Optional era dials (only when the user wants that vibe)
|
|
161
|
+
|
|
162
|
+
Direct-flash night party · disposable camera with a burned-in date stamp · front-camera
|
|
163
|
+
selfie with the arm in frame · screenshot of a video call · mirror selfie with the phone
|
|
164
|
+
visible · early-2010s low-light grain.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Parity with the Kolbo app
|
|
169
|
+
|
|
170
|
+
The web app ships this look as a **Smartphone** cinematic preset, and its wording is the
|
|
171
|
+
house baseline — match it so a prompt written here and a preset clicked in the UI produce
|
|
172
|
+
the same picture:
|
|
173
|
+
|
|
174
|
+
- **Camera — Smartphone:** *the everyday look of a phone snapshot, deep depth of field with
|
|
175
|
+
foreground and background both sharp, flat computational-HDR contrast, slightly
|
|
176
|
+
oversharpened detail, candid realism*
|
|
177
|
+
- **Focal length:** 24mm · **Lighting:** Window Light · **Colour:** Naturalistic Clean
|
|
178
|
+
|
|
179
|
+
`list_cinematic_presets` returns the live catalog. Related in-app looks worth knowing:
|
|
180
|
+
**Camcorder Tape** (2000s home video), **Reality Show**, **Mockumentary**, and the
|
|
181
|
+
**Handheld** movesets for video.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Copy-ready seeds
|
|
186
|
+
|
|
187
|
+
**Phone still (person):**
|
|
188
|
+
```
|
|
189
|
+
Candid phone snapshot of {subject} in {real, specific room}, {mid-action}.
|
|
190
|
+
Shot on a phone, 24mm wide, tiny sensor — deep depth of field, background as sharp as
|
|
191
|
+
the subject. Computational HDR: flat contrast, lifted shadows, highlights at clipping,
|
|
192
|
+
over-sharpened detail, faint shadow noise. Lit only by {named source}; {second source}
|
|
193
|
+
mixes a different colour temperature into the frame. Framing slightly off-centre with a
|
|
194
|
+
few degrees of tilt, caught mid-gesture. Visible skin texture and flyaway hair, creased
|
|
195
|
+
clothing, real clutter in the background ({two specific objects}).
|
|
196
|
+
9:16 vertical.
|
|
197
|
+
no cinematic grade, no bokeh, no rim light, no retouching, no watermark, no text
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Product in a real kitchen (new scene, product image as reference):**
|
|
201
|
+
```
|
|
202
|
+
{Product from the reference} held in a real hand over a kitchen counter, mid-use, cap
|
|
203
|
+
beside it. Keep the label artwork, typography, colours and proportions exactly as in the
|
|
204
|
+
reference — do not redesign or re-letter the packaging.
|
|
205
|
+
Shot on a phone, 24mm wide, deep depth of field. Computational HDR, flat contrast,
|
|
206
|
+
over-sharpened detail. Lit by window daylight from the left with a warm ceiling bulb
|
|
207
|
+
mixing in. The product is relit by the room: matching light direction and colour, a
|
|
208
|
+
contact shadow where it meets the counter, the window reflected in its glossy face,
|
|
209
|
+
the same noise level as the rest of the frame.
|
|
210
|
+
Unmanicured nails, natural grip, slight motion blur. Crumbs and a mug in the background.
|
|
211
|
+
4:3.
|
|
212
|
+
no studio background, no rim light, no bokeh, no retouching, no added text
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**Single-shot UGC video:**
|
|
216
|
+
```
|
|
217
|
+
Single unbroken take, no cuts, 9:16 vertical phone frame.
|
|
218
|
+
{Presenter or @dna} in {everyday room}, TO-CAMERA, talking to the viewer like a friend
|
|
219
|
+
while {natural action with the product}. Phone held at arm's length with slight sway and
|
|
220
|
+
constant micro-corrections; the frame reframes a beat late.
|
|
221
|
+
Available light only: {named source}. Deep focus, flat computational-HDR contrast,
|
|
222
|
+
over-sharpened detail.
|
|
223
|
+
Audio: room tone and the phone's own mic. No music, no SFX, no captions.
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## QC — look for these before you ship
|
|
229
|
+
|
|
230
|
+
| Symptom | Cause |
|
|
231
|
+
|---|---|
|
|
232
|
+
| Background is blurred | you didn't demand deep depth of field |
|
|
233
|
+
| Reads as an ad | the word "cinematic" survived, or a rim/key light is in the prompt |
|
|
234
|
+
| Product looks pasted in | you didn't relight it into the scene |
|
|
235
|
+
| Label text is wrong | you didn't forbid redesigning it / didn't quote the words |
|
|
236
|
+
| Face is plastic | no pores/asymmetry/flyaway hair line, or retouching wasn't forbidden |
|
|
237
|
+
| Set is empty and clean | you didn't name real clutter |
|
|
238
|
+
| A later video shot went widescreen | 9:16 wasn't restated inside every shot |
|
|
@@ -133,9 +133,18 @@ function boot(sc) {
|
|
|
133
133
|
makeExpandable(el('prompt'));
|
|
134
134
|
renderChips(sc);
|
|
135
135
|
el('credits').textContent = sc.credits_used != null ? fmtCredits(sc.credits_used) : '';
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
// Every legitimate completed payload sets phase:'completed' explicitly
|
|
137
|
+
// (uiCompleted, completedFromPlain, the visual_dna character-sheet path) —
|
|
138
|
+
// there is no real case where "no media yet" should render as a result.
|
|
139
|
+
// A host that sends some OTHER phase string here (e.g. a host-side
|
|
140
|
+
// pre-flight envelope built before the tool call even ran) used to fall
|
|
141
|
+
// through straight to renderResult with no urls/scenes, rendering as a
|
|
142
|
+
// broken/empty "completed" card — indistinguishable from a real failure —
|
|
143
|
+
// for however long that phase lingered. Default anything unrecognized to
|
|
144
|
+
// "still working" instead of assuming it's done.
|
|
145
|
+
if (sc.phase === 'failed') renderError(sc.error || 'Generation failed');
|
|
146
|
+
else if (sc.phase === 'completed') renderResult(sc);
|
|
147
|
+
else renderGenerating(sc);
|
|
139
148
|
window.kolbo.notifySize();
|
|
140
149
|
}
|
|
141
150
|
|