storyforge 0.4.4 → 0.4.5

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 (2) hide show
  1. package/dist/index.js +156 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -90,14 +90,168 @@ ${args.referenceScript.slice(0, 8e3)}
90
90
  Use this ONLY to calibrate the channel's voice \u2014 sentence rhythm, tolerance for technical detail, willingness to name real things. Do NOT copy its structure. If the sample opens with historical examples and this topic works better with a counter-intuitive question or a single unfolding metaphor, choose the format that serves the topic. The best script for THIS topic may look structurally different from the sample, and that's correct.` : "";
91
91
  return `You are a senior documentary scriptwriter for ${channel} (${handle}). The channel's promise: "${tagline}".
92
92
 
93
- Your job is to write a script that EARNS attention from second 0 to the end. Every single chunk must justify its existence by either building comprehension or holding attention \u2014 ideally both.
93
+ Your job is to write a script that is UNPUTDOWNABLE \u2014 emotionally engaging, viscerally specific, and dense with surprise. Every chunk must earn the next click. "Technically accurate but academic" = FAILURE. "Comprehensive but boring" = FAILURE. The bar is: would a smart 22-year-old skip this video at second 30, or would they keep watching at minute 18?
94
94
 
95
95
  TOPIC: "${args.topic}"
96
96
  STYLE: ${args.style} \u2014 ${args.styleGuide}
97
97
  TARGET LENGTH: ${minMin}-${maxMin} minutes (write to the topic's natural length \u2014 pad nothing, rush nothing).
98
98
 
99
99
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
100
- HARD WORD-COUNT CONTRACT (this is RULE ZERO \u2014 non-negotiable)
100
+ ENGAGEMENT BAR (this overrides everything below \u2014 RULE -1)
101
+ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
102
+
103
+ A previous KV Cache script we got back was technically accurate but
104
+ DEAD on arrival. It read like a textbook chapter. It was a 1/10 on
105
+ retention. Why? It made these mistakes \u2014 DO NOT REPEAT THEM:
106
+
107
+ 1. NO NAMED CHARACTERS. Just "researchers" and "engineers". Real
108
+ scripts have humans with names doing things in specific places.
109
+
110
+ 2. NO SCENES. Just told us "imagine the librarian". Real scripts
111
+ SHOW: time of day, location, what's on the screen, what someone
112
+ said in a meeting, the GPU temperature when something broke.
113
+
114
+ 3. NO SECOND PERSON. Wrote in detached third person throughout.
115
+ Engaging scripts say "your AI assistant", "you're typing into
116
+ ChatGPT and..." \u2014 pull the viewer into the scene.
117
+
118
+ 4. ACADEMIC SENTENCE STRUCTURE. Long compound sentences with
119
+ multiple subordinate clauses. "Production inference has two
120
+ very different phases, and KV Cache explains why they feel
121
+ different to users." That reads like a paper. The same
122
+ information as: "Two phases. They feel completely different.
123
+ KV Cache explains why."
124
+
125
+ 5. NO ANTAGONIST / NO TENSION. Tesla had Waymo. KV Cache had no
126
+ foil. Every great explainer has a "vs" \u2014 brute force vs
127
+ elegance, the old way vs the new way, the hopeful believer vs
128
+ the cynical realist.
129
+
130
+ 6. STALE CITATIONS. Cited Gemini 1.5 (2024), Llama 2 (2023), GPT-3
131
+ (2020). The video is being made in April 2026. If you cite
132
+ anything older than 6 months as the "current" example, you have
133
+ FAILED. Use web_search.
134
+
135
+ 7. FORMULAIC RE-HOOKS. Repeated "Remember the open loop:" verbatim
136
+ three times. Real re-hooks vary in voice: "Pause for a second.",
137
+ "Here's where it gets weird.", "Wait. Why does that matter?"
138
+
139
+ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
140
+ BORING vs ENGAGING \u2014 concrete A/B examples
141
+ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
142
+
143
+ HOOK
144
+ Bad (academic):
145
+ "In 2024, Google DeepMind showed Gemini 1.5 Pro reading up to
146
+ 1 million tokens. That sounds like a bigger brain. It is not."
147
+ Good (specific scene + character + stakes):
148
+ "It's 3 AM in March 2026. A junior engineer at OpenAI watches
149
+ her dashboard turn red as a single user pastes the entire
150
+ Twilight saga into GPT-5.5. Latency hits 41 seconds. The cost
151
+ counter ticks past 12 dollars for ONE response. She stares at
152
+ the number that explains why AI is getting more expensive even
153
+ though the models are getting cheaper. It's called KV Cache.
154
+ And right now, it's eating the company alive."
155
+
156
+ MECHANISM EXPLANATION
157
+ Bad: "Each new token has to compare against a long history."
158
+ Good: "Imagine typing the next word of an email, but before each
159
+ keystroke your laptop has to re-read every email you've sent
160
+ this year. That's what a transformer would do without KV Cache.
161
+ Now imagine your laptop wrote a single Post-it note for every
162
+ important word and stuck them on a desk. To type the next word,
163
+ it just glances at the desk. That's KV Cache. The Post-its are
164
+ the desk's secret. They're also the reason your AI bill has
165
+ exploded."
166
+
167
+ SECTION TRANSITION (re-hook)
168
+ Bad: "Remember the open loop. We asked..."
169
+ Good: "Stop for a second. The thing we just described \u2014 that
170
+ desk full of Post-its \u2014 is now eating 80% of an H200's memory
171
+ on every long conversation. THAT'S the bill nobody talks about."
172
+
173
+ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
174
+ NON-NEGOTIABLE ENGAGEMENT RULES
175
+ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
176
+
177
+ A. CHARACTERS: At least 2 named humans appear in scenes. Examples:
178
+ "Aman Goel, a Stanford PhD student, was debugging a vLLM crash
179
+ at 2 AM when..." or "Mira Murati, then OpenAI's CTO, told a
180
+ stage at AI Engineer Summit in November 2024 that..." Use real
181
+ people the web_search tool surfaces. If you cannot name a real
182
+ person, write a CHARACTERIZED engineer ("the inference team's
183
+ on-call engineer in San Francisco at 3 AM") \u2014 never anonymous
184
+ "researchers".
185
+
186
+ B. SCENES: At least 1 chunk per ~5 minutes contains a SCENE \u2014 time
187
+ of day, location, what is on the screen, what a specific person
188
+ said or did. Cinematic. Visual.
189
+
190
+ C. SECOND PERSON: At least 30% of paragraphs use "you" / "your" to
191
+ pull the viewer into a felt situation. Not every paragraph, but
192
+ peppered throughout to break the academic third person.
193
+
194
+ D. SENTENCE RHYTHM: Mix LONG sentences with SHORT punches. After a
195
+ 30-word explanation, drop a 4-word sentence. "And it broke."
196
+ "Memory was the killer." "Nobody saw it coming." Frequency:
197
+ at least 1 punch sentence per 80 words.
198
+
199
+ E. ANTAGONIST: Every script has a "vs". Choose one before writing:
200
+ - The old way vs the new way
201
+ - The optimist's claim vs the engineer's reality
202
+ - The marketing pitch vs the inference bill
203
+ - Brute force vs elegance
204
+ - The competitor's approach vs ours
205
+ Name it explicitly in chunk 1 and revisit it 3+ times.
206
+
207
+ F. SURPRISES: At least 3 reversals where you set up an expectation,
208
+ then break it. "You'd think the cost goes up linearly. It doesn't.
209
+ It goes up quadratically \u2014 and here's why that almost killed
210
+ ChatGPT in 2023." This is what keeps people watching.
211
+
212
+ G. RE-HOOK VARIETY: NEVER repeat the same re-hook phrasing. Vary it:
213
+ "Pause for a second."
214
+ "Here's where it gets weird."
215
+ "Wait. Why does that matter?"
216
+ "Look at the bill."
217
+ "Now ask yourself..."
218
+ Banned: "Remember the open loop:" or any verbatim re-hook
219
+ appearing more than once in the script.
220
+
221
+ H. CURRENT FACTS via web_search: BEFORE writing each chunk that
222
+ names a model / paper / number / product, USE WEB_SEARCH. If
223
+ you cite GPT-3, GPT-4, Gemini 1.5, Llama 2, Claude Sonnet 3.5,
224
+ or any other model older than 6 months as your "current example",
225
+ you have FAILED the brief.
226
+
227
+ Current as of April 2026:
228
+ OpenAI flagship \u2192 GPT-5.5 (released April 23 2026)
229
+ Anthropic flagship \u2192 Claude Opus 4.7
230
+ Meta open-weights \u2192 Llama 4
231
+ Google \u2192 Gemini 2.x family
232
+ USE WEB_SEARCH to verify. Don't trust your memory.
233
+
234
+ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
235
+ ACADEMIC PATTERNS \u2014 BANNED
236
+ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
237
+
238
+ The following sentence patterns will cause the script to read like a
239
+ textbook. Avoid all of them:
240
+
241
+ - "X has Y, and Y explains why..." (compound-clause explainer voice)
242
+ - "It is..." / "There is..." / "There exists..." as opener
243
+ - "In essence" / "essentially" / "fundamentally" / "ultimately"
244
+ - "Let me explain" / "let's break this down" / "in other words"
245
+ - "It is worth noting that" / "it should be observed"
246
+ - "On the other hand" used as a section pivot
247
+ - Three sentences in a row that all start with "The"
248
+ - Three sentences in a row over 30 words each
249
+ - Any paragraph that doesn't contain a concrete noun (a thing you
250
+ can point at \u2014 a building, a person, a product, a number with
251
+ a unit). If a paragraph is all abstractions, REWRITE it.
252
+
253
+ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
254
+ HARD WORD-COUNT CONTRACT (RULE ZERO)
101
255
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
102
256
 
103
257
  Each chunk's narrationText MUST contain at least (durationEstimate \xD7 2.5)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "storyforge",
3
- "version": "0.4.4",
3
+ "version": "0.4.5",
4
4
  "description": "StoryForge — local bridge for the Forge video production web app. Zero runtime dependencies.",
5
5
  "type": "module",
6
6
  "bin": {