@clipwright/cli 0.34.0 → 0.35.0
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/CHANGELOG.md +107 -0
- package/README.md +7 -8
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,113 @@ listed under.
|
|
|
18
18
|
|
|
19
19
|
## [Unreleased]
|
|
20
20
|
|
|
21
|
+
## [0.35.0] - 2026-10-30
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- The texts an agent reads describe the `parts-v1` tariff (#933). The `call` field says the call adds production
|
|
26
|
+
seconds and that a live-avatar still has its own price; the templates description and the remake plan's tariff
|
|
27
|
+
note drop the retired per-second rate. The MCP server's SKILL.md and the CLI README point to `list_prices` and the
|
|
28
|
+
quotes instead of fixed faceless prices, and the `quote_ugc` example shows `price_lines` for 12 s.
|
|
29
|
+
- *Dashboard:* /pricing lists only the presenter a request can get, and prints single images and clips as price
|
|
30
|
+
ranges per resolution without model names (#800). Two comparison pages are rewritten from the other products'
|
|
31
|
+
sites as read on 2026-10-30.
|
|
32
|
+
|
|
33
|
+
- *Server-side:* `make_ugc` is priced by its parts, one tariff `parts-v1` for short and long videos (#800): 12 credits
|
|
34
|
+
for every second a presenter take fills on HeyGen (22 on OmniHuman), plus 1 for every second of the finished video,
|
|
35
|
+
plus 400 for each live-avatar still of a call, at least 50 for a delivered video. A plain 35 s video costs 455
|
|
36
|
+
instead of 1 050. The quote itemizes it in `price_lines` and names `minimum_credits`; the terms are frozen at
|
|
37
|
+
admission, so a run admitted before keeps its own.
|
|
38
|
+
- *Server-side:* `analyze_reference` costs 70 credits (#927): held at the start and charged once the analysis
|
|
39
|
+
succeeds; a failed analysis costs nothing, and starting it again on the same asset answers the same analysis for
|
|
40
|
+
free. The analysis carries `credits_reserved`, `credits_charged` and `balance_after_credits`.
|
|
41
|
+
- *Server-side:* single generations are priced at ×2.5 of their cheapest route instead of ×2: an image from 6 credits,
|
|
42
|
+
a clip from 6 credits a second. `seedance-2.0-mini` is rendered by one route only.
|
|
43
|
+
- *Server-side:* `make_faceless` is priced by its parts, tariff `faceless-parts-v1` (#800): 7 credits for each picture
|
|
44
|
+
we generate, the opening clip's still included, 49 for the opening clip and 1 for every second of the delivered
|
|
45
|
+
video, at least 50. Your own pictures are not charged. The quote is the most a selection is charged: 212 at 30 s,
|
|
46
|
+
356 at 90 s, instead of 350 and 420. `faceless_billing` names `images` and `imageCredits`; a run admitted before
|
|
47
|
+
keeps its tariff.
|
|
48
|
+
- *Server-side:* edits and personal actors are repriced at ×2.5 of their cost (#800): a revision's new picture 7, clip
|
|
49
|
+
49, clip with a new picture 56, render 13, and a shot candidate the same unit prices; an actor's portrait 4 and each
|
|
50
|
+
other format 8 at `medium`, 12 and 18 at `high`. Runs admitted before keep their snapshot.
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
|
|
54
|
+
- *Server-side:* `POST /v1/reference-analyses/quote`, the `quote_analysis` tool and `ClipwrightClient.quoteAnalysis()`
|
|
55
|
+
price an analysis before it starts (#927).
|
|
56
|
+
- *Server-side:* every settled run carries `balance_after_credits`, the account's balance read in the transaction
|
|
57
|
+
that settled it (#927).
|
|
58
|
+
|
|
59
|
+
- *Server-side:* `GET /v1/public/prices` lists the price of every action in credits, without a key: one entry per tool
|
|
60
|
+
and variant, its price as lines of credits per unit plus a minimum, or a formula; free tools are listed at 0. No price
|
|
61
|
+
changed (#927).
|
|
62
|
+
- The `list_prices` tool and `ClipwrightClient.listPrices()` read that list, and the description of every paid tool
|
|
63
|
+
ends with its price line, built from the same list.
|
|
64
|
+
- `@clipwright/core` exports `PRICE_LIST`, `priceLine` and `pricesResponse`, with the constants the list reads:
|
|
65
|
+
`CREDITS_PER_SECOND`, `ACTOR_UNIT_CREDITS`, `EDIT_UNIT_PRICES`, `EDIT_RENDER_PRICE`, `EDIT_ZERO_UNIT_PRICE` and the
|
|
66
|
+
numbers of the faceless tariff.
|
|
67
|
+
|
|
68
|
+
- *Server-side:* `GET /openapi.json` serves an OpenAPI 3.1 description of the REST API without a key: every public
|
|
69
|
+
route with its request and response schemas, the error envelope and `warnings[]`. The API's own tests check
|
|
70
|
+
their real responses against it.
|
|
71
|
+
- `@clipwright/core/openapi` exports `buildOpenApiDocument()` and the route marking `OPENAPI_ROUTES`;
|
|
72
|
+
`@clipwright/core` exports `ENDPOINT_NOTES`, `healthResponse` and `publicSkillsResponse`.
|
|
73
|
+
- `make_ugc` takes `voice_pace` (0.7–1.2): `eleven_flash_v2_5` and `eleven_turbo_v2_5` get it as their speed,
|
|
74
|
+
`gemini-3.8-flash-tts` as a "speaking rapidly" or "speaking slowly" style with a warning. `eleven_v4` has no speed
|
|
75
|
+
setting: it gets no speed, and a `voice_pace` other than 1 is named in `warnings[]` (#890).
|
|
76
|
+
- `list_voices` gives each English voice on `eleven_v4` its measured pace, `words_per_second`. On that model the voice
|
|
77
|
+
sets the pace, so pick the voice nearest a reference presenter's pace (#890).
|
|
78
|
+
- *Server-side:* all ElevenLabs speech goes to `eleven_v4`, now the model of every preset, catalog voice and raw
|
|
79
|
+
`voice_id`. `tts_model: "eleven_v3"` is still accepted: the run speaks `eleven_v4` and `warnings[]` says so.
|
|
80
|
+
`eleven_v4` gives no pause for a `<break>` tag, so the tag is cut with a warning on the default path too.
|
|
81
|
+
- `make_ugc` takes `pause_trim`, targets in seconds per gap class: after synthesis a pause longer than its target is cut
|
|
82
|
+
down to it inside silence only, with a crossfade, and word timings move with the audio. A joint that would click is
|
|
83
|
+
kept and named in `warnings[]`.
|
|
84
|
+
- *Server-side:* a reference analysis measures the presenter's voice from the words it already transcribes: pace,
|
|
85
|
+
pauses in three layers, hinge pauses, pitch and loudness range, in the profile's new `voice` section.
|
|
86
|
+
`plan_reference_remake` sets `voice_pace` from it on a model with a speed. On `eleven_v4` it sets none and, when
|
|
87
|
+
the voice is more than 5% off the presenter, names the measured voices nearer the presenter's pace (#890).
|
|
88
|
+
- `@clipwright/core` exports `referenceVoice`, the schema of that section, and `narrationPaceFromVoice`.
|
|
89
|
+
|
|
90
|
+
- *Dashboard:* a public `/captions` page plays every caption style on the same presenter and the same words, each
|
|
91
|
+
with the description `tools/list` gives it; the `caption_style` description links to the page.
|
|
92
|
+
- `SKILL.md` names every caption style and tells the agent to ask whether the user wants captions, to offer three
|
|
93
|
+
or four fitting styles with the gallery link, and to take the style closest to a reference video's captions.
|
|
94
|
+
- *Server-side:* `hormozi` now matches the canonical look: Montserrat Black uppercase, white with a thick black outline,
|
|
95
|
+
one yellow (`#FFD93D`) keyword per cue, up to three words. The previous look (condensed Oswald, orange keyword, no
|
|
96
|
+
outline) is the new style `accent`. `hormozi` stays the default; there are 24 styles.
|
|
97
|
+
- *Server-side:* `make_ugc` takes `edit_sounds: true` on a run with `inserts` or `layout_windows`: a low sound plays on
|
|
98
|
+
every cut, to or from an insert, at a full-frame template's cut in or out and at a layout window's in and out, with
|
|
99
|
+
its peak on the cut. `template_sounds.edit` picks it from `swell_hit` (default), `whoosh_deep`, `whoosh_low`,
|
|
100
|
+
`boom_low`, `sub_drop`, `riser_boom` and `riser_hit`. A cut that already plays a template's whoosh or flash gets no
|
|
101
|
+
second sound. Without the field a run plays no edit sounds, as before; `edit_sounds` with nothing to cut, with
|
|
102
|
+
`template_sounds: false`, or `template_sounds.edit` without `edit_sounds`, is refused 400 by its path before any
|
|
103
|
+
hold. The price does not change.
|
|
104
|
+
- *Server-side:* new template sounds: a `pop` (`plop`) when a `tag` or a `callout` pops in, a `hangup` (`phone`) just
|
|
105
|
+
before an answered `phone_call` leaves, and `money` (`cash_register`, `coins`) when a `stat` with a currency sign in
|
|
106
|
+
its prefix or suffix counts up. `answer` adds `pickup`, `whoosh` adds `slide_quick` and `flash` adds `swish`.
|
|
107
|
+
`list_template_sounds` lists them. A run frozen before them keeps its sounds.
|
|
108
|
+
- *Server-side:* `make_ugc` takes `framing`, presenter sizes on their words: `close` (1.18 times larger about the face)
|
|
109
|
+
or `medium`, each a hard cut that settles over 8 frames, or with `transition: "flash"` a warm light leak over the cut.
|
|
110
|
+
It needs long-form qualification, works without captions, refuses overlap with inserts, layout windows and other framing,
|
|
111
|
+
and names in `warnings[]` a framing wholly under full-frame templates. With `edit_sounds`, each framing cut plays the
|
|
112
|
+
edit sound. `plan_reference_remake` turns a `punch_in` camera into a close framing and a flash into a speaking beat
|
|
113
|
+
into a flashed one.
|
|
114
|
+
- `create_actor` takes `from_actor_id` with `framing: "wide"`, `holding` (one or two objects, each with words, an
|
|
115
|
+
optional image asset of the object and a hand) or `setting`: it derives a new personal actor from a library actor or
|
|
116
|
+
your own, with the same face checked against the source. A face that does not match costs nothing. The price is the
|
|
117
|
+
usual per-image units. *Server-side:* the fields are open only where `CLIPWRIGHT_ACTOR_VIEWS` is on; elsewhere they
|
|
118
|
+
are refused 400 `rejected_field`. A wide derived actor's 9:16 is listed with `framing: "wide"`, and `make_ugc`
|
|
119
|
+
renders it as a wide view. `@clipwright/core` exports `storedActorSource`, `storedHoldingItem`,
|
|
120
|
+
`createActorDispositions`, `createActorRejectedFields` and `isActorViewsEnabled`.
|
|
121
|
+
|
|
122
|
+
### Changed
|
|
123
|
+
|
|
124
|
+
- *Server-side:* the template sound library is re-recorded from CC0 sounds the owner chose by ear: 25 of the 31 files
|
|
125
|
+
play a new recording under the same name; the rings, `glitch`, `switch_heavy` and `paper_swipe` stay as they were.
|
|
126
|
+
Every source is named in `THIRD_PARTY_NOTICES`.
|
|
127
|
+
|
|
21
128
|
## [0.34.0] - 2026-10-24
|
|
22
129
|
|
|
23
130
|
### Added
|
package/README.md
CHANGED
|
@@ -130,13 +130,12 @@ each voice: play it before you pay for a render, and reuse the same name next ti
|
|
|
130
130
|
`--language` filters by a voice's native language; any voice speaks any supported
|
|
131
131
|
language.
|
|
132
132
|
|
|
133
|
-
The voice decides the speech model
|
|
134
|
-
`
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
`eleven_v4`, `eleven_v3` and `gemini-3.8-flash-tts` read it as stress. `eleven_v4` and
|
|
133
|
+
The voice decides the speech model: every preset, catalog voice and `--voice-id` voice
|
|
134
|
+
speaks `eleven_v4`. `--tts-model` overrides the choice: `eleven_flash_v2_5` and
|
|
135
|
+
`eleven_turbo_v2_5` cost less but misread Russian stress marks. `--tts-model eleven_v3` is
|
|
136
|
+
still accepted, but the run speaks `eleven_v4` and warns about it. In a Russian script, mark
|
|
137
|
+
stress with a capital vowel inside the word: `потОм`. `eleven_v4` and
|
|
138
|
+
`gemini-3.8-flash-tts` read it as stress. `eleven_v4` and
|
|
140
139
|
`gemini-3.8-flash-tts` give no pause for a `<break time="…" />` tag: the tag is cut from
|
|
141
140
|
the text, and the response warns about it.
|
|
142
141
|
|
|
@@ -154,7 +153,7 @@ ends with the narration, runs at least 25 seconds and may exceed the selection
|
|
|
154
153
|
by up to a quarter, never beyond 90 seconds; a video more than 5 seconds longer
|
|
155
154
|
says so in `warnings[]`. A script is accepted when its estimated length is 21
|
|
156
155
|
seconds to the selection plus 5, at most 90. The charge follows the delivered duration and never exceeds the quote;
|
|
157
|
-
the
|
|
156
|
+
the rates and the minimum are on [clipwright.io/pricing](https://clipwright.io/pricing?ref=npm).
|
|
158
157
|
Captions are on; `--no-captions`
|
|
159
158
|
turns them off. `--style-reference <url>` and `--character-reference <url>` take
|
|
160
159
|
public https images. `--voice <name>` picks the narration voice: take a name
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clipwright/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"description": "Command-line client for the Clipwright UGC video API",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"commander": "^15.0.0",
|
|
36
|
-
"@clipwright/core": "0.
|
|
37
|
-
"@clipwright/sdk": "0.
|
|
36
|
+
"@clipwright/core": "0.35.0",
|
|
37
|
+
"@clipwright/sdk": "0.35.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^26.1.1"
|