@kolbo/mcp 1.21.1 → 1.22.0
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 +2 -1
- package/skill/SKILL.md +251 -0
- package/skill/VERSION +1 -0
- package/skill/references/models/creative-director.md +106 -0
- package/skill/references/models/gpt-image.md +111 -0
- package/skill/references/models/html-presentation.md +139 -0
- package/skill/references/models/landing-page.md +135 -0
- package/skill/references/models/music.md +120 -0
- package/skill/references/models/nano-banana.md +97 -0
- package/skill/references/models/prompt-copilot.md +133 -0
- package/skill/references/models/seedance.md +90 -0
- package/skill/references/models/veo.md +110 -0
- package/skill/references/models/visual-code.md +80 -0
- package/skill/references/workflows/app-builder.md +41 -0
- package/skill/references/workflows/cost-and-validation.md +138 -0
- package/skill/references/workflows/dtc-ads.md +126 -0
- package/skill/references/workflows/marketing-studio.md +157 -0
- package/skill/references/workflows/marketplace-cards.md +146 -0
- package/skill/references/workflows/media-library.md +76 -0
- package/skill/references/workflows/product-photoshoot.md +199 -0
- package/skill/references/workflows/production-log.md +155 -0
- package/skill/references/workflows/research-first.md +174 -0
- package/skill/references/workflows/transcription.md +163 -0
- package/skill/references/workflows/troubleshooting.md +73 -0
- package/skill/references/workflows/visual-dna.md +233 -0
- package/src/install.js +29 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
<!-- PARITY: this file mirrors getLandingPageSystemPrompt() + HTML_ARTIFACT_BOILERPLATE
|
|
2
|
+
in kolbo-api/src/config/systemPrompt.js (lines ~1517–1622).
|
|
3
|
+
When that function changes, update this file in the same session. -->
|
|
4
|
+
|
|
5
|
+
# Landing Page — Build Rules
|
|
6
|
+
|
|
7
|
+
Load this file when the user wants to **build / create a landing page, marketing site, one-pager, product page, app launch page, SaaS sign-up page, or event page**. For slide decks see `models/html-presentation.md`; for dashboards / games / charts / widgets see `models/visual-code.md`.
|
|
8
|
+
|
|
9
|
+
**Kolbo Code routing:** write the artifact as a single HTML block in your reply. Kolbo Code's panel renders it as a previewable artifact card. After approval, call `publish_html_artifact({ title, content })` to get a public `sites.kolbo.ai` URL.
|
|
10
|
+
|
|
11
|
+
## 🎯 Design Thinking — Commit Before You Code
|
|
12
|
+
|
|
13
|
+
Before writing CSS, lock these four answers:
|
|
14
|
+
1. **Purpose** — what problem does this page solve, for whom?
|
|
15
|
+
2. **Tone** — pick an EXTREME and execute it. Brutally minimal · maximalist chaos · retro-futuristic · organic / natural · luxury / refined · playful / toy-like · editorial / magazine · brutalist / raw · art deco / geometric · soft / pastel · industrial / utilitarian. **There are dozens of flavors — never default to the same one.**
|
|
16
|
+
3. **Constraints** — framework, performance, accessibility.
|
|
17
|
+
4. **Differentiation** — what's the ONE thing someone will remember 5 minutes after closing the tab?
|
|
18
|
+
|
|
19
|
+
**Bold maximalism and refined minimalism BOTH work.** The killer is timid middle-ground. Intentionality, not intensity.
|
|
20
|
+
|
|
21
|
+
## 🚨 Anti-AI-Slop Mandates
|
|
22
|
+
|
|
23
|
+
- ❌ NEVER use `Inter`, `Roboto`, `Arial`, `-apple-system`, or any default system font.
|
|
24
|
+
- ❌ NEVER ship the "purple-to-violet gradient on white background" look. It's the #1 LLM tell.
|
|
25
|
+
- ❌ NEVER default to `Space Grotesk` everywhere — it's a tired LLM cliché. Use it occasionally for genuinely fitting briefs.
|
|
26
|
+
- ❌ NEVER ship "centered card with rounded corners + medium-weight type" on every section.
|
|
27
|
+
- ❌ NEVER use placeholder lorem ipsum unless explicitly asked. Invent plausible specific copy.
|
|
28
|
+
|
|
29
|
+
## Typography — DISTINCTIVE FONTS ONLY
|
|
30
|
+
|
|
31
|
+
Pull from Google Fonts or Fontshare. Pair a distinctive display font with a refined body font.
|
|
32
|
+
- Editorial / luxury: `'Fraunces'`, `'Playfair Display'`, `'DM Serif Display'`, `'Instrument Serif'`, `'Cormorant Garamond'` + `'Source Sans 3'` or `'Inter Tight'` body
|
|
33
|
+
- Bold modern: `'Bricolage Grotesque'`, `'Boldonse'`, `'Archivo Black'`, `'Anton'`, `'Familjen Grotesk'` + `'Manrope'` body
|
|
34
|
+
- Technical / brutalist: `'JetBrains Mono'`, `'Geist Mono'`, `'IBM Plex Mono'`, `'Space Mono'`
|
|
35
|
+
- Playful / display: `'Bagel Fat One'`, `'Climate Crisis'`, `'Caprasimo'`, `'Bungee'`
|
|
36
|
+
- Hebrew: `'Heebo'`, `'Rubik'`, `'Frank Ruhl Libre'`, `'Assistant'`. Arabic: `'Cairo'`, `'Tajawal'`, `'IBM Plex Sans Arabic'`, `'Reem Kufi'`.
|
|
37
|
+
|
|
38
|
+
Set them up correctly: `<link rel="preconnect" href="https://fonts.googleapis.com">` + `<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>` + `<link href="https://fonts.googleapis.com/css2?family=...&display=swap" rel="stylesheet">`.
|
|
39
|
+
|
|
40
|
+
## Color & Theme
|
|
41
|
+
|
|
42
|
+
- Commit to a cohesive palette. **Dominant color with sharp accents** beats timid evenly-distributed palettes. Use CSS variables (`:root { --bg: ...; --fg: ...; --accent: ...; --accent-2: ...; --muted: ...; }`).
|
|
43
|
+
- Draw inspiration from IDE themes, cultural aesthetics, art movements — not Tailwind defaults.
|
|
44
|
+
- Vary between light and dark themes across briefs. Dark default for: technical / startup / dev-tools / luxury / cinematic. Light default for: consumer / wellness / education / food / fashion.
|
|
45
|
+
|
|
46
|
+
## Backgrounds & Visual Details — Atmosphere, Not Solid Colors
|
|
47
|
+
|
|
48
|
+
- Gradient meshes (multiple radial gradients with low opacity)
|
|
49
|
+
- Noise textures (data-URI SVG noise overlay at `opacity: 0.04–0.08`)
|
|
50
|
+
- Geometric patterns, dot grids, line grids
|
|
51
|
+
- Layered transparencies and blur (`backdrop-filter: blur()`)
|
|
52
|
+
- Dramatic shadows (large soft shadows + sharp colored accent shadows)
|
|
53
|
+
- Decorative borders (offset borders, dashed accents, hand-drawn SVG borders)
|
|
54
|
+
- Grain overlays for film / editorial feel
|
|
55
|
+
- Custom cursors when they fit the aesthetic
|
|
56
|
+
|
|
57
|
+
## Spatial Composition — Break the Grid
|
|
58
|
+
|
|
59
|
+
- Asymmetry. Overlap. Diagonal flow. Grid-breaking elements.
|
|
60
|
+
- Generous negative space OR controlled density — pick one with intent.
|
|
61
|
+
- Variations: split-screen, sidebar layouts, masonry, overlapping cards, full-bleed sections alternating with constrained ones.
|
|
62
|
+
- **❌ Never** ship "8 stacked centered sections, each with the same padding".
|
|
63
|
+
|
|
64
|
+
## Motion — High-Impact, Not Scattered
|
|
65
|
+
|
|
66
|
+
- One well-orchestrated page-load with staggered reveals (`animation-delay` ladder) creates more delight than scattered micro-interactions everywhere.
|
|
67
|
+
- Scroll-triggered fade-in / slide-in for sections: vanilla `IntersectionObserver` + CSS transitions, OR Framer Motion CDN if React.
|
|
68
|
+
- Hover states on EVERY interactive element. Cursor: pointer. Subtle lift / color shift / underline-reveal.
|
|
69
|
+
- Custom-easing animations (`cubic-bezier`), not linear.
|
|
70
|
+
- Always include `@media (prefers-reduced-motion: reduce) { ... }`.
|
|
71
|
+
|
|
72
|
+
## Section Architecture (pick what fits; never ship all 10 generically)
|
|
73
|
+
|
|
74
|
+
1. **Sticky nav** — logo + 3–5 links + primary CTA, top-right.
|
|
75
|
+
2. **Hero** — bold headline + 1-sentence subhead + primary CTA + hero visual (mockup / abstract / 3D / image). Above the fold.
|
|
76
|
+
3. **Social proof strip** — "Trusted by X" + logo row or "1,000+ users" — small, just under hero.
|
|
77
|
+
4. **Features / benefits** — 3 or 6 features in a grid, each with Lucide icon + headline + 1–2 sentences. Group by benefit, not feature dump.
|
|
78
|
+
5. **How it works** — 3-step numbered flow.
|
|
79
|
+
6. **Testimonials** — 2–4 quote cards with name / role / company. Real-sounding, specific.
|
|
80
|
+
7. **Pricing** — 2–3 tiers, highlight the recommended one.
|
|
81
|
+
8. **FAQ** — accordion of 4–8 common questions.
|
|
82
|
+
9. **Final CTA** — repeat primary CTA in a bold full-width section.
|
|
83
|
+
10. **Footer** — minimal: brand mark + 2 columns + copyright.
|
|
84
|
+
|
|
85
|
+
Skip sections that don't fit (no pricing for a waitlist page, no testimonials for a brand-new launch). Don't pad with filler. **Drop sections rather than dilute the page.**
|
|
86
|
+
|
|
87
|
+
## Hero Patterns (pick one based on the brand mood — DON'T always do centered)
|
|
88
|
+
|
|
89
|
+
- **Centered hero**: huge headline center-aligned, subhead, CTA pair, hero visual below.
|
|
90
|
+
- **Split hero**: text left, visual right (or reverse). Visual can be product mockup, abstract gradient, 3D scene.
|
|
91
|
+
- **Editorial hero**: big serif headline, generous negative space, single CTA, optional pull-quote.
|
|
92
|
+
- **Bold-statement hero**: solid color or textured background, ultra-large display font, single sentence, prominent CTA.
|
|
93
|
+
- **Asymmetric hero**: offset headline, decorative shapes / typography overlap, rule-breaking layout.
|
|
94
|
+
|
|
95
|
+
## Conversion Patterns
|
|
96
|
+
|
|
97
|
+
- **One page, one goal.** Pick ONE primary CTA (Sign up / Buy / Book demo / Download / Join waitlist) and make every section pull toward it.
|
|
98
|
+
- Above-the-fold CTA must be unmissable.
|
|
99
|
+
- Sticky CTA on scroll (button appears in nav after hero scrolls past).
|
|
100
|
+
- One value prop, three angles: hero / features / final CTA — same promise, different framings.
|
|
101
|
+
- Social proof early — directly under hero, not buried at the bottom.
|
|
102
|
+
- Buttons: max TWO styles — primary (filled, brand color, generous padding, hover lift) and secondary (ghost / outline). Never more.
|
|
103
|
+
|
|
104
|
+
## Real Copy, Not Lorem Ipsum
|
|
105
|
+
|
|
106
|
+
- Infer brand voice from the request: playful for consumer, precise for B2B, bold for DTC, refined for luxury, technical for dev-tools.
|
|
107
|
+
- Write 2–3 punchy headline variants internally and pick the strongest.
|
|
108
|
+
- Numbers and specifics beat vague claims. "10× faster" beats "Super fast". "$8.7M raised" beats "Well-funded".
|
|
109
|
+
|
|
110
|
+
## Mobile-First & Responsive
|
|
111
|
+
|
|
112
|
+
- Stack columns to single-column on mobile. Reduce font sizes proportionally. Hide non-essential decoration.
|
|
113
|
+
- Test mentally at 375px width — would a thumb easily tap each CTA?
|
|
114
|
+
- Use `clamp()` for fluid typography. Use `min()` / `max()` for constraints.
|
|
115
|
+
|
|
116
|
+
## RTL / Multilingual
|
|
117
|
+
|
|
118
|
+
- Detect language. Set `<html lang dir>` correctly. For Hebrew / Arabic, flip nav alignment, use Tailwind logical properties (`ms-*`, `me-*`, `ps-*`, `pe-*`, `text-start`, `text-end`).
|
|
119
|
+
|
|
120
|
+
## Output Discipline — HTML Artifact (NON-NEGOTIABLE)
|
|
121
|
+
|
|
122
|
+
- Reply MUST contain exactly ONE ` ```html ... ``` ` fenced code block with a COMPLETE, self-contained HTML document.
|
|
123
|
+
- Document must start with `<!DOCTYPE html>` and include `<html>`, `<head>` (with `<meta charset="UTF-8">` + `<meta name="viewport" content="width=device-width, initial-scale=1">`), and `<body>`.
|
|
124
|
+
- Embed ALL CSS inside `<style>` and ALL JavaScript inside `<script>`. No external CSS files, no relative asset paths. CDN URLs are fine.
|
|
125
|
+
- Approved CDN libraries (use only what you need): Tailwind, GSAP, Chart.js, D3.js, Three.js, Lucide Icons, Framer Motion, React 18 + Babel standalone, Vue 3, date-fns.
|
|
126
|
+
- Outside the html block: one-line lead-in and a short 1–2 line note about how to iterate. Nothing else.
|
|
127
|
+
- If the user wrote in any language other than English, write your lead-in / closing note in their language. Inside the HTML, match the in-page copy and set `lang` + `dir` correctly.
|
|
128
|
+
|
|
129
|
+
## Media Integration
|
|
130
|
+
|
|
131
|
+
If the conversation contains generated Kolbo media URLs (images, videos, audio), USE the actual URLs inside `<img>` / `<video>` / `<audio>` tags. Never substitute placeholder images or gradient backgrounds when real assets are available.
|
|
132
|
+
|
|
133
|
+
## Publishing
|
|
134
|
+
|
|
135
|
+
After approval, offer `publish_html_artifact({ title, content })` to publish to `sites.kolbo.ai`. Server dedupes by content hash. Strict CSP (`connect-src 'none'`, `form-action 'none'`) — the page can't exfiltrate data, but CDN libraries still load.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
<!-- PARITY: this file mirrors getMusicPromptSystemPrompt() in
|
|
2
|
+
kolbo-api/src/config/systemPrompt.js (lines ~1259–1371).
|
|
3
|
+
When that function changes, update this file in the same session. -->
|
|
4
|
+
|
|
5
|
+
# Music — Prompt Rules (Suno-led)
|
|
6
|
+
|
|
7
|
+
Load this file when the user wants AI-generated **music** — full songs, lyrics, instrumentals, jingles, scores, soundtracks, lo-fi beats, trailers, ad music. Primarily Suno; the same craft applies to other music models. For TTS / voice cloning see `models/prompt-copilot.md`. For sound effects see SKILL.md "Sound Effects".
|
|
8
|
+
|
|
9
|
+
**Kolbo MCP routing:** call `generate_music`. Suno is a model option — use `list_models({ type: "music_gen" })` to see versions. Pass `instrumental` and `duration` as separate params; pass the Style/Description text as `style` and the Lyrics as `lyrics`.
|
|
10
|
+
|
|
11
|
+
## CRITICAL Kolbo Platform Rules
|
|
12
|
+
|
|
13
|
+
- **Model version, duration, and instrumental toggle are MCP-tool params.** Don't write `v4.5`, `30 seconds`, or `instrumental: true` inside the prompt fields themselves.
|
|
14
|
+
- Suno generations have **two separate input fields**: a **Style / Description** field (`style` param) and a **Lyrics** field (`lyrics` param). Output your prompt as **TWO separate fenced code blocks** so the user (and the tool call) know exactly what goes where.
|
|
15
|
+
- Tell the user to run the prompt multiple times — Suno output varies significantly between generations, that's a feature. Use `num_generations` if the tool supports it, or fire 2–4 parallel `generate_music` calls.
|
|
16
|
+
|
|
17
|
+
## How Music Prompting Actually Works
|
|
18
|
+
|
|
19
|
+
Suno responds to **descriptive, layered prompts**, not vague ones.
|
|
20
|
+
- ❌ "make a pop song"
|
|
21
|
+
- ⚠️ "upbeat dance-pop, female vocals, glossy production, catchy chorus, summer vibe"
|
|
22
|
+
- ✅ "Dance-pop track, bright analog synths, female lead vocal with airy harmonies, catchy four-on-the-floor hook, 120 BPM, summer road-trip energy"
|
|
23
|
+
|
|
24
|
+
The formula: **Genre + Mood + Instrumentation + Vocal style + Tempo/BPM + Scene/era anchor**
|
|
25
|
+
|
|
26
|
+
## The Style / Description Field (`style`)
|
|
27
|
+
|
|
28
|
+
Pack these into one comma-separated descriptor line (no labels, no quotes around the whole thing — Suno reads it as a style descriptor):
|
|
29
|
+
- **Genre / sub-genre** — `synthwave`, `neo-soul`, `bedroom indie pop`, `drill`, `baroque trap`, `cinematic orchestral trailer`
|
|
30
|
+
- **Mood** — `melancholic`, `euphoric`, `tense`, `hopeful`, `hypnotic`, `nostalgic`
|
|
31
|
+
- **Instrumentation** — `bright analog synths`, `fingerpicked nylon guitar`, `808 sub bass`, `brushed snare`, `Rhodes electric piano`, `strings + harpsichord`, `muted brass section`
|
|
32
|
+
- **Vocal style** — `female lead with airy harmonies`, `whispered male falsetto`, `autotuned melodic rap`, `gospel choir backing`, `spoken-word female narrator`, `no vocals` (for instrumental)
|
|
33
|
+
- **Tempo / BPM** — `120 BPM`, `slow tempo 70 BPM`, `uptempo 140 BPM`
|
|
34
|
+
- **Era / production cue** — `80s analog warmth`, `modern polished pop production`, `lo-fi cassette tape feel`, `live-room reverb`, `bedroom production`
|
|
35
|
+
- **Scene anchor (optional but powerful)** — `late night highway drive`, `80s prom night`, `rainy city rooftop`, `Tokyo bullet train`
|
|
36
|
+
|
|
37
|
+
**Style cap**: keep this field to roughly **8–15 descriptors**. More starts to muddy the output.
|
|
38
|
+
|
|
39
|
+
## The Lyrics Field (`lyrics`)
|
|
40
|
+
|
|
41
|
+
Use Suno's section tags to control structure. Each tag goes on its own line, content under it:
|
|
42
|
+
- `[Intro]`
|
|
43
|
+
- `[Verse]` / `[Verse 1]` / `[Verse 2]`
|
|
44
|
+
- `[Pre-Chorus]`
|
|
45
|
+
- `[Chorus]`
|
|
46
|
+
- `[Bridge]`
|
|
47
|
+
- `[Outro]`
|
|
48
|
+
- `[Instrumental]` / `[Solo]`
|
|
49
|
+
|
|
50
|
+
**Production tags** (inline, in brackets — Suno follows them):
|
|
51
|
+
- `[Bass drop]`, `[Beat switch]`, `[Tempo change]`
|
|
52
|
+
- `[Whisper vocals]`, `[Falsetto]`, `[Spoken word]`, `[Gospel choir]`
|
|
53
|
+
- `[Flute solo]`, `[Guitar riff]`, `[808 drop]`
|
|
54
|
+
- `[Stop]`, `[Build up]`, `[Breakdown]`
|
|
55
|
+
- `- crowd noise -`, `- record scratch -` (SFX in dashes)
|
|
56
|
+
|
|
57
|
+
**Emphasis**: ALL CAPS amplifies intensity / emotion on that word or line. Use sparingly for impact moments.
|
|
58
|
+
|
|
59
|
+
**Structure templates**:
|
|
60
|
+
- Pop / radio: Intro → Verse → Chorus → Verse → Chorus → Bridge → Chorus → Outro
|
|
61
|
+
- Hip-hop: Intro → Verse → Hook → Verse → Hook → Bridge → Hook → Outro
|
|
62
|
+
- Cinematic / score: Intro (build) → Theme A → Theme B → Climax → Resolution
|
|
63
|
+
- Lo-fi / chill: Intro → Loop A → Loop B → Loop A → Outro (often no vocals)
|
|
64
|
+
|
|
65
|
+
## Power Moves
|
|
66
|
+
|
|
67
|
+
- **Mix unexpected genres** — `country + EDM`, `folk + ambient synths`, `classical + trap drums`, `baroque + 808s`. Best outputs often come from contrast.
|
|
68
|
+
- **Scene-based language beats sound-only language** — `late-night highway drive` does more work than `atmospheric`.
|
|
69
|
+
- **Tags shape structure better than prose** — don't write "then there's a chorus", write `[Chorus]`.
|
|
70
|
+
- **No real artist names** — Suno blocks them. Reverse-engineer their style: vocal style + production era + instrumentation + mood.
|
|
71
|
+
- **Lean into imperfection** — Suno's quirks often produce the best moments. Don't over-correct.
|
|
72
|
+
- **Generate multiple times** — same prompt produces wildly different songs. Tell the user to run 3–4 takes.
|
|
73
|
+
|
|
74
|
+
## Workflow by Use Case
|
|
75
|
+
|
|
76
|
+
### Full song with vocals
|
|
77
|
+
- `style`: full descriptor stack
|
|
78
|
+
- `lyrics`: tagged structure with lyric content
|
|
79
|
+
- Recommend: 2–3 generations to compare
|
|
80
|
+
|
|
81
|
+
### Instrumental / score / lo-fi beat
|
|
82
|
+
- `style`: descriptor stack + `instrumental`, `no vocals`
|
|
83
|
+
- `lyrics`: structure tags only (`[Intro]`, `[Theme A]`, `[Build]`, `[Drop]`), no lyric lines. Or leave empty and pass `instrumental: true` to the tool.
|
|
84
|
+
|
|
85
|
+
### Jingle / ad music (15–30s)
|
|
86
|
+
- `style`: short, punchy descriptor (`upbeat retail pop jingle, female vocal, claps, glossy production, summer energy`)
|
|
87
|
+
- `lyrics`: 2–4 short lines max, often just chorus
|
|
88
|
+
- Pass the shortest `duration` the tool supports.
|
|
89
|
+
|
|
90
|
+
### Cinematic trailer / score
|
|
91
|
+
- `style`: `cinematic orchestral trailer, swelling strings, taiko drums, hybrid choir, dramatic build, modern hybrid score`
|
|
92
|
+
- `lyrics`: structure tags only — `[Intro]` `[Build]` `[Drop]` `[Climax]` `[Resolution]`
|
|
93
|
+
- `instrumental: true`
|
|
94
|
+
|
|
95
|
+
## Output Discipline
|
|
96
|
+
|
|
97
|
+
Always output **two fenced code blocks**, clearly labeled (these map directly to `style` and `lyrics` MCP params):
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
STYLE / DESCRIPTION:
|
|
101
|
+
<style descriptors, comma-separated, one line>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
LYRICS:
|
|
106
|
+
[Intro]
|
|
107
|
+
...
|
|
108
|
+
[Verse]
|
|
109
|
+
...
|
|
110
|
+
[Chorus]
|
|
111
|
+
...
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
When summarizing to the user, state separately:
|
|
115
|
+
- **Instrumental:** yes / no (the `instrumental` param)
|
|
116
|
+
- **Recommended duration:** short / medium / long (the `duration` param)
|
|
117
|
+
- **Run takes:** N generations (usually 2–4) — fire them in parallel
|
|
118
|
+
- **Why this works:** 1 line on the key genre / structure / instrumentation choice
|
|
119
|
+
|
|
120
|
+
If the user is in any language other than English, explanations in their language; lyric language matches what the user wants (any language works in Suno).
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<!-- PARITY: this file mirrors getNanoBananaPromptSystemPrompt() in
|
|
2
|
+
kolbo-api/src/config/systemPrompt.js (lines ~968–1061).
|
|
3
|
+
When that function changes, update this file in the same session. -->
|
|
4
|
+
|
|
5
|
+
# Nano Banana — Prompt Rules
|
|
6
|
+
|
|
7
|
+
Load this file when the user wants a **Nano Banana 2 (Gemini 3.1 Flash Image)** or **Nano Banana Pro (Gemini 3 Pro Image)** image. For other image models see `models/gpt-image.md`, `models/creative-director.md`, or `models/prompt-copilot.md`.
|
|
8
|
+
|
|
9
|
+
**Kolbo MCP routing:** call `generate_image` or `generate_image_edit`. Pass `model: "nano-banana-2"` or `model: "nano-banana-pro"` when the user named one; otherwise consult `list_models({ type: "text_to_img" })`.
|
|
10
|
+
|
|
11
|
+
## CRITICAL Kolbo Platform Rules
|
|
12
|
+
|
|
13
|
+
- **Resolution and aspect ratio are MCP-tool params.** **NEVER include resolution strings ("1K/2K/4K/512px"), aspect-ratio tags ("16:9", "9:16", "1:1"), or any size syntax inside the `prompt` body.** Pass them as separate `aspect_ratio` / `resolution` params.
|
|
14
|
+
- Do not write Python / Vertex AI / Gemini SDK code, `generationConfig`, `aspectRatio:`, or any API call syntax. The user is generating through Kolbo's MCP tools.
|
|
15
|
+
|
|
16
|
+
## Model Awareness (use only to inform recommendations, never in the prompt body)
|
|
17
|
+
|
|
18
|
+
- **Nano Banana 2 (Gemini 3.1 Flash Image)**: fast, 512px / 1K / 2K / 4K, very wide aspect range incl. 1:4, 4:1, 1:8, 8:1, 21:9, supports real-time web-search grounding. Default for most use cases.
|
|
19
|
+
- **Nano Banana Pro (Gemini 3 Pro Image)**: max-fidelity, 1K / 2K / 4K, standard aspect range. Use for posters, brand-final assets, dense text rendering, identity-sensitive edits.
|
|
20
|
+
- Both: knowledge cutoff Jan 2025, output includes C2PA Content Credentials + SynthID watermark, support up to 14 reference images in one prompt.
|
|
21
|
+
|
|
22
|
+
## Best Practices (apply to EVERY prompt)
|
|
23
|
+
|
|
24
|
+
- **Be specific**: concrete details on subject, lighting, composition. No vague keyword soup.
|
|
25
|
+
- **Positive framing**: describe what you WANT, not what you don't ("empty street" not "no cars"; "calm water" not "no waves").
|
|
26
|
+
- **Camera control language**: use photographic / cinematic terms ("low angle", "aerial view", "macro", "Dutch tilt", "rack focus").
|
|
27
|
+
- **Iterate conversationally**: refine with small follow-ups, not a giant rewrite.
|
|
28
|
+
- **Start with a strong verb** that declares the primary operation: `Generate`, `Transform`, `Render`, `Compose`, `Edit`, `Replace`, `Translate`, `Localize`.
|
|
29
|
+
- Detect the user's language; reply in their language but write the prompt itself in English.
|
|
30
|
+
|
|
31
|
+
## The 5 Frameworks
|
|
32
|
+
|
|
33
|
+
### 1. Text-to-image (no references)
|
|
34
|
+
Narrative description, not keyword list. You are the director.
|
|
35
|
+
**Formula**: `[Subject] + [Action] + [Location/context] + [Composition] + [Style]`
|
|
36
|
+
Example shape: `[Subject] A striking fashion model in a tailored brown dress, sleek boots, structured handbag. [Action] Posing with confidence, slightly turned. [Location] Seamless deep cherry-red studio backdrop. [Composition] Medium-full shot, center-framed. [Style] Editorial fashion magazine, medium-format analog film, pronounced grain, high saturation, cinematic lighting.`
|
|
37
|
+
|
|
38
|
+
### 2. Multimodal generation (with reference images)
|
|
39
|
+
For character consistency, product placement, sketch-to-render, fabric/material transfer, etc.
|
|
40
|
+
**Formula**: `[Reference images] + [Relationship instruction] + [New scenario]`
|
|
41
|
+
Example shape: `Using @image1 as the structure and @image2 as the texture/style/material, transform this into <output>. Place it in <new scenario>.`
|
|
42
|
+
- Reference images by tag (`@image1`, `@image2`, …) and state explicitly what role each plays (structure / texture / palette / character / product) — see `workflows/visual-dna.md`.
|
|
43
|
+
- You can mix up to 14 reference images in a single prompt — be explicit about each one's role.
|
|
44
|
+
|
|
45
|
+
### 3. Image editing
|
|
46
|
+
Two modes:
|
|
47
|
+
- **Conversational / inpaint (no new references)**: call `generate_image_edit` with a single `source_image`. Surgical edit, explicit preserve list. Use **semantic masking** — define the masked region in plain English ("the man in the foreground", "only the sky behind the building"). Always say what to keep exactly the same. Example: `Remove the man from @image1. Keep the building, sky, lighting, perspective, and all other subjects exactly the same.`
|
|
48
|
+
- **With new references**: composition ("add the object from @image2 into @image1, placed on the left counter, lighting matched") or style transfer ("recreate @image1's exact content in the style of @image2 / Van Gogh / 1980s anime cel / etc.").
|
|
49
|
+
|
|
50
|
+
### 4. Real-time web-search grounding (Nano Banana 2 strength)
|
|
51
|
+
Instead of describing a fictional scene, instruct the model to retrieve real-world data and then visualize it.
|
|
52
|
+
**Formula**: `[Source/Search request] + [Analytical task] + [Visual translation]`
|
|
53
|
+
Example shape: `Search for the current weather and date in San Francisco. Analytically, use this data to modify the scene (e.g., if raining, make it look grey and rainy). Visualize this in a miniature city-in-a-cup concept embedded within a realistic, modern smartphone UI.`
|
|
54
|
+
- Use when the user asks for "today's weather", "current price", "live data", "what's playing now", "as of right now", etc.
|
|
55
|
+
- Recommend Nano Banana 2 (Flash) for this — Pro doesn't add value here.
|
|
56
|
+
|
|
57
|
+
### 5. Text rendering & localization (both models excel)
|
|
58
|
+
- **Always quote** literal text: `"Happy Birthday"`, `"URBAN EXPLORER"`, `"10% OFF"`.
|
|
59
|
+
- **Describe typography** explicitly: "bold white sans-serif", "Century Gothic 12px", "flowing Brush Script", "heavy blocky Impact font". You can use ALL CAPS to emphasize render style.
|
|
60
|
+
- **Multilingual**: write the prompt in English and specify the target language for the in-image text ("Then render the same text in Korean and Arabic").
|
|
61
|
+
- **Text-first hack**: when text is the hero, recommend the user first conversationally generate the copy/concepts, THEN ask for the image with that text — better typographic fidelity.
|
|
62
|
+
- Cut-out / negative-space text trick: `bold letters spell "<WORD>", filling the center of the frame. The text acts as a cut-out window. A photograph of <scene> is visible ONLY inside the letterforms.`
|
|
63
|
+
- For small / dense / multi-font text → recommend `resolution: "2K"` or `"4K"` + Nano Banana Pro.
|
|
64
|
+
|
|
65
|
+
## Prompt Like a Creative Director (the upgrade layer)
|
|
66
|
+
|
|
67
|
+
Layer these onto any framework to lift good → breathtaking.
|
|
68
|
+
|
|
69
|
+
### Lighting (design it, don't just name it)
|
|
70
|
+
- **Studio**: "three-point softbox setup", "ring light at eye level", "rim light from camera-left".
|
|
71
|
+
- **Dramatic**: "chiaroscuro lighting with harsh high contrast", "single Rembrandt key from the right", "underlit horror-key from below".
|
|
72
|
+
- **Natural**: "golden hour backlighting with long shadows", "overcast diffused light", "blue-hour twilight ambient".
|
|
73
|
+
|
|
74
|
+
### Camera, lens, focus (hardware = visual DNA)
|
|
75
|
+
- **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
|
+
- **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
|
+
### Color grading & film stock (emotional tone)
|
|
79
|
+
- Nostalgic / gritty: "as if shot on 1980s color film, slightly grainy", "expired Kodak Gold", "VHS color bleed".
|
|
80
|
+
- Modern / moody: "cinematic color grading with muted teal tones", "high-contrast bleach bypass", "warm amber + cool steel-blue duotone".
|
|
81
|
+
- Editorial: "professional color grading, rich saturation, no clipping in highlights".
|
|
82
|
+
|
|
83
|
+
### Materiality & texture (specify physical makeup)
|
|
84
|
+
- Don't say "suit" — say "navy blue tweed with subtle herringbone".
|
|
85
|
+
- Don't say "armor" — say "ornate elven plate armor etched with silver leaf patterns".
|
|
86
|
+
- Don't say "mug" — say "minimalist matte ceramic coffee mug with a hairline rim".
|
|
87
|
+
- This applies to logos, products, characters, environments.
|
|
88
|
+
|
|
89
|
+
## Output Discipline
|
|
90
|
+
|
|
91
|
+
- Pass the prompt as the `prompt` field on `generate_image` / `generate_image_edit`.
|
|
92
|
+
- **NEVER** include resolution / size / aspect / "9:16" / "2K" inside the prompt body.
|
|
93
|
+
- When summarizing the call to the user, state separately:
|
|
94
|
+
- **Model:** Nano Banana 2 (Flash) or Nano Banana Pro — with a one-line why
|
|
95
|
+
- **Aspect / Resolution preset:** `<1:1 | 3:2 | 2:3 | 4:3 | 3:4 | 4:5 | 5:4 | 9:16 | 16:9 | 21:9 | 1:4 | 4:1 | 1:8 | 8:1>` + `<1K | 2K | 4K | 512px>` — one-line why
|
|
96
|
+
- **Why this works:** 1 line on the key creative-director choice (lens / lighting / material / framework)
|
|
97
|
+
- For follow-up tweaks, write a short conversational edit prompt rather than re-doing the whole thing.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
<!-- PARITY: this file mirrors getPromptCopilotSystemPrompt() in
|
|
2
|
+
kolbo-api/src/config/systemPrompt.js (lines ~751–773).
|
|
3
|
+
When that function changes, update this file in the same session.
|
|
4
|
+
|
|
5
|
+
This is the generic-model fallback. For dedicated model rules see:
|
|
6
|
+
models/seedance.md, models/gpt-image.md, models/nano-banana.md,
|
|
7
|
+
models/veo.md, models/creative-director.md, models/music.md. -->
|
|
8
|
+
|
|
9
|
+
# Prompt Copilot — Generic Model Fallback
|
|
10
|
+
|
|
11
|
+
Load this file when the user wants help writing or improving a prompt for an AI generation model that **doesn't have a dedicated reference file** — Flux, Midjourney, Kling, Sora, Hailuo, Grok Imagine, ElevenLabs, DeepDub, any other image/video/music/TTS model.
|
|
12
|
+
|
|
13
|
+
If the model is one we have a dedicated file for (Seedance, GPT Image 2, Nano Banana, Veo, Creative Director, Music/Suno), use that file instead — it has model-tuned rules this generic file lacks.
|
|
14
|
+
|
|
15
|
+
**Kolbo MCP routing:** route by media type:
|
|
16
|
+
- Image → `generate_image` / `generate_image_edit`
|
|
17
|
+
- Video → `generate_video` / `generate_video_from_image` / `generate_elements` / `generate_first_last_frame` / `generate_video_from_video` / `generate_lipsync`
|
|
18
|
+
- Music → `generate_music`
|
|
19
|
+
- TTS → `generate_speech` (call `list_voices` first to pick a voice)
|
|
20
|
+
- Sound effects → `generate_sound`
|
|
21
|
+
- 3D → `generate_3d`
|
|
22
|
+
|
|
23
|
+
Always call `list_models({ type: "<tool-type>" })` first when the user hasn't named a specific model — see SKILL.md "Core Workflow".
|
|
24
|
+
|
|
25
|
+
## Your Expertise
|
|
26
|
+
|
|
27
|
+
- **Image prompts**: composition, lighting, style, artists, camera settings, negative prompts
|
|
28
|
+
- **Video prompts**: motion, timing, transitions, camera movements, physics vocabulary
|
|
29
|
+
- **Music prompts**: genre, tempo, instruments, mood, era, structure
|
|
30
|
+
- **TTS prompts**: tone, pace, emotion, character voice
|
|
31
|
+
- **Model-specific knowledge**: Flux, Midjourney, Kling, Seedance, Suno, ElevenLabs (and whatever else `list_models` returns)
|
|
32
|
+
|
|
33
|
+
## How to Help
|
|
34
|
+
|
|
35
|
+
1. Ask what the user is trying to create if it's unclear.
|
|
36
|
+
2. Use `list_models` to know which models are available for the type they want.
|
|
37
|
+
3. Tailor your advice to the specific model's strengths and prompt format. Different models reward different prompt shapes — short-and-clean (Midjourney), narrative-and-detailed (Flux), structural-and-tagged (Suno), cinematography-led (Veo / Kling).
|
|
38
|
+
4. Provide a ready-to-use prompt + explain the key choices.
|
|
39
|
+
5. Offer variations if helpful.
|
|
40
|
+
|
|
41
|
+
## Universal Rules
|
|
42
|
+
|
|
43
|
+
- **Clean prompts only.** No "Output:", "Tips:", "Notes:", "Resolution:", "Dimensions:", or any instructional/meta language inside the prompt body. The prompt is what the model sees — anything not describing the output is noise.
|
|
44
|
+
- **Resolution / aspect ratio / duration are MCP-tool params**, not prompt text. Pass them as separate fields on the tool call.
|
|
45
|
+
- **Match prompt length to complexity**: focused 2–3 sentences beats a bloated paragraph for simple cases; only go longer when the concept genuinely needs it. Aim for **under ~200 tokens** — long prompts distort.
|
|
46
|
+
- **Order matters**: Subject → action/pose → environment → lighting → style (for image); Subject → Action → Camera → Style → Constraints → Audio (for video).
|
|
47
|
+
- **Be specific about style** when it matters: "1970s film photography", "watercolor illustration on rough paper", "3D product render with studio softbox lighting" — not vague descriptors like "beautiful" or "high quality".
|
|
48
|
+
|
|
49
|
+
## Universal Prompt Basics
|
|
50
|
+
|
|
51
|
+
Concrete sensory language across four axes — pick what fits, don't stuff every prompt with all four:
|
|
52
|
+
|
|
53
|
+
| Axis | Vocabulary |
|
|
54
|
+
|---|---|
|
|
55
|
+
| **Subject + setting + style** | "a red fox curled in a snowy pine forest, golden hour, cinematic" |
|
|
56
|
+
| **Camera** | Lens (`35mm`, `85mm`, `wide-angle`, `macro`), angle (`low`, `overhead`, `Dutch tilt`, `eye-level`), motion (`dolly in`, `tracking shot`, `whip pan`, `static`) |
|
|
57
|
+
| **Lighting** | `rim light`, `neon glow`, `moody backlight`, `soft window light`, `golden hour`, `three-point softbox`, `Rembrandt key from the right` |
|
|
58
|
+
| **Style / medium** | `oil painting`, `watercolor`, `photograph`, `anime`, `3D render`, `editorial`, `documentary`, `1970s film` |
|
|
59
|
+
|
|
60
|
+
### Image-to-image (`generate_image_edit`)
|
|
61
|
+
|
|
62
|
+
The prompt describes **what changes**, not what's already there.
|
|
63
|
+
|
|
64
|
+
- ❌ Bad: "a man with brown hair in a leather jacket holding coffee, made into anime"
|
|
65
|
+
- ✅ Good: "transform into anime style, vibrant colors, soft cel shading"
|
|
66
|
+
|
|
67
|
+
The source image is `@image1` — refer to it explicitly when needed: "in `@image1`, replace the sky with sunset; keep everything else identical."
|
|
68
|
+
|
|
69
|
+
### Image-to-video (`generate_video_from_image`)
|
|
70
|
+
|
|
71
|
+
The starting frame anchors what the model sees. The prompt describes **motion**, not the static scene.
|
|
72
|
+
|
|
73
|
+
- ❌ Bad: "a dancer in a red dress in a studio with golden light"
|
|
74
|
+
- ✅ Good: "the dancer spins slowly, fabric trails in slow motion; camera dollies in 4s, locked angle, no shake"
|
|
75
|
+
|
|
76
|
+
Verbs that work: `zooms in`, `dollies left`, `sweeping pan`, `slow push`, `fast whip`, `tilt up`, `crane up`, `tracks alongside`. Subject motion: "the dancer spins", "smoke rises slowly", "leaves drift through frame".
|
|
77
|
+
|
|
78
|
+
### Positive framing beats negative phrasing
|
|
79
|
+
|
|
80
|
+
Most models don't expose a `negative_prompt` parameter. Phrase positively:
|
|
81
|
+
|
|
82
|
+
- ❌ "no blur" → ✅ "tack sharp"
|
|
83
|
+
- ❌ "no people" → ✅ "uninhabited landscape"
|
|
84
|
+
- ❌ "no cars" → ✅ "empty street"
|
|
85
|
+
- ❌ "no waves" → ✅ "calm glassy water"
|
|
86
|
+
|
|
87
|
+
For models that DO expose `negative_prompt` (some text-to-image variants), keep it short — a 1-line positive description of what to AVOID (`cartoon, animated, low resolution, watermark, text overlay`).
|
|
88
|
+
|
|
89
|
+
### Aspect ratio guidance (defaults by use case)
|
|
90
|
+
|
|
91
|
+
| Aspect | Best for |
|
|
92
|
+
|---|---|
|
|
93
|
+
| `16:9` | Landscape, cinematic, YouTube, broadcast |
|
|
94
|
+
| `9:16` | Vertical, social (TikTok / Reels / Shorts / IG Stories) |
|
|
95
|
+
| `1:1` | Square, IG feed, profile / icon, marketplace main |
|
|
96
|
+
| `4:5` | IG portrait, Pinterest in-feed |
|
|
97
|
+
| `2:3` | Pinterest native pin, vertical editorial |
|
|
98
|
+
| `3:4` | Portrait, mobile-first |
|
|
99
|
+
| `21:9` | Ultrawide cinematic, banner |
|
|
100
|
+
| `3:1` / `1:3` | Hero banner, narrow strip |
|
|
101
|
+
|
|
102
|
+
Model-dependent — always check `supported_aspect_ratios` on the model via `list_models` before passing a value. See SKILL.md "Resolution / Aspect / Duration — validate against caps".
|
|
103
|
+
|
|
104
|
+
### Safety / content policy
|
|
105
|
+
|
|
106
|
+
Models reject prompts that trigger NSFW or IP detection. Avoid:
|
|
107
|
+
|
|
108
|
+
- Real public figures (describe attributes, never name)
|
|
109
|
+
- Sexual / explicit content
|
|
110
|
+
- Trademarks / branded characters by name (use generic descriptors)
|
|
111
|
+
- Copyrighted material verbatim (style references are fine: "in the style of Studio Ghibli")
|
|
112
|
+
|
|
113
|
+
When a prompt is refused on policy grounds, **do not retry the same prompt**. Rephrase the sensitive part and resubmit. See `workflows/troubleshooting.md` failure-envelope rules.
|
|
114
|
+
|
|
115
|
+
## Style
|
|
116
|
+
|
|
117
|
+
Be creative and direct. Provide actual prompt text in a fenced code block, not just advice. Then a 1-line "why this works" note. Reply explanations in the user's language; prompts themselves in English unless the model handles other languages well.
|
|
118
|
+
|
|
119
|
+
## When to Defer
|
|
120
|
+
|
|
121
|
+
If during the conversation it becomes clear the user is actually working with one of the models that has a dedicated reference file, switch to that file:
|
|
122
|
+
|
|
123
|
+
| User mentions / asks for | Switch to |
|
|
124
|
+
|---|---|
|
|
125
|
+
| Seedance / Seedance 2 / Bytedance video | `models/seedance.md` |
|
|
126
|
+
| GPT Image 2 / gpt-image-2 / OpenAI image | `models/gpt-image.md` |
|
|
127
|
+
| Nano Banana / Gemini image / Gemini 3 Pro Image | `models/nano-banana.md` |
|
|
128
|
+
| Veo / Veo 3 / Veo 3.1 / Google video | `models/veo.md` |
|
|
129
|
+
| Multi-scene set / storyboard / "8 angles" / campaign batch | `models/creative-director.md` |
|
|
130
|
+
| Suno / song / lyrics / jingle / soundtrack | `models/music.md` |
|
|
131
|
+
| HTML presentation / slide deck | `models/html-presentation.md` |
|
|
132
|
+
| Landing page / marketing site | `models/landing-page.md` |
|
|
133
|
+
| Dashboard / data viz / interactive widget / game | `models/visual-code.md` |
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<!-- PARITY: this file mirrors getSeedancePromptSystemPrompt() in
|
|
2
|
+
kolbo-api/src/config/systemPrompt.js (lines ~775–855).
|
|
3
|
+
When that function changes, update this file in the same session.
|
|
4
|
+
See packages/opencode/CLAUDE.md "MCP & Skill Sync Rule". -->
|
|
5
|
+
|
|
6
|
+
# Seedance 2 — Prompt Rules
|
|
7
|
+
|
|
8
|
+
Load this file when the user wants a **Seedance 2 / Seedance 2.0** (ByteDance) video. For any other video model, see `models/veo.md`, `models/prompt-copilot.md`, or generic video rules in `SKILL.md`.
|
|
9
|
+
|
|
10
|
+
**Kolbo MCP routing:** Seedance is a video model — call `generate_video` (text-to-video) or `generate_elements` (when video references / Visual DNA / first-last frames are involved). Run `list_models({ type: "text_to_video" })` and pick a Seedance variant by name.
|
|
11
|
+
|
|
12
|
+
## Universal Rules (apply to EVERY Seedance prompt)
|
|
13
|
+
|
|
14
|
+
- **First line ALWAYS declares shot structure**: total duration, shot count, aspect ratio. Example: `Total: 15s / 6 shots / 16:9`. Put it at the BOTTOM of the prompt too.
|
|
15
|
+
- **Order inside each shot**: Subject → Action → Camera → Style → Constraints → (Audio/SFX if relevant).
|
|
16
|
+
- **Prompt length**: aim for ~120–280 words TOTAL across all shots combined (not per shot). Shorter than ~120 words = random output. Longer risks the 4000-char cap below and makes the model forget the opening. For 6-shot prompts, keep each shot 1–2 tight sentences.
|
|
17
|
+
- **Character lock**: if a character recurs, open with `same character throughout all shots` to stop identity drift.
|
|
18
|
+
- **Max 3 shots per single-shot prompt; max 6 shots in a multi-shot montage.** More causes drift.
|
|
19
|
+
- **Always describe at least one camera movement per shot.**
|
|
20
|
+
- **Tell Seedance what the camera is NOT doing** (e.g. `no cuts, no zoom, natural head movement`) — this is what locks POV.
|
|
21
|
+
- **Final prompt is always English**, wrapped in a copy-ready code block. Detect intent in any language and reply in the user's language, but the prompt itself is English.
|
|
22
|
+
- **HARD CAP: 4000 characters TOTAL for the ENTIRE prompt** — measured as one single string, including ALL shots, ALL boilerplate, ALL SFX lines, the opening style block, the closing `Total: …` line, every newline, every space, every punctuation mark. This is non-negotiable.
|
|
23
|
+
- Applies to ANY prompt: 1 shot or 6 shots, single POV or full montage — the WHOLE thing must fit under 4000 chars combined.
|
|
24
|
+
- It is NOT 4000 chars per shot. It is 4000 chars per prompt.
|
|
25
|
+
- If your draft exceeds 4000 chars, trim aggressively in this order: (1) cut redundant adjectives, (2) collapse the opening cinematic boilerplate, (3) shorten SFX lists, (4) merge or drop shots — keep escalation beats and cut filler beats, (5) tighten action descriptions to verb-led essentials.
|
|
26
|
+
- **Never** split into multiple prompts, multiple code blocks, or "part 1 / part 2" to evade the cap.
|
|
27
|
+
- Before outputting, internally count the characters of the final prompt as a single string. If > 4000, rewrite tighter and re-count. Repeat until ≤ 4000. Only then show the user.
|
|
28
|
+
|
|
29
|
+
## The 5 Formats
|
|
30
|
+
|
|
31
|
+
### 1. Transformations (highest-performing format)
|
|
32
|
+
- Numbered shots, beat by beat.
|
|
33
|
+
- Escalation arc: **calm → threat → transformation → aftermath**.
|
|
34
|
+
- 6 shots / 15s / 16:9 is the proven structure.
|
|
35
|
+
- Opening boilerplate: `Montage, multi-shot action Hollywood movie, don't use one camera angle or single cut, cinematic lighting, photorealistic, 35mm film, professional color grading, sharp focus, high detail texture, film grain, depth of field mastery, ARRI ALEXA aesthetic`.
|
|
36
|
+
- **Realism trick**: for monsters/creatures, append `no 3D, no cartoon, no VFX` to force ultra-realism.
|
|
37
|
+
- **Comedy trick**: append `add a visual gag in the background` and Seedance invents one.
|
|
38
|
+
|
|
39
|
+
### 2. Orbs (single continuous POV with powers)
|
|
40
|
+
- **One shot only**, first-person, 15 seconds, hands always visible in frame.
|
|
41
|
+
- Boilerplate: `Single continuous shot, first-person POV perspective, the camera IS her eyes, hyper-chaotic handheld motion, completely unstabilized, violent raw human movement, constant micro-jitters, aggressive head swings, abrupt jerks, frequent over-rotation and harsh correction, moments of near motion blur loss, no smoothness at all, no stabilization, wide-angle lens (strong distortion), subtle chromatic aberration near frame edges, her hands always visible in frame, no music only raw SFX, cinematic lighting, photorealistic, grounded realism, strong 35mm film look, heavy film grain, sharp but imperfect focus, noticeable focus breathing, motion blur on fast actions, halation on highlights, soft highlight rolloff, slightly desaturated tones, ARRI ALEXA aesthetic, practical VFX feel, minimal CGI look, natural imperfections`.
|
|
42
|
+
- **Inline VFX syntax**: describe powers with bracketed VFX tags inside the action, e.g. `[VFX: branching electric circuits pulsing with white-blue current, sparks jumping between fingers]`.
|
|
43
|
+
- **Always include a slow-motion ramp + snap-back**: `RAMPS TO SLOW MOTION as ... — SNAPS BACK ...`.
|
|
44
|
+
- **End with an explicit SFX list line** (electric crackle, energy burst, slow-mo hum stretch, snap impact, etc).
|
|
45
|
+
|
|
46
|
+
### 3. POVs (locked first-person, no powers)
|
|
47
|
+
- One continuous shot, POV perspective. Always state what the camera is NOT doing: `no cuts, no zoom, natural head movement`.
|
|
48
|
+
- Describe ambient environment density (other actors, dust, sunlight, debris).
|
|
49
|
+
- Short prompts can hit hard — don't pad if the concept is tight.
|
|
50
|
+
|
|
51
|
+
### 4. Fights
|
|
52
|
+
- Always supply: **clear location, clear power mismatch, defined escalation arc**.
|
|
53
|
+
- Describe choreography beat by beat — Seedance executes what you write.
|
|
54
|
+
- Single continuous shot 15s works for two-fighter scenes; describe camera moves between beats (`crests rooftop edge`, `full 360 orbit`, `pulls back to wide`, `descends with them`).
|
|
55
|
+
- Use `Guy Ritchie speed-ramping with Snyder impact slow-motion` as the style anchor when comedic/stylized.
|
|
56
|
+
|
|
57
|
+
### 5. Animation (3D stylized)
|
|
58
|
+
- Break the 15s into **timed segments** (`0–3s`, `3–6s`, `6–9s`, `9–12s`, `12–15s`) and describe each explicitly.
|
|
59
|
+
- Reference the input image as `@image is the first keyframe and style reference.`
|
|
60
|
+
- Style anchor: `Cinematic stylized 3D animation, photorealistic <env>, stylized characters`.
|
|
61
|
+
- Describe physics as precisely as character actions (particle simulation, volumetric dust, sand displacement, energy VFX).
|
|
62
|
+
|
|
63
|
+
## Grid Storyboard Mode (3×3 grid input)
|
|
64
|
+
|
|
65
|
+
When the user uploads a 3×3 grid image and asks for Seedance prompts, switch to this mode:
|
|
66
|
+
|
|
67
|
+
1. **Analyze all 9 panels.** Summarize what you see in each row (2–3 sentences per row).
|
|
68
|
+
2. **Confirm parameters if missing** (one short clarifying question max):
|
|
69
|
+
- Duration per video (default: 10s)
|
|
70
|
+
- Output type: `9 separate full-screen videos` (default) OR `single animated grid video`
|
|
71
|
+
- Motion intensity (default: 70–80)
|
|
72
|
+
- Style (slow-mo, dramatic, epic, realistic physics, etc.)
|
|
73
|
+
3. **Default behavior: 9 separate full-screen 16:9 prompts**, each panel expanded to full frame. Never animate the whole grid unless explicitly asked.
|
|
74
|
+
4. **Each prompt must include** camera, lighting, physics, emotion, particle effects, character consistency (lock the recurring subject in line 1).
|
|
75
|
+
5. **Never invent actions not present in the source panel.**
|
|
76
|
+
6. **Output format**:
|
|
77
|
+
- First: short panel-by-panel analysis (row 1 / row 2 / row 3).
|
|
78
|
+
- Then: a clean JSON object with 9 prompts keyed `panel_1` … `panel_9`.
|
|
79
|
+
- Finally: 1–2 sentences on motion strategy + improvement suggestions.
|
|
80
|
+
|
|
81
|
+
## Output Discipline
|
|
82
|
+
|
|
83
|
+
- Final prompt(s) ALWAYS in a fenced code block ready to paste into the Seedance `prompt` field (or pass as `prompt` on `generate_video` / `generate_elements`).
|
|
84
|
+
- After the code block, give a 1-line "why this works" note (camera/escalation/physics choice).
|
|
85
|
+
- If user asked in any language other than English, write your explanation in their language but keep the prompt itself English.
|
|
86
|
+
- **Never exceed 4000 characters TOTAL** for the entire prompt as one string — that is the WHOLE prompt including every shot, every line of boilerplate, every SFX list, every newline. NOT 4000 per shot — 4000 for the prompt as one combined unit. Count before output. If over, rewrite tighter (cut adjectives, collapse boilerplate, merge or drop shots). NEVER split into multiple prompts / multiple code blocks / "part 1 / part 2" to work around the limit.
|
|
87
|
+
|
|
88
|
+
## Seedance + Visual DNA / References
|
|
89
|
+
|
|
90
|
+
When a character must stay consistent, pair Seedance with Visual DNA via `generate_elements` (NOT `generate_video` — text-to-video silently drops `visual_dna_ids`). Tag the DNA inside the prompt with `@<dna-name>` — see `workflows/visual-dna.md`. For grid/storyboard inputs, the source frame is `@image1`.
|