@officexapp/vidfarm-devcli 0.21.58 → 0.21.60
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/.agents/skills/vidfarm/SKILL.md +3 -3
- package/.agents/skills/vidfarm/recipes/retheme-template.md +6 -5
- package/.agents/skills/vidfarm/references/content-ideas.md +97 -14
- package/.agents/skills/vidfarm/references/core-workflows.md +4 -0
- package/.agents/skills/vidfarm/references/editor-workflows.md +25 -0
- package/SKILL.director.md +135 -22
- package/SKILL.md +9 -2
- package/clipper.md +7 -3
- package/dist/src/cli.js +201 -16
- package/dist/src/devcli/clipper-panel.js +1828 -0
- package/dist/src/devcli/clipper-run.js +643 -126
- package/dist/src/devcli/marketplace-gigs.js +307 -4
- package/dist/src/devcli/proof-verify.js +465 -0
- package/dist/src/devcli/skill-docs.js +14 -0
- package/experimental/flash-harness.md +142 -18
- package/experimental/meme-recaption.md +1044 -79
- package/experimental/sticker-slideshow-tips.md +511 -86
- package/marketplace.md +427 -12
- package/package.json +6 -1
- package/update.md +21 -1
|
@@ -46,9 +46,13 @@ read them after, not during. A reason next to a rule is something to negotiate w
|
|
|
46
46
|
8. **Walk the asset ladder in order and stop at the first rung that answers:** client's
|
|
47
47
|
shared folder → client's website → public raws → free stock (Pixabay/Openverse) →
|
|
48
48
|
IconScout → your own subscription's generator → billed generation.
|
|
49
|
-
9. **
|
|
50
|
-
the
|
|
51
|
-
|
|
49
|
+
9. **Audit every element, one at a time, before you plan — then keep the load-bearing DNA
|
|
50
|
+
and replace the rest without mercy.** Load-bearing = the beat count, the cut rhythm,
|
|
51
|
+
the hook shape, the payoff position, the caption identity. Everything that carries
|
|
52
|
+
*meaning* — every voice line, every caption word, every clip, image, sticker,
|
|
53
|
+
background, on-screen title, logo and handle — belongs to the source brand until you
|
|
54
|
+
decide otherwise, element by element, in `./work/ADAPTATION.md` (§3½). **KEEP is the
|
|
55
|
+
verdict that needs a reason. REPLACE is the default.**
|
|
52
56
|
10. **Overfitting to this one template is CORRECT.** Do not add originality on top. The
|
|
53
57
|
template is the originality; your job is the transplant.
|
|
54
58
|
11. **Run the gate as a command, not from memory:** `vidfarm qa ./work --harness ./HARNESS.md`,
|
|
@@ -271,6 +275,97 @@ A plan is free to redo. A rendered beat is not.
|
|
|
271
275
|
|
|
272
276
|
---
|
|
273
277
|
|
|
278
|
+
## 3½. The element audit — every element earns its place
|
|
279
|
+
|
|
280
|
+
**A fork is not a half-finished video that is already partly right. It is somebody else's
|
|
281
|
+
FINISHED video.** Every element in it was chosen for their product, their customer, their
|
|
282
|
+
joke, their face, their palette. Anything you do not deliberately re-decide stays theirs —
|
|
283
|
+
and the client watches the result.
|
|
284
|
+
|
|
285
|
+
So walk the composition element by element and give every one a verdict. There are three:
|
|
286
|
+
|
|
287
|
+
| Verdict | Means |
|
|
288
|
+
|---|---|
|
|
289
|
+
| **KEEP** | it carries the DNA, or it is generic enough to be just as true in the client's world |
|
|
290
|
+
| **REPLACE** | it says something about the source's world. Swap it for the client's equivalent |
|
|
291
|
+
| **CUT** | the client's story does not have this beat or this ornament. Delete it, ripple the hole closed |
|
|
292
|
+
|
|
293
|
+
> **KEEP is the verdict that needs a reason. REPLACE is the default.**
|
|
294
|
+
>
|
|
295
|
+
> This is backwards from how it feels, and that is the point. The cheap failure is not a bad
|
|
296
|
+
> replacement — it is an element nobody ever looked at. **A cut whose captions changed and
|
|
297
|
+
> nothing else is the most commonly rejected video there is**, and on the marketplace it is
|
|
298
|
+
> the most commonly rejected proof. The client is paying for a video about *their* thing.
|
|
299
|
+
> Relevant customization is the deliverable.
|
|
300
|
+
|
|
301
|
+
### List the elements — from the file, not from memory
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
vidfarm pull <forkId> --dir ./work --json \
|
|
305
|
+
| jq -r '.layers[] | [.key, (.kind // "?"), (.start|tostring), (.duration|tostring), (.label // "—"), (.src // "—")] | @tsv'
|
|
306
|
+
|
|
307
|
+
grep -o 'data-src="[^"]*"' ./work/composition.html | sort -u # every asset file the video loads
|
|
308
|
+
grep -o 'data-layer-kind="[^"]*"' ./work/composition.html | sort | uniq -c
|
|
309
|
+
vidfarm captions list ./work # every caption cue, with its words
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
`vidfarm pull` without `--json` prints the same layer keys in a readable list. Read
|
|
313
|
+
`./work/HARNESS.md` alongside it: beats marked critical / `must_keep` are the ones you may
|
|
314
|
+
not CUT.
|
|
315
|
+
|
|
316
|
+
**A `text` layer has no `src`, so the inventory shows it as `—`. That is not "nothing to
|
|
317
|
+
decide" — it is the words on screen.** `vidfarm captions list ./work` reads the caption
|
|
318
|
+
cues; the titles, kickers, labels, price tags and end cards you read out of the DOM. They
|
|
319
|
+
get a row each, like everything else.
|
|
320
|
+
|
|
321
|
+
### Write `./work/ADAPTATION.md` — one row per element
|
|
322
|
+
|
|
323
|
+
| layer key | what it is | verdict | why | replaced with |
|
|
324
|
+
|---|---|---|---|---|
|
|
325
|
+
| `scene-1-vo` | voiceover, "Dishcovery finds you recipes" | REPLACE | names another product | `./work/vo-01.mp3` |
|
|
326
|
+
| `scene-1-bg` | full-canvas kitchen b-roll | KEEP | generic kitchen, still true for a food client | — |
|
|
327
|
+
| `scene-2-logo` | source brand wordmark, 0.4s | CUT | not the client's brand, beat survives without it | — |
|
|
328
|
+
| `cap-*` (23 cues) | caption identity: Montserrat 900, lower third, outline | KEEP | this is the visual DNA — the cheapest thing to keep | — |
|
|
329
|
+
|
|
330
|
+
### The default verdict per element class
|
|
331
|
+
|
|
332
|
+
Start here, then override with a reason written into the row.
|
|
333
|
+
|
|
334
|
+
| Element class | Default | Why |
|
|
335
|
+
|---|---|---|
|
|
336
|
+
| **Voiceover / TTS — every line** | REPLACE | a fork carries the source brand's narration. See the warning in §3 |
|
|
337
|
+
| **Music bed / SFX** | REPLACE | the track is part of the source's identity, and the licence is not yours |
|
|
338
|
+
| **Captions — the words** | REPLACE, every cue | they are the script |
|
|
339
|
+
| **Captions — the identity** (font, size, placement, background style) | KEEP | this is visual DNA, and the most expensive thing to get right yourself |
|
|
340
|
+
| **On-screen text that is NOT a caption** — titles, kickers, labels, price tags, list items, stat callouts, end cards | REPLACE or CUT | these are the source's claims. A stale number or a stale price is worse than none |
|
|
341
|
+
| **A-roll / talking-head / actor clips** | REPLACE | a face is a brand. The wrong person recommending the client's product is the loudest possible defect |
|
|
342
|
+
| **B-roll clips** | REPLACE unless generic **and** still true in the client's world | "a keyboard" survives a subject change; "a barista pulling a shot" does not survive a move to fintech |
|
|
343
|
+
| **Product images, screenshots, UI frames, mockups** | REPLACE, always | this is literally the other company's product on screen |
|
|
344
|
+
| **Stickers, icons, cutouts, emoji** | REPLACE when they name a thing; KEEP when purely decorative and on-palette | a burger sticker in a payroll video is a rejection |
|
|
345
|
+
| **Backgrounds / plates / colour fields** | KEEP the treatment, REPLACE the picture | the parchment stage, the vignette, the grade are DNA. The photo behind them is content |
|
|
346
|
+
| **Logos, wordmarks, @handles, URLs, watermarks, end-card CTAs** | REPLACE or CUT — **never KEEP** | shipping a competitor's handle is the fastest way to lose a buyer and a trust score |
|
|
347
|
+
| **Palette + typography tokens** | KEEP, unless the client has a brand | then match the client's, staying inside the five allowed fonts |
|
|
348
|
+
| **`start`, `duration`, `track`, transitions** | KEEP | the rhythm is the DNA. Retiming is how a weak model flattens a format |
|
|
349
|
+
| **Beat count and beat order** | KEEP | drop a beat only deliberately, and say which one and why in your report |
|
|
350
|
+
|
|
351
|
+
### Three tests, when a row is not obvious
|
|
352
|
+
|
|
353
|
+
1. **Provenance** — *did I put this file here?* If the `data-src` still resolves to the
|
|
354
|
+
source template's storage, nothing was decided about it; it was inherited.
|
|
355
|
+
2. **Relevance** — *does this show the CLIENT's world?* Their product, their customer, their
|
|
356
|
+
category, their words. If it shows anyone else's, REPLACE.
|
|
357
|
+
3. **Load-bearing** — *cut it and read the beat again.* If the beat still works, CUT wins.
|
|
358
|
+
Ornament you keep out of politeness is what makes a video feel like a template.
|
|
359
|
+
|
|
360
|
+
### Before you leave §3½
|
|
361
|
+
|
|
362
|
+
Every layer key from the inventory appears in `ADAPTATION.md` with a verdict. **Count the
|
|
363
|
+
rows against the layer count** — an element with no row is an element you never decided.
|
|
364
|
+
Then carry every REPLACE row into `STORYBOARD.md`'s `src` column: **the audit IS your
|
|
365
|
+
shopping list for §4.**
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
274
369
|
## 4. Procure every raw — one pass, before you edit
|
|
275
370
|
|
|
276
371
|
**This is the half of the job that decides whether the video is good, and it is the half
|
|
@@ -348,23 +443,32 @@ vidfarm serve --fork <forkId> # free local editor + render loop at localhost:3
|
|
|
348
443
|
|
|
349
444
|
### What you are doing, precisely
|
|
350
445
|
|
|
351
|
-
You are running a **transplant**,
|
|
446
|
+
You are running a **transplant**, and `ADAPTATION.md` from §3½ is the work order. Take the
|
|
447
|
+
rows in timeline order. For each one:
|
|
352
448
|
|
|
353
|
-
1. Find the
|
|
354
|
-
2.
|
|
355
|
-
|
|
356
|
-
|
|
449
|
+
1. Find the layer by its key (`vidfarm pull` printed them).
|
|
450
|
+
2. **REPLACE** — swap its `data-src` for your procured asset, or rewrite its text for the
|
|
451
|
+
client. Then write the new asset into the row's *replaced with* cell.
|
|
452
|
+
3. **CUT** — delete the layer, then close the hole (`vidfarm ripple`) so the rhythm survives.
|
|
453
|
+
4. **KEEP** — do nothing, and leave the reason in the row. It is the only verdict a reviewer
|
|
454
|
+
will question.
|
|
455
|
+
5. **Leave `start` and `duration` alone** unless the Structural DNA says that beat is free.
|
|
357
456
|
|
|
358
|
-
###
|
|
457
|
+
### Work the ledger, not your memory
|
|
359
458
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
459
|
+
**A row you have not touched is not a KEEP — it is an element you forgot.** The two are
|
|
460
|
+
indistinguishable in the finished video and completely different in the buyer's reaction, so
|
|
461
|
+
close the loop in the file: every REPLACE row ends with the asset you actually put there.
|
|
462
|
+
|
|
463
|
+
When the pass is done, prove there is no residue from the source brand:
|
|
464
|
+
|
|
465
|
+
```bash
|
|
466
|
+
grep -o 'data-src="[^"]*"' ./work/composition.html | sort -u # any src still on the source's storage?
|
|
467
|
+
grep -oiE '@[a-z0-9_.]+|https?://[^"< ]+' ./work/composition.html | sort -u # stray handles and URLs
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
Read both lists row by row. Anything that is not the client's, and not a generic asset you
|
|
471
|
+
deliberately kept, is unfinished work — not a detail to mention in the report.
|
|
368
472
|
|
|
369
473
|
### "It is okay to heavily alter it"
|
|
370
474
|
|
|
@@ -409,8 +513,11 @@ vidfarm stills ./work --sheet # contact sheet → read it as ONE
|
|
|
409
513
|
your report instead of running is not a check, and this is the failure mode weak models hit
|
|
410
514
|
hardest: reporting a pass on the half the CLI never judged.
|
|
411
515
|
|
|
412
|
-
|
|
516
|
+
Four things the CLI cannot judge, which you must answer honestly:
|
|
413
517
|
|
|
518
|
+
- **The audit is closed.** Every row in `ADAPTATION.md` has a verdict, every REPLACE row
|
|
519
|
+
names the asset that replaced it, and every KEEP row carries a reason. Report the three
|
|
520
|
+
counts — kept / replaced / cut — not the word "done".
|
|
414
521
|
- **Audio provenance.** Paste the `grep` output from §3. Every audio `data-src` is yours.
|
|
415
522
|
- **The contact sheet.** One type scale, one palette, deliberate pacing, clean joins. If
|
|
416
523
|
two beats look like they came from different videos, they did — fix it.
|
|
@@ -450,6 +557,9 @@ FLASH-HARNESS RESULT
|
|
|
450
557
|
source_template: template_...
|
|
451
558
|
decomposed_by: already | cloud | local | inspiration-mint
|
|
452
559
|
format_harness: <name or "none — freestyled">
|
|
560
|
+
elements_audited: <n>/<n layers in the fork> (ADAPTATION.md, §3½)
|
|
561
|
+
element_verdicts: kept=<n> replaced=<n> cut=<n>
|
|
562
|
+
kept_and_why: <one line per KEEP that a reviewer could question>
|
|
453
563
|
beats: <kept>/<source total> dropped: <which, and why>
|
|
454
564
|
assets_by_rung: shared=<n> website=<n> raws=<n> stock=<n> iconscout=<n> subscription=<n> billed=<n>
|
|
455
565
|
audio_replaced: <n>/<n> audio data-src now point at my own files
|
|
@@ -489,6 +599,16 @@ cost*, not by cost alone. A designer's finished transparent vector from IconScou
|
|
|
489
599
|
generated icon on both axes. A real photo beats a generated photo. Free does not mean first
|
|
490
600
|
— *best free* means first.
|
|
491
601
|
|
|
602
|
+
**Why the audit is element-by-element, and why KEEP needs the reason (rule 9).** A fork
|
|
603
|
+
starts as a video that is 100% about another company, and it degrades gracefully: swap the
|
|
604
|
+
captions and it still plays, still renders, still passes every automated check — while a
|
|
605
|
+
competitor's screenshot sits in beat 4 and a competitor's handle sits on the end card. Nothing
|
|
606
|
+
in the pipeline flags an element you never looked at, because "untouched" and "deliberately
|
|
607
|
+
kept" produce byte-identical HTML. The written ledger is the only thing that separates them.
|
|
608
|
+
Making REPLACE the default costs a few minutes on the rows that genuinely should stay, and it
|
|
609
|
+
removes the failure that gets proofs rejected: a video the buyer can tell was made for
|
|
610
|
+
somebody else.
|
|
611
|
+
|
|
492
612
|
**Why overfitting is fine (rules 9–10).** A weak model's improvisation has a wide variance
|
|
493
613
|
and a low mean. A decomposed template has a narrow variance and a high mean. Across a batch
|
|
494
614
|
of thirty videos the client sees, the template path wins on every percentile that matters —
|
|
@@ -530,6 +650,10 @@ vidfarm harness show ./work/HARNESS.md --dna viral
|
|
|
530
650
|
vidfarm harness show ./work/HARNESS.md --dna visual
|
|
531
651
|
vidfarm storyboard ./work --init --frames "Hook,Problem,Reveal,CTA"
|
|
532
652
|
|
|
653
|
+
# 3½ — audit every element, then write ./work/ADAPTATION.md (KEEP needs the reason)
|
|
654
|
+
vidfarm pull <forkId> --dir ./work --json | jq -r '.layers[] | [.key,(.kind//"?"),(.src//"—")] | @tsv'
|
|
655
|
+
grep -o 'data-src="[^"]*"' ./work/composition.html | sort -u
|
|
656
|
+
|
|
533
657
|
# 4 — procure (one pass, every beat)
|
|
534
658
|
vidfarm shared ls "$ASSETS_LINK"
|
|
535
659
|
vidfarm capture <client-url>
|