@clipwright/sdk 0.23.0 → 0.25.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 +73 -0
- package/README.md +10 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -16,6 +16,79 @@ a customer reading it should not miss what appeared in the product. Like *Server
|
|
|
16
16
|
they are live from the day the web app was deployed, not from the package release they are
|
|
17
17
|
listed under.
|
|
18
18
|
|
|
19
|
+
## [0.25.0] - 2026-10-04
|
|
20
|
+
|
|
21
|
+
The AI disclosure names what each video holds, and the clients show it: `get_run` of the MCP server and
|
|
22
|
+
`clipwright runs <id>` carry `ai_disclosure`. The visible "AI-generated" label is gone, and the clients no longer
|
|
23
|
+
offer `disclosure_overlay`.
|
|
24
|
+
|
|
25
|
+
### Removed
|
|
26
|
+
|
|
27
|
+
- **Breaking:** *Server-side:* `disclosure_overlay` is gone: no video carries the visible "AI-generated" label. Quote
|
|
28
|
+
and run refuse the field with 400 `rejected_field` before any charge, and the refusal says where the disclosure is:
|
|
29
|
+
the run response and the file metadata. Clients up to 0.24.0 still list the field in their input schema; stop
|
|
30
|
+
passing it. Label the publication with the platform's own control. The contract version is `2026-10-04`.
|
|
31
|
+
(clipwright#488)
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- *Dashboard:* The Privacy Policy says that we keep the site that referred you and any marker in the link that
|
|
36
|
+
brought you to sign-up, and that a notification of each sign-up, with the email address, reaches us through
|
|
37
|
+
Telegram. (clipwright#482)
|
|
38
|
+
- *Server-side:* `ai_disclosure` of a faceless run names what that video holds: "This video was generated with AI:
|
|
39
|
+
the voice, the opening clip and the images are synthetic." A faceless run with `scene_images` says instead that the
|
|
40
|
+
voice and the opening clip are synthetic, and so is every image its author did not supply. Until now a faceless run
|
|
41
|
+
carried the sentence of a video with a presenter, about an actor and lip sync it does not have. A run with a
|
|
42
|
+
presenter keeps its sentence. (clipwright#488)
|
|
43
|
+
- `get_run` of the MCP server returns `ai_disclosure` with a finished video, and `clipwright runs <id>` prints it
|
|
44
|
+
under the video link. Until now neither showed the statement. (clipwright#488)
|
|
45
|
+
- *Server-side:* a run accepted with `disclosure_overlay: true` before the label was removed and composed after it
|
|
46
|
+
says so in `warnings[]`. (clipwright#488)
|
|
47
|
+
- `@clipwright/core` exports `aiDisclosureText(skill, input)` and the two faceless sentences,
|
|
48
|
+
`FACELESS_AI_DISCLOSURE_TEXT` and `FACELESS_OWN_IMAGES_AI_DISCLOSURE_TEXT`. `AI_DISCLOSURE_TEXT` stays the sentence
|
|
49
|
+
of a video with a presenter. (clipwright#488)
|
|
50
|
+
- *Dashboard:* The AI Disclosure page gives the three wordings of the statement, says that a faceless file carries a
|
|
51
|
+
storage flag alone, and no longer describes a visible label. (clipwright#488)
|
|
52
|
+
|
|
53
|
+
## [0.24.0] - 2026-10-03
|
|
54
|
+
|
|
55
|
+
A second speech model, `gemini-3.8-flash-tts`, with thirty voices of its own and a sample of each in English and
|
|
56
|
+
Russian. Nothing changes unless you name the model or one of its voices. The CLI and the MCP server accept the new
|
|
57
|
+
`tts_model` value from this release on.
|
|
58
|
+
|
|
59
|
+
### Added
|
|
60
|
+
|
|
61
|
+
- `tts_model` accepts `gemini-3.8-flash-tts`, a speech model of a second vendor. Nothing changes unless you name it:
|
|
62
|
+
every default stays as it was, and Russian speech without `tts_model` still uses `eleven_v4`. The model speaks only
|
|
63
|
+
its own voices: without `voice`, `kore` for a female actor and `charon` otherwise. It reads Russian stress marks,
|
|
64
|
+
and it gets the text with `<break time="…" />` tags cut, which the response names in a warning. Its script limit is
|
|
65
|
+
5,000 characters. The price per finished second is the same as on every other model. (clipwright#453)
|
|
66
|
+
- `voice` accepts the thirty voices of `gemini-3.8-flash-tts` by name: `kore`, `puck`, `zephyr` and the rest, as
|
|
67
|
+
`list_voices` returns them. Naming one selects that model without `tts_model`, and the quote names the model.
|
|
68
|
+
`clipwright voices` prints the model on the line of such a voice. (clipwright#453)
|
|
69
|
+
- *Server-side:* `list_voices` returns those thirty voices after the presets as entries of kind `model_voice`. Each
|
|
70
|
+
names one model in `model` and `supported_models`, has no `language`, and carries `gender` only where it is known:
|
|
71
|
+
`kore` is female and `charon` is male. The filters `model=gemini-3.8-flash-tts`, `language=ru` and `language=en`
|
|
72
|
+
find them; any other language does not. (clipwright#453)
|
|
73
|
+
- *Server-side:* each of those thirty voices carries `preview_url`, a short sample spoken by that voice on its model.
|
|
74
|
+
The sample is in English; a request filtered by `language=ru` gets the Russian one. `clipwright voices` prints the
|
|
75
|
+
link under the voice, as it does for every other voice with a sample. (clipwright#453)
|
|
76
|
+
- *Server-side:* with `gemini-3.8-flash-tts` the API refuses a preset or catalog `voice`, `voice_id`, `captions=true`,
|
|
77
|
+
`segments` and `inserts` before any charge: the model does not speak the preset and catalog voices and returns no
|
|
78
|
+
word timings. It refuses the same when a voice names the model instead of `tts_model`, and it refuses one of the
|
|
79
|
+
model's voices next to any other `tts_model`. Each refusal names what to pass instead. `list_voices` lists the
|
|
80
|
+
model in `models[]` with the languages `en` and `ru`; no preset or catalog voice names it in `supported_models`.
|
|
81
|
+
(clipwright#453)
|
|
82
|
+
- *Server-side:* a warning about stress marks on `eleven_flash_v2_5` or `eleven_turbo_v2_5` names only the models
|
|
83
|
+
that speak the voice of the run: with an explicit `voice` or `voice_id` these are `eleven_v3` and `eleven_v4`.
|
|
84
|
+
(clipwright#453)
|
|
85
|
+
- *Server-side:* the quote and the reserve for a Russian script on `gemini-3.8-flash-tts` assume 2.2 words per second,
|
|
86
|
+
the pace measured on its two default voices: 153 Russian words are quoted at 70 seconds and 2,100 credits. A script
|
|
87
|
+
in Latin letters on this model is quoted at 2.6 words per second, as on every other model. The charge follows the
|
|
88
|
+
measured duration. (clipwright#453)
|
|
89
|
+
- *Dashboard:* the Privacy Policy, the Cookie Policy and the AI disclosure page name the speech provider of a run
|
|
90
|
+
that chooses this model. (clipwright#453)
|
|
91
|
+
|
|
19
92
|
## [0.23.0] - 2026-10-02
|
|
20
93
|
|
|
21
94
|
Russian speech moves to `eleven_v4`: the server names it by default, and the client texts say which voices speak it.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @clipwright/sdk
|
|
2
2
|
|
|
3
|
-
TypeScript client for the [Clipwright](https://clipwright.io) UGC and faceless
|
|
3
|
+
TypeScript client for the [Clipwright](https://clipwright.io/?ref=npm) UGC and faceless
|
|
4
4
|
video API.
|
|
5
5
|
|
|
6
6
|
```ts
|
|
@@ -32,11 +32,19 @@ refuse a mismatched `script`/`brief` before sending anything.
|
|
|
32
32
|
`preview_url` that expires in an hour. Pass a voice's `name` as `voice`;
|
|
33
33
|
`language` is a filter only, since any voice speaks any supported language.
|
|
34
34
|
|
|
35
|
+
The list holds the presets, the thirty voices of the speech model
|
|
36
|
+
`gemini-3.8-flash-tts` (`kind: "model_voice"`) and the catalog. A `model_voice`
|
|
37
|
+
voice has no language of its own: `language: "en"` and `language: "ru"` find it,
|
|
38
|
+
and its sample is in English unless you ask for `language: "ru"`. Naming such a
|
|
39
|
+
voice makes the run speak `gemini-3.8-flash-tts` without `tts_model`. That model
|
|
40
|
+
speaks only its own voices and refuses `captions: true` before any charge.
|
|
41
|
+
|
|
35
42
|
Without `voice` or `voice_id`, the voice follows the actor's gender: `sarah` for
|
|
36
43
|
a woman, `george` for a man. `actor_id` brings its catalog gender; with `image`,
|
|
37
44
|
pass `actor_gender` (`"female"` or `"male"`). An `image` without `actor_gender`
|
|
38
45
|
gets `george` and a warning. `actor_gender` next to `actor_id` or without
|
|
39
|
-
`image` is refused before any charge.
|
|
46
|
+
`image` is refused before any charge. With `tts_model: "gemini-3.8-flash-tts"`
|
|
47
|
+
the defaults are `kore` for a woman and `charon` otherwise.
|
|
40
48
|
|
|
41
49
|
Requires `CLIPWRIGHT_CLIENT_ID`, or a writable `~/.clipwright/` for the SDK to
|
|
42
50
|
create one on first use. It fails loudly rather than generating a throwaway id,
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clipwright/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0",
|
|
4
4
|
"description": "TypeScript client for the Clipwright UGC video API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Dimantika Sp. z o.o.",
|
|
7
|
-
"homepage": "https://clipwright.io",
|
|
7
|
+
"homepage": "https://clipwright.io/?ref=npm",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"publishConfig": {
|
|
10
10
|
"access": "public"
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"zod": "^4.4.3",
|
|
27
|
-
"@clipwright/core": "0.
|
|
27
|
+
"@clipwright/core": "0.25.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "^26.1.1"
|