@officexapp/vidfarm-devcli 0.21.54 → 0.21.56

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.
@@ -0,0 +1,549 @@
1
+ ---
2
+ name: flash-harness
3
+ video_type: NOT A FORMAT — the production PROCESS for a weak / small / fast model. Start from an already-decomposed /discover template, adapt it. Wraps whichever format harness applies.
4
+ ---
5
+
6
+ # Flash Harness — build from a decomposed template, not from a blank page
7
+
8
+ > Served at `https://vidfarm.cc/experimental/flash-harness.md` and, because it is the one
9
+ > harness you may need before you have network, at `vidfarm harness show flash-harness`.
10
+
11
+ **This is not a video format.** Every other file in `/experimental` tells you what a
12
+ *specific kind of video* looks like. This one tells you *how to work* when the model
13
+ reading it is not a frontier model. It sits **above** the format harnesses: you still read
14
+ the format harness, you just reach it by a different road.
15
+
16
+ **Who this is for.** Gemini Flash, DeepSeek, Kimi, GLM, MiniMax, Grok, Qwen, Llama, any
17
+ distilled or fast tier, any model unsure whether it is one of these. If you are on this
18
+ list, **stop reading `vidfarm.cc/experimental/*` as a build instruction and read it as a
19
+ grading rubric instead.** Those files ask you to author a format from its written
20
+ description. That works on Opus/Fable/GPT-5-class agents and reliably fails below them.
21
+
22
+ The road that works below that line is short: **a video that already went viral has already
23
+ been taken apart for you. Take the parts.**
24
+
25
+ ---
26
+
27
+ ## THE CONTRACT
28
+
29
+ Twelve rules. Follow them in order. The reasons are in **Why these rules** at the bottom —
30
+ read them after, not during. A reason next to a rule is something to negotiate with.
31
+
32
+ 1. **Never start from a blank composition.** Every build starts as a fork of a
33
+ **decomposed** template from `/discover`.
34
+ 2. **Pick the template by the client's ANGLE, not by how the template looks.** Search
35
+ `vidfarm discover --query "<the client's offer, in their words>" --json`.
36
+ 3. **A template is decomposed if its `/discover` row carries `summary`, `keywords` and
37
+ `promotions`.** No `summary` → not decomposed. Do not guess from the preview.
38
+ 4. **If nothing decomposed fits, decompose one.** Paid: `vidfarm decompose <forkId>`.
39
+ Free tier: `vidfarm decompose <forkId> --local`. Never skip this to save a step.
40
+ 5. **Derive the harness before you plan:** `vidfarm harness derive <forkId> --out ./HARNESS.md`.
41
+ That file is your plan's source of truth, not the rendered video.
42
+ 6. **Write `STORYBOARD.md` before you open `composition.html`.** One row per beat, carrying
43
+ the beat's `src`, `duration`, `voiceover`, and where its asset will come from.
44
+ 7. **Procure every asset for every beat in ONE pass, before you edit anything.** A beat with
45
+ no asset in hand is not planned, it is hoped for.
46
+ 8. **Walk the asset ladder in order and stop at the first rung that answers:** client's
47
+ shared folder → client's website → public raws → free stock (Pixabay/Openverse) →
48
+ IconScout → your own subscription's generator → billed generation.
49
+ 9. **Keep the load-bearing DNA. Replace everything else without mercy.** Load-bearing =
50
+ the beat count, the cut rhythm, the hook shape, the payoff position, the caption
51
+ identity. Every word, every image, every voice line gets replaced.
52
+ 10. **Overfitting to this one template is CORRECT.** Do not add originality on top. The
53
+ template is the originality; your job is the transplant.
54
+ 11. **Run the gate as a command, not from memory:** `vidfarm qa ./work --harness ./HARNESS.md`,
55
+ then `vidfarm stills ./work --sheet`, then look at the sheet.
56
+ 12. **Print the summary line from §8 last, verbatim, filled in.** A report without it is an
57
+ unfinished job.
58
+
59
+ ---
60
+
61
+ ## 0. Which model am I, and what does my subscription include?
62
+
63
+ Two independent questions. Answer both once, out loud, at the start of the session. Write
64
+ the answers into `CONTEXT.md` so the next session does not re-derive them.
65
+
66
+ ### 0a. Strong or weak?
67
+
68
+ | You are | If you are | Then |
69
+ |---|---|---|
70
+ | **strong** | Claude Opus / Sonnet (4.5+), GPT-5 class, Gemini Pro (3+ thinking), Fable | Build the normal way. Read `https://vidfarm.cc/skill.md` and the format harness directly. This file is optional. |
71
+ | **weak** | Gemini Flash / Flash-Lite, DeepSeek, Kimi, GLM, MiniMax, Grok, Qwen, Llama, any "-mini" / "-lite" / "-turbo" / distilled tier | **Follow this file.** |
72
+ | **unsure** | you cannot name your own model, or you are a router that may swap tiers mid-task | **Treat yourself as weak.** |
73
+
74
+ **Unsure is not a tie — it resolves to weak.** A strong model that follows this harness
75
+ loses a little freedom and still ships a good video. A weak model that skips it ships
76
+ something the client rejects. The costs are not symmetric.
77
+
78
+ Two honest self-tests, if the label does not settle it:
79
+
80
+ - Have you, in this session, written more than ~80 lines of HTML/CSS/GSAP that rendered
81
+ correctly on the **first** `vidfarm render`? If no — weak.
82
+ - Can you hold the whole composition, the format harness, and the client brief in your head
83
+ at once without re-reading? If no — weak.
84
+
85
+ ### 0b. Does my own subscription include media generation?
86
+
87
+ This changes what `minimize` (the $0 cost mode) is allowed to do.
88
+
89
+ | Host agent | Image | Voice / TTS | Transcribe / STT | Video |
90
+ |---|---|---|---|---|
91
+ | **Google Antigravity** (Gemini) | **Yes** | **Yes** | **Yes** | **Check your tool list** |
92
+ | **Gemini CLI** | **Yes** | **Yes** | **Yes** | check |
93
+ | **OpenAI Codex / ChatGPT** | **Yes** (`gpt-image`) | **Yes** | **Yes** (Whisper) | check |
94
+ | **Claude Code** | No | No | No | No |
95
+ | OpenCode / Cursor / anything else | depends on the configured model — **read your own tool list** | | | |
96
+
97
+ `vidfarm agent-image --check` prints this table plus a guess at the host from its env
98
+ markers. **The env guess is a hint; your own tool list is the authority.**
99
+
100
+ **The rule this unlocks — and it is a real one, not a loophole:**
101
+
102
+ > **Generation that is already inside a flat subscription is FREE, and free means it is
103
+ > allowed in cost mode `minimize`, with no `--yes` and no permission ask.**
104
+ > Vidfarm bills $0 (no primitive is called, no job is created, no wallet is debited) and the
105
+ > provider bills $0 extra (the capability is inside the plan the human already pays for).
106
+ > So a `$0 cost saving mode` build on Antigravity **may** generate its own images and its
107
+ > own voiceover and still be honestly reported as $0.
108
+
109
+ **Default to using the subscription.** If you have it, use it before you reach for a free
110
+ local engine that takes twenty minutes, and long before anything billed.
111
+
112
+ **Antigravity is the case that matters.** Most gigworkers on this marketplace run
113
+ Antigravity, and Antigravity is both a weak-tier model *and* a full media suite. That
114
+ combination is exactly what this harness is tuned for: thin reasoning, fat toolbox. Lean on
115
+ the toolbox.
116
+
117
+ **Three honest limits.**
118
+
119
+ - Do not claim a tool you do not have. A fabricated image path is worse than a $0.02 spend.
120
+ - The free rungs still come first (§4). A designer's IconScout vector beats a generated
121
+ icon, and a real Pixabay photo beats a generated photo. *Free* does not mean *first*.
122
+ - **Say what you did.** Name, in your report, which assets came from your own subscription.
123
+ That sentence is the proof that `minimize` really did cost $0.
124
+
125
+ ---
126
+
127
+ ## 1. Match a template on `/discover`
128
+
129
+ ```bash
130
+ vidfarm discover --query "bookkeeping app for small agencies" --limit 20 --json
131
+ ```
132
+
133
+ Search with the **client's problem in the client's words**, not with a format name. The
134
+ feed is hybrid semantic + keyword over decompose-derived metadata, so "my invoices are
135
+ late" finds formats that *sell* that pain, not formats titled "invoice".
136
+
137
+ Read each row for these five fields and nothing else:
138
+
139
+ | Field | What it tells you |
140
+ |---|---|
141
+ | `templateId` | what you fork. **Empty string** = not a template yet (see §2) |
142
+ | `summary` | plain-language description of the format. **Present ⇒ decomposed** |
143
+ | `promotions` | offer categories this format can sell. Match against the client |
144
+ | `keywords` | the matching terms. Your relevance check |
145
+ | `durationSeconds` / `layerCount` | how big a rebuild you are signing up for |
146
+
147
+ **Shortlist three, not one.** Then pick by this order — the first tiebreak that separates
148
+ them wins:
149
+
150
+ 1. `promotions` overlaps the client's category.
151
+ 2. `summary` describes a structure you can fill with what the client actually has (if the
152
+ client has no footage of a person, do not pick a talking-head format).
153
+ 3. `durationSeconds` under 30 and `layerCount` under ~25. **Smaller is better for you.**
154
+ 4. It is already decomposed (§2). A tie goes to the one you do not have to decompose.
155
+
156
+ Two more places to look, both free, both worth checking before you settle:
157
+
158
+ ```bash
159
+ vidfarm discover --sort wow --limit 20 # the strongest formats in the catalog
160
+ vidfarm discover --sort recent --limit 20 # what landed this week
161
+ ```
162
+
163
+ **Record the winner's `template_id` in `STORYBOARD.md` under `source_template`.** You will
164
+ cite it in your report and, on the marketplace, in the proof's `private_note`.
165
+
166
+ ---
167
+
168
+ ## 2. Make sure it is decomposed
169
+
170
+ Fork it. Forking is free.
171
+
172
+ ```bash
173
+ vidfarm fork <template_id> # → forkId
174
+ vidfarm pull <forkId> --dir ./work # composition.html + .harness/ to disk
175
+ ```
176
+
177
+ Now check what actually came down:
178
+
179
+ ```bash
180
+ ls ./work/.harness/ # context.json present ⇒ you have the decomposition
181
+ ```
182
+
183
+ | What you see | State | Do this |
184
+ |---|---|---|
185
+ | `.harness/context.json` exists, with `viral_dna` populated | **decomposed** | Go to §3. Nothing to pay, nothing to run. |
186
+ | the fork is one `<video>` layer and `.harness/context.json` is thin or absent | **not decomposed** | Decompose it (below) |
187
+ | the `/discover` row had `templateId: ""` and an `inspirationId` | **an inspiration, not a template yet** | `vidfarm inspiration-decompose <inspirationId>` mints the template, then fork that |
188
+
189
+ **Decomposing, by tier:**
190
+
191
+ ```bash
192
+ # PAID plan — the cloud decompose. One call, ~30-60s, ~$0.10, the licensed method.
193
+ vidfarm decompose <forkId>
194
+
195
+ # FREE tier / local devcli — decompose on your OWN tokens, $0.
196
+ vidfarm decompose <forkId> --local --dir ./work
197
+ # → stages HARNESS.md (the guide), a task file, and smart-decompose.template.json
198
+ # → you watch the source, fill smart-decompose.json, and that is your decomposition
199
+ # (paid accounts can then `--sync` it back so the whole network reuses it free)
200
+ ```
201
+
202
+ **Weak models: prefer a template that is ALREADY decomposed over one you have to decompose
203
+ yourself.** A free-tier `--local` decompose is a second hard reasoning task stacked on top
204
+ of the build, and it is the step most likely to go wrong. Spend the extra minutes in §1
205
+ finding a decomposed match instead. Re-run `vidfarm discover` with a different phrasing of
206
+ the client's problem before you accept an undecomposed template.
207
+
208
+ **Never re-decompose a template that is already decomposed.** It costs money and produces a
209
+ worse answer than the crowdsourced one you already have.
210
+
211
+ ---
212
+
213
+ ## 3. Read the DNA and write the plan
214
+
215
+ ```bash
216
+ vidfarm harness derive <forkId> --out ./work/HARNESS.md
217
+ ```
218
+
219
+ That distils the decomposition into one editable file, keyed the same way the decompose
220
+ JSON is. Read these two strands first; the CLI will print one at a time:
221
+
222
+ ```bash
223
+ vidfarm harness show ./work/HARNESS.md --dna viral # hook / retention / payoff / emotional_punch
224
+ vidfarm harness show ./work/HARNESS.md --dna visual # cut rhythm, typography, b-roll, transitions
225
+ ```
226
+
227
+ ### What each strand decides
228
+
229
+ | Strand | Answers | You may change it? |
230
+ |---|---|---|
231
+ | **Viral DNA** — hook, retention, payoff, `emotional_punch` | *why it worked* | **The SHAPE stays. The SUBJECT changes.** Rebuild each charge for the client. Never flatten the loop into a product statement. |
232
+ | **Visual DNA** — cut rhythm, caption style/placement, b-roll, transitions | *how it looks and moves* | Keep. This is the cheapest thing to keep and the most expensive thing to get right yourself. |
233
+ | **Structural DNA** — the beats, and which are load-bearing | *the skeleton* | Keep the count and the order. Beats marked critical / `must_keep` are untouchable. |
234
+ | **Audio DNA** — voice, bed, comedic timing | *the delivery* | Keep the timing and the energy. **Replace every word and every track.** See the warning below. |
235
+ | **Build DNA** — which paintbrush per beat | *what each beat is made of* | Keep. It already tells you which beats are clips, which are HTML, which need generation. |
236
+
237
+ > ### ⚠️ The single most expensive mistake in this harness
238
+ >
239
+ > **Replace the audio.** A fork carries the source brand's voiceover and the source brand's
240
+ > music. It is easy to rewrite all 57 captions, render clean, pass every check — and ship a
241
+ > video narrating **another company's product** over your client's captions. This has
242
+ > happened. It passed every automated gate at the time, because the gates only looked at
243
+ > captions.
244
+ >
245
+ > So before you render, run this and read every row:
246
+ >
247
+ > ```bash
248
+ > vidfarm qa ./work --harness ./HARNESS.md
249
+ > grep -o 'data-src="[^"]*"' ./work/composition.html | sort -u
250
+ > ```
251
+ >
252
+ > **Every audio `data-src` must point at a file YOU put there.** If any audio asset still
253
+ > resolves to the source template's storage, you are not done. Ticking this off from memory
254
+ > does not count — paste the command's output into your report.
255
+
256
+ ### Then write `STORYBOARD.md`
257
+
258
+ ```bash
259
+ vidfarm storyboard ./work --init --frames "Hook,Problem,Reveal,CTA"
260
+ ```
261
+
262
+ One row per beat from the Structural DNA. Fill, per row:
263
+
264
+ - `scene` — what the beat shows, in the client's world
265
+ - `duration` — **copy the source beat's duration.** Do not re-time. The rhythm is the DNA.
266
+ - `voiceover` — the new line, written for the client
267
+ - `src` — **which rung of §4 this asset is coming from.** Leave it blank and §4 has no
268
+ work-list.
269
+
270
+ A plan is free to redo. A rendered beat is not.
271
+
272
+ ---
273
+
274
+ ## 4. Procure every raw — one pass, before you edit
275
+
276
+ **This is the half of the job that decides whether the video is good, and it is the half
277
+ weak models skip.** You are not authoring pixels; you are *casting*. Casting is a search
278
+ problem, and search is something you are good at.
279
+
280
+ Do not open `composition.html` until every `src` cell in `STORYBOARD.md` names a file on
281
+ disk or a durable vidfarm URL.
282
+
283
+ ### The ladder — visuals
284
+
285
+ Walk it top to bottom. **Stop at the first rung that answers the beat.** Rungs are ordered
286
+ by quality-per-cost, not just cost.
287
+
288
+ | # | Rung | Command | Cost |
289
+ |---|---|---|---|
290
+ | 1 | **The client's shared folder** — footage, logo, product shots they already handed you | `vidfarm shared ls "$ASSETS_LINK"` · `vidfarm shared search "$ASSETS_LINK" "founder talking head"` · `vidfarm shared get "$ASSETS_LINK" --all --out ./work` | $0 |
291
+ | 2 | **The client's own website** — screenshots, UI states, mascots, spot art, palette, their own words | `vidfarm capture <url>` then `vidfarm mask <image> --crop x,y,w,h` to cut one element into a transparent PNG | $0 |
292
+ | 3 | **The client's vidfarm library** — anything they uploaded before | `vidfarm raws search "<meaning>"` · `vidfarm files` | $0 |
293
+ | 4 | **Public raws** — free, cleared, pre-tagged B-roll shelves | `vidfarm public-raws --categories` first, then `--category greenscreen --limit 20` | $0 |
294
+ | 5 | **Free stock** — Pixabay, Openverse, Iconify | `vidfarm media image "<meaning>"` · `vidfarm media video "<meaning>"` | $0 |
295
+ | 6 | **IconScout** — designer icons, stickers, illustrations, 3D props, Lottie | `vidfarm iconscout "<meaning>" --free` | $0 |
296
+ | 7 | **Your own subscription's image generator** (§0b) | `vidfarm agent-image "<subject>" --items "a,b,c"` → generate with your tool → `vidfarm sticker-pack ./sheet.png --items "a,b,c"` | **$0 — allowed in `minimize`** |
297
+ | 8 | **The human's hands** (interactive mode only) | `vidfarm handoff image` / `vidfarm handoff raws` — they run a free web generator, or pick clips themselves | $0, costs minutes |
298
+ | 9 | **Billed generation** | `vidfarm generate image` / `vidfarm generate video` | $0.01–$0.05 image, more for video. **`minimize` refuses without `--yes`** |
299
+
300
+ Rung 2 deserves its own note: **if the client gave you a URL, that site is your first asset
301
+ library.** Harvest the *assets* — product screenshots, brand illustrations, mascots, icons,
302
+ the palette, any animated WebP/GIF, and best of all a screen recording in the JS bundle
303
+ (that is A-roll). Never harvest the landing-page *furniture*: no CTA capsules, no feature
304
+ grids, no pricing cards. A video is not a web page.
305
+
306
+ ### The ladder — voiceover
307
+
308
+ | # | Rung | Command | Cost |
309
+ |---|---|---|---|
310
+ | 1 | **The client's own recording**, if the shared folder has one | `vidfarm shared get …` | $0 |
311
+ | 2 | **Your subscription's TTS** (Antigravity / Gemini CLI / Codex — §0b) | generate the WAV/MP3 with your own tool, then `vidfarm put-file ./vo.mp3` | **$0 — allowed in `minimize`** |
312
+ | 3 | **Local Kokoro** — free, keyless, on-device | `vidfarm tts "<line>" --dir ./work` | $0, but **slow on weak hardware** |
313
+ | 4 | **ElevenLabs** — platform key or the client's own key | `vidfarm tts "<line>" --cloud` | billed |
314
+
315
+ **On weak hardware, rung 2 beats rung 3.** Local Kokoro on a 4 GB laptop does not fail, it
316
+ just takes twenty minutes and loses the deadline. Both are $0; pick the fast one.
317
+
318
+ Sample voices before you commit — free on every tier: `vidfarm voices --sample`.
319
+
320
+ ### The ladder — music
321
+
322
+ 1. **The real trending song.** The render is a review artifact; the human re-attaches the
323
+ same track from the platform's in-app music library at post time, where it is licensed.
324
+ Pull it with `vidfarm download-audio <post-url>`, keep it on its own `<audio>` layer at
325
+ its own `data-volume`, and **name the track in your report.**
326
+ 2. **Free stock BGM** — `vidfarm media bgm "<vibe>"` (Openverse CC music, keyless).
327
+ 3. **Generated** — `vidfarm music "<same vibe, same BPM>"`. Billed; no free local engine.
328
+
329
+ The exception to rule 1 is a paid ad placement, which the platform music library does not
330
+ cover. Say so once and go to rung 3.
331
+
332
+ ### Before you leave §4
333
+
334
+ Every `src` cell in `STORYBOARD.md` is filled. Count them. If the count of filled cells is
335
+ less than the count of beats, **you are not finished with §4** — going to §5 now is how a
336
+ $0 video turns into a $3 one, or into a beat you rewrite twice.
337
+
338
+ ---
339
+
340
+ ## 5. Adapt the composition
341
+
342
+ Now open it. Parse, edit, re-serialize the DOM — **never build composition HTML by string
343
+ concatenation.**
344
+
345
+ ```bash
346
+ vidfarm serve --fork <forkId> # free local editor + render loop at localhost:3000
347
+ ```
348
+
349
+ ### What you are doing, precisely
350
+
351
+ You are running a **transplant**, beat by beat, down `STORYBOARD.md`. For each beat:
352
+
353
+ 1. Find the source layer (`vidfarm pull` printed the scene/layer keys).
354
+ 2. Swap its `data-src` for your procured asset.
355
+ 3. Rewrite its text for the client.
356
+ 4. **Leave `start` and `duration` alone** unless the Structural DNA says that beat is free.
357
+
358
+ ### Keep vs replace — the line
359
+
360
+ | Keep — this is the DNA | Replace — this is the dressing |
361
+ |---|---|
362
+ | beat count and beat order | every clip, every image, every sticker |
363
+ | each beat's `start` and `duration` | every caption word |
364
+ | the cut rhythm and the transitions | the palette, if the client has a brand |
365
+ | the caption identity — font, size, placement, background style | the voiceover, every line of it |
366
+ | the hook's *shape* and the payoff's *position* | the music bed |
367
+ | any beat marked critical / `must_keep` | the offer, the handle, the CTA |
368
+
369
+ ### "It is okay to heavily alter it"
370
+
371
+ Yes. Cut a beat that the client's story does not have. Merge two. Replace a live-action
372
+ beat with a sticker beat because that is what you could procure. **What you may not do is
373
+ alter the *structure* casually** — if you drop a beat, drop it deliberately, and say in
374
+ your report which one and why.
375
+
376
+ ### Overfitting is the goal, not the risk
377
+
378
+ You will produce something that looks a lot like one specific existing template. **That is
379
+ the correct outcome.** The catalog holds thousands of decomposed templates and the client
380
+ sees one video. The variety lives in the *catalog*, not in your improvisation — so import
381
+ variety by picking a different template next time, never by inventing on top of this one.
382
+
383
+ ### The standards still bind
384
+
385
+ Everything in `https://vidfarm.cc/skill.md` §6 applies and overrides your defaults. The
386
+ four that weak models break most often:
387
+
388
+ - **The first frame is the thumbnail.** A real visual and the hook words at `start:0`. No
389
+ fade-up, no title card, no logo. Check it: `vidfarm stills ./work --at 0`.
390
+ - **No HTML slop.** Could you have made this element inside TikTok's own editor? If you
391
+ reached past that — a padded capsule, a border, a gradient fill, a blur panel, a card, a
392
+ CTA "button", a feature grid — cut it. **Nothing in a video is clickable.**
393
+ - **Captions: five fonts only** — TikTok Sans, Montserrat (700–900), Abel, Source Code Pro,
394
+ Yesteryear. Anything else falls back to a web sans at render and the video looks generic.
395
+ Specimens: <https://vidfarm.cc/fonts>.
396
+ - **Cut ruthlessly.** First assembly is 30–50% too long.
397
+
398
+ ---
399
+
400
+ ## 6. Render, gate, look
401
+
402
+ ```bash
403
+ vidfarm qa ./work --harness ./HARNESS.md # free, local, machine-settled checks
404
+ vidfarm render <forkId> --dir ./work # renders on THIS machine — $0.00
405
+ vidfarm stills ./work --sheet # contact sheet → read it as ONE image
406
+ ```
407
+
408
+ **Run the gate as a command. Do not tick it off from memory.** A check you transcribe into
409
+ your report instead of running is not a check, and this is the failure mode weak models hit
410
+ hardest: reporting a pass on the half the CLI never judged.
411
+
412
+ Three things the CLI cannot judge, which you must answer honestly:
413
+
414
+ - **Audio provenance.** Paste the `grep` output from §3. Every audio `data-src` is yours.
415
+ - **The contact sheet.** One type scale, one palette, deliberate pacing, clean joins. If
416
+ two beats look like they came from different videos, they did — fix it.
417
+ - **The first three seconds.** Play only those and stop. A stranger should be able to say
418
+ what kind of thing this is and roughly who it is for. "Something about audio" is a fail.
419
+
420
+ If `qa` reports a defect, fix it and re-run. One fix round is normal.
421
+
422
+ ---
423
+
424
+ ## 7. Where this hands off
425
+
426
+ | You are | Go to |
427
+ |---|---|
428
+ | making a video for your own client / your own brand | `https://vidfarm.cc/skill.md` §6 for the standards, then ship |
429
+ | an **Agentic Clipper** earning on the marketplace | `https://vidfarm.cc/agentic-clipper.md` — the review gate, the watermarked proof, and the clean master in `private_note` |
430
+ | a **buyer** commissioning videos | `https://vidfarm.cc/marketplace-buyer.md` |
431
+
432
+ **If the task named a `format_harness`, that file still wins over your own judgement.** This
433
+ harness tells you *how to work*; the format harness tells you *what to build*. Read the
434
+ format harness as your **grading rubric** — its `checks:` block, its forbidden text list,
435
+ its safe-zone rules — and get there by the road in §1–§6 rather than by authoring it from
436
+ the prose.
437
+
438
+ ---
439
+
440
+ ## 8. The summary line — print this LAST, filled in
441
+
442
+ Copy it, fill every field, and put it at the end of your report. A field you cannot fill is
443
+ a step you did not do.
444
+
445
+ ```
446
+ FLASH-HARNESS RESULT
447
+ model_tier: weak | strong (§0a)
448
+ subscription_media: image=Y/N tts=Y/N stt=Y/N (§0b)
449
+ cost_mode: minimize | hybrid | rich-ai | pure-videogen
450
+ source_template: template_...
451
+ decomposed_by: already | cloud | local | inspiration-mint
452
+ format_harness: <name or "none — freestyled">
453
+ beats: <kept>/<source total> dropped: <which, and why>
454
+ assets_by_rung: shared=<n> website=<n> raws=<n> stock=<n> iconscout=<n> subscription=<n> billed=<n>
455
+ audio_replaced: <n>/<n> audio data-src now point at my own files
456
+ voiceover_source: client | subscription-tts | kokoro-local | elevenlabs
457
+ music_source: trending "<track name>" | stock | generated | none
458
+ qa: <pass count>/<total> from `vidfarm qa`
459
+ render: local $0.00 | cloud $<amount>
460
+ billed_total: $<amount>
461
+ i_looked_at: contact sheet Y/N first-3-seconds Y/N
462
+ ```
463
+
464
+ ---
465
+
466
+ ## Why these rules
467
+
468
+ Read this section **after** you have followed the contract, not while.
469
+
470
+ **Why start from a decomposed template (rules 1–5).** Four rounds of work went into making
471
+ small models author vidfarm formats from written descriptions. All four were rejected. The
472
+ finding was not that the models are bad at video — it is that a 300-line prose harness asks
473
+ for a kind of held-in-mind synthesis that is exactly what the small tiers gave up in
474
+ exchange for speed. A decomposition is that synthesis, already done, by a frontier model,
475
+ and paid for by someone else. Taking it is not cheating; it is the product.
476
+
477
+ **Why the decomposition is worth money.** Decomposing one video into its scene-by-scene
478
+ viral DNA costs $1+ in AI spend if you do it yourself. Vidfarm's library is crowdsourced and
479
+ already decomposed, so you pull that breakdown for $0. That is the single largest saving
480
+ available to you, and it compounds across every video you make.
481
+
482
+ **Why "procure before you edit" is a rule and not advice (rules 6–8).** Building to a shot
483
+ you assumed existed is the most expensive mistake available: you either pay to generate it
484
+ or you rewrite a beat you already built. Deciding to source mid-build is how a $0 video
485
+ turns into a $3 one.
486
+
487
+ **Why the ladder is ordered the way it is (rule 8).** It is ordered by *quality per unit
488
+ cost*, not by cost alone. A designer's finished transparent vector from IconScout beats a
489
+ generated icon on both axes. A real photo beats a generated photo. Free does not mean first
490
+ — *best free* means first.
491
+
492
+ **Why overfitting is fine (rules 9–10).** A weak model's improvisation has a wide variance
493
+ and a low mean. A decomposed template has a narrow variance and a high mean. Across a batch
494
+ of thirty videos the client sees, the template path wins on every percentile that matters —
495
+ and the diversity the client experiences comes from you picking thirty *different*
496
+ templates, which is a search task, not a creative one.
497
+
498
+ **Why the gate must be run, not remembered (rule 11).** Every previous attempt at this
499
+ produced a report whose checks were green on exactly the axis that attempt was built to
500
+ improve, and silent on the axis that decided the verdict. The audio warning in §3 is the
501
+ canonical example: five videos, 57/57 captions correctly rewritten, every gate green, all
502
+ five narrating another company's product. **A green gate has been weak evidence about a
503
+ video every single time.** Looking at the render is the review that counts.
504
+
505
+ **Why the summary line is last (rule 12).** A summary printed first gets written from
506
+ intention. A summary printed last gets written from what happened.
507
+
508
+ ---
509
+
510
+ ## The commands, in one block
511
+
512
+ ```bash
513
+ # 0 — who am I
514
+ vidfarm agent-image --check
515
+ vidfarm cost-mode # minimize | hybrid | rich-ai | pure-videogen
516
+ vidfarm mode # interactive | autonomous
517
+
518
+ # 1 — match
519
+ vidfarm discover --query "<client's problem, their words>" --limit 20 --json
520
+
521
+ # 2 — fork and make sure it is decomposed
522
+ vidfarm fork <template_id>
523
+ vidfarm pull <forkId> --dir ./work
524
+ vidfarm decompose <forkId> # paid, cloud, ~$0.10
525
+ vidfarm decompose <forkId> --local --dir ./work # free tier, your own tokens, $0
526
+
527
+ # 3 — plan
528
+ vidfarm harness derive <forkId> --out ./work/HARNESS.md
529
+ vidfarm harness show ./work/HARNESS.md --dna viral
530
+ vidfarm harness show ./work/HARNESS.md --dna visual
531
+ vidfarm storyboard ./work --init --frames "Hook,Problem,Reveal,CTA"
532
+
533
+ # 4 — procure (one pass, every beat)
534
+ vidfarm shared ls "$ASSETS_LINK"
535
+ vidfarm capture <client-url>
536
+ vidfarm public-raws --categories
537
+ vidfarm media image "<meaning>"
538
+ vidfarm iconscout "<meaning>" --free
539
+ vidfarm agent-image "<subject>" --items "a,b,c" # your own subscription, $0
540
+ vidfarm tts "<line>" --dir ./work # or your subscription's TTS
541
+ vidfarm download-audio <post-url> # the real trending song
542
+
543
+ # 5-6 — adapt, gate, look
544
+ vidfarm serve --fork <forkId>
545
+ vidfarm qa ./work --harness ./HARNESS.md
546
+ vidfarm render <forkId> --dir ./work
547
+ vidfarm stills ./work --sheet
548
+ vidfarm publish <forkId>
549
+ ```
@@ -1,3 +1,12 @@
1
+ ---
2
+ name: google-news-to-video
3
+ video_type: Timely newsjack — a recent real event turned into a short video. Two searches, never one: news-search finds the STORY, video/image-search finds the VISUALS
4
+ # No `checks:` block on purpose. This harness governs the SOURCING method, not one
5
+ # fixed cut, so the shape of the finished video is set by whichever format harness
6
+ # you build it in (short-form, wall-text-pov-ugc, …). Stack them: `--harness
7
+ # google-news-to-video --harness short-form`.
8
+ ---
9
+
1
10
  # Google News to Video — reusable prompt & method
2
11
 
3
12
  Turns **a recent real event → a timely short video**, using two searches instead of one.
@@ -1,3 +1,11 @@
1
+ ---
2
+ name: unique-product-explainers
3
+ video_type: Bulk product explainers — N customer URLs into N product-introduction videos that do not look like each other. Differentiation as an input, frame-level review, measured verification
4
+ # No `checks:` block on purpose. This harness governs a BATCH and its anti-convergence
5
+ # rules; the per-video shape comes from the format harness each variant is built in.
6
+ # Stack them: `--harness unique-product-explainers --harness product-explainer`.
7
+ ---
8
+
1
9
  # Unique Product Explainer Videos — reusable prompt & method
2
10
 
3
11
  Turns **N customer URLs → N product-introduction videos that do not look like each other**,