@officexapp/vidfarm-devcli 0.21.34 → 0.21.35
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/editor-capabilities/SKILL.md +13 -2
- package/.agents/skills/vidfarm/SKILL.md +59 -30
- package/.agents/skills/vidfarm/harnesses/README.md +112 -0
- package/.agents/skills/vidfarm/{regimes/explainer.QA_REGIME.md → harnesses/explainer.HARNESS.md} +3 -2
- package/.agents/skills/vidfarm/{regimes/hooks.QA_REGIME.md → harnesses/hooks.HARNESS.md} +3 -3
- package/.agents/skills/vidfarm/{regimes/product-demo.QA_REGIME.md → harnesses/product-demo.HARNESS.md} +1 -1
- package/.agents/skills/vidfarm/{regimes/short-form.QA_REGIME.md → harnesses/short-form.HARNESS.md} +36 -7
- package/.agents/skills/vidfarm/{regimes/ugc-testimonial.QA_REGIME.md → harnesses/ugc-testimonial.HARNESS.md} +3 -3
- package/.agents/skills/vidfarm/recipes/{bulk-scripting-with-a-regime.md → bulk-scripting-with-a-harness.md} +20 -12
- package/.agents/skills/vidfarm/recipes/cutout-graphics-for-explainers.md +1 -1
- package/.agents/skills/vidfarm/recipes/local-edit-render-approve.md +1 -1
- package/.agents/skills/vidfarm/references/automation-and-local-dev.md +73 -22
- package/.agents/skills/vidfarm/references/editor-workflows.md +18 -5
- package/.agents/skills/vidfarm/references/hooks-and-virality.md +62 -5
- package/.agents/skills/vidfarm/references/reviewing-renders.md +2 -1
- package/.agents/skills/vidfarm-media/SKILL.md +2 -2
- package/.agents/skills/vidfarm-media/references/tts.md +26 -4
- package/SKILL.director.md +236 -77
- package/SKILL.md +32 -14
- package/dist/src/cli.js +772 -89
- package/dist/src/devcli/{qa-regime.js → harness.js} +132 -55
- package/dist/src/devcli/qa-check.js +209 -4
- package/dist/src/devcli/skill-docs.js +136 -0
- package/package.json +4 -3
- package/.agents/skills/vidfarm/regimes/README.md +0 -79
package/SKILL.md
CHANGED
|
@@ -47,9 +47,11 @@ The last two are production *methods*, not just budgets. **rich-ai**: generate t
|
|
|
47
47
|
|
|
48
48
|
Cost mode says how much MONEY to spend. It doesn't say how much of the user's own HANDS you may use — and that moves quality more. **Ask both, up front**, and persist the answer with `vidfarm mode interactive|autonomous` (the twin of `vidfarm cost-mode`). The axes are independent: every cost mode runs either way.
|
|
49
49
|
|
|
50
|
-
- **interactive** — at checkpoints you hand the user a copy-paste brief and they hand files back: an **image prompt** they run in a *free* frontier web generator (meta.ai / ChatGPT / Gemini / a HF Space), or a **keyword list** they use to search TikTok/YouTube and download clips with a free downloader. Costs them a few minutes; the free web models usually beat what an API budget buys, and a human eye picks better footage than a keyword scan.
|
|
50
|
+
- **interactive** — at checkpoints you hand the user a copy-paste brief and they hand files back: an **image prompt** they run in a *free* frontier web generator (meta.ai / ChatGPT / Gemini / a HF Space), or a **keyword list** they use to search TikTok/YouTube and download clips with a free downloader. Costs them a few minutes; the free web models usually beat what an API budget buys, and a human eye picks better footage than a keyword scan. The third checkpoint is the cheapest: **let them pick the voice** — `vidfarm voices --sample` (premium) or `vidfarm voices --free --sample` ($0 local) writes listenable clips to `./voice-samples`, **free on both tiers**, so offer it in `minimize` exactly as readily as in `hybrid`.
|
|
51
51
|
- **autonomous** — you finish end-to-end with zero steps from them: source clips yourself (browser control → `vidfarm clipper`/`raws scan` → public raws), generate within budget, or do without.
|
|
52
52
|
|
|
53
|
+
**Premium voices don't need an ElevenLabs account.** Vidfarm carries its own ElevenLabs connection, so the full premium catalog is available to any user for **vidfarm wallet credits** (pennies per narration) — no signup, no API key, no subscription. Put that on the table when you offer voices instead of letting the user assume premium narration is a door they have to unlock elsewhere; `--own-key` is only for people who already have a key and want to bill their own account.
|
|
54
|
+
|
|
53
55
|
`minimize + interactive` is the sweet spot: **$0 videos that still get custom art.** `minimize + autonomous` means no custom art at all — say so before defaulting to it. Mint the briefs with `vidfarm handoff image --theme "<what>" --items "a,b,c"` (defaults to a sticker pack) and `vidfarm handoff raws --keywords "<kw>,<kw>"` (only after browser control and cloud scan are ruled out).
|
|
54
56
|
|
|
55
57
|
**Storyboard before you build.** The plan lives with the project as `STORYBOARD.md` (ordered frames: `duration`, `status`, `src`, `scene`, `voiceover`) plus an optional `SCRIPT.md`, and the Vidfarm editor renders it — a Storyboard view with a contact sheet, per-frame comments, and `outline → built → animated` progress. Draft it with `vidfarm storyboard ./work --init --frames "Hook,Problem,Reveal,CTA"`, read it with `vidfarm storyboard ./work`, and get approval there: a plan is free to redo, a rendered scene is not.
|
|
@@ -76,18 +78,31 @@ vidfarm skills add vidfarm # install the full director skill locally
|
|
|
76
78
|
|
|
77
79
|
## Fetch the real knowledge (do this next)
|
|
78
80
|
|
|
79
|
-
This page does not contain the workflows.
|
|
81
|
+
This page does not contain the workflows. **If the devcli is installed, you already have all of it on disk** — a full copy of the pack ships in the npm tarball, pinned to that CLI version:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
vidfarm skill ls # every file, with sizes
|
|
85
|
+
vidfarm skill search "greenscreen" # grep all of it — find the paragraph, then open that file
|
|
86
|
+
vidfarm skill show primitives # shorthand or an exact path
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
No account, no network. It is documentation, not entitlement — the free-local half (clips, hyperframes, `serve` render, `qa`, harnesses, `dedupe`, local TTS/STT) runs offline; AI generation, hosted render, `recycle`, `download-video` and marketplace still need `vidfarm login` and a cloud call.
|
|
90
|
+
|
|
91
|
+
Otherwise, pull it over the network and load only the reference you need:
|
|
80
92
|
|
|
81
93
|
- **Full director skill (rollup):** `https://vidfarm.cc/skill/vidfarm`
|
|
82
|
-
- **Individual
|
|
83
|
-
`
|
|
84
|
-
- `
|
|
85
|
-
- `
|
|
86
|
-
- `
|
|
87
|
-
- `
|
|
88
|
-
- `
|
|
89
|
-
- `
|
|
90
|
-
- `
|
|
94
|
+
- **Individual files** (load on demand, not all at once) — `https://vidfarm.cc/skill-pack/vidfarm/files/<path>`. **Any path in the pack works**, not just `references/`; the full index with sizes and "read it when" lives in the rollup's *File Index* section. The whole inventory:
|
|
95
|
+
- `references/core-workflows.md` — discovery, auth, fork/publish/share, cost spectrum, dedupe-before-publish
|
|
96
|
+
- `references/editor-workflows.md` — timeline editing, decompose, captions, the three paintbrushes & two replication harnesses *(the biggest read)*
|
|
97
|
+
- `references/assets-and-sourcing.md` — raws hunts, My Files, recurring characters, downloading media off a URL
|
|
98
|
+
- `references/automation-and-local-dev.md` — REST + `vidfarm` devcli command table + scripting mode + local serve loop
|
|
99
|
+
- `references/hooks-and-virality.md` — **the four charges. Read before writing any hook, caption script, or re-theme**
|
|
100
|
+
- `references/reviewing-renders.md` — **the holistic pass. Read before reporting a video as done**
|
|
101
|
+
- `references/onboarding.md` — "help me figure out what to make" interview, and the **consultation** flow
|
|
102
|
+
- `references/primitives.md` — TTS, STT, music, avatars, overlays, background removal, product placement
|
|
103
|
+
- `references/rest-api.md` — complete REST map (load only for direct HTTP integration)
|
|
104
|
+
- `recipes/` — `find-and-fork-template.md` · `retheme-template.md` · `local-edit-render-approve.md` · `onboard-a-new-director.md` · `bulk-scripting-with-a-harness.md` (volume/N-variant work) · `cutout-graphics-for-explainers.md` (sticker-art explainers)
|
|
105
|
+
- `harnesses/` — `README.md` (**start here for anything harness-shaped**: the three director phrasings, the format, the DNA strands) plus the bundled bases `short-form` · `hooks` · `ugc-testimonial` · `explainer` · `product-demo`, each as `<name>.HARNESS.md`
|
|
91
106
|
- **Updating Vidfarm:** `https://vidfarm.cc/update.md` — **fetch this file whenever the user asks to update/upgrade Vidfarm**, says their skill or devcli is out of date, or hits a command/route that "used to work". It's the clean uninstall→reinstall runbook for BOTH halves (the `vidfarm` skill pack and `@officexapp/vidfarm-devcli`), and it carries the current breaking-change notes — read it live rather than improvising an `npm i -g`, because the notes are exactly what a blind reinstall misses.
|
|
92
107
|
- **Skill pack index (what else is installable):** `https://vidfarm.cc/skill-pack/index.json`
|
|
93
108
|
- **Platform architecture (how it all fits together):** `https://vidfarm.cc/skill/vidfarm-platform`
|
|
@@ -104,7 +119,9 @@ For composition *authoring* craft (motion, keyframes, scene design), Vidfarm shi
|
|
|
104
119
|
4b-ii. **"Tweet to TikTok" / "Reddit to TikTok" / "make a video out of this thread / subreddit / account"** → `vidfarm recycle <source>` (devcli), or `POST /api/v1/primitives/social/recycle` with `{ tracer, payload: { source_url, max_records } }`. It **decomposes** a Reddit thread (post + comments), a subreddit (its threads), an X thread (tweet + replies), or an X profile (their posts) into raw JSON — text, comment tree, media URLs, author avatar, engagement stats — and hands it back **unranked and unsummarized** so you pick the hook, the punchline comment, the stat. Auto-paginates via `nextCursor`; `max_records` is the spend ceiling. Brokers the reddit-lead-gen / x-lead-gen OfficeX apps and waits out their async job for you. **Paid plan.** Details: `references/assets-and-sourcing.md`.
|
|
105
120
|
4c. **"Create an avatar"** (spokesperson / presenter / host / UGC creator / talking head) → always a **talking-head VIDEO with spoken audio**, generated on an exact-key-color **greenscreen** plate and keyed off it in the same job → a **transparent presenter** you layer over any background. `vidfarm avatar "<who they are>" --say "<their line>" [--ref headshot.png]` / `POST /api/v1/primitives/videos/create-avatar`. Details: `references/primitives.md` → "Primitive: talking_avatar".
|
|
106
121
|
4d. **"Post this again / to several accounts / on another platform"** → **deduplication**. Platforms fingerprint uploads; the second copy of the same render gets suppressed as duplicate/reused content. `vidfarm dedupe <mp4> [--variants N]` runs on the **exported file** — free, local ffmpeg, **no re-render** — nudging skew/zoom/rotate/speed/saturation/grain a couple of percent and stripping container metadata, invisibly to a viewer. `--variants N` mints N copies distinct from the original *and from each other*, one per account/slot. Cloud twin: `POST /api/v1/primitives/media/dedupe`. Details: `references/core-workflows.md` → *Deduplicate before you publish*.
|
|
122
|
+
4e. **Anything with the word "harness"** — "create me a harness", "update the harness for this format", "give me the harness for this template_id" → a known, named process. `harnesses/README.md` for the three phrasings and the format; `recipes/bulk-scripting-with-a-harness.md` if it's a batch. The third phrasing means the **decomposition**: `vidfarm harness derive <forkId>`.
|
|
107
123
|
5. "Script / batch / render loop" → `references/automation-and-local-dev.md`
|
|
124
|
+
5b. **"Explainer with cutout/sticker art"** (flat illustrations on a stage, sticker sheets, "like those animated explainer videos") → `recipes/cutout-graphics-for-explainers.md`
|
|
108
125
|
6. "I need TTS / music / captions / background removal" → `references/primitives.md`
|
|
109
126
|
7. **"Update / upgrade vidfarm"** (or anything that smells like a stale install — a missing command, a 404 on a documented route, a version mismatch) → fetch <https://vidfarm.cc/update.md> and follow it. Update the skill pack and the devcli **together**; updating one alone is the usual cause of "the skill says to do X but it fails."
|
|
110
127
|
|
|
@@ -115,13 +132,14 @@ For composition *authoring* craft (motion, keyframes, scene design), Vidfarm shi
|
|
|
115
132
|
- Render only through `POST /api/v1/compositions/:forkId/render`; never call the renderer directly.
|
|
116
133
|
- Submissions are **not idempotent** — every render/primitive POST charges again. Check status before retrying.
|
|
117
134
|
- **No HTML slop.** Compositions are HTML, but a video is not a web page. The test: *could you have made this element with the tools inside TikTok's own editor* (font, color, stroke, shadow, tight text box, rotation, animation presets, stickers, emoji, drawn marks)? If you reached past that — a padded capsule, a border, a gradient fill, a blur panel, a card — cut it. So: no CTA "buttons", no benefit chip/badge rows, **no single pill around a static stat or label** (`( 10 hrs / week )`, `( STEP 2 )` — the only legitimate capsule is the active-word `spotlight`/`karaoke` highlight), no frosted/bordered cards holding a headline + URL, no gradient text, feature grids, or bullet lists. Nothing in a video is clickable. Say it as timed text on the footage; emphasize with size, weight, ALL-CAPS, an accent color, or a drawn circle. Arrows, scribble/underline marks, italics, color pops, emoji, cut-out stickers, and mock social UI are fine.
|
|
118
|
-
- **Structure before polish — the four charges, written before the timeline.** 🪝 **Hook**: the first line is a complete clause naming a *situation*, not a label; on screen at `start:0` (chunk 1 is read before any audio). 🔄 **Loop**: one open question by 0:10, stated on screen, **closing inside this video**, with an answer the viewer can't guess. 😍 **Payoff**: shown, not summarized, before the final beat. 🎣 **Bait**: one ask, final beat + post caption. Banned openers: throat-clearing, a logo, a title card, a fade from black. Full harness: `references/hooks-and-virality.md`; checkable form: `vidfarm
|
|
135
|
+
- **Structure before polish — the four charges, written before the timeline.** 🪝 **Hook**: the first line is a complete clause naming a *situation*, not a label; on screen at `start:0` (chunk 1 is read before any audio). 🔄 **Loop**: one open question by 0:10, stated on screen, **closing inside this video**, with an answer the viewer can't guess. 😍 **Payoff**: shown, not summarized, before the final beat. 🎣 **Bait**: one ask, final beat + post caption. Banned openers: throat-clearing, a logo, a title card, a fade from black. Full harness: `references/hooks-and-virality.md`; checkable form: `vidfarm harness show hooks`.
|
|
136
|
+
- **Then cut ruthlessly — every second is precious.** First assembly is ~30–50% too long. **Deletion test** on every beat (delete it; if the video survives, it stays deleted); what's left must serve a charge. Cut intros, the wind-up before the claim, restatement, >0.35s silences, real-time process, establishing shots, and any tail after the last word — then **ripple the hole closed** or fluff becomes dead air. Not speed: keep the comedic beat, the payoff, and readable cue time. Length is an output. `vidfarm qa` flags `dead-air` / `dead-tail` / `slow-scene`.
|
|
119
137
|
- **The first frame is the thumbnail.** Frame 0 is one frame of ~30 in the first second, but it's the poster every feed and share link freezes on — so it's seen by more people than the video is. Never open on black, an empty frame, or a fade-up: a real visual at `start:0`, the hook words already up, and no *entrance* transition on the first clip (junction transitions between later clips are fine). Check it with `vidfarm stills <dir> --at 0`.
|
|
120
138
|
- **On devcli, `vidfarm qa <dir>` before every render.** Free, instant, local-only blocklist for the slop above + the first frame + the font regime. Feedback, not a gate (exits 0, never automatic). No REST/web equivalent.
|
|
121
139
|
- **Review the finished video as a WHOLE, and never by one frame.** Agents build scene by scene, so every scene passes alone while the video drifts as a sequence — shifting margins, three type sizes, a wandering accent colour, N identically-long beats, a jarring join, a dead band under top-anchored content. Tile ~12 stills into one contact sheet — one command, `vidfarm stills <dir> --sheet` — and **read it as an image**: balance, spacing, one type scale, one palette, deliberate pacing, clean joins — then fix the *system*, not the one odd scene. Compare frames from two different scenes (a frozen render passes duration, frame-count and audio-hash checks), verify audio by measurement (~12–15 dB speech-over-bed, peak <0 dBFS) rather than "sounds fine", and report what you measured separately from what you judged. Your own "verified, looks good" is the least reliable signal here — it was wrong on every video of a 32-video batch. Method: `references/reviewing-renders.md`.
|
|
122
140
|
- **Ask about deduplication before you publish or bulk-produce.** "Is this going out more than once — several accounts, another platform, a re-post later? How many copies?" Ask *before* the render or the batch, not after: dedupe is a post-render ffmpeg pass, so answering early keeps it at **render once → dedupe N** instead of paying for a second render per slot. Then post each variant to a **different** account — two accounts posting the same variant defeats the point.
|
|
123
|
-
- **Ask one-time vs bulk before you build.** Volume = **scripting mode**: a pinned base fork, a loop varying ONE thing, and a **`
|
|
124
|
-
- **Caption regime is mandatory**: an imported display font (Montserrat default / TikTok Sans), weight 700–900, ~36–64px on a 1080-wide frame, inside the 8%–85% safe zone, and
|
|
141
|
+
- **Ask one-time vs bulk before you build.** Volume = **scripting mode**: a pinned base fork, a loop varying ONE thing, and a **`HARNESS.md`** — the director's own written standard, because a fifty-video loop has no human watching every frame. `vidfarm harness init short-form --out ./work/HARNESS.md` (bases: `short-form`, `hooks`, `ugc-testimonial`, `explainer`, `product-demo`), then `vidfarm qa ./work --harness <name|path>` — stackable, any user file valid, auto-discovered from the work dir. Its `checks:` are machine-settled; its `- [ ]` items come back for **you** to answer honestly.
|
|
142
|
+
- **Caption regime is mandatory**: an imported display font (Montserrat default / TikTok Sans), weight 700–900, ~36–64px on a 1080-wide frame, inside the 8%–85% safe zone — and **inside that band, placed in the emptiest part of the frame** (look at a still; text over open sky beats a lower third over the subject, and usually needs no plate at all). Long narration is paged into 3–5-word kinetic cues, never one static wall of text. Exactly one of four backgrounds — `outline`, `plain`, an active-word `spotlight`/`karaoke` pill, or a tight-hugging `highlight-solid` band (radius ≤8px, no border/shadow/gradient/blur).
|
|
125
143
|
- In the web editor, CSS/declarative motion only (JS animation adapters are stripped on save); locally via `vidfarm serve` the full JS adapters work.
|
|
126
144
|
- Treat `forkId` as an unguessable bearer token. Never put provider secrets in composition HTML/JSON.
|
|
127
145
|
|