@generativereality/content-studio 0.0.0-stage → 0.1.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/.claude-plugin/plugin.json +11 -0
- package/LICENSE +21 -0
- package/README.md +52 -2
- package/package.json +23 -4
- package/skills/content-studio/SKILL.md +150 -0
- package/skills/content-studio/references/audio.md +159 -0
- package/skills/content-studio/references/brief.md +66 -0
- package/skills/content-studio/references/channels.md +138 -0
- package/skills/content-studio/references/copy.md +201 -0
- package/skills/content-studio/references/costs-and-licences.md +75 -0
- package/skills/content-studio/references/generation.md +192 -0
- package/skills/content-studio/references/real-people.md +108 -0
- package/skills/content-studio/references/review.md +80 -0
- package/skills/content-studio/references/search.md +135 -0
- package/skills/content-studio/references/stills.md +112 -0
- package/skills/content-studio/references/tools.md +23 -0
- package/skills/content-studio/references/video.md +153 -0
- package/skills/content-studio/references/voice.md +115 -0
- package/skills/content-studio/scripts/render-frames.sh +30 -0
- package/skills/content-studio/scripts/spend.mjs +44 -0
- package/skills/content-studio/scripts/voice-sweep.sh +31 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Copy and story: what to say first, and how it holds attention
|
|
2
|
+
|
|
3
|
+
This file covers how words and stories are built for any piece people read, watch or hear. Read
|
|
4
|
+
`voice.md` beside it: this file decides what to say, and that one decides how the sentences sound.
|
|
5
|
+
|
|
6
|
+
Sources: *Made to Stick* (Heath & Heath), *Breakthrough Advertising* (Schwartz), Ogilvy, Copyhackers
|
|
7
|
+
(Wiebe), *Everybody Writes* (Handley), *Building a StoryBrand* (Miller), *$100M Offers* and *$100M
|
|
8
|
+
Leads* (Hormozi), *The Wizard of Ads* (Williams), *Influence* (Cialdini), and about 120 advice videos
|
|
9
|
+
from working creators and ad buyers, transcribed and read frame by frame (Nov 2026). The creators'
|
|
10
|
+
numbers are their own, often from people selling courses: use them as a creator's benchmark, never as a
|
|
11
|
+
fact in a claim. Where a book and a video disagree on tone, follow the book.
|
|
12
|
+
|
|
13
|
+
## The failure this file exists to prevent
|
|
14
|
+
|
|
15
|
+
A piece built from what the writer can cite instead of what the reader cares about: the product
|
|
16
|
+
introduced, then counts, then features. Every line is true and a stranger stops after the first one.
|
|
17
|
+
That is the *curse of knowledge*: once you know a thing, you can't see it as someone who doesn't.
|
|
18
|
+
**Evidence backs the copy. It isn't the copy.**
|
|
19
|
+
|
|
20
|
+
## 1. The one idea
|
|
21
|
+
|
|
22
|
+
Before a line of copy, write the core as one sentence that still holds when everything else is cut.
|
|
23
|
+
Then make it stick:
|
|
24
|
+
|
|
25
|
+
- **Simple:** one core, short and deep. Not a list of everything.
|
|
26
|
+
- **Unexpected:** break the reader's pattern, open a gap in what they know, then fill it. The surprise
|
|
27
|
+
serves the core or it is a gimmick.
|
|
28
|
+
- **Concrete:** something a person does or sees. *"It found the three people who already recommend you"*,
|
|
29
|
+
not *"relationship intelligence"*.
|
|
30
|
+
- **Credible:** proof the reader can test: a demo, a free try, a real output.
|
|
31
|
+
- **Emotional:** one person beats a statistic. In the book's study, a letter about one named child
|
|
32
|
+
raised more than twice what a letter of statistics did, and adding the statistics lowered it.
|
|
33
|
+
- **A story:** a short sequence of what happened to someone, which the reader can run in their head.
|
|
34
|
+
|
|
35
|
+
Write three to five angles for the idea, pick the one a stranger in that channel would stop for, and
|
|
36
|
+
say in one line why it beat the others.
|
|
37
|
+
|
|
38
|
+
## 2. Study what already works {#study}
|
|
39
|
+
|
|
40
|
+
In the niche and the channel, find the pieces that did **3 to 5 times** better than their own
|
|
41
|
+
author's normal (by views, saves or upvotes against that author's median). Copy their hook **form**
|
|
42
|
+
and structure, never their content. Then fill the form with what only this person can say: *what have
|
|
43
|
+
they earned the right to explain?* Keep a bank of the audience's problems in their exact words, from
|
|
44
|
+
comments, threads and reviews of the alternatives. Their phrases make the best headlines. Never
|
|
45
|
+
invent a channel, a link or a number while studying. Write *"not verified"*.
|
|
46
|
+
|
|
47
|
+
## 3. Hooks
|
|
48
|
+
|
|
49
|
+
**The first one or two sentences (or seconds) decide everything, and clarity beats cleverness.** Say
|
|
50
|
+
what this is about and why it matters to this reader, in short plain words. A great hook isn't
|
|
51
|
+
catchy; it is a trap the reader walks into because it is about them.
|
|
52
|
+
|
|
53
|
+
Formulas, one per piece:
|
|
54
|
+
|
|
55
|
+
- **Context, pull, turn:** line one says exactly what this is; then a pull (something hidden that is
|
|
56
|
+
happening to them, a contradiction, or proof shown); then the opposite of what they expect.
|
|
57
|
+
- **Context, challenge, transition:** *"…so today is day one of… But let me start from the
|
|
58
|
+
beginning."* It opens a series.
|
|
59
|
+
- **Connect to what they already want:** *"a dinner that gets you a third date"*, not *"knife skills"*.
|
|
60
|
+
- **Audience qualifier:** *"If you sell anything, you need to hear this."*
|
|
61
|
+
- **I built X because Y**, and **the problem, then what I did about it**. These are the commonest
|
|
62
|
+
shape of top maker posts.
|
|
63
|
+
- **Confession:** a true, specific thing that went wrong.
|
|
64
|
+
- **Receipts first:** a real, small, verifiable number in the first line or first second. Only true
|
|
65
|
+
ones.
|
|
66
|
+
- **Newsjack:** this week's change, ruling or announcement.
|
|
67
|
+
- **Attention triggers:** an extreme size or speed, a specific large number, a person the reader
|
|
68
|
+
wants to become, a big result from no experience, a line going up and to the right.
|
|
69
|
+
|
|
70
|
+
**Visual hooks** (the first one or two seconds of a video are a picture): a slow reveal of the result,
|
|
71
|
+
before and after, a list that unblurs item by item, a tier board, a split screen, a prop, a walk-in, a
|
|
72
|
+
pinned title bar with the claim, a counter that climbs. A kept imperfection (a dog walking through)
|
|
73
|
+
works as a pattern interrupt. The first visual must match the first words.
|
|
74
|
+
|
|
75
|
+
**Text hooks:** LinkedIn rewards a hook that gets to its purpose at once; X rewards a plain contrarian
|
|
76
|
+
line or a prediction. *"Press release energy"* fails everywhere. Never open on the product's name for a
|
|
77
|
+
reader who hasn't heard of it.
|
|
78
|
+
|
|
79
|
+
## 4. Scripts and structure
|
|
80
|
+
|
|
81
|
+
- **Stories are loops:** stakes, an open question, an unexpected turn, a re-hook, then again. Answering
|
|
82
|
+
one question opens the next. Every loop closes; pay the promise before 80% of the runtime; never
|
|
83
|
+
summarise at the end.
|
|
84
|
+
- **Name the framework early.** A video that took 22 seconds to say what it was about flopped.
|
|
85
|
+
- **Entertain the many, teach the interested, sell to the committed.** If it looks like an ad, people
|
|
86
|
+
scroll.
|
|
87
|
+
- **Tell the story while doing something visually interesting** (cooking, walking, building).
|
|
88
|
+
- **Show, don't list.** Lists with no opinion stopped working. Showing the expertise (a case study, a
|
|
89
|
+
worked hypothetical, a live build, the product doing the thing) is where the room is.
|
|
90
|
+
- **Structures that work:** man in a hole (fine, worse, better); big goal, challenge, breakthrough;
|
|
91
|
+
before, bridge, after. Use one per piece, filled with the customer's words and invisible to the reader.
|
|
92
|
+
- **For a 30 to 60 s ad or a song-led piece:** shock and an open loop; personal stakes; failed fixes and
|
|
93
|
+
a low point; a guide and a new explanation; doubt and a demonstration; progress you can follow; the
|
|
94
|
+
payoff and who they are now; the reveal; one invitation that calls back to the start. The test is
|
|
95
|
+
whether a first-time viewer could retell what changed.
|
|
96
|
+
- **Carousels and list posts:** each item carries its proof and an opinion; a list that overflows the
|
|
97
|
+
screen gets saved.
|
|
98
|
+
- **Long video:** a counterintuitive opening, a promise of value, then deliver it at once.
|
|
99
|
+
- **Newsletters:** frameworks and breakdowns, no filler. It is the highest-intent channel there is.
|
|
100
|
+
|
|
101
|
+
## 5. Copy rules
|
|
102
|
+
|
|
103
|
+
- **The headline does most of the work.** It promises something the reader wants, and is specific.
|
|
104
|
+
- **Feel first, then ask.** Let the reader see their own situation in concrete words before any ask.
|
|
105
|
+
- **Specifics over adjectives:** swap every adjective for a fact, a named situation or a visible
|
|
106
|
+
result. A slogan and vague adjectives insult the reader.
|
|
107
|
+
- **The reader's own words** (§2) write the headline and set the order.
|
|
108
|
+
- **Write to one person.** Draft fast, then cut everything that is there for the writer.
|
|
109
|
+
- **The reader is the hero; the product or person is the guide** with a plan and one next step.
|
|
110
|
+
- **Value is outcome × likelihood ÷ (time × effort).** Showing how soon the first result comes and how
|
|
111
|
+
little it asks usually beats a bigger promise, which lowers belief with sceptical readers.
|
|
112
|
+
- **Proof, honestly:** social proof works best from people like the reader, and only when true and
|
|
113
|
+
specific (named only with consent). Give first: the piece itself should be useful. Use scarcity and
|
|
114
|
+
authority only when they are real.
|
|
115
|
+
- **Plan what the reader sees with what they read.** For an article, page, guide or launch, plan the
|
|
116
|
+
picture in the brief (the real screen, a diagram, the chart of the number that matters, a before and
|
|
117
|
+
after) and write around it. One visual per idea it explains, with a caption saying what to notice.
|
|
118
|
+
- **A landing page is one promise and one button,** and the visitor feels the win in under a minute.
|
|
119
|
+
For a launch that has to explain *why*: the insight (what changed, or what the reader gets wrong), the
|
|
120
|
+
alternatives and their cost, the better way, then the product, its proof, and one ask. Most pages
|
|
121
|
+
are one sentence too long.
|
|
122
|
+
- **The call to action** says what to do, why, when, how easy it is and what happens next. It can be
|
|
123
|
+
the lesson itself. Never ask for upvotes, shares or support, and always say in the first line that
|
|
124
|
+
you made the thing.
|
|
125
|
+
|
|
126
|
+
## 6. What people share
|
|
127
|
+
|
|
128
|
+
One specific relationship, one small concrete moment, a reveal or a line that lands at the end, and an
|
|
129
|
+
implicit *"send this to…"*. Content made to be sent to one person is what gets passed on. People trust
|
|
130
|
+
"people like me" over the best success story, and a moment they can picture over a number (*"close the
|
|
131
|
+
laptop at five"*, not *"save five hours a week"*). Raw beats produced: smooth AI transitions and
|
|
132
|
+
sharpening push a piece toward looking like an ad. Less production often performs better:
|
|
133
|
+
platform-native, phone-shot, talking video beats a polished studio piece.
|
|
134
|
+
|
|
135
|
+
## 7. Formats and series
|
|
136
|
+
|
|
137
|
+
- **A series beats one-offs.** A named recurring format (*"day 1 of…"*, *"one teardown a week"*) makes
|
|
138
|
+
the audience a participant. A **default piece** that is easy to make every week keeps the cadence.
|
|
139
|
+
- **Kinds to rotate:** teaching, story, authority (the "if I started again today" case study), series,
|
|
140
|
+
and doubling down on a hit by turning it into a format.
|
|
141
|
+
- **Pieces every profile needs:** the origin story, how it works, how it was made, a day in the life,
|
|
142
|
+
the before and after (the maker's and a customer's), the mission, a hypothetical.
|
|
143
|
+
- **Formats that work as ads and as posts:** prototype to product, blind test, stress test, notes-app
|
|
144
|
+
screenshot, "don't buy this if…", teardown, reply to a real comment, day 1 to day 30, price
|
|
145
|
+
breakdown, screen recording, founder demo, raw review.
|
|
146
|
+
- **One core piece, cut for each channel** (post, short clip, carousel, newsletter section, a reply in
|
|
147
|
+
the thread where someone asked exactly that). Use one home platform for the original work and treat
|
|
148
|
+
the rest as distribution, in the same voice.
|
|
149
|
+
- **Own a category, a word and a visual,** and repeat them past the point of boredom.
|
|
150
|
+
- **Old drafts and archived posts are material.** Refresh and republish what still holds before
|
|
151
|
+
inventing a new topic, and mine the person's voice notes for ideas (a memo saying "idea for a post"
|
|
152
|
+
is a brief waiting to be written).
|
|
153
|
+
|
|
154
|
+
## 8. Ads
|
|
155
|
+
|
|
156
|
+
Distinct creative is the targeting now. Ad delivery systems reward distinct concepts and count
|
|
157
|
+
near-duplicates as one. Test many hooks against a few bodies and a few calls to action, change one
|
|
158
|
+
variable per test, and write a hypothesis for each test. A lead magnet solves one narrow problem
|
|
159
|
+
completely, in a way that reveals the next problem the offer solves.
|
|
160
|
+
|
|
161
|
+
## 9. The check {#check}
|
|
162
|
+
|
|
163
|
+
Read the piece cold, as the brief's reader meeting it in that channel. Each must hold:
|
|
164
|
+
|
|
165
|
+
1. **Hook:** would they stop for the first line or first second? Does it open on their situation, not
|
|
166
|
+
the product's name or the writer's numbers?
|
|
167
|
+
2. **Reader:** is it about them, at their stage of awareness? Internal numbers dressed up as the story
|
|
168
|
+
always fail.
|
|
169
|
+
3. **Specificity:** a concrete scene, example or number that makes the point; where the form carries
|
|
170
|
+
pictures, the planned one is there.
|
|
171
|
+
4. **One idea:** could they repeat it to a friend in a sentence?
|
|
172
|
+
5. **Voice:** a person talking, none of the tells (`voice.md`).
|
|
173
|
+
6. **Channel fit:** the form, length and rules of that place (`channels.md`), and nothing a moderator
|
|
174
|
+
would remove.
|
|
175
|
+
|
|
176
|
+
The floor under all six: every claim has its source; nothing is invented; nothing promised that isn't
|
|
177
|
+
true. A self-score does not predict quality. Pieces that scored well on every point have been judged
|
|
178
|
+
bad on sight. The person's reaction and the result are what count, so treat this as a gate against
|
|
179
|
+
obvious faults, not as proof the piece is good.
|
|
180
|
+
|
|
181
|
+
## 10. After it goes out {#after} {#ceilings}
|
|
182
|
+
|
|
183
|
+
- **Before posting, predict** the piece's result as a multiple of the person's normal at 6, 24 and 72
|
|
184
|
+
hours, and compare afterwards.
|
|
185
|
+
- **Read start, stay, signal:** nobody stopped means the hook failed; they started and left means the
|
|
186
|
+
payoff came too late; they watched and did nothing means it entertained but wasn't memorable. Write
|
|
187
|
+
three notes per piece: why they started, where they left, which line got a reaction.
|
|
188
|
+
- **View ceilings** (one creator's diagnostic): stuck under 1,000 views, the hook is unclear (fix
|
|
189
|
+
subject, stakes, simple, short); under 10,000, the topic doesn't touch a pain or desire, or the first
|
|
190
|
+
visual doesn't match the first words; under 100,000, the angle is obvious. Past that it takes
|
|
191
|
+
controversy, which is usually wrong for a brand. A business can be built without ever passing 100,000.
|
|
192
|
+
- **Benchmarks** (creators', unverified): Instagram share rate around 4% is excellent; watch-through
|
|
193
|
+
above 50% (60% on 15 s); X reply rate 1 to 3%; LinkedIn engagement 4%+; newsletter opens 30% normal,
|
|
194
|
+
40% great; YouTube click-through 2 to 10% for most channels (YouTube's own range).
|
|
195
|
+
- Write the winning **formula** into the house style, not the piece.
|
|
196
|
+
|
|
197
|
+
## Never
|
|
198
|
+
|
|
199
|
+
- Invent a number, quote, testimonial, user or result, or present a hypothetical as a real case.
|
|
200
|
+
- Borrow the *comment a keyword and I'll DM you* call to action at scale. Platforms ban automated DMs.
|
|
201
|
+
- Use a revenue screenshot, a "study shows" number without its caveats, or anyone's content as your own.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Costs, licences, disk, local or hosted, Windows
|
|
2
|
+
|
|
3
|
+
## Budget and the spend log
|
|
4
|
+
|
|
5
|
+
- Work inside a budget the person set, in money and time. When you reach it, stop and say so. Running
|
|
6
|
+
past it "because it was nearly done" is still over budget.
|
|
7
|
+
- Log every paid call (`scripts/spend.mjs add …`) with the model, settings, cost, wall time and output
|
|
8
|
+
file, and report the total per piece (`scripts/spend.mjs total`). Show the person what each sample
|
|
9
|
+
cost and how long it took. Some tool skills say never to tell the person prices: this skill
|
|
10
|
+
overrides that.
|
|
11
|
+
- Typical spends (Nov 2026): a full round of image, video and voice experiments for one area cost $1 to $2.
|
|
12
|
+
A 30 s product clip with three generated shots cost $1 to $8 depending on the model. Generation was
|
|
13
|
+
about $20 against about $300 of agent tokens in one production, so the agent's own time is usually the
|
|
14
|
+
bigger cost.
|
|
15
|
+
- **Budget attempts, not length.** A discarded take costs the same as a kept one; the keep rate in one
|
|
16
|
+
production was 3 of 7.
|
|
17
|
+
- Video per second of output (Replicate, read 25 Aug 2026, 1080p unless noted; re-read before boarding):
|
|
18
|
+
Seedance 1.5 Pro $0.026 (720p, silent), Kling 2.5 Turbo Pro $0.07, Veo 3.1 lite $0.08 ($0.05 at
|
|
19
|
+
720p), Runway Gen-4.5 $0.12, Veo 3.1 fast $0.15 ($0.10 at 720p), Kling v3 pro $0.224 ($0.336 with
|
|
20
|
+
audio), Seedance 2.5 $0.23 (720p), Veo 3.1 $0.40. **The spread for the same shot is about 15×, and
|
|
21
|
+
that spread is the budget.**
|
|
22
|
+
- Local electricity is small (about €0.0003 an image, €0.01 a local video clip at €0.20/kWh); what
|
|
23
|
+
local costs is wall time and disk.
|
|
24
|
+
- Never create an account, start a trial, accept a licence or buy anything on the person's behalf.
|
|
25
|
+
|
|
26
|
+
## Local or hosted
|
|
27
|
+
|
|
28
|
+
Local and free by default **where the quality is as good**. Otherwise use the best tool within the
|
|
29
|
+
budget. In Nov 2026 on an Apple Silicon Mac with 32 GB or more, these run well locally: FLUX 3 Klein and
|
|
30
|
+
Z-Image (images), ACE-Step (music), Qwen3-TTS and Kokoro (voice), and whisper (transcription). Local
|
|
31
|
+
video is impractical (10 minutes to over an hour a clip, 70+ GB weights). Hosted wins on video, on
|
|
32
|
+
Nordic voices and on images that must hold a design or a cast.
|
|
33
|
+
|
|
34
|
+
- **macOS kills long GPU jobs while someone uses the screen**
|
|
35
|
+
(`kIOGPUCommandBufferCallbackErrorImpactingInteractivity`). Run long local generation at night, or
|
|
36
|
+
shrink the input.
|
|
37
|
+
- Hugging Face downloads stall on xet transfer: `HF_HUB_DISABLE_XET=1 hf download … --max-workers 1`. If
|
|
38
|
+
the client deadlocks, delete the model's `.locks` and `*.incomplete` files and retry. One `--exclude`
|
|
39
|
+
per pattern. Download one model at a time.
|
|
40
|
+
- mflux needs `pillow<13`.
|
|
41
|
+
|
|
42
|
+
## Disk
|
|
43
|
+
|
|
44
|
+
Check free space before any model download, and stay inside a cap the person agrees (models run from
|
|
45
|
+
2 GB to 80 GB each). Install into the project's own folder (venvs, local `node_modules`), not
|
|
46
|
+
system-wide. List what can be deleted when you finish. Keep generated media out of git unless the
|
|
47
|
+
project says otherwise.
|
|
48
|
+
|
|
49
|
+
## Licences: what may be used for what
|
|
50
|
+
|
|
51
|
+
Read the licence on the **model card**, not the GitHub badge. A repository's code licence often
|
|
52
|
+
differs from its weights' licence.
|
|
53
|
+
|
|
54
|
+
| Class | Examples | Meaning |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| Apache-2.0, MIT, BSD | HyperFrames, Kokoro, Qwen3-TTS, Chatterbox, ACE-Step, Wan 2.2 weights, Real-ESRGAN, mflux, whisper, YuNet, Playwright, Z-Image Turbo | use, bundle, sell |
|
|
57
|
+
| MPL-2.0 | Satori, resvg | bundle; publish only changes to those files |
|
|
58
|
+
| Free under a revenue or size limit | FLUX 3 Klein (under US$5M), LTX-2.x (under US$10M ARR), Remotion (up to 3 employees), MiniMax Music 3 local (under US$20M, credit in the UI), Stable Audio (under US$1M) | fine while under it; plan a licence past it |
|
|
59
|
+
| GPL, AGPL | Piper's engine, espeak-ng, ComfyUI, OpenMontage | fine as a separate program a person runs on their own content; bundling it makes the product GPL, and AGPL also covers a network service |
|
|
60
|
+
| Non-commercial weights | OmniVoice, Voxtral, MusicGen, F5, XTTS, CodeFormer, Qwen-Image-2.1, FLUX.2 dev | private use only, never behind anything sold |
|
|
61
|
+
| Free tiers | ElevenLabs free (attribution required), Apple system voices (personal use) | not for anything published for a business |
|
|
62
|
+
| Regional | HunyuanVideo (licence excludes the EU, UK and South Korea) | not for companies there |
|
|
63
|
+
|
|
64
|
+
The outputs of the major hosted models are usable commercially under each provider's terms. Some
|
|
65
|
+
carry an invisible watermark (SynthID on Google's). Openly licensed photos, clips and music come with
|
|
66
|
+
their licence from the Wikimedia Commons API (CC0, public domain, CC BY, CC BY-SA, attributing BY and
|
|
67
|
+
BY-SA) or Openverse. **Record each asset's licence and source beside it.**
|
|
68
|
+
|
|
69
|
+
## Windows
|
|
70
|
+
|
|
71
|
+
HyperFrames, Remotion, Playwright, ffmpeg, Kokoro (ONNX), whisper.cpp and Real-ESRGAN run the same on
|
|
72
|
+
Windows. MLX models (mflux, mlx-audio, mlx-whisper) are Apple-only. Local image and video models need an
|
|
73
|
+
NVIDIA GPU there (ComfyUI or diffusers), so a Windows machine without one uses the hosted models.
|
|
74
|
+
Replace Apple's Vision with an ONNX face detector plus OCR text density, and HEIC handling with libheif.
|
|
75
|
+
On a smaller machine, make fewer variants and use a pre-made library of music beds.
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Generated images and video
|
|
2
|
+
|
|
3
|
+
The models change monthly. **Read the live price and input schema before every batch.** Treat the
|
|
4
|
+
names and numbers here as the shape of the answer, dated. Swapping the hosted model is the cheapest
|
|
5
|
+
quality fix there is.
|
|
6
|
+
|
|
7
|
+
## Calling a hosted model
|
|
8
|
+
|
|
9
|
+
- **POST, then poll.** Never hold a request open (`Prefer: wait`) for anything long: a dropped
|
|
10
|
+
connection is paid for twice, and on Replicate the output of a dropped prediction can be purged.
|
|
11
|
+
Submit all jobs first, then poll them all, about every 10 s.
|
|
12
|
+
- **Read the live schema** (`GET /v1/models/{owner}/{name}`) and grep it for every control you are
|
|
13
|
+
about to describe in words. A schema field such as `camera_fixed` works; the same request written as
|
|
14
|
+
prose in the prompt doesn't.
|
|
15
|
+
- **Read the live price** from the model page and check its unit (per image, per second, per 1,000
|
|
16
|
+
images). Replicate's API exposes no price, but each model page embeds its billing table as JSON:
|
|
17
|
+
fetch the page to a file and parse the `"criteria"` / `"prices"` objects (read the file in a heredoc
|
|
18
|
+
script; `python3 -c "…"` lost its inner quotes to bash). **Check every parsed number against its
|
|
19
|
+
unit:** the same parser read one model correctly at $0.04 an image and another as "$3", which was
|
|
20
|
+
per 1,000. A price two orders of magnitude off its neighbour is the tell. Prices are tiered by
|
|
21
|
+
resolution and by audio on or off, so one number per model is wrong by construction, and a rate
|
|
22
|
+
carried in a doc was once half the real one when a shoot was planned on it.
|
|
23
|
+
- **Spend is computed, not measured, on Replicate:** there is no billing endpoint, and the predictions
|
|
24
|
+
list 403s intermittently on paging, so a ledger built from it is silently partial. Compute from the
|
|
25
|
+
rate table and say so. OpenRouter returns the real cost per call in `usage.cost`.
|
|
26
|
+
- **Log every call:** model, settings, seed, cost, wall time, output file (`scripts/spend.mjs`).
|
|
27
|
+
- **Never overwrite a take.** A take that exists has usually been cut against, and re-shooting over it
|
|
28
|
+
pays twice and swaps the file the edit and the review point at (a queued job once landed a second take
|
|
29
|
+
on top of the one a scene was built from; the provider's copy of the first had not yet expired). Skip
|
|
30
|
+
outputs that exist; `--force` writes `<name>-2`. **A cache key must name everything the output depends
|
|
31
|
+
on:** cloned voice-over keyed on the line and not on the reference take kept the wrong voices.
|
|
32
|
+
- **Retry a 429 after the server's `retry_after`** and keep looping: low-balance accounts are throttled
|
|
33
|
+
but still finish. Space batch calls a few seconds apart.
|
|
34
|
+
- **No silent fallback to a second provider.** A fallback once returned JPEG bytes saved as `.png`;
|
|
35
|
+
a clean failure is better. Output may be a string or a one-item array, so handle both.
|
|
36
|
+
- API traps: community models need `POST /v1/predictions` with a version id; the model endpoint returns
|
|
37
|
+
a bare 404 for them although `GET /v1/models/{owner}/{name}` returns 200. A GET without a
|
|
38
|
+
`User-Agent` can be refused with a 403 that reads like a bad token (POSTs pass, curl never sees it).
|
|
39
|
+
The predictions list omits `output`; fetch each prediction. Prediction ids are about 26 characters, and a
|
|
40
|
+
truncated id gives a 404 that looks like a vanished prediction.
|
|
41
|
+
- Credentials come from wherever the person keeps them (a keychain entry, an environment variable).
|
|
42
|
+
Ask, never print them, and never paste them into files that get committed. When minting a token in a
|
|
43
|
+
browser, capture it by command substitution straight into the store, never by reading the page into
|
|
44
|
+
the transcript. On macOS a keychain read on a locked login keychain can hang on a prompt nobody can
|
|
45
|
+
answer ("In dark wake, no UI possible"): stop retrying, only a person at the machine fixes it.
|
|
46
|
+
- **Hosts:** switching models saves money, switching hosts mostly doesn't (Veo 3.1 and Kling 2.5 cost the
|
|
47
|
+
same on Replicate as first-party, Aug 2026). Move hosts for a model one lacks (query the API, not the
|
|
48
|
+
collection page, which omitted models it serves), lower cold starts (fal.ai) for interactive work, or a
|
|
49
|
+
consumer plan whose included generations beat per-second billing, after checking its terms for
|
|
50
|
+
commercial use and visible watermarks.
|
|
51
|
+
- **OpenRouter** (Oct 2026) serves image and video leaders Replicate lacked (MAI-Image, Muse, HeyGen
|
|
52
|
+
Video 1, MiniMax H3): `POST /api/v1/images` is synchronous (base64 in `data[0].b64_json`, references
|
|
53
|
+
as `input_references`), `POST /api/v1/videos` is async (poll, then download `/content`). List a host's
|
|
54
|
+
models with `GET /api/v1/models?output_modalities=image|video|audio`.
|
|
55
|
+
|
|
56
|
+
## Images: what to reach for (as of Nov 2026)
|
|
57
|
+
|
|
58
|
+
Image leaderboard (Artificial Analysis, read 24 to 26 Oct 2026): GPT Image 2.5 (~1220 Elo), Nano Banana
|
|
59
|
+
2.1 (~1180), MAI-Image 2.6, Grok Imagine 2, Muse, FLUX 3 Image (~1120), Seedream 5 Pro, Qwen-Image 3 Pro.
|
|
60
|
+
FLUX Kontext pro (~920, around 78th) and FLUX 1.1 pro (~870, around 90th) look dated: over-processed
|
|
61
|
+
"AI portrait".
|
|
62
|
+
|
|
63
|
+
| Need | Use | Price and time (Nov 2026) |
|
|
64
|
+
|---|---|---|
|
|
65
|
+
| Default hosted picture; text that must be right; one design across slides; a consistent cast | **Nano Banana 2.1** | $0.034 at 1K, $0.05 at 2K; 17 to 30 s (once 135 s under load) |
|
|
66
|
+
| Cheapest | Muse Image ($0.01, 17 s); GPT Image 2.5 at medium quality via OpenRouter ($0.011 to $0.016, 15 to 27 s) | |
|
|
67
|
+
| Designed, illustrated look | **Recraft v4** ($0.04, 11 s) | watch hands |
|
|
68
|
+
| Restoration, faces changed least | Nano Banana Pro ($0.15 at 2K) | |
|
|
69
|
+
| Nothing uploaded | **FLUX 3 Klein locally** (mflux on a Mac with 32 GB+, 2 to 4.5 min an image, 30 GB weights; free under US$5M revenue) | Mac only through MLX; Windows needs an NVIDIA GPU |
|
|
70
|
+
| Most photographic local | Z-Image Turbo | ignores colour constraints |
|
|
71
|
+
|
|
72
|
+
Faults to expect: Nano Banana tends toward an orange-glow "ad" look and over-even lighting, and once
|
|
73
|
+
added a second parent unasked. Seedream ignored a colour instruction. Ideogram drew nonsense phone
|
|
74
|
+
screens. MAI-Image refuses any scene with a child. Recognisable copyrighted characters were refused by
|
|
75
|
+
GPT Image 2.5, Nano Banana 2.1, FLUX 3 Image and Seedream, and drawn by Qwen-Image 3 Pro and FLUX 1.1
|
|
76
|
+
pro (Oct 2026); don't make them for anything published.
|
|
77
|
+
|
|
78
|
+
For a transparent cutout (sprites, props), run a background-remover model on the finished image.
|
|
79
|
+
Identity-preserving variations of one character (another outfit, another palette) come from an
|
|
80
|
+
editing model given the base image and an edit instruction; plain text-to-image makes a new character
|
|
81
|
+
each time.
|
|
82
|
+
|
|
83
|
+
## Prompting what renders
|
|
84
|
+
|
|
85
|
+
- **Models render the ordinary well and turn the extraordinary into cliché** ("humanoid robot",
|
|
86
|
+
"figure made of light"). Prompt the room, the light and the action, not the concept. Flat interiors,
|
|
87
|
+
one deadpan figure doing something mundane, two people at a table in available light and a period
|
|
88
|
+
video look (grain hides artefacts) all render reliably; scale effects and invented creatures don't.
|
|
89
|
+
Test a look with cheap stills before paying for video.
|
|
90
|
+
- **A negative prompt can't enforce an absence.** Four "closed laptop" takes failed across two model
|
|
91
|
+
families. Remove the object, or describe physical facts instead of states.
|
|
92
|
+
- **Props and wardrobe don't arrive reliably; posture and movement do.** Anything that must be seen
|
|
93
|
+
should be an action.
|
|
94
|
+
- **Say the age** of any child in the scene, or the model will age them up.
|
|
95
|
+
- **Ask for the real number.** An invented "six tabs" was really five, and five looked better (five
|
|
96
|
+
different things, so the beats differed, and a counted number can't be caught out). Find the real
|
|
97
|
+
figure, count or label before it reaches a frame; it is usually one search away.
|
|
98
|
+
- **In video, screens and paper in shot come out as gibberish.** Prompt them illegible on purpose
|
|
99
|
+
(angled, defocused, turned away) and composite every readable word afterwards.
|
|
100
|
+
- For backgrounds under text, end with *"No printed matter, no writing, no labels, no logos."*
|
|
101
|
+
|
|
102
|
+
## Consistency across images and shots
|
|
103
|
+
|
|
104
|
+
- **A cast sheet as the reference image, with the clothes named in the prompt.** Without named clothes,
|
|
105
|
+
local models copy the reference portraits' outfits. GPT Image 2.5, Nano Banana 2.1, FLUX 3 Image,
|
|
106
|
+
Seedream 5 Pro and Muse kept everyone recognisable in a bench of family scenes.
|
|
107
|
+
- **Chain the style:** use the first accepted still as the style reference for the next ones.
|
|
108
|
+
- **One room across shots is not a prompt problem, and no seed fixes it.** Four separate text-to-video
|
|
109
|
+
takes of "the identical room" gave four rooms, and the same seed with one clause changed gave two (a
|
|
110
|
+
seed reproduces one generation; it carries nothing between them). Generate several shots in one call
|
|
111
|
+
where the model supports it (Kling v3 `multi_prompt`, up to 6 shots; Seedance 2.5, 30 s in one call),
|
|
112
|
+
or chain: one still of the room, edits of that still that change only the light or time, each fed as
|
|
113
|
+
the clip's start image, and start plus last frame where two shots must join.
|
|
114
|
+
- **Repair rather than re-roll:** models that take a `reference_video` as a base (Kling omni) edit a
|
|
115
|
+
clip you already paid for in plain language, so a take wrong in one object is a cheap edit, not a
|
|
116
|
+
reject.
|
|
117
|
+
- **A locked-off composition holds** (one room stable over ten seconds). A static camera with no
|
|
118
|
+
recurring face is the cheapest reliable shot. Where the schema has `camera_fixed`, set it; the same
|
|
119
|
+
wish written in the prompt and negative prompt is a hope.
|
|
120
|
+
- **One recurring face:** use the model's `reference_images` (counts differ by model). Decide this
|
|
121
|
+
before boarding, because it decides the model and the price.
|
|
122
|
+
- An on-camera speaker commits you to a voice the video model can't reproduce: it re-rolls the voice on
|
|
123
|
+
every generation, and no seed or id fixes it. Generate the face once, then clone the voice from that
|
|
124
|
+
take (`audio.md`) only if it is a synthetic person, never a real one (`real-people.md`). Decide
|
|
125
|
+
whether anyone speaks on camera before boarding.
|
|
126
|
+
|
|
127
|
+
## Video: what to reach for (as of Nov 2026)
|
|
128
|
+
|
|
129
|
+
| Model | Price | Use, and what it does wrong |
|
|
130
|
+
|---|---|---|
|
|
131
|
+
| **Seedance 1.5 Pro** (image to video) | about $0.026/s silent, $0.052/s with audio at 720p; 5 s ≈ $0.13 at 720p, $0.30 at 1080p | the liveliest and best looking. **Invents things:** an extra person in a group, drips, sprouting leaves; cut to a new shot mid-clip despite `camera_fixed`. Never on anything that must stay true without an invention check |
|
|
132
|
+
| **Kling 2.5 Turbo Pro** | about $0.07/s | faithful (kept the right number of people), native 1080p; slower |
|
|
133
|
+
| Wan 2.2 i2v fast | about $0.11 a clip | **out for anything shown: choppy, as if 10 to 15 fps** |
|
|
134
|
+
| Text to video leaders (read 26 Oct) | Wan 3 $0.05/s, HeyGen Video 1 $0.036/s, MiniMax H3 $0.08/s, Seedance 2.5 $0.23/s, Kling 3 Pro $0.34/s | judge by frames |
|
|
135
|
+
| Local (LTX-2.5, Wan 2.2 5B) | free; about 10 min for 10 s, or over an hour a clip, 70+ GB weights | not practical on a laptop |
|
|
136
|
+
|
|
137
|
+
Controls differ per model, and a model's ceiling is not the medium's (read Aug to Oct 2026; re-read the
|
|
138
|
+
schema before boarding, because the newer models were the ones that had grown the controls an older
|
|
139
|
+
shoot failed for want of):
|
|
140
|
+
|
|
141
|
+
| Model | Durations | Sound | Controls worth knowing |
|
|
142
|
+
|---|---|---|---|
|
|
143
|
+
| Veo 3.1 (and fast, lite) | 4 / 6 / 8 s | yes, with dialogue | `reference_images` 1 to 3; `image` + `last_frame` to join shots |
|
|
144
|
+
| Kling 2.5 Turbo Pro | 5 / 10 s | no | start and end image; no seed |
|
|
145
|
+
| Kling v3 | 3 to 15 s | yes | `multi_prompt`, up to 6 shots in one call |
|
|
146
|
+
| Kling v3 omni | 3 to 15 s | yes | `reference_images` up to 7; `reference_video` as a base to edit a clip |
|
|
147
|
+
| Seedance 1.5 Pro | 2 to 12 s | optional | `camera_fixed`, `seed`, first and last frame; 720p only on Replicate |
|
|
148
|
+
| Seedance 2.5 | up to 30 s | yes, with dialogue | `reference_images` up to 30, `reference_videos` up to 10, `seed` |
|
|
149
|
+
|
|
150
|
+
- **Spend on the expensive models only where a face or spoken dialogue has to persist.** A held static
|
|
151
|
+
shot with no face is the commonest thing a board asks for, and the cheapest model does it for about a
|
|
152
|
+
fortieth of the dearest (per-second prices in `costs-and-licences.md`). In one production a single 6 s
|
|
153
|
+
take on the dearest model was a third of the spend for a fourteenth of the footage.
|
|
154
|
+
- **One-shot to test a concept, composite to build it.** Veo will one-shot a split screen with spoken
|
|
155
|
+
commentary ($1.20 for 8 s on the fast tier), which answers "does this idea work" in minutes. It can't
|
|
156
|
+
re-roll half a frame, hold one room in both halves, set its own lettering or keep voices across shots;
|
|
157
|
+
compositing separate panes can.
|
|
158
|
+
- **Provider overload is not your prompt.** Veo's `high load` failure (`code: 8`) once failed one shot
|
|
159
|
+
eight times in a row while a sibling succeeded. Retry unchanged; don't rewrite the prompt.
|
|
160
|
+
- **Check a model is still served** before boarding on it, on the vendor's own deprecations page:
|
|
161
|
+
OpenAI removed Sora 2 and its Videos API on 24 Sep 2026 while a reseller still listed it, and a shot cut
|
|
162
|
+
from a removed model can't be re-rolled.
|
|
163
|
+
- **A cheap concept test:** one 8 s Seedance call with audio (about $0.42) made a three-shot ad that
|
|
164
|
+
spoke every scripted line correctly. Its product interface was gibberish and the voice unnatural, so
|
|
165
|
+
it tests an idea and never ships.
|
|
166
|
+
- **Budget 3 to 5 attempts a shot.** One production made 7 takes and kept 3, for $7.22. The price spread
|
|
167
|
+
between models for the same shot is about 15×, and that spread is the budget.
|
|
168
|
+
- **Board before shooting:** write the shots and get the plan approved, check the schema against every
|
|
169
|
+
rule, make one cheap still per setup, then video. One $7 set made before its board was approved
|
|
170
|
+
returned 3 usable seconds.
|
|
171
|
+
|
|
172
|
+
## The invention check (for any generated motion near real things)
|
|
173
|
+
|
|
174
|
+
Review every clip by its frames, not by its first frame. For anything that must stay true: count faces
|
|
175
|
+
on about 20 frames against the source; ask a vision model narrow questions (*"any person, figure,
|
|
176
|
+
silhouette or animal?"*), not open ones (an open "boats: yes" turned out to mean the cabin the camera
|
|
177
|
+
was in); measure camera shift; map where the pixels changed. **Only animate stills whose motion is
|
|
178
|
+
obvious and that have no faces** (water, fire, light, sky).
|
|
179
|
+
|
|
180
|
+
## Generating assets for a product build
|
|
181
|
+
|
|
182
|
+
When generated images or music ship inside an app or a game, generate them at build time and commit
|
|
183
|
+
the output as the offline content. The shipped build then holds the files, never the keys or the
|
|
184
|
+
generation code, and makes no network calls for them. If users later generate their own at run time,
|
|
185
|
+
that is a separate code path that calls the project's own server, which holds the key; never bundle a
|
|
186
|
+
key into a client. Keep one canonical copy of the generated files and let other targets mirror it,
|
|
187
|
+
never regenerate per target. Large binaries go through git LFS: commit `.gitattributes` before the
|
|
188
|
+
files, and after a fresh clone check the build reads real bytes, not LFS pointers. A chain of
|
|
189
|
+
providers (best quality first, a cheaper one, then a free on-device floor) lets a run degrade instead of
|
|
190
|
+
failing, chosen by which keys are present and logged per file (this is a planned chain, unlike a
|
|
191
|
+
silent fallback); check each level's licence (MusicGen weights are
|
|
192
|
+
non-commercial).
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Real people: photos, faces, voices, and personal content
|
|
2
|
+
|
|
3
|
+
This applies to anyone's real photos, videos, voice or words, and to personal pieces for family and
|
|
4
|
+
friends (a trip, a month, a child's year, a tribute).
|
|
5
|
+
|
|
6
|
+
## Consent and what leaves the computer
|
|
7
|
+
|
|
8
|
+
- **A person's own media is shown as it is.** Never redraw, "enhance", animate, age or re-pose a real
|
|
9
|
+
person, and never generate a person into real memories. Restoration is the one exception, and only
|
|
10
|
+
at the owner's request, compared with the original at the faces (`stills.md`).
|
|
11
|
+
- **Nothing of a person's goes to a hosted model without a yes for that specific use.** Keep the pixels
|
|
12
|
+
local. An agent can plan a film from text alone (local captions, face boxes, times, places, transcripts),
|
|
13
|
+
and the quality checks can run locally too.
|
|
14
|
+
- **Say exactly what is local and what isn't.** Never write "nothing leaves your computer" when an AI
|
|
15
|
+
provider reads anything.
|
|
16
|
+
- **Names come only from the person's own tags or words.** Someone tagged nowhere stays unnamed.
|
|
17
|
+
- **Never use synthetic faces as evidence of quality.** Generated "family" photos (everyone centred,
|
|
18
|
+
facing the camera, in the same jacket) read as AI-made and say nothing about real material.
|
|
19
|
+
- **Real people in demos and posts:** blur names and faces of anyone who hasn't agreed. A customer is
|
|
20
|
+
named only with their consent.
|
|
21
|
+
|
|
22
|
+
## Cloning a voice
|
|
23
|
+
|
|
24
|
+
1. Consent from the **voice's owner**, never from whoever uploads the audio. Verify it live (they read
|
|
25
|
+
a random phrase shown on screen).
|
|
26
|
+
2. Purpose-bound, revocable, deletable. Treat the voice as biometric data: encrypted, on the device,
|
|
27
|
+
never used for training.
|
|
28
|
+
3. An older relative consents in their own voice while alive. After death: only with consent given in
|
|
29
|
+
life or the next of kin's agreement, and only to read words they actually wrote or said. **Never
|
|
30
|
+
invent new statements in a dead person's voice.**
|
|
31
|
+
4. **No children's voices.**
|
|
32
|
+
5. Label every cloned output, in the piece and in its metadata, and keep the engine's watermark. The EU
|
|
33
|
+
AI Act's disclosure rules (Art. 50) apply from August 2026 (check the regulation's current text).
|
|
34
|
+
6. No free-text speech with a cloned voice, rate limits, and never export the voice model.
|
|
35
|
+
7. The engine needs a commercial licence for anything published.
|
|
36
|
+
|
|
37
|
+
## Get the facts right before anything creative
|
|
38
|
+
|
|
39
|
+
- **Time and place come from the metadata; what is in the picture comes from looking.** A caption
|
|
40
|
+
called a cabin window "a train at sunset"; the data said 07:10, at sea.
|
|
41
|
+
- **Compute every count and weekday.** "Three cities" was invented, and the data said five. "Saturday"
|
|
42
|
+
was said for a Sunday.
|
|
43
|
+
- **No inferences dressed as facts:** "friends" becomes the tagged names; "sunrise" becomes "at sea"
|
|
44
|
+
when 07:10 was before sunrise; "a new outfit" was said where she only tried one on.
|
|
45
|
+
- **Local time comes from the place's time zone,** not the camera's.
|
|
46
|
+
- A line never runs over a shot from another time or place.
|
|
47
|
+
- **Received photos** (forwarded in a chat) are labelled or left out. A dozen photos stamped the same
|
|
48
|
+
minute with no location are probably someone else's phone, so say so and ask. Generated images found
|
|
49
|
+
in a library stay out.
|
|
50
|
+
|
|
51
|
+
## Read every trail before asking
|
|
52
|
+
|
|
53
|
+
Before asking the person anything, read everything available (tags, notes, messages, the calendar,
|
|
54
|
+
memos, the work log) and say what you read. Then look for gaps: lay out each day's photos by hour,
|
|
55
|
+
mark waking-hours gaps of two hours or more, and mark which are explained. **Ask one question**, about
|
|
56
|
+
the gap that matters most, neutrally (*"what was happening on Sunday afternoon?"*, not *"what was so
|
|
57
|
+
funny?"*). Fourteen questions is too many. Say which source could have answered it, had it been
|
|
58
|
+
connected.
|
|
59
|
+
|
|
60
|
+
## The language follows who it is for
|
|
61
|
+
|
|
62
|
+
Dates, times (Swedish writes 14.20 and lower-case weekdays), and place names (Helsingfors for Helsinki
|
|
63
|
+
in Swedish) move with the language. Translated words aren't quotes, so drop the quotation marks.
|
|
64
|
+
Scan every visible text node for words left in the wrong language. A word the language needs but
|
|
65
|
+
the data lacks (Swedish distinguishes a mother's sister from a father's) is looked for in every trail,
|
|
66
|
+
then asked, never guessed.
|
|
67
|
+
|
|
68
|
+
## Photos: technical faults that ruin a film
|
|
69
|
+
|
|
70
|
+
- **Orientation.** Phone HEICs carry an EXIF orientation tag. Converting while keeping the tag and also
|
|
71
|
+
rotating the pixels makes browsers rotate again: 58 of 120 photos came out sideways. Bake the rotation
|
|
72
|
+
and strip the tag (ImageIO `CreateThumbnailWithTransform` on a Mac; libheif or pillow-heif applying
|
|
73
|
+
`irot`/`imir` elsewhere). **ffmpeg applies a HEIC's grid rotation (`irot`) while decoding, even with
|
|
74
|
+
`-noautorotate`**, so a pipeline that also applies the EXIF turn rotates the photo twice. Portrait
|
|
75
|
+
phone photos came out sideways that way. The test: if the decoded size equals the stored size with
|
|
76
|
+
width and height swapped, ffmpeg has already turned it, so don't turn it again. **Check the rendered frames**, not the source files: each shot should match
|
|
77
|
+
its source best at 0°, and the face roll measured at full resolution should match the source's. A
|
|
78
|
+
film with one sideways photo isn't a candidate.
|
|
79
|
+
- **Edits in the photo app are lost** when you read the original file. A crop or adjustment the
|
|
80
|
+
person made isn't in it, so read the edited rendition where the library offers one.
|
|
81
|
+
- **Junk filter:** a utility classifier (receipts, screenshots, decoys) is reliable as a filter (20 of
|
|
82
|
+
20, no false positives, in one test). An aesthetic score ranks posed groups highest, so never use it
|
|
83
|
+
to pick.
|
|
84
|
+
- **Live Photos** hold 1 to 3 s of real motion and sound, the authentic version of what image-to-video
|
|
85
|
+
fakes. A shot longer than its clip plays the clip up to the key moment, then settles on the still. A
|
|
86
|
+
shorter one centres on the key moment. Keep the sound, ducked. Real motion went from 34% to 85% of
|
|
87
|
+
a film this way.
|
|
88
|
+
- **Real motion first, generated motion last,** and only on stills with obvious motion and no faces,
|
|
89
|
+
after the invention check (`generation.md`).
|
|
90
|
+
|
|
91
|
+
## The personal register
|
|
92
|
+
|
|
93
|
+
Personal content is the opposite of growth content, so keep its own template: slow dissolves or
|
|
94
|
+
honest cuts, real sound kept (wind, laughter), a serif caption, no kinetic type, no "motivational"
|
|
95
|
+
music. Seven rules for a 30 to 60 s memory piece:
|
|
96
|
+
1. Open on the most specific moment.
|
|
97
|
+
2. One throughline.
|
|
98
|
+
3. A small turn near the end.
|
|
99
|
+
4. Captions in the family's own words.
|
|
100
|
+
5. Music chosen as "day in the life" or "emotional".
|
|
101
|
+
6. Unproduced on purpose. Sharpening and smooth AI transitions push it toward an ad.
|
|
102
|
+
7. End on a face, or a line addressed to the person it is for.
|
|
103
|
+
|
|
104
|
+
What people respond to: one relationship, one small moment, a line that lands, made to be sent to one
|
|
105
|
+
person. Useful feedback-to-change mapping: "boring, like the phone's automatic memories" → a social or
|
|
106
|
+
product cut opening on the most specific moment; "too fast" → longer shots, no word captions; "I wasn't
|
|
107
|
+
there" → an index card or a cut scene; "who's that?" → only tagged names; "make one for <child>" →
|
|
108
|
+
their photos first, labels in their language, no narrator, about 30 s.
|