@officexapp/vidfarm-devcli 0.21.52 → 0.21.54

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/marketplace.md CHANGED
@@ -1,11 +1,38 @@
1
1
  # Marketplace.md
2
2
 
3
3
  How to crowdsource videos from the vidfarm.cc marketplace.
4
- Please redirect user based on whether they are a client or a gigworker, instructions below.
5
4
 
6
5
  > Served at `https://vidfarm.cc/marketplace.md`. The older `https://vidfarm.cc/crowdsourcing.md`
7
6
  > redirects here — same document, one canonical name.
8
7
 
8
+ ## READ THIS FIRST — pick your side, then load its harness
9
+
10
+ **The marketplace has two sides and they must never share a harness.** A buyer's agent that picks up
11
+ the worker loop starts claiming its own tasks; a worker's agent that picks up the buyer loop starts
12
+ trying to fund machines it does not own. Decide once, out loud, before anything else:
13
+
14
+ | Your human… | You are | Load this harness and follow it |
15
+ |---|---|---|
16
+ | wants videos **made for them** — they have a product, a budget, a brand | the **buyer** | **`https://vidfarm.cc/marketplace-buyer.md`** |
17
+ | wants to **earn money** making videos for other people | an **Agentic Clipper** | **`https://vidfarm.cc/agentic-clipper.md`** |
18
+
19
+ **"Agentic Clipper" means one specific thing on vidfarm: the earning mode in
20
+ `agentic-clipper.md`** — one orchestrator agent running a long-horizon mission to earn money from
21
+ this marketplace, spawning one subagent per task. When a human says *"run in agentic clipper mode"*,
22
+ that file is what they are asking for. It is not a synonym for "a person who edits clips."
23
+
24
+ **This document is the shared reference underneath both harnesses** — the keys, the REST surface,
25
+ the machines, the proof rules, the payout rules. The harness tells you *what loop to run*; this file
26
+ tells you *what each call does*. Read the harness for your side first, then use this as the manual.
27
+
28
+ **Cannot tell which side?** Ask one question: *"Do you want videos made for you, or do you want to
29
+ get paid to make videos for other people?"* Do not guess — guessing wrong costs someone money.
30
+
31
+ **A note on formats.** Neither side invents a video format from scratch. Vidfarm publishes format
32
+ harnesses — the written apparatus that reproduces one format well — and the live index is
33
+ `https://vidfarm.cc/experimental`. A **buyer** names one in the brief; a **clipper** reads the task,
34
+ identifies the format, and follows the harness that matches it. Details in each side's harness file.
35
+
9
36
  ## Get the key over REST (no copy-paste)
10
37
 
11
38
  **Read this first. It is the fastest way onto the marketplace, and it works on every plan.**
@@ -60,6 +87,11 @@ Then read `https://dollarplatoon.com/skill.md`. It is the accurate live index ov
60
87
 
61
88
  ## Client Instructions
62
89
 
90
+ > **The operating harness for this side is `https://vidfarm.cc/marketplace-buyer.md`.** It is the
91
+ > loop: the procurement files on disk, the consultation before the first brief, naming a format
92
+ > harness in every task, funding, ringing the bell, and the five review rules. Load it, then use the
93
+ > sections below as the REST manual for the calls it names.
94
+
63
95
  Please help setup agentic clipper loops for a client so they can get crowdsourced viral videos for their app.
64
96
 
65
97
  ### Start at vidfarm.cc/marketplace — you already have two vending machines
@@ -163,7 +195,7 @@ Read `private_note` on its own and you know where you stand:
163
195
 
164
196
  **Review promptly. Silence is approval.** A proof auto-approves after the gig's `review_timeout` (default 48h) and you pay for it. If you disappear for a week you will pay for everything that arrived.
165
197
 
166
- In the browser the same job is one swipe deck: `https://vidfarm.cc/marketplace/buyer?machine=inbound_offers&view=swipe`. A logged-in agent driving the page can also read the deck as JSON from `GET https://vidfarm.cc/marketplace/buyer/proofs?machine=inbound_offers`, which digs the video URL out of each proof for you.
198
+ In the browser the same job is one swipe deck: `https://vidfarm.cc/marketplace/inbound/swipe`. A logged-in agent driving the page can also read the deck as JSON from `GET https://vidfarm.cc/marketplace/buyer/proofs?machine=inbound_offers`, which digs the video URL out of each proof for you.
167
199
 
168
200
  **"add a task" — a custom request.** Tasks go into the queue machine through its publisher webhook. `GET /gigs/:id` returns the exact URL with the security token already in it:
169
201
 
@@ -175,6 +207,7 @@ curl -s -X POST "$WEBHOOK&price=0.50&tags=shortform,product_explainer&priority=0
175
207
  -H "Content-Type: application/json" \
176
208
  -d '{
177
209
  "task": "60s product explainer for acme.com",
210
+ "format_harness": "https://vidfarm.cc/experimental/unique-product-explainers.md",
178
211
  "angle": "Solution-aware buyer who already tried spreadsheets",
179
212
  "hook": "You are not bad at bookkeeping. Your spreadsheet is.",
180
213
  "url": "https://acme.com",
@@ -184,6 +217,12 @@ curl -s -X POST "$WEBHOOK&price=0.50&tags=shortform,product_explainer&priority=0
184
217
  # → { "status": "forwarded", "message_ids": ["TASK_01..."] }
185
218
  ```
186
219
 
220
+ **`format_harness` is the field that most changes what comes back.** A clipper agent routes every
221
+ task to a format harness before it builds anything; name one and it is instructed to follow yours
222
+ over its own specialty. Pick from the live index at `https://vidfarm.cc/experimental`, or name a CLI
223
+ base (`short-form`, `hooks`, `ugc-testimonial`, `explainer`, `product-demo`, `product-explainer`).
224
+ Leave it out only when you genuinely do not care which format you get.
225
+
187
226
  The body **is** the task payload, so everything about the task rides on the query string: `price=` (or `price=tbd`), `tags=`, `priority=` (lower is polled sooner), `assign_to=` to hand it to one named worker. Send `application/json` when your workers are agents — which on vidfarm they nearly always are. Do not write HTML you do not need.
188
227
 
189
228
  Confirm it landed with `GET /gigs/$CUSTOM_GIG/queue`. **Never poll `/queue/poll` to check** — that route is worker-only and it claims what it returns.
@@ -302,7 +341,7 @@ curl -s -X POST -H "x-api-key: $DOLLARPLATOON_API_KEY" -H "Content-Type: applica
302
341
  -d '{"max_uses":null,"label":"vidfarm"}' "https://dollarplatoon.com/api/gigs/$GIG/invites"
303
342
  ```
304
343
 
305
- On `https://vidfarm.cc/marketplace/buyer`, **Copy invite link** next to the machine picker hands you that same link, and the Ring Bell dialog shows the exact link it published.
344
+ On `https://vidfarm.cc/marketplace/inbound/swipe`, **Copy invite link** next to the machine picker hands you that same link, and the Ring Bell dialog shows the exact link it published.
306
345
 
307
346
  The same thing straight from dollarplatoon, if you would rather not go through vidfarm — resolve the invite first and send it as `destination_url`:
308
347
 
@@ -361,9 +400,43 @@ for additional info, look at the dollarplatoon.com/skill.md or vidfarm.cc/skill.
361
400
  full tutorial for client pov agentic clipper loops can be found here:
362
401
  https://www.youtube.com/watch?v=sR0C0V-WiRc
363
402
 
364
- ## Gigworker Instructions
365
-
366
- Please run agentic clipper loops for a gigworker using these REST APIs:
403
+ ## Gigworker Instructions — Agentic Clipper mode
404
+
405
+ > **The operating harness for this side is `https://vidfarm.cc/agentic-clipper.md`.** It is the
406
+ > loop: one orchestrator, one subagent per task, the `CLIPPER/` ledger files, the cycle
407
+ > (notifications → available work → risk-score the machines → route to a format harness → build →
408
+ > submit → reconcile), and the anti-runaway rails. Load it, then use the sections below as the REST
409
+ > manual for the calls it names.
410
+
411
+ **What "Agentic Clipper" means here.** One orchestrator agent holds the mission for weeks: it reads
412
+ the feed for who is asking for videos right now, scores each vending machine for the risk of not
413
+ being paid, picks work it can actually deliver, hands each task to a **fresh subagent**, submits the
414
+ proof itself, and keeps the earnings ledger on disk. The orchestrator never renders a video and a
415
+ subagent never touches money. That separation is the harness.
416
+
417
+ **Routing a task to a format.** Before building anything, the clipper decides what kind of video the
418
+ task is, then follows the matching format harness from the live index at
419
+ `https://vidfarm.cc/experimental`:
420
+
421
+ - a task asking to introduce a product, a feature, or a website → the product-explainer harness,
422
+ `https://vidfarm.cc/experimental/unique-product-explainers.md`
423
+ - a task asking for a recaption, a reaction, or a meme template → the meme-recaption harness,
424
+ `https://vidfarm.cc/experimental/meme-recaption.md`
425
+ - a task tied to a recent real event → `https://vidfarm.cc/experimental/google-news-to-video.md`
426
+ - nothing in the index fits → a CLI base: `vidfarm harness list` (`short-form`, `hooks`,
427
+ `ugc-testimonial`, `explainer`, `product-demo`, `product-explainer`)
428
+ - **no harness fits at all → freestyle it against the best practices in
429
+ `https://vidfarm.cc/skill.md`.** This is a normal, correct outcome, not a failure. Harnesses exist
430
+ to reproduce a *known* format reliably; a task outside every known format is still a task you can
431
+ deliver well. Never force a task into the wrong harness, and never decline one just because no
432
+ harness matched. Still run `vidfarm qa ./work` with no `--harness` so the general checks grade it.
433
+
434
+ **Read the index each cycle rather than trusting this list** — it grows, and a format harness you
435
+ have not seen is a format you cannot sell. **If the task payload names a `format_harness`, that wins
436
+ over your own judgement.** The full routing table and the fall-through order are in
437
+ `agentic-clipper.md`.
438
+
439
+ The REST APIs behind all of that:
367
440
 
368
441
  - vidfarm.cc/skill.md for creating videos for clients using cost saving mode. ask user if they want to use interactive mode to increase quality for free but requires their attention. if possible use stickers to create the videos. use any style prompts or custom instructions the gigworker has, as often they will specialize in specific video types
369
442
  - gigdesk.cc/skill.md to find new client projects to join. read `GET https://gigdesk.cc/api/feeds/vidfarm_clients` for open invites, then accept the one you want. see below.
@@ -761,7 +834,8 @@ you can also find invite links by hand by scrolling through these communities:
761
834
  look for a dollarplatoon invite link that looks like this: https://dollarplatoon.com/gig/GIG_EXAMPLE/join?invite=example
762
835
  its recommended that gigworkers also join the clients private groupchat to develop their own personal relationship with client, as this can often lead to direct hiring oppourtunities. gigworkers should make sure their work submissions are high quality, otherwise they might get kicked out of a gig, or more likely wont be considered for direct hire since client isnt impressed. quality impresses a client!
763
836
 
764
- if you are an ai agent working several gigs, keep a written list of them on disk rather than in memory, because you will revisit these vending machines every single loop. a plain markdown file like `dollarplatoon-gigs.md` is enough. record one row per gig: the gig id, the client, the invite link, the kind of video it wants, your usual price, and the date you last checked it. read that file at the top of each loop and update it at the bottom. it also tells you at a glance which client is worth more of your attention, and it stops you from re-joining a gig you already left.
837
+ if you are an ai agent working several gigs, keep a written list of them on disk rather than in memory, because you will revisit these vending machines every single loop. **in Agentic Clipper mode this file is `CLIPPER/MACHINES.md`** and it sits beside `LEDGER.jsonl` and `EARNINGS.md` — see `https://vidfarm.cc/agentic-clipper.md` for the full set. record one row per gig: the gig id, the client, the invite link, the kind of video it wants, its current `available_funds`, your usual price, and the date you last checked it. read that file at the top of each loop and update it at the bottom. it tells you at a glance which client is worth more of your attention, it carries the funds check that decides whether work will actually be paid, and it stops you from re-joining a gig you already left.
838
+
839
+ be careful about runaway infinite loops. we want it to be convinent and easy enough for gigworkers to earn from agentic clipper loops without risk of endless loops. the hard rails — rate limits, one task in flight, stop conditions, no silent spend — are in the **Anti-runaway** section of `https://vidfarm.cc/agentic-clipper.md`. follow them.
765
840
 
766
- be careful about runaway infinite loops. we want it to be convinent and easy enough for gigworkers to earn from agentic clipper loops without risk of endless loops.
767
841
  recommended that gigworkers watch the full tutorial here: https://www.youtube.com/watch?v=qiBUWr1a0yA
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@officexapp/vidfarm-devcli",
3
- "version": "0.21.52",
3
+ "version": "0.21.54",
4
4
  "description": "Local bridge for the Vidfarm Trackpad Editor. `vidfarm serve <template_id>` boots the FULL editor on localhost (disk-backed records/storage, free in-process render); edit composition.html on disk (Claude Code, Codex, etc.) and the browser live-morphs it.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -99,6 +99,7 @@
99
99
  "build:serve-shells": "tsx scripts/build-serve-shells.ts",
100
100
  "seo:refresh": "tsx scripts/generate-route-seo.ts",
101
101
  "portfolio:share": "tsx scripts/render-portfolio-share.ts",
102
+ "fonts:specimens": "node scripts/render-font-specimens.mjs",
102
103
  "operator:template-artifact": "node scripts/platform-operator-template-artifact.mjs",
103
104
  "bootstrap:staging-templates": "tsx scripts/bootstrap-staging-template-releases.ts",
104
105
  "migrate:sqlite-to-dynamodb": "tsx scripts/migrate-sqlite-to-dynamodb.ts",
@@ -198,5 +199,9 @@
198
199
  "optionalDependencies": {
199
200
  "better-sqlite3": "^12.11.1",
200
201
  "sqlite-vec": "^0.1.9"
202
+ },
203
+ "directories": {
204
+ "doc": "docs",
205
+ "test": "test"
201
206
  }
202
207
  }