@vosjs/cli 0.68.0 → 0.69.1
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/README.md +7 -10
- package/dist/{chunk-AUFY3M22.js → chunk-2KEQ3LKH.js} +2 -2
- package/dist/chunk-2KEQ3LKH.js.map +1 -0
- package/dist/{chunk-ZS3L7CEN.js → chunk-NHJRD2XC.js} +986 -2187
- package/dist/chunk-NHJRD2XC.js.map +1 -0
- package/dist/{chunk-5GZ3GPAK.js → chunk-YZAM4W7B.js} +12 -7
- package/dist/{chunk-5GZ3GPAK.js.map → chunk-YZAM4W7B.js.map} +1 -1
- package/dist/cli.js +5 -5
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/manifest-QLQKVSML.js +8 -0
- package/dist/{run-L4CDAJLT.js → run-6VQWD42R.js} +3 -3
- package/package.json +5 -5
- package/schema/actions.schema.json +7 -7
- package/schema/channel-specs.json +5 -233
- package/schema/doc.schema.json +3 -3
- package/skills/VERSION +1 -1
- package/skills/launch-kit/SKILL.md +101 -223
- package/skills/launch-kit/references/channel-specs.md +14 -44
- package/skills/product-video/SKILL.md +9 -14
- package/skills/product-video/references/destinations.md +12 -23
- package/skills/vos-footage/SKILL.md +1 -1
- package/skills/vos-migrate/SKILL.md +3 -3
- package/dist/chunk-AUFY3M22.js.map +0 -1
- package/dist/chunk-ZS3L7CEN.js.map +0 -1
- package/dist/manifest-ZBK6IERM.js +0 -8
- /package/dist/{manifest-ZBK6IERM.js.map → manifest-QLQKVSML.js.map} +0 -0
- /package/dist/{run-L4CDAJLT.js.map → run-6VQWD42R.js.map} +0 -0
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
# Destination packaging
|
|
2
2
|
|
|
3
|
-
What to produce, at what size, for each place a product video
|
|
4
|
-
|
|
5
|
-
`vos frames take --at-zooms`, then cut stills with
|
|
6
|
-
`vos frames take --frame <t> --size WxH` and videos with render presets +
|
|
7
|
-
`--range`.
|
|
3
|
+
What to produce, at what size, for each place a product video lands.
|
|
4
|
+
Every cut comes from ONE take: render presets plus `--range`.
|
|
8
5
|
|
|
9
|
-
**Producing a full
|
|
10
|
-
repo
|
|
11
|
-
spec sheet (`schema/channel-specs.json` in `@vosjs/cli`)
|
|
12
|
-
every
|
|
13
|
-
one-off cuts.
|
|
6
|
+
**Producing a release's full set of cuts?** Use the `launch-kit` skill
|
|
7
|
+
from this repo: it drives the whole per-channel loop against the
|
|
8
|
+
machine-readable spec sheet (`schema/channel-specs.json` in `@vosjs/cli`)
|
|
9
|
+
and verifies every cut in a manifest. The tables below are the quick
|
|
10
|
+
reference for one-off cuts.
|
|
14
11
|
|
|
15
12
|
## Landing-page embed (your site's hero or feature section)
|
|
16
13
|
|
|
@@ -38,27 +35,19 @@ one-off cuts.
|
|
|
38
35
|
ffmpeg -i in.webm -c:v libx264 -b:v <target>k -pass 1 -an -f mp4 /dev/null
|
|
39
36
|
ffmpeg -i in.webm -c:v libx264 -b:v <target>k -pass 2 -movflags +faststart out.mp4
|
|
40
37
|
```
|
|
41
|
-
- Repo social-preview image: 1280×640.
|
|
42
38
|
|
|
43
39
|
## Store and directory listings
|
|
44
40
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
| Chrome Web Store | small promo tile | 440×280 | subject centered |
|
|
49
|
-
| Chrome Web Store | marquee promo | 1400×560 | |
|
|
50
|
-
| Chrome Web Store | icon | 128×128 | |
|
|
51
|
-
| Product Hunt | thumbnail | 240×240 | GIF loops autoplay in the feed |
|
|
52
|
-
| Product Hunt | gallery images | 1270×760 | first image is the header |
|
|
41
|
+
The Chrome Web Store promo video and the Product Hunt video both take a
|
|
42
|
+
YouTube URL only: upload the main demo (16:9, 1920×1080, 60 to 120 s) to
|
|
43
|
+
YouTube and paste its link.
|
|
53
44
|
|
|
54
45
|
## Social cuts
|
|
55
46
|
|
|
56
47
|
| Channel | Asset | Size | Notes |
|
|
57
48
|
|---|---|---|---|
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
| LinkedIn | feed video/image | 1200×627 | native upload; mute-legible |
|
|
61
|
-
| OG card (any link) | image | 1200×630 | |
|
|
49
|
+
| X | feed video | 1920×1080 (16:9) or 1:1 | ≤140s, H.264 — upload natively, never a link card |
|
|
50
|
+
| LinkedIn | feed video | 1080×1920, the vertical cut | native upload; mute-legible |
|
|
62
51
|
| Vertical (Shorts/Reels/TikTok) | video | 1080×1920 (9:16) | keep the subject inside the ~900×1160 center safe zone — platform chrome covers the rest |
|
|
63
52
|
|
|
64
53
|
## Performance rules (every channel)
|
|
@@ -12,7 +12,7 @@ backdrop, no titles (the composition owns those) — but it is never an
|
|
|
12
12
|
orphan file: the take it came from lives on the maker's shelf, editable,
|
|
13
13
|
and the handoff says so. That one line is the whole contract.
|
|
14
14
|
|
|
15
|
-
If the ask is actually a RELEASE (a launch video,
|
|
15
|
+
If the ask is actually a RELEASE (a launch video, the social cuts, the
|
|
16
16
|
whole kit), stop — that is the `launch-kit` skill, and the document that
|
|
17
17
|
survives should be the vosso one.
|
|
18
18
|
|
|
@@ -99,6 +99,6 @@ next one with `vos record` and the camera plans itself.**
|
|
|
99
99
|
- Old edits, camera bubbles and captions are baked pixels.
|
|
100
100
|
- The migration re-encodes once (VP9); a badly compressed source stays
|
|
101
101
|
badly compressed — migrating does not restore quality.
|
|
102
|
-
- A
|
|
103
|
-
migrated take exactly as from a native one
|
|
104
|
-
takes over when the ask is a release.
|
|
102
|
+
- A release's set of cuts (the demo, the social cuts, the README loop)
|
|
103
|
+
works from the migrated take exactly as from a native one: the
|
|
104
|
+
`launch-kit` skill takes over when the ask is a release.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/manifest.ts"],"sourcesContent":["/**\n * The verb manifest of the take pipeline and the vos.so verbs — what\n * `vos help` lists under the engine verbs. It kept the shape a separately\n * installed plugin once handed the host (name + host range), so a script\n * reading it keeps working.\n */\nexport interface PluginVerb {\n name: string\n summary: string\n}\n\nexport interface PluginManifest {\n name: string\n /** Host versions this plugin speaks the run(argv) contract with. */\n hostRange: string\n verbs: PluginVerb[]\n}\n\nexport const manifest: PluginManifest = {\n name: '@vosjs/cli',\n hostRange: '>=0.9.0',\n verbs: [\n {\n name: 'create',\n summary: 'record + auto-plan + render, one command (--strict)',\n },\n {\n name: 'record',\n summary: 'drive actions.json into a take (screencast + cursor track)',\n },\n {\n name: 'plan',\n summary:\n 'plan zoom/cursor effects into doc.json (wand contract); --reuse re-times a previous cut onto a re-recording',\n },\n {\n name: 'render',\n summary: 'render a take directory (engine configs render in the host)',\n },\n {\n name: 'frames',\n summary:\n 'PNG stills at output times / zoom apexes / moments / exact sizes',\n },\n {\n name: 'deliver',\n summary:\n 'render a take to release destinations (CWS, Product Hunt, X, LinkedIn, OG…) + verified kit.json',\n },\n {\n name: 'digest',\n summary:\n 'see a recording before cutting it: moments (clicks, typing, scrolls, idle, scenes) + footage frames + crops, in doc units',\n },\n { name: 'open', summary: 'serve the take into the vos.so studio' },\n {\n name: 'validate',\n summary:\n 'lint actions.json, a take dir (doc.json semantics), or re-measure a kit.json against the channel specs',\n },\n {\n name: 'actions',\n summary:\n 'from-agent-browser: turn an agent-browser walk (steps.jsonl) into actions.json; what cannot follow is named',\n },\n {\n name: 'ingest',\n summary:\n 'a take from a recording someone else made, with its cursor track from a trace beside it (Playwright trace.zip, stamped records, CSV); without one nothing is planned',\n },\n {\n name: 'port',\n summary:\n 'bring a page, a HyperFrames or a Remotion piece: inventory (its words, colours, faces, media, scenes) then scaffold (a data-first program.mjs to translate the motion into)',\n },\n {\n name: 'build',\n summary:\n 'program.mjs (real functions) → config.json, refusing what cannot run on its own (module-scope reads, syntax the page cannot parse, non-JSON data)',\n },\n {\n name: 'compare',\n summary:\n \"a program against the source's own render: per-frame SSIM and source | vos | difference sheets; exits 1 when any frame is under the threshold\",\n },\n {\n name: 'brand',\n summary:\n \"write a product's BRAND.md, witnessed: /design.md, /llms.txt, then the page (palette, faces, marks, the avoid list)\",\n },\n {\n name: 'fetch',\n summary: 'download a hosted program: config.json + vos.json tracking',\n },\n {\n name: 'push',\n summary: 'push a config.json or take to vos.so (private; versioned)',\n },\n {\n name: 'duplicate',\n summary:\n 'a private sibling of your OWN vos (someone else\\u2019s is remixed: fetch + push --remix-of)',\n },\n {\n name: 'pull',\n summary:\n 'sync what changed on vos.so since your base (--media brings a take’s footage home)',\n },\n {\n name: 'folder',\n summary:\n 'list/create/pull folders, move voses and assets into them (pull = the context package on disk)',\n },\n {\n name: 'asset',\n summary:\n 'your files: push or import one, list them (assets ls), see storage (assets usage) and what uses a file (assets why)',\n },\n {\n name: 'recipe',\n summary:\n 'push a recipe .md into a folder, or replace one in place (prior body kept)',\n },\n {\n name: 'login',\n summary: 'sign in via the browser (or --key); stores a content key',\n },\n {\n name: 'setup',\n summary:\n 'ready this machine: the vos skills into your agent, a browser, one rules block, then doctor',\n },\n {\n name: 'doctor',\n summary:\n 'what is ready, in words: node, browser, ffmpeg, skills, a credential (never printed), the dev server',\n },\n {\n name: 'whoami',\n summary: 'the key’s name and the account it belongs to, never the key',\n },\n { name: 'logout', summary: 'remove ~/.config/vos/credentials' },\n ],\n}\n"],"mappings":";;;AAkBO,IAAM,WAA2B;AAAA,EACtC,MAAM;AAAA,EACN,WAAW;AAAA,EACX,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA,EAAE,MAAM,QAAQ,SAAS,wCAAwC;AAAA,IACjE;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,EAAE,MAAM,UAAU,SAAS,mCAAmC;AAAA,EAChE;AACF;","names":[]}
|