@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.
Files changed (3) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/README.md +10 -2
  3. 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.23.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.23.0"
27
+ "@clipwright/core": "0.25.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "^26.1.1"