@nodetool-ai/agents 0.8.4-a24.3 → 0.8.4

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.
Files changed (135) hide show
  1. package/dist/.nodetool-build-stamp +1 -1
  2. package/dist/_skills/LICENSE-iart-motion-design-skills +21 -0
  3. package/dist/_skills/README.md +211 -0
  4. package/dist/_skills/api-agents/SKILL.md +58 -0
  5. package/dist/_skills/api-apps/SKILL.md +54 -0
  6. package/dist/_skills/api-assets/SKILL.md +66 -0
  7. package/dist/_skills/api-collections/SKILL.md +33 -0
  8. package/dist/_skills/api-games/SKILL.md +81 -0
  9. package/dist/_skills/api-media/SKILL.md +131 -0
  10. package/dist/_skills/api-memory/SKILL.md +72 -0
  11. package/dist/_skills/api-models/SKILL.md +78 -0
  12. package/dist/_skills/api-scripts/SKILL.md +79 -0
  13. package/dist/_skills/api-settings/SKILL.md +49 -0
  14. package/dist/_skills/api-sketches/SKILL.md +61 -0
  15. package/dist/_skills/api-storyboards/SKILL.md +94 -0
  16. package/dist/_skills/api-timelines/SKILL.md +151 -0
  17. package/dist/_skills/api-web/SKILL.md +57 -0
  18. package/dist/_skills/api-workflows/SKILL.md +123 -0
  19. package/dist/_skills/beat-sync-editing/SKILL.md +208 -0
  20. package/dist/_skills/caption-titles/SKILL.md +94 -0
  21. package/dist/_skills/color-motion/SKILL.md +185 -0
  22. package/dist/_skills/commercial-beat-sheet/SKILL.md +338 -0
  23. package/dist/_skills/elevenlabs-audio-prompting/SKILL.md +163 -0
  24. package/dist/_skills/explainer-storyboard/SKILL.md +63 -0
  25. package/dist/_skills/flux-2-klein-prompting/SKILL.md +107 -0
  26. package/dist/_skills/frame-composition/SKILL.md +291 -0
  27. package/dist/_skills/game-direction/SKILL.md +99 -0
  28. package/dist/_skills/gpt-image-2-prompting/SKILL.md +161 -0
  29. package/dist/_skills/hailuo-prompting/SKILL.md +107 -0
  30. package/dist/_skills/kling-video-prompting/SKILL.md +188 -0
  31. package/dist/_skills/launch-commercial/SKILL.md +267 -0
  32. package/dist/_skills/launch-kit/SKILL.md +120 -0
  33. package/dist/_skills/logo-reveal/SKILL.md +225 -0
  34. package/dist/_skills/manimgx/SKILL.md +123 -0
  35. package/dist/_skills/minimax-h3-prompting/SKILL.md +134 -0
  36. package/dist/_skills/motion-ad/SKILL.md +281 -0
  37. package/dist/_skills/motion-background/SKILL.md +145 -0
  38. package/dist/_skills/motion-curves/SKILL.md +302 -0
  39. package/dist/_skills/motion-direction/SKILL.md +259 -0
  40. package/dist/_skills/motion-graphics/SKILL.md +217 -0
  41. package/dist/_skills/motion-principles/SKILL.md +255 -0
  42. package/dist/_skills/music-video-treatment/SKILL.md +40 -0
  43. package/dist/_skills/nano-banana-pro-prompting/SKILL.md +133 -0
  44. package/dist/_skills/native-game/SKILL.md +310 -0
  45. package/dist/_skills/native-game-reference/SKILL.md +879 -0
  46. package/dist/_skills/nodetool-3d-scene/SKILL.md +110 -0
  47. package/dist/_skills/nodetool-api-reference/SKILL.md +338 -0
  48. package/dist/_skills/nodetool-app-builder/SKILL.md +291 -0
  49. package/dist/_skills/nodetool-browser-agent/SKILL.md +119 -0
  50. package/dist/_skills/nodetool-chat-cli/SKILL.md +184 -0
  51. package/dist/_skills/nodetool-custom-node-developer/SKILL.md +294 -0
  52. package/dist/_skills/nodetool-deployment/SKILL.md +195 -0
  53. package/dist/_skills/nodetool-js-scripting/SKILL.md +223 -0
  54. package/dist/_skills/nodetool-model-provider-config/SKILL.md +348 -0
  55. package/dist/_skills/nodetool-rag-indexing/SKILL.md +153 -0
  56. package/dist/_skills/nodetool-sketch/SKILL.md +138 -0
  57. package/dist/_skills/nodetool-skill-author/SKILL.md +125 -0
  58. package/dist/_skills/nodetool-troubleshooter/SKILL.md +370 -0
  59. package/dist/_skills/nodetool-video-post/SKILL.md +149 -0
  60. package/dist/_skills/nodetool-workflow-builder/SKILL.md +295 -0
  61. package/dist/_skills/product-commercial/SKILL.md +132 -0
  62. package/dist/_skills/qwen-image-prompting/SKILL.md +122 -0
  63. package/dist/_skills/script-video/SKILL.md +106 -0
  64. package/dist/_skills/seedance-2-prompting/SKILL.md +194 -0
  65. package/dist/_skills/seedream-prompting/SKILL.md +117 -0
  66. package/dist/_skills/short-film/SKILL.md +123 -0
  67. package/dist/_skills/stable-audio-prompting/SKILL.md +130 -0
  68. package/dist/_skills/storyboard-core/SKILL.md +716 -0
  69. package/dist/_skills/timeline-edit-ops/SKILL.md +736 -0
  70. package/dist/_skills/trailer-template/SKILL.md +291 -0
  71. package/dist/_skills/ugc-video/SKILL.md +186 -0
  72. package/dist/_skills/veo-3-prompting/SKILL.md +140 -0
  73. package/dist/_skills/video-audio-continuity/SKILL.md +90 -0
  74. package/dist/_skills/video-clone/SKILL.md +96 -0
  75. package/dist/_skills/video-workflow/SKILL.md +119 -0
  76. package/dist/_skills/wan-2-6-prompting/SKILL.md +107 -0
  77. package/dist/app-build/bridge.d.ts.map +1 -1
  78. package/dist/app-build/bridge.js +44 -17
  79. package/dist/app-build/bridge.js.map +1 -1
  80. package/dist/capabilities/apps.d.ts.map +1 -1
  81. package/dist/capabilities/apps.js +55 -13
  82. package/dist/capabilities/apps.js.map +1 -1
  83. package/dist/capabilities/apps.specs.d.ts.map +1 -1
  84. package/dist/capabilities/apps.specs.js +5 -3
  85. package/dist/capabilities/apps.specs.js.map +1 -1
  86. package/dist/capabilities/game-asset-browser.d.ts.map +1 -1
  87. package/dist/capabilities/game-asset-browser.js +6 -1
  88. package/dist/capabilities/game-asset-browser.js.map +1 -1
  89. package/dist/capabilities/game.d.ts +1 -1
  90. package/dist/capabilities/game.d.ts.map +1 -1
  91. package/dist/capabilities/game.js +71 -56
  92. package/dist/capabilities/game.js.map +1 -1
  93. package/dist/capabilities/game.specs.js +1 -1
  94. package/dist/capabilities/game.specs.js.map +1 -1
  95. package/dist/capabilities/game3d.d.ts.map +1 -1
  96. package/dist/capabilities/game3d.js +14 -19
  97. package/dist/capabilities/game3d.js.map +1 -1
  98. package/dist/capabilities/gameAssertions.d.ts +52 -0
  99. package/dist/capabilities/gameAssertions.d.ts.map +1 -0
  100. package/dist/capabilities/gameAssertions.js +32 -0
  101. package/dist/capabilities/gameAssertions.js.map +1 -0
  102. package/dist/capabilities/models.d.ts.map +1 -1
  103. package/dist/capabilities/models.js +9 -0
  104. package/dist/capabilities/models.js.map +1 -1
  105. package/dist/capabilities/storyboards.d.ts.map +1 -1
  106. package/dist/capabilities/storyboards.js +36 -11
  107. package/dist/capabilities/storyboards.js.map +1 -1
  108. package/dist/capabilities/storyboards.specs.d.ts.map +1 -1
  109. package/dist/capabilities/storyboards.specs.js +11 -1
  110. package/dist/capabilities/storyboards.specs.js.map +1 -1
  111. package/dist/capabilities/workflows.d.ts.map +1 -1
  112. package/dist/capabilities/workflows.js +1 -0
  113. package/dist/capabilities/workflows.js.map +1 -1
  114. package/dist/capabilities/workflows.specs.d.ts.map +1 -1
  115. package/dist/capabilities/workflows.specs.js +4 -3
  116. package/dist/capabilities/workflows.specs.js.map +1 -1
  117. package/dist/evals/surfaces/game.d.ts.map +1 -1
  118. package/dist/evals/surfaces/game.js +29 -1
  119. package/dist/evals/surfaces/game.js.map +1 -1
  120. package/dist/game-authoring.d.ts +120 -0
  121. package/dist/game-authoring.d.ts.map +1 -1
  122. package/dist/game-build-integrity.d.ts +12 -0
  123. package/dist/game-build-integrity.d.ts.map +1 -0
  124. package/dist/game-build-integrity.js +78 -0
  125. package/dist/game-build-integrity.js.map +1 -0
  126. package/dist/game-examples.d.ts +44 -3
  127. package/dist/game-examples.d.ts.map +1 -1
  128. package/dist/game-examples.js +60 -10
  129. package/dist/game-examples.js.map +1 -1
  130. package/dist/system-skills.d.ts +1 -1
  131. package/dist/system-skills.js +1 -1
  132. package/dist/tools/builtin-tools.d.ts.map +1 -1
  133. package/dist/tools/builtin-tools.js +2 -0
  134. package/dist/tools/builtin-tools.js.map +1 -1
  135. package/package.json +19 -19
@@ -0,0 +1,194 @@
1
+ ---
2
+ name: seedance-2-prompting
3
+ description: Prompt ByteDance's Seedance 2 video line — the Subject/Motion/Environment/Look/Camera/Audio formula, how dialogue in double quotes gets voiced and lip-synced, writing the sound mix instead of leaving it open, cutting between shots in one generation, the JSON beat-sheet brief that holds an arc across a whole piece, and giving physics a consequence to chase. Use whenever the model id contains seedance-2 (bytedance/seedance-2.0 and its fast and mini variants, bytedance/seedance-2.5, kie's bytedance/seedance-2, seedance-2-fast, seedance-2-mini, seedance-2-5, in text-to-video, image-to-video and reference-to-video form) on generate_video, animate_image, generate_video_from_references or a TextToVideo node. Not for Seedance 1.x.
4
+ ---
5
+
6
+ # Seedance 2 → direct a scene, not a frame
7
+
8
+ Seedance 2 writes the picture and the sound in the same pass, and that one fact
9
+ changes the prompt. You are not describing a frame; you are directing a short
10
+ scene including the camera move and the mix, and the model has to hold all of
11
+ it together. It follows plain natural language, so the prompts that work read
12
+ like a short shot brief: who, doing what, where, shot how, and what it sounds
13
+ like.
14
+
15
+ That also decides how a multi-scene piece is built: the sound belongs to the
16
+ clip that generated it, so several Seedance clips cut together restart their
17
+ mix at every join. `video-audio-continuity` covers when the whole piece has to
18
+ be one generation, and the sound-design vocabulary that gets past the
19
+ copyright filter.
20
+
21
+ Reach it with `find_model` for `text_to_video` or `image_to_video`, then
22
+ `generate_video` / `animate_image`; for the reference-to-video routes, use
23
+ `find_model` for `reference_to_video`, then `generate_video_from_references`.
24
+ Those forward the prompt, the media, a negative prompt (no Seedance 2 route
25
+ has the field, so it is dropped), `duration_seconds`, the aspect ratio and the
26
+ resolution. Audio references (`audio_urls` on fal, `reference_audios`
27
+ elsewhere), the `generate_audio` switch and an automatic duration exist only on
28
+ the route's own node: find it with `search_nodes`, read its fields with
29
+ `get_node_info`, and run it with `run_node`. Each run is a paid generation,
30
+ so confirm the scope with the user before rendering several.
31
+
32
+ Pin the length from 4 to 15 seconds on 2.0, fast and mini, and up to 30 on
33
+ 2.5. An automatic length, which lets the model fit the content, is `auto` on
34
+ fal and `-1` on AtlasCloud and Replicate; kie has none.
35
+
36
+ ## The formula
37
+
38
+ Two parts do the work:
39
+
40
+ - **Subject** — who or what is on screen, concretely.
41
+ - **Motion** — what it is doing, and how.
42
+
43
+ Everything after is optional, added as the shot needs it:
44
+
45
+ - **Environment** — place, time of day, weather, light.
46
+ - **Look** — the finished style, documentary realism through flat 2D.
47
+ - **Camera** — framing and move, briefed the way you would brief an operator.
48
+ - **Audio** — dialogue, ambience, score, or silence.
49
+
50
+ Loaded up:
51
+
52
+ > A glassblower in a leather apron pulls a glowing orange gather of molten glass
53
+ > from the furnace, turns the rod steadily to keep it from slumping, then lifts
54
+ > a blowpipe to his lips and breathes into it as the bulb swells and the glass
55
+ > deepens from orange toward red. A dim workshop lit almost entirely by the
56
+ > mouth of the furnace, tools and half-finished pieces on the bench behind him,
57
+ > a warm documentary look with the highlights blown out slightly. The camera
58
+ > opens on a slow push-in toward his hands, then arcs around to catch the
59
+ > molten glass against the dark of the room. Audio: the low roar of the
60
+ > furnace, the creak of the turning rod, a faint hiss as the surface cools, no
61
+ > music.
62
+
63
+ Every layer there is a decision the model no longer invents.
64
+
65
+ ## Dialogue, sound and on-screen text
66
+
67
+ **Dialogue** goes in double quotes. The model voices it, matches lips to it and
68
+ times it to the cut. Keep lines short — a long monologue drifts out of sync, so
69
+ split a speech across two lines and let the cut carry it. Direct the delivery
70
+ too ("play her line dry and a little proud, his quiet and worn out").
71
+
72
+ **Subtitles** work by describing a voiceover and asking for the text along the
73
+ bottom edge, timed to the voice.
74
+
75
+ **Ambience** is a sound brief. Name the sounds you want in the mix, and write
76
+ "no music" when you mean it. An open prompt comes back scored like a car advert.
77
+
78
+ ## Rules
79
+
80
+ - **Spend words on verbs.** Motion is what gets animated. "A stunning dancer"
81
+ gives nothing; "a dancer dropping into a low spin, the skirt flaring, then
82
+ snapping upright" gives a path to follow.
83
+ - **Use camera language.** Dolly, pan, tilt, crane, push-in, rack focus,
84
+ locked-off all read cleanly. "Epic cinematic camera" goes a hundred
85
+ directions.
86
+ - **Under-directed audio is the common failure.** Name the diegetic sounds, the
87
+ room tone, and call for silence on purpose.
88
+ - **Physics needs a consequence.** "Leaves scatter on each impact", "the mug
89
+ slides and tips" give the model something concrete to resolve toward.
90
+ - **Say "cut to" when you want a cut.** Spelled out, it honours a shot list far
91
+ more reliably than it invents one.
92
+ - **Two clipped lines across a cut beat one long line** that loses sync
93
+ halfway.
94
+
95
+ The vague-versus-specific gap is the same as everywhere else, and costs more
96
+ here because a bad clip costs seconds of render. "A beautiful cinematic video
97
+ of a dancer, stunning, 8k, masterpiece" returns a stock dancer under flat even
98
+ light. Set the dress, the spin, the heel strikes, the lone spotlight and the
99
+ guitar, and the model spends its effort rendering your scene instead of
100
+ inventing one.
101
+
102
+ ## Patterns
103
+
104
+ - **Hard motion and real physics** — give weight and contact points: a vault
105
+ with a hand planted on a ledge, gravel kicking up on the landing, a jacket
106
+ flapping, the camera tracking alongside at chest height.
107
+ - **A spot that cuts between shots** — "built as three cuts in one take", each
108
+ cut named, a title fading up on the closing frame in a named type class and
109
+ colour.
110
+ - **When the sound is the scene** — a slow push-in, a naturalistic grade, and
111
+ a mix of droplets, a far-off bird and branch creak with "no music at all".
112
+ - **Product hero shot** — one satisfying physical moment. A pour, a splash, a
113
+ tab popping with a fine spray lifting off, macro, hard rim light on the
114
+ droplets, then the line fading up in the lower third.
115
+ - **Spokesperson to camera** — vertical, phone-camera look, a short spoken
116
+ line in quotes, a small physical beat on the last word, then a two-second
117
+ insert cut and back.
118
+
119
+ ## The structured beat sheet
120
+
121
+ Prose carries one shot. For a whole piece with a shape — a hook, a turn, a
122
+ drop, a peak — hand Seedance a JSON brief instead: global fields that hold for
123
+ the entire clip, then a timeline of beats, each one naming its function, its
124
+ picture and its sound. The function label (`fn`) is what keeps the model from
125
+ flattening the arc into eight equally-weighted shots.
126
+
127
+ The JSON is the prompt string, not a request body. Its `duration` and
128
+ `negative_prompt` are text the model reads; the clip's real length still comes
129
+ from `duration_seconds` (or the route's `duration`), so set both to match.
130
+
131
+ Six global fields, then the beats:
132
+
133
+ - `duration` — the whole clip, within what the endpoint you called accepts.
134
+ The example below runs 25 s, which only the 2.5 routes accept; on 2.0, fast
135
+ and mini, keep it to 15 s.
136
+ - `camera` — one move across the whole clip, not one per beat. A single
137
+ continuous push-in reads as a shot; a new move every three seconds reads as
138
+ a montage.
139
+ - `light` — the source, its colour temperature, and how it changes over the
140
+ clip. Name it once and every beat inherits it.
141
+ - `style` — genre, lens character, grain, palette, and one or two reference
142
+ points for restraint.
143
+ - `negative_prompt` — the artifacts you actually see: jitter, bent limbs,
144
+ morphing faces, flicker.
145
+ - `audio_note` — the rule the mix obeys across every beat. "One continuous bed,
146
+ never full silence" is what stops the model resetting the sound at each cut.
147
+
148
+ ```json
149
+ {
150
+ "duration": "25s",
151
+ "camera": "One continuous slow, steady push-in from extreme wide to close-up across the 25s; shallow depth by the end.",
152
+ "light": "Single unseen source above; cold white-cyan 6500K key casts down, intensifying steadily from a whisper to a flood; deep blue 6000K twilight ambient; hard top key, soft fill.",
153
+ "style": "Mysterious sci-fi first contact, withheld reveal, intimate awe; anamorphic, atmospheric haze, fine film grain, deep teal-twilight palette; Arrival / Close Encounters restraint.",
154
+ "negative_prompt": "Avoid jitter and bent limbs; stable facial features, no morphing, no flickering.",
155
+ "audio_note": "ONE continuous bed, never full silence; dips to sub-bass rumble at the DROP instead of cutting.",
156
+ "timeline": [
157
+ {"t":"0:00-0:03","fn":"Cold Open / Hook","visual":"Extreme wide, near-dark. A small child alone in a vast twilight field, tiny and still; wind begins bending the wheat toward one point, a faint unnatural tint at frame edge - source unseen.","audio":"Low sub-bass drone, faint wind, one distant detuned low-brass signal tone."},
158
+ {"t":"0:03-0:08","fn":"Setup / World","visual":"Medium wide. The child looks up; ordinary dusk field established as a cold light starts to rise on them from somewhere above, still unshown.","audio":"The tone bends; sparse high harmonics enter; sub-rumble slowly grows."},
159
+ {"t":"0:08-0:11","fn":"Inciting Incident","visual":"Medium. The 'but then': cold light intensifies on the child's face - curiosity dawning, not fear. The unseen presence is undeniable now.","audio":"First swell; a soft riser begins; a deep slow pulse enters."},
160
+ {"t":"0:11-0:16","fn":"Escalation / Stakes","visual":"Push-in tightening on the face. Light climbing, hair lifting, eyes widening; the child steps forward, drawn in.","audio":"Layers stack - riser rising, pulses quicken, strings enter; tension builds."},
161
+ {"t":"0:16-0:17","fn":"THE DROP","visual":"The hinge: everything stills for one beat, the face half-lit, breath caught, light pooled and waiting.","audio":"Bed dips to a low sub-bass rumble for one beat - near-silence, never fully out."},
162
+ {"t":"0:17-0:22","fn":"Climax / Emotional Peak","visual":"Close-up. PEAK: the child slowly lifts one open hand toward the light, fingers spreading; the intensifying beam washes over the small palm and reflects in wide, wonder-filled eyes as a faint slender silhouette of light enters the top edge of frame, almost meeting the fingertips.","audio":"A warm resonant swell blooms - wordless choir and vast strings soaring into awe over sustained deep brass, a fragile high motif of wonder."},
163
+ {"t":"0:22-0:24","fn":"Title Card","visual":"The light blooms to white across the frame; title fades in over the bloom (clean type in post).","audio":"Choir and strings resolve to one luminous sustained chord; a low sub-boom lands."},
164
+ {"t":"0:24-0:25","fn":"Button / Stinger","visual":"After the title, one last beat: the light settles, the field dim again; a single held stillness.","audio":"One fragile high bell tone over near-silence; hard out."}
165
+ ]
166
+ }
167
+ ```
168
+
169
+ What makes it work, and what to keep when you adapt it:
170
+
171
+ - **Every beat has all three of `fn`, `visual` and `audio`.** A beat missing its
172
+ audio line is where the mix drifts back to a generic score.
173
+ - **The drop is a beat, not a gap.** One second of the bed dipping to sub-bass
174
+ reads as a hinge; actual silence reads as a dropout. Say which you want.
175
+ - **The peak beat gets the most words.** It is the only place worth spending
176
+ detail on a hand, a reflection, an edge of frame. The setup beats stay short.
177
+ - **Camera and light are global, and the beats describe their state.** "Light
178
+ climbing, hair lifting" is a state of the global light, not a new light.
179
+ - **Title cards belong in the timeline.** Give the bloom a beat of its own and
180
+ add the type in post rather than asking the model to render it.
181
+ - **The stinger keeps the clip from ending on the peak.** One held beat after
182
+ the title is what makes it read as finished rather than cut off.
183
+
184
+ Adapt the beat functions to the piece. A UGC ad runs hook, problem, product,
185
+ proof, call to action; a product film runs establish, detail, transformation,
186
+ hero, mark. The shape changes; the discipline of naming each beat's job does
187
+ not.
188
+
189
+ Grade the result with `analyze_video` and `detect_video_scenes` rather than
190
+ watching it, and `understand_video` when you need a written read of what
191
+ actually rendered.
192
+
193
+ Adapted from fal's Seedance 2.0 prompting guide:
194
+ https://fal.ai/learn/tools/seedance-2-0-prompting-guide
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: seedream-prompting
3
+ description: Prompt ByteDance's Seedream 4 and 5 image line — the six-layer brief it reads in order, the word budget past which it starts dropping clauses, quoting in-image copy and placing it, pinning what must not change before an edit, addressing references by content instead of by index, and the size to iterate at versus the size to deliver. Use whenever the model id names Seedream 4 or 5 (bytedance/seedream/v5/pro/text-to-image, bytedance/seedream/v5/lite/edit, fal-ai/bytedance/seedream/v4.5/edit, fal-ai/bytedance/seedream/v4/text-to-image, bytedance/seedream-v5.0-pro/edit, bytedance/seedream-v4.5, seedream/5-pro-image-to-image, seedream/4.5-text-to-image, bytedance/seedream-4.5) on generate_image, edit_image or a TextToImage node. Not for Seedream 3.
4
+ ---
5
+
6
+ # Seedream → a production brief, not a caption
7
+
8
+ Seedream rewards a brief written the way you would hand one to a retoucher:
9
+ what the deliverable is, who is in it, where everything sits, how it is lit,
10
+ what it says, and what it looks like. Captions get caption results.
11
+
12
+ Reach it with `find_model` for `text_to_image` or `image_to_image`, then
13
+ `generate_image` / `edit_image`. `generate_image` forwards only the prompt, a
14
+ negative prompt, the size and a quality string, and `edit_image` only the
15
+ images, the prompt, a negative prompt, a target size and a strength. The
16
+ provider's own size field exists only on the route's node: find it with
17
+ `search_nodes`, read its fields with `get_node_info`, and run it with
18
+ `run_node`.
19
+
20
+ ## Six layers, in this order
21
+
22
+ Earlier clauses carry more weight, so the order is part of the instruction.
23
+
24
+ 1. **Format** — the deliverable. "Fashion editorial magazine cover", "packshot
25
+ on plain white", "streaming poster".
26
+ 2. **Subject** — identity, wardrobe, materials, styling. Concrete beats
27
+ flattering: "a woman in her 40s, close-cropped grey hair, oversized charcoal
28
+ wool coat" over "a stylish woman".
29
+ 3. **Composition** — where things sit and how the frame is cut. "Subject on the
30
+ left vertical third, product centred at the lower edge, generous headroom".
31
+ 4. **Lighting** — direction and quality. "Hard key from camera left, deep
32
+ falloff, one bounce card filling the shadow side".
33
+ 5. **In-image text** — the exact copy, in quotes, with its position.
34
+ 6. **Style** — the aesthetic anchor. "Editorial photorealism, 85mm, shallow
35
+ focus, muted film grade".
36
+
37
+ An omitted layer is a decision handed to the model's defaults, and its defaults
38
+ are centred, evenly lit and generic.
39
+
40
+ ## Word budget
41
+
42
+ fal's guide aims for 30–100 words on Seedream 4.x. Runware's guide says
43
+ Seedream 5 accepts a much longer brief and starts scattering attention past
44
+ roughly 600 English words. Specificity
45
+ buys more than length: past the budget the model drops clauses, and which ones
46
+ it drops is not yours to choose.
47
+
48
+ ## Text in the image
49
+
50
+ Put the literal copy in quotation marks and say where it goes. Anything you
51
+ describe rather than quote, the model writes for you.
52
+
53
+ > Fashion editorial cover, 3:4. Masthead "ATRIUM" in tall thin capitals across
54
+ > the top edge, one cover line "The Quiet Season" in small italics at the lower
55
+ > left. A model in a raw-edged linen coat against a bare plaster wall, three-
56
+ > quarter turn, looking off-frame right. Soft north light from the left, long
57
+ > shadow across the plaster. Editorial photorealism, medium format, muted
58
+ > palette. No other text.
59
+
60
+ Closing with "no other text" is what stops the model filling the margins with
61
+ invented lettering. Quote copy only when it belongs to the deliverable itself;
62
+ a keyframe for a timeline or a video clip keeps its titles and supers off the
63
+ image and gets them as text clips afterwards (`caption-titles`), where they
64
+ stay editable.
65
+
66
+ ## Editing: pin before you change
67
+
68
+ Reference-guided editing takes several images. fal's edit routes take up to
69
+ ten and keep only the last ten when sent more. kie's `seedream/4.5-edit` and
70
+ `seedream/5-lite-image-to-image` take up to 14, and kie's
71
+ `seedream/5-pro-image-to-image` and `bytedance/seedream-v4-edit` up to 10. The
72
+ failure mode is not the edit — it is everything you did not mention drifting. State the pins:
73
+
74
+ > Change only the bottle's label to matte black with "SERIES 04" in white
75
+ > sans-serif capitals. Keep the exact bottle silhouette, the exact camera
76
+ > angle, the exact backdrop and the exact studio lighting from the reference.
77
+
78
+ Address references by what they contain, not by position: "the tan leather
79
+ journal", not "the second image". This differs from the "image 1 / image 2"
80
+ convention the Qwen-Image and GPT Image guides teach; it is Seedream's own. Content descriptions survive re-ordering and
81
+ disambiguate two references that look alike. For product identity, feed
82
+ packshots on white — a lifestyle photo carries a scene the model will try to
83
+ keep.
84
+
85
+ Seedream 5 Pro adds region-precise editing and layer separation, which is what
86
+ makes it the pick when one element must change and the rest of the frame must
87
+ be provably untouched.
88
+
89
+ ## Size and tiers
90
+
91
+ The size field differs by provider. On fal's Seedream 5 routes, `image_size`
92
+ defaults to `auto_2K`; the Pro and Flash routes run 1024×1024 to 2048×2048
93
+ total pixels at aspect ratios 1:16 to 16:1. fal's 4 and 4.5 routes set no
94
+ default. AtlasCloud takes `size` (default `2048*2048`), kie `aspect_ratio` or
95
+ `image_size`, and Replicate `size` (default `2K`). Work the composition at the smaller tier
96
+ while you iterate and render the deliverable at 2K. Match the ratio to the
97
+ brief rather than defaulting to square: 3:4 for a cover, 9:16 for a poster, 4:3
98
+ for a still life.
99
+
100
+ ## Symptoms
101
+
102
+ | What went wrong | What to change |
103
+ | :--- | :--- |
104
+ | Subject differs from what you described | Move the subject description earlier and make its defining features concrete |
105
+ | An unwanted illustrative style | Name the style you want and negate the one you got explicitly |
106
+ | Elements land in the wrong place | State spatial relationships; cut the number of things in the frame |
107
+ | Copy is paraphrased or invented | Quote it exactly, place it, and close with "no other text" |
108
+ | An untouched region changed in an edit | Add the pins — silhouette, angle, backdrop, lighting |
109
+ | Clauses at the end were ignored | You are over budget; cut to the layers that matter |
110
+
111
+ Grade the result with `critique_image` and `score_image_adherence` rather than
112
+ eyeballing it, and `compare_images` when you are choosing between candidates.
113
+
114
+ Adapted from fal's Seedream v4.5 prompt guide and Runware's Seedream 5.0 Pro
115
+ prompting guide:
116
+ https://fal.ai/learn/devs/seedream-v4-5-prompt-guide
117
+ https://runware.ai/docs/models/bytedance-seedream-5-0-pro/guides/prompting
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: short-film
3
+ description: "Direct a narrative scene or short film in NodeTool with characters, dialogue, and score, and the look and cast of a story trailer. A trailer's beat structure comes from trailer-template. For product ads, use product-commercial."
4
+ ---
5
+
6
+ **Load `/storyboard-core` first.** It carries the loop, the tool contract and
7
+ the gating this skill assumes. Everything below is what narrative work adds on top.
8
+ For a trailer or teaser, also load `/trailer-template`: it sets the eight beats, the
9
+ drop and the title card, and this skill sets the cast, the look and the blocking.
10
+
11
+ ## What makes this job type its own
12
+
13
+ An ad needs a board. A narrative piece needs the **screenplay framing** around it:
14
+ title, logline, style bible, narration and a music prompt. Those live on the board's
15
+ screenplay.
16
+
17
+ Who writes which field:
18
+
19
+ | Field | Headless | Board open in a tab |
20
+ |---|---|---|
21
+ | narration, music prompt | `edit_storyboard` → `set_board {narration, music_prompt}` | either |
22
+ | style bible | `set_board {style}` (the board style is the style bible) | either |
23
+ | title, logline | only through `direct_storyboard`, which writes the Director's own | `ui_storyboard_set_screenplay` |
24
+
25
+ So:
26
+
27
+ - Board open in a browser tab → `ui_storyboard_set_screenplay` with the whole
28
+ screenplay object, framing and shots together, in one call.
29
+ - Headless → `create_storyboard`, then `set_board` with the look in `style`, the
30
+ premise in `brief`, and `narration` and `music_prompt`. Keep the words on each shot's
31
+ `dialogue` and `narration`. A title and logline of your own need the board open;
32
+ say so rather than pretend they were set. To have the Director write the whole
33
+ screenplay headless, scenes and title included, `set_setup {brief, genre}` and then
34
+ `direct_storyboard`.
35
+
36
+ This matters at assembly: `assemble_storyboard_timeline` turns the screenplay's
37
+ narration and music prompt into draft audio clips ready to generate.
38
+
39
+ ## The screenplay object
40
+
41
+ ```json
42
+ {
43
+ "type": "screenplay",
44
+ "title": "Night Drop",
45
+ "logline": "A courier discovers the package was never meant to arrive.",
46
+ "brief": "40-second neo-noir teaser",
47
+ "styleBible": "wet asphalt, sodium and cyan, anamorphic flare, 2.39:1 crop, heavy grain",
48
+ "aspectRatio": "16:9",
49
+ "narration": "",
50
+ "musicPrompt": "sparse low synth pulse, one rising note at 0:32, no drums",
51
+ "entityIds": ["<asset id>"],
52
+ "shots": [
53
+ {
54
+ "slug": "1a",
55
+ "action": "Wide. Mara stands alone under a sodium lamp on wet asphalt, the city behind her out of focus",
56
+ "camera": { "framing": "wide", "lens": "40mm anamorphic", "angle": "low", "movement": "slow push" },
57
+ "motion": "she turns her head once toward the sound off-frame; rain falls steadily",
58
+ "dialogue": "",
59
+ "durationSeconds": 7
60
+ }
61
+ ]
62
+ }
63
+ ```
64
+
65
+ `style` is accepted as an alias of `styleBible`. Only `action` is required per shot;
66
+ ids, indexes and statuses are filled in.
67
+
68
+ ## Shot pattern
69
+
70
+ Six shots for forty seconds is a workable ratio — long enough to hold, few enough to
71
+ afford. **Open wide, end close.** The wide establishes the world, the close is what the
72
+ audience leaves with.
73
+
74
+ - Give shots room: 5–8 seconds each. Narrative shots that run 2 seconds read as an ad.
75
+ - Write blocking as physical events with counts — `she turns her head once`, `he sets
76
+ the case down and does not let go` — and keep emotion out of `motion`. "Tense" is
77
+ not a motion; a held stillness is.
78
+ - Dialogue goes in the shot's `dialogue` field, not in `action`. That keeps the option
79
+ open to lift the words into a real script with
80
+ `extract_script_from_storyboard` and voice them per `/script-video`.
81
+ - The style bible carries the grade. Do not restate it per shot — it is appended to
82
+ every still prompt already.
83
+
84
+ ## Casting
85
+
86
+ Each character is a character entity: generate a reference, show the user, then
87
+ `create_entity`. Add every one to the board with `set_board {entity_ids}`. A character
88
+ seasons only the shots whose text names them, which is what you want in a scene where
89
+ one person is alone.
90
+
91
+ Recurring locations are worth a **location entity** — those apply to every shot on the
92
+ board, which is how a single street stays the same street across six cuts.
93
+
94
+ ## Direct mode earns its place here
95
+
96
+ Dialogue that must look synced, and heavy camera movement, both come out stiffer from
97
+ a still. Set those shots to `render_mode: "direct"`; the direct clip prompt carries
98
+ the camera fields, the scene lighting and the board style itself. Keep the establishing and static
99
+ shots on `keyframe` — they are the ones where holding the look matters most.
100
+
101
+ ## Brief
102
+
103
+ Adapt these examples to the user's brief. Example deliverables, style choices,
104
+ and approval checkpoints apply only when the user adopts them.
105
+
106
+ ```
107
+ Direct a 40-second [genre] short: [LOGLINE]. Six shots, open wide, end close,
108
+ 5-8 seconds each.
109
+
110
+ Write the full framing as well as the shots: title, logline, style bible,
111
+ aspect ratio, and a music prompt. If the board is open in a tab, set all of it
112
+ with ui_storyboard_set_screenplay in one call; if not, set the style, narration
113
+ and music prompt with set_board and tell me the title and logline need the tab.
114
+
115
+ Cast every character as an entity from a reference you show me first, plus a
116
+ location entity for the street. Set the shots that carry spoken lines to
117
+ render_mode direct.
118
+
119
+ If I gave no logline: a night courier loses the package. Wet asphalt, sodium and
120
+ cyan, and she whispers "That wasn't a drop."
121
+
122
+ Stop after the board. Stills before clips.
123
+ ```
@@ -0,0 +1,130 @@
1
+ ---
2
+ name: stable-audio-prompting
3
+ description: Prompt Stability's Stable Audio line — the genre/instruments/mood/BPM order its training metadata expects, the TrackType and VocalType tags that separate music, stems and sound effects on Stable Audio 3, matching duration to what you described, which checkpoints guidance_scale and step count actually affect, and prompting the inpaint, outpaint and audio-to-audio variants where the surrounding audio outranks the prompt. Use whenever the model id names Stable Audio (fal-ai/stable-audio-25/text-to-audio, fal-ai/stable-audio-3/medium/text-to-audio, fal-ai/stable-audio-3/small/music/text-to-audio, fal-ai/stable-audio-3/small/sfx/text-to-audio, fal-ai/stable-audio-3/medium/audio-to-audio, fal-ai/stable-audio-25/inpaint, stability-ai/stable-audio-2.5) on generate_music, run_node or an audio generation node. Not for the original fal-ai/stable-audio.
4
+ ---
5
+
6
+ # Stable Audio → write the metadata, not a mood
7
+
8
+ Stable Audio was trained on library-music metadata, so it responds to prompts
9
+ shaped like library-music metadata: what the genre is, what is playing, how it
10
+ feels, how fast it goes. Poetic descriptions of a feeling get a generic bed.
11
+
12
+ Reach the music endpoints with `find_model` for `text_to_music`, then
13
+ `generate_music`, which forwards only the prompt, lyrics and a duration. Every
14
+ dial in the table below, and the SFX checkpoints and the audio-to-audio,
15
+ inpaint and outpaint variants, need the route's own node: find it with
16
+ `search_nodes`, read its fields with `get_node_info`, and run it with
17
+ `run_node`. Each run is a paid generation, so confirm the scope with the
18
+ user before rendering several.
19
+
20
+ ## Music prompts
21
+
22
+ Four elements, in this order:
23
+
24
+ 1. **Genre** — the core style, first.
25
+ 2. **Instruments** — with character, not just names. "Smooth electric piano",
26
+ "textural percussion", "distorted bass" carry more than "piano, drums,
27
+ bass".
28
+ 3. **Mood and production** — the feel, plus the production era or treatment.
29
+ 4. **BPM** — and the key when it matters.
30
+
31
+ > An exciting breakbeat instrumental for a fast-paced game, funky electric
32
+ > guitar chords, steady break drums, smooth electric piano and supporting bass.
33
+ > Fresh, modern and adventurous, 105 BPM.
34
+
35
+ Two habits that measurably help: vary the vocabulary instead of repeating the
36
+ same adjective, and reference an era to describe production — "80s gated
37
+ reverb", "90s grunge distortion" — which encodes a whole chain in three words.
38
+
39
+ On Stable Audio 3, prefix the type. `TrackType: Music, VocalType: Instrumental`
40
+ is the tag pair for instrumental beds and is worth setting explicitly; the
41
+ model otherwise decides whether to bring in a vocal.
42
+
43
+ ## Stems and single instruments
44
+
45
+ Start with `TrackType: Instrument`, then the instrument, genre, mood and BPM.
46
+ This is the path for something that has to sit in a mix rather than be the mix.
47
+ Playing technique, recording environment and effects all read: "close-mic'd
48
+ upright bass, fingered, small wooden room, light tape saturation".
49
+
50
+ ## Sound effects
51
+
52
+ `TrackType: SFX`, then three things:
53
+
54
+ 1. **Source** — the object or instrument making the sound.
55
+ 2. **Action** — how it is triggered, how long it rings, how it decays.
56
+ 3. **Production** — mic placement, room character, processing.
57
+
58
+ > TrackType: SFX. A steel toolbox lid slamming shut on a concrete workshop
59
+ > floor, sharp metallic impact with a short rattling decay, close mic, small
60
+ > room with a hard early reflection.
61
+
62
+ Then set a short duration. Most effects are under two seconds, and a 30-second
63
+ request for a door slam gets you a door slam followed by 28 seconds of room.
64
+
65
+ ## Duration and parameters
66
+
67
+ Match the duration to what you described. The Stable Audio 3 medium checkpoint
68
+ goes to 380 seconds, but a prompt describing a loop or a hit produces its best
69
+ result when the length fits the description; for a music bed, 60–90 seconds is
70
+ the range the guide recommends. On a node the field changes name —
71
+ `seconds_total` on fal's 2.5, `duration` on Stable Audio 3 and on Replicate's
72
+ `stability-ai/stable-audio-2.5` — and 2.5 defaults to 190 seconds on both,
73
+ which is three minutes of audio nobody asked for. `generate_music`'s
74
+ `duration_seconds` sets it for you.
75
+
76
+ | Parameter | What it does | Where to sit |
77
+ | :--- | :--- | :--- |
78
+ | `num_inference_steps` | Sampling steps (`steps` on Replicate) | The distilled checkpoints default to 8, and the guide says they gain little above it; raise it on a `base` checkpoint (default 50) |
79
+ | `guidance_scale` | Prompt adherence (fal only) | The guide says it is effective on Stable Audio 3 only on `base` (non-distilled) checkpoints, which default to 7; the distilled ones default to 1 |
80
+ | `negative_prompt` | Qualities to avoid (Stable Audio 3 only) | Name the artifact you hear: "clipping", "muddy low end", "vocal chops" |
81
+ | `enable_prompt_expansion` | LLM prompt rewrite | Off by default; useful for a three-word prompt, harmful once your prompt is already metadata |
82
+ | `seed` | Comparability | Pin it while you change one element at a time |
83
+
84
+ The `base` versus distilled split is the one that catches people: the guide
85
+ says that on a distilled Stable Audio 3 checkpoint the two dials most people
86
+ reach for do little, and the prompt is the whole instrument.
87
+
88
+ ## Editing existing audio
89
+
90
+ **Audio-to-audio** seeds generation from a clip, and the dial has two names.
91
+ Stable Audio 3 takes `init_noise_level` (0.9 default): 0.1 keeps the source
92
+ close, 1.0 replaces it with noise and generates outright. Stable Audio 2.5
93
+ takes `strength` (0.8 default), which runs the same way — 0 returns the input.
94
+ Low keeps melody and rhythm; high strips them and keeps only broad character.
95
+
96
+ **Inpaint and outpaint** hold everything outside a masked region and regenerate
97
+ inside it — `mask_start_seconds` / `mask_end_seconds` on Stable Audio 3,
98
+ `mask_start` / `mask_end` on 2.5. Here the surrounding audio matters more than
99
+ the prompt: a short mask is pulled hard toward its context regardless of what
100
+ you wrote, and only a wide mask gives the prompt room. If an inpaint is
101
+ ignoring you, widen the mask before rewriting the prompt.
102
+
103
+ ## Symptoms
104
+
105
+ | What went wrong | What to change |
106
+ | :--- | :--- |
107
+ | A generic bed | Rewrite as genre, instruments with character, mood, BPM |
108
+ | An unwanted vocal | Add `TrackType: Music, VocalType: Instrumental` to the prompt |
109
+ | The effect is padded with room tone | Cut the duration to the length of the actual event |
110
+ | Raising guidance changed nothing | You are probably on a distilled checkpoint — switch to `base` or fix the prompt |
111
+ | An inpaint ignores the prompt | Widen the masked region |
112
+ | Two takes are not comparable | Pin the seed and change one element |
113
+
114
+ Check the result with `analyze_audio`, `analyze_audio_spectrum` and
115
+ `detect_audio_events` rather than listening for it — a missing instrument or a
116
+ clipped peak shows up there faster than by ear.
117
+
118
+ ## Where it lands
119
+
120
+ A bed from here is the "track of your own" build in `video-audio-continuity`:
121
+ one clip on its own audio track for the whole runtime, with the generated shots
122
+ muted under it. Because the prompt states the BPM, `beat-sync-editing` starts
123
+ with a grid it can predict and then confirms with `detect_audio_events` on the
124
+ file. A `TrackType: SFX` hit of 1–3 s is what `logo-reveal` lands a mark on.
125
+ `motion-graphics` carries the timeline ops that lay the clip down.
126
+
127
+ Adapted from Stability's Stable Audio 2.5 prompt guide and the Stable Audio 3
128
+ prompting guide:
129
+ https://stability.ai/implementations/stable-audio-25-prompt-guide
130
+ https://github.com/Stability-AI/stable-audio-3/blob/main/docs/guides/prompting.md