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.
- package/dist/index.js +156 -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
|
|
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
|
-
|
|
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)
|