@transloadit/zod 5.0.1 → 7.0.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 (199) hide show
  1. package/dist/v3/assemblyStatus.d.ts +682 -682
  2. package/dist/v3/assemblyStatus.d.ts.map +1 -1
  3. package/dist/v3/assemblyStatus.js +23 -14
  4. package/dist/v3/englishInteger.d.ts +3 -0
  5. package/dist/v3/englishInteger.d.ts.map +1 -0
  6. package/dist/v3/englishInteger.js +12 -0
  7. package/dist/v3/lib/zodInputSemantics.d.ts +3 -1
  8. package/dist/v3/lib/zodInputSemantics.d.ts.map +1 -1
  9. package/dist/v3/lib/zodInputSemantics.js +17 -0
  10. package/dist/v3/robots/_ai-models.d.ts.map +1 -1
  11. package/dist/v3/robots/_ai-models.js +2 -0
  12. package/dist/v3/robots/_google-image-seed.d.ts +8 -0
  13. package/dist/v3/robots/_google-image-seed.d.ts.map +1 -0
  14. package/dist/v3/robots/_google-image-seed.js +11 -0
  15. package/dist/v3/robots/_image-describe-output.d.ts +55 -0
  16. package/dist/v3/robots/_image-describe-output.d.ts.map +1 -0
  17. package/dist/v3/robots/_image-describe-output.js +15 -0
  18. package/dist/v3/robots/_image-facedetect-output.d.ts +30 -0
  19. package/dist/v3/robots/_image-facedetect-output.d.ts.map +1 -0
  20. package/dist/v3/robots/_image-facedetect-output.js +14 -0
  21. package/dist/v3/robots/_index.d.ts +582 -48
  22. package/dist/v3/robots/_index.d.ts.map +1 -1
  23. package/dist/v3/robots/_index.js +84 -80
  24. package/dist/v3/robots/_instructions-primitives.d.ts +84 -0
  25. package/dist/v3/robots/_instructions-primitives.d.ts.map +1 -1
  26. package/dist/v3/robots/_instructions-primitives.js +57 -16
  27. package/dist/v3/robots/_ocr-output.d.ts +75 -0
  28. package/dist/v3/robots/_ocr-output.d.ts.map +1 -0
  29. package/dist/v3/robots/_ocr-output.js +14 -0
  30. package/dist/v3/robots/ai-chat.d.ts +13 -13
  31. package/dist/v3/robots/ai-chat.d.ts.map +1 -1
  32. package/dist/v3/robots/audio-encode.d.ts.map +1 -1
  33. package/dist/v3/robots/audio-encode.js +8 -1
  34. package/dist/v3/robots/audio-split.d.ts.map +1 -1
  35. package/dist/v3/robots/audio-split.js +2 -0
  36. package/dist/v3/robots/digitalocean-store.d.ts +4 -4
  37. package/dist/v3/robots/digitalocean-store.js +1 -1
  38. package/dist/v3/robots/document-convert.d.ts +8 -6
  39. package/dist/v3/robots/document-convert.d.ts.map +1 -1
  40. package/dist/v3/robots/document-convert.js +5 -5
  41. package/dist/v3/robots/document-extract.d.ts +4 -4
  42. package/dist/v3/robots/document-ocr.d.ts +8 -8
  43. package/dist/v3/robots/google-import.d.ts +4 -6
  44. package/dist/v3/robots/google-import.d.ts.map +1 -1
  45. package/dist/v3/robots/google-import.js +5 -2
  46. package/dist/v3/robots/google-store.d.ts +32 -8
  47. package/dist/v3/robots/google-store.d.ts.map +1 -1
  48. package/dist/v3/robots/google-store.js +14 -14
  49. package/dist/v3/robots/http-import.d.ts.map +1 -1
  50. package/dist/v3/robots/http-import.js +4 -0
  51. package/dist/v3/robots/image-bgremove.d.ts +16 -16
  52. package/dist/v3/robots/image-describe.d.ts +17 -17
  53. package/dist/v3/robots/image-describe.d.ts.map +1 -1
  54. package/dist/v3/robots/image-describe.js +2 -1
  55. package/dist/v3/robots/image-facedetect.d.ts +9 -35
  56. package/dist/v3/robots/image-facedetect.d.ts.map +1 -1
  57. package/dist/v3/robots/image-facedetect.js +1 -11
  58. package/dist/v3/robots/image-generate.d.ts +20 -20
  59. package/dist/v3/robots/image-generate.d.ts.map +1 -1
  60. package/dist/v3/robots/image-generate.js +7 -2
  61. package/dist/v3/robots/image-ocr.d.ts +8 -8
  62. package/dist/v3/robots/image-resize.d.ts +4 -0
  63. package/dist/v3/robots/image-resize.d.ts.map +1 -1
  64. package/dist/v3/robots/image-resize.js +34 -6
  65. package/dist/v3/robots/image-upscale.d.ts +17 -12
  66. package/dist/v3/robots/image-upscale.d.ts.map +1 -1
  67. package/dist/v3/robots/image-upscale.js +14 -2
  68. package/dist/v3/robots/mega-store.d.ts +4 -4
  69. package/dist/v3/robots/mega-store.js +1 -1
  70. package/dist/v3/robots/s3-store.d.ts +8 -8
  71. package/dist/v3/robots/s3-store.d.ts.map +1 -1
  72. package/dist/v3/robots/s3-store.js +34 -18
  73. package/dist/v3/robots/speech-transcribe.d.ts +12 -12
  74. package/dist/v3/robots/text-speak.d.ts +8 -8
  75. package/dist/v3/robots/text-translate.d.ts +8 -8
  76. package/dist/v3/robots/video-adaptive.d.ts +16 -19
  77. package/dist/v3/robots/video-adaptive.d.ts.map +1 -1
  78. package/dist/v3/robots/video-adaptive.js +37 -3
  79. package/dist/v3/robots/video-concat.d.ts.map +1 -1
  80. package/dist/v3/robots/video-concat.js +7 -3
  81. package/dist/v3/robots/video-encode.d.ts.map +1 -1
  82. package/dist/v3/robots/video-encode.js +6 -0
  83. package/dist/v3/robots/video-generate.d.ts +20 -20
  84. package/dist/v3/robots/video-generate.js +1 -1
  85. package/dist/v3/robots/video-merge.d.ts.map +1 -1
  86. package/dist/v3/robots/video-merge.js +15 -1
  87. package/dist/v3/robots/video-split.d.ts.map +1 -1
  88. package/dist/v3/robots/video-split.js +2 -0
  89. package/dist/v3/robots/video-subtitle.d.ts +47 -4
  90. package/dist/v3/robots/video-subtitle.d.ts.map +1 -1
  91. package/dist/v3/robots/video-subtitle.js +59 -46
  92. package/dist/v3/robots/video-thumbs.d.ts +6 -0
  93. package/dist/v3/robots/video-thumbs.d.ts.map +1 -1
  94. package/dist/v3/robots/video-thumbs.js +15 -5
  95. package/dist/v3/robots/vimeo-import.d.ts.map +1 -1
  96. package/dist/v3/robots/vimeo-import.js +1 -1
  97. package/dist/v3/robots/youtube-store.d.ts +37 -20
  98. package/dist/v3/robots/youtube-store.d.ts.map +1 -1
  99. package/dist/v3/robots/youtube-store.js +17 -29
  100. package/dist/v3/youtubeCategories.d.ts +20 -0
  101. package/dist/v3/youtubeCategories.d.ts.map +1 -0
  102. package/dist/v3/youtubeCategories.js +20 -0
  103. package/dist/v4/assemblyStatus.d.ts +75 -1183
  104. package/dist/v4/assemblyStatus.d.ts.map +1 -1
  105. package/dist/v4/assemblyStatus.js +23 -14
  106. package/dist/v4/englishInteger.d.ts +3 -0
  107. package/dist/v4/englishInteger.d.ts.map +1 -0
  108. package/dist/v4/englishInteger.js +12 -0
  109. package/dist/v4/lib/zodInputSemantics.d.ts +3 -1
  110. package/dist/v4/lib/zodInputSemantics.d.ts.map +1 -1
  111. package/dist/v4/lib/zodInputSemantics.js +6 -0
  112. package/dist/v4/robots/_ai-models.d.ts.map +1 -1
  113. package/dist/v4/robots/_ai-models.js +2 -0
  114. package/dist/v4/robots/_google-image-seed.d.ts +8 -0
  115. package/dist/v4/robots/_google-image-seed.d.ts.map +1 -0
  116. package/dist/v4/robots/_google-image-seed.js +11 -0
  117. package/dist/v4/robots/_image-describe-output.d.ts +23 -0
  118. package/dist/v4/robots/_image-describe-output.d.ts.map +1 -0
  119. package/dist/v4/robots/_image-describe-output.js +15 -0
  120. package/dist/v4/robots/_image-facedetect-output.d.ts +14 -0
  121. package/dist/v4/robots/_image-facedetect-output.d.ts.map +1 -0
  122. package/dist/v4/robots/_image-facedetect-output.js +15 -0
  123. package/dist/v4/robots/_index.d.ts +582 -48
  124. package/dist/v4/robots/_index.d.ts.map +1 -1
  125. package/dist/v4/robots/_index.js +84 -80
  126. package/dist/v4/robots/_instructions-primitives.d.ts +18 -0
  127. package/dist/v4/robots/_instructions-primitives.d.ts.map +1 -1
  128. package/dist/v4/robots/_instructions-primitives.js +56 -15
  129. package/dist/v4/robots/_ocr-output.d.ts +29 -0
  130. package/dist/v4/robots/_ocr-output.d.ts.map +1 -0
  131. package/dist/v4/robots/_ocr-output.js +14 -0
  132. package/dist/v4/robots/ai-chat.d.ts +1 -1
  133. package/dist/v4/robots/ai-chat.d.ts.map +1 -1
  134. package/dist/v4/robots/audio-encode.d.ts.map +1 -1
  135. package/dist/v4/robots/audio-encode.js +8 -1
  136. package/dist/v4/robots/audio-split.d.ts.map +1 -1
  137. package/dist/v4/robots/audio-split.js +2 -0
  138. package/dist/v4/robots/digitalocean-store.d.ts +8 -8
  139. package/dist/v4/robots/digitalocean-store.js +1 -1
  140. package/dist/v4/robots/document-convert.d.ts +22 -8
  141. package/dist/v4/robots/document-convert.d.ts.map +1 -1
  142. package/dist/v4/robots/document-convert.js +5 -5
  143. package/dist/v4/robots/google-import.d.ts +4 -4
  144. package/dist/v4/robots/google-import.d.ts.map +1 -1
  145. package/dist/v4/robots/google-import.js +5 -2
  146. package/dist/v4/robots/google-store.d.ts +16 -4
  147. package/dist/v4/robots/google-store.d.ts.map +1 -1
  148. package/dist/v4/robots/google-store.js +14 -14
  149. package/dist/v4/robots/http-import.d.ts.map +1 -1
  150. package/dist/v4/robots/http-import.js +4 -0
  151. package/dist/v4/robots/image-describe.d.ts +1 -5
  152. package/dist/v4/robots/image-describe.d.ts.map +1 -1
  153. package/dist/v4/robots/image-describe.js +2 -1
  154. package/dist/v4/robots/image-facedetect.d.ts +1 -11
  155. package/dist/v4/robots/image-facedetect.d.ts.map +1 -1
  156. package/dist/v4/robots/image-facedetect.js +1 -12
  157. package/dist/v4/robots/image-generate.d.ts +0 -4
  158. package/dist/v4/robots/image-generate.d.ts.map +1 -1
  159. package/dist/v4/robots/image-generate.js +6 -2
  160. package/dist/v4/robots/image-resize.d.ts +4 -0
  161. package/dist/v4/robots/image-resize.d.ts.map +1 -1
  162. package/dist/v4/robots/image-resize.js +34 -6
  163. package/dist/v4/robots/image-upscale.d.ts +5 -0
  164. package/dist/v4/robots/image-upscale.d.ts.map +1 -1
  165. package/dist/v4/robots/image-upscale.js +14 -2
  166. package/dist/v4/robots/mega-store.d.ts +8 -8
  167. package/dist/v4/robots/mega-store.js +1 -1
  168. package/dist/v4/robots/s3-store.d.ts +20 -0
  169. package/dist/v4/robots/s3-store.d.ts.map +1 -1
  170. package/dist/v4/robots/s3-store.js +34 -18
  171. package/dist/v4/robots/video-adaptive.d.ts +16 -16
  172. package/dist/v4/robots/video-adaptive.d.ts.map +1 -1
  173. package/dist/v4/robots/video-adaptive.js +38 -5
  174. package/dist/v4/robots/video-concat.d.ts.map +1 -1
  175. package/dist/v4/robots/video-concat.js +7 -3
  176. package/dist/v4/robots/video-encode.d.ts.map +1 -1
  177. package/dist/v4/robots/video-encode.js +6 -0
  178. package/dist/v4/robots/video-generate.d.ts +0 -4
  179. package/dist/v4/robots/video-generate.d.ts.map +1 -1
  180. package/dist/v4/robots/video-generate.js +1 -1
  181. package/dist/v4/robots/video-merge.d.ts.map +1 -1
  182. package/dist/v4/robots/video-merge.js +15 -1
  183. package/dist/v4/robots/video-split.d.ts.map +1 -1
  184. package/dist/v4/robots/video-split.js +2 -0
  185. package/dist/v4/robots/video-subtitle.d.ts +31 -4
  186. package/dist/v4/robots/video-subtitle.d.ts.map +1 -1
  187. package/dist/v4/robots/video-subtitle.js +58 -46
  188. package/dist/v4/robots/video-thumbs.d.ts +6 -0
  189. package/dist/v4/robots/video-thumbs.d.ts.map +1 -1
  190. package/dist/v4/robots/video-thumbs.js +15 -5
  191. package/dist/v4/robots/vimeo-import.d.ts.map +1 -1
  192. package/dist/v4/robots/vimeo-import.js +1 -1
  193. package/dist/v4/robots/youtube-store.d.ts +25 -76
  194. package/dist/v4/robots/youtube-store.d.ts.map +1 -1
  195. package/dist/v4/robots/youtube-store.js +18 -29
  196. package/dist/v4/youtubeCategories.d.ts +20 -0
  197. package/dist/v4/youtubeCategories.d.ts.map +1 -0
  198. package/dist/v4/youtubeCategories.js +20 -0
  199. package/package.json +2 -2
@@ -7,6 +7,8 @@ export const meta = {
7
7
  steps: {
8
8
  merged: {
9
9
  robot: '/video/merge',
10
+ preset: 'empty',
11
+ ffmpeg: { f: 'mp4' },
10
12
  use: [
11
13
  { name: ':original', as: 'image' },
12
14
  { name: ':original', as: 'audio' },
@@ -32,7 +34,12 @@ export const robotVideoMergeInstructionsSchema = robotBase
32
34
  .merge(robotUse)
33
35
  .merge(robotFFmpegVideo)
34
36
  .extend({
35
- robot: z.literal('/video/merge'),
37
+ // The robot literal's description supplies the Robot page introduction.
38
+ robot: z.literal('/video/merge').describe(`
39
+ When concatenating videos end-to-end, all inputs must have the same width and height, with or without a \`transition\`. For joining clips, use [🤖/video/concat](/docs/robots/video-concat/), which pre-transcodes inputs to matching specifications when needed.
40
+
41
+ When both \`preset\` and \`ffmpeg\` are omitted, this Robot uses the legacy \`"flash"\` preset and outputs FLV. Choose an output preset or set \`ffmpeg.f\` explicitly to select another format, such as \`"mp4"\`.
42
+ `),
36
43
  resize_strategy: resize_strategy.describe(`
37
44
  If the given width/height parameters are bigger than the input image's dimensions, then the \`resize_strategy\` determines how the image will be resized to match the provided width/height. See the [available resize strategies](/docs/topics/resize-strategies/).
38
45
  `),
@@ -88,6 +95,7 @@ Stacks the input media vertically. All streams need to have the same pixel forma
88
95
  The URL of an image to be merged with the audio or video. When this parameter is provided, the robot will download the image from the URL and merge it with the other media.
89
96
  `),
90
97
  sort_by: inputSortBySchema,
98
+ // Include join constraints in parameter help as well as the Robot introduction.
91
99
  transition: z
92
100
  .enum(['none', 'crossfade', 'fade_to_black'])
93
101
  .default('none')
@@ -97,12 +105,18 @@ The type of transition effect to apply between concatenated video clips. Only ap
97
105
  - \`"none"\` — No transition effect. Videos are joined end-to-end.
98
106
  - \`"crossfade"\` — A gradual blend from one clip to the next (both video and audio).
99
107
  - \`"fade_to_black"\` — The current clip fades out to black, then the next clip fades in from black.
108
+
109
+ Both \`"crossfade"\` and \`"fade_to_black"\` overlap adjacent clips and shorten the output by the applied \`transition_duration\` at each join. The applied duration is capped at half of the shorter clip in each pair.
110
+
111
+ All concatenated videos must have the same width and height, even when \`transition\` is \`"none"\`. For joining clips with different dimensions, use [🤖/video/concat](/docs/robots/video-concat/).
100
112
  `),
101
113
  transition_duration: z
102
114
  .number()
103
115
  .default(1)
104
116
  .describe(`
105
117
  The duration of the transition effect in seconds. Only applies when \`transition\` is not \`"none"\`. Supports float values (e.g., \`0.5\` for a 500ms transition) and must be greater than \`0\` whenever transitions are enabled. The applied transition is automatically capped at half of the shorter clip in each transition pair to prevent overlapping transitions.
118
+
119
+ For \`"crossfade"\`, this is the overlap duration where both clips are visible. For \`"fade_to_black"\`, the video fades out over approximately the first 20% of the transition and fades in over the remaining 80% (about 0.2 seconds out and 0.8 seconds in for a 1-second transition). Audio is crossfaded throughout the transition for both effects. Both effects shorten the output by the applied duration at each join.
106
120
  `),
107
121
  })
108
122
  .strict();
@@ -1 +1 @@
1
- {"version":3,"file":"video-split.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-split.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-split.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-split.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,8 @@ export const robotVideoSplitInstructionsSchema = robotBase
35
35
  .extend({
36
36
  robot: z.literal('/video/split').describe(`
37
37
  Splits a video into multiple segments based on an array of from/to durations. Each segment produces a separate output file. This is useful for cutting a video into parts, for example to insert ads later via [🤖/video/concat](/docs/robots/video-concat/).
38
+
39
+ For iPhone videos with spatial audio, see [iPhone spatial audio in 🤖/video/encode](/docs/robots/video-encode/#iphone-spatial-audio).
38
40
  `),
39
41
  segments: z
40
42
  .array(segmentSchema)
@@ -1,5 +1,12 @@
1
1
  import type { RobotDefinition, RobotMetaInput, RobotSchemaVariantTypes } from './_instructions-primitives.ts';
2
2
  import { z } from 'zod/v4';
3
+ /** Appearance defaults for the social caption preset, before customer overrides. */
4
+ export declare const videoSubtitleSocialStyle: {
5
+ font: string;
6
+ font_size: number;
7
+ bold: boolean;
8
+ outline_width: number;
9
+ };
3
10
  export declare const meta: RobotMetaInput;
4
11
  export declare const robotVideoSubtitleInstructionsSchema: z.ZodObject<{
5
12
  interpolate: z.ZodOptional<z.ZodUnion<readonly [z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodEnum<{
@@ -345,12 +352,17 @@ export declare const robotVideoSubtitleInstructionsSchema: z.ZodObject<{
345
352
  external: "external";
346
353
  burn: "burn";
347
354
  }>, z.ZodTransform<"burned" | "external", "burned" | "external" | "burn">>>;
355
+ style: z.ZodOptional<z.ZodEnum<{
356
+ social: "social";
357
+ }>>;
358
+ highlight_color: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
359
+ max_words_per_caption: z.ZodDefault<z.ZodNumber>;
348
360
  border_style: z.ZodDefault<z.ZodEnum<{
349
361
  box: "box";
350
362
  outline: "outline";
351
363
  shadow: "shadow";
352
364
  }>>;
353
- border_color: z.ZodDefault<z.ZodString>;
365
+ border_color: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
354
366
  font: z.ZodDefault<z.ZodString>;
355
367
  font_color: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
356
368
  font_size: z.ZodDefault<z.ZodNumber>;
@@ -716,12 +728,17 @@ export declare const robotVideoSubtitleInstructionsWithHiddenFieldsSchema: z.Zod
716
728
  external: "external";
717
729
  burn: "burn";
718
730
  }>, z.ZodTransform<"burned" | "external", "burned" | "external" | "burn">>>;
731
+ style: z.ZodOptional<z.ZodEnum<{
732
+ social: "social";
733
+ }>>;
734
+ highlight_color: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
735
+ max_words_per_caption: z.ZodDefault<z.ZodNumber>;
719
736
  border_style: z.ZodDefault<z.ZodEnum<{
720
737
  box: "box";
721
738
  outline: "outline";
722
739
  shadow: "shadow";
723
740
  }>>;
724
- border_color: z.ZodDefault<z.ZodString>;
741
+ border_color: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
725
742
  font: z.ZodDefault<z.ZodString>;
726
743
  font_color: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
727
744
  font_size: z.ZodDefault<z.ZodNumber>;
@@ -1087,12 +1104,17 @@ export declare const robotVideoSubtitleInstructionsWithHiddenFieldsSchema: z.Zod
1087
1104
  external: "external";
1088
1105
  burn: "burn";
1089
1106
  }>, z.ZodTransform<"burned" | "external", "burned" | "external" | "burn">>]>>;
1107
+ style: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEnum<{
1108
+ social: "social";
1109
+ }>]>>;
1110
+ highlight_color: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString]>>;
1111
+ max_words_per_caption: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1090
1112
  border_style: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodEnum<{
1091
1113
  box: "box";
1092
1114
  outline: "outline";
1093
1115
  shadow: "shadow";
1094
1116
  }>]>>;
1095
- border_color: z.ZodPrefault<z.ZodString>;
1117
+ border_color: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString]>>;
1096
1118
  font: z.ZodPrefault<z.ZodString>;
1097
1119
  font_color: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString]>>;
1098
1120
  font_size: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
@@ -1456,12 +1478,17 @@ export declare const robotVideoSubtitleInstructionsWithHiddenFieldsSchema: z.Zod
1456
1478
  external: "external";
1457
1479
  burn: "burn";
1458
1480
  }>, z.ZodTransform<"burned" | "external", "burned" | "external" | "burn">>]>>;
1481
+ style: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEnum<{
1482
+ social: "social";
1483
+ }>]>>;
1484
+ highlight_color: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString]>>;
1485
+ max_words_per_caption: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1459
1486
  border_style: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodEnum<{
1460
1487
  box: "box";
1461
1488
  outline: "outline";
1462
1489
  shadow: "shadow";
1463
1490
  }>]>>;
1464
- border_color: z.ZodPrefault<z.ZodString>;
1491
+ border_color: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString]>>;
1465
1492
  font: z.ZodPrefault<z.ZodString>;
1466
1493
  font_color: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString]>>;
1467
1494
  font_size: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
@@ -1 +1 @@
1
- {"version":3,"file":"video-subtitle.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-subtitle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-subtitle.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-subtitle.ts"],"names":[],"mappings":"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"}
@@ -3,53 +3,44 @@ import { z } from 'zod/v4';
3
3
  import { zodInputPreservingTransform } from "../lib/zodInputSemantics.js";
4
4
  import { stackVersions } from "../stackVersions.js";
5
5
  import { color_with_alpha, color_without_alpha, defineRobot, positionSchema, robotBase, robotFFmpegVideo, robotUse, robotVideoEncodingMeta, } from "./_instructions-primitives.js";
6
+ const subtitleColorSchema = z.union([color_without_alpha, color_with_alpha]);
7
+ const subtitleColorDescription = `Use \`"rgb"\`, \`"rrggbb"\`, or \`"aarrggbb"\` format, optionally prefixed with \`#\`. Three-digit colors are expanded to six digits. Colors without alpha are fully opaque. For eight-digit colors, the first two digits specify transparency (\`"00"\` is fully opaque, \`"ff"\` is fully transparent).`;
8
+ /** Appearance defaults for the social caption preset, before customer overrides. */
9
+ export const videoSubtitleSocialStyle = {
10
+ // Static Poppins faces are included by API2's shared fontsConf google-fonts package.
11
+ font: 'Poppins',
12
+ // ASS includes the font's ascent and descent; Poppins capitals occupy about 40% of it.
13
+ font_size: 54,
14
+ bold: true,
15
+ outline_width: 2,
16
+ };
6
17
  export const meta = {
7
18
  ...robotVideoEncodingMeta,
8
19
  example_code: {
9
20
  steps: {
10
- add_english_subtitles: {
11
- robot: '/video/subtitle',
12
- use: {
13
- steps: [
14
- {
15
- name: ':original',
16
- fields: 'input_video',
17
- as: 'video',
18
- },
19
- {
20
- name: ':original',
21
- fields: 'input_srt_en',
22
- as: 'subtitles',
23
- },
24
- ],
25
- },
26
- language: 'eng',
27
- name: 'English',
28
- ffmpeg_stack: stackVersions.ffmpeg.recommendedVersion,
21
+ transcript: {
22
+ robot: '/speech/transcribe',
23
+ use: ':original',
24
+ provider: 'aws',
25
+ format: 'json',
26
+ source_language: 'en-US',
29
27
  },
30
- add_german_subtitles: {
28
+ captioned: {
31
29
  robot: '/video/subtitle',
32
30
  use: {
33
31
  steps: [
34
- {
35
- name: 'add_english_subtitles',
36
- as: 'video',
37
- },
38
- {
39
- name: ':original',
40
- fields: 'input_srt_de',
41
- as: 'subtitles',
42
- },
32
+ { name: ':original', as: 'video' },
33
+ { name: 'transcript', as: 'subtitles' },
43
34
  ],
44
35
  },
45
- language: 'deu',
46
- name: 'Deutsch',
47
- keep_subtitles: true,
36
+ subtitles_type: 'burned',
37
+ preset: 'empty',
38
+ style: 'social',
48
39
  ffmpeg_stack: stackVersions.ffmpeg.recommendedVersion,
49
40
  },
50
41
  },
51
42
  },
52
- example_code_description: 'If you have file input fields in a form — one for a video and one for each subtitle language (named `input_video`, `input_srt_en`, and `input_srt_de` via the HTML `name` attribute) — here’s how to add multiple subtitle streams with language tags to the video. Chain multiple `/video/subtitle` Steps with `keep_subtitles` set to `true` so each new stream is added alongside existing ones:',
43
+ example_code_description: 'Transcribe an uploaded video into timestamped words, then burn in uppercase social captions with the spoken word highlighted. Captions normally contain up to three words, breaking at sentence endings and pauses longer than 0.4 seconds. A trailing function word can move to the next caption, allowing one extra word there:',
53
44
  purpose_sentence: 'adds subtitles and closed captions to videos',
54
45
  purpose_verb: 'subtitle',
55
46
  purpose_word: 'subtitle',
@@ -63,12 +54,32 @@ export const robotVideoSubtitleInstructionsSchema = robotBase
63
54
  .merge(robotFFmpegVideo)
64
55
  .extend({
65
56
  robot: z.literal('/video/subtitle').describe(`
66
- This <dfn>Robot</dfn> supports both SRT and VTT subtitle files.
57
+ This <dfn>Robot</dfn> supports SRT, VTT, ASS, and the timestamped JSON output of \`/speech/transcribe\` with \`"format": "json"\`. Pass the video as \`"video"\` and the transcript as \`"subtitles"\` in the \`use\` parameter. JSON words are grouped into captions and converted to ASS for burned word highlighting, or plain SRT cues for external subtitle streams. External JSON cues preserve casing and punctuation. Provider segments do not control caption breaks. SRT and VTT timing is preserved.
58
+
59
+ Without a \`preset\` or custom \`ffmpeg\` options, the legacy \`"flash"\` preset produces FLV output. With this default, burned subtitles use MP3 audio; external subtitles copy the input audio. Set \`"preset": "empty"\` to keep the input container, such as MP4 for an MP4 input.
67
60
  `),
68
61
  subtitles_type: zodInputPreservingTransform(z.enum(['burned', 'external', 'burn']), (val) => val === 'burn' ? 'burned' : val)
69
62
  .default('external')
70
63
  .describe(`
71
64
  Determines if subtitles are added as a separate stream to the video (value \`"external"\`) that then can be switched on and off in your video player, or if they should be burned directly into the video (value \`"burned"\` or \`"burn"\`) so that they become part of the video stream.
65
+ `),
66
+ style: optionalWithV3Semantics(z
67
+ .enum(['social']))
68
+ .describe(`
69
+ Applies a ready-made appearance for burned subtitles: heavy Poppins text and a large font scaled with the video height. JSON captions render in uppercase in the lower third with a thick outline and a soft black shadow. Each caption grows from 85% to full size over 120 milliseconds, then its words stay in place while the highlight changes color. The transcript file is preserved. Existing styling parameters override the preset. ASS files retain their own styles. With timestamped JSON from \`/speech/transcribe\`, the active word is highlighted until the next word or caption starts; other words use \`font_color\`. Trailing commas and periods are omitted from social JSON captions; question marks and exclamation marks are preserved. Word highlighting and grouping require JSON input.
70
+ `),
71
+ highlight_color: subtitleColorSchema.default('FFD60A').describe(`
72
+ The accent color of the active word in JSON subtitles. Only applies to burned JSON subtitles. With \`"style": "social"\`, the previous word stays highlighted through short gaps until the next word or caption starts. Without the social style, gaps use \`font_color\` for the entire caption.
73
+
74
+ ${subtitleColorDescription}
75
+ `),
76
+ max_words_per_caption: z
77
+ .number()
78
+ .int()
79
+ .min(1)
80
+ .default(3)
81
+ .describe(`
82
+ The target maximum number of timestamped JSON words shown in a caption. Captions break earlier at sentence-ending punctuation or pauses longer than 0.4 seconds. With \`"style": "social"\`, a trailing English function word such as “by,” “to,” or “the” moves to the next caption when possible, allowing at most one extra word in that caption. Single-word captions are preserved when the limit is 1. A caption stays visible until the next caption starts when the pause is at most 0.4 seconds, and disappears at its last word’s end during longer pauses. Does not change SRT, VTT, or ASS cues.
72
83
  `),
73
84
  border_style: z
74
85
  .enum(['box', 'outline', 'shadow'])
@@ -76,23 +87,24 @@ Determines if subtitles are added as a separate stream to the video (value \`"ex
76
87
  .describe(`
77
88
  Specifies the style of the subtitle. Use the \`border_color\` parameter to specify the color of the border.
78
89
  `),
79
- border_color: color_with_alpha.default('40000000').describe(`
80
- The color for the subtitle border. The first two hex digits specify the alpha value of the color.
90
+ border_color: subtitleColorSchema.default('000000').describe(`
91
+ The color for the subtitle border. The default is opaque black. Only applies to burned subtitles.
92
+
93
+ ${subtitleColorDescription}
81
94
  `),
82
95
  // TODO: Make font an enum
83
96
  font: z
84
97
  .string()
85
98
  .default('Arial')
86
99
  .describe(`
87
- The font family to use. Also includes boldness and style of the font.
100
+ The font family to use. Also includes boldness and style of the font. With \`"style": "social"\`, the default is Poppins, using its ExtraBold weight for JSON captions. An explicit font overrides the style.
88
101
 
89
102
  [Here](/docs/supported-formats/fonts/) is a list of all supported fonts.
90
103
  `),
91
- font_color: z
92
- .union([color_without_alpha, color_with_alpha])
93
- .default('FFFFFF')
94
- .describe(`
95
- The color of the subtitle text in \`"rgb"\`, \`"rrggbb"\`, or \`"aarrggbb"\` format. If 8 hex digits are provided, the first two specify the alpha value of the color (\`"00"\` is fully opaque, \`"ff"\` is fully transparent).
104
+ font_color: subtitleColorSchema.default('FFFFFF').describe(`
105
+ The color of the subtitle text. Only applies to burned subtitles.
106
+
107
+ ${subtitleColorDescription}
96
108
  `),
97
109
  font_size: z
98
110
  .number()
@@ -100,13 +112,13 @@ The color of the subtitle text in \`"rgb"\`, \`"rrggbb"\`, or \`"aarrggbb"\` for
100
112
  .min(1)
101
113
  .default(16)
102
114
  .describe(`
103
- Specifies the size of the text.
115
+ Specifies the size of the text in the 288-pixel subtitle coordinate space, scaled with the video height. With \`"style": "social"\`, the default is 54. Poppins capital letters are about 7.5% of the video height at this size. An explicit value overrides the style.
104
116
  `),
105
117
  bold: z
106
118
  .boolean()
107
119
  .default(false)
108
120
  .describe(`
109
- Specifies whether the subtitle text should be bold. Only applies to burned subtitles.
121
+ Specifies whether the subtitle text should be bold. Only applies to burned subtitles. With \`"style": "social"\`, the default is \`true\`; an explicit \`false\` overrides the style.
110
122
  `),
111
123
  italic: z
112
124
  .boolean()
@@ -121,10 +133,10 @@ Specifies whether the subtitle text should be italic. Only applies to burned sub
121
133
  .max(10))
122
134
  .nullable()
123
135
  .describe(`
124
- Specifies the width of the text outline in pixels. Only applies to burned subtitles with \`"outline"\` or \`"box"\` border styles. If not specified, the default width is used.
136
+ Specifies the width of the text outline in the 288-pixel subtitle coordinate space, scaled with the video height. Numeric strings such as \`"4"\` are also accepted. Only applies to burned subtitles with \`"outline"\` or \`"box"\` border styles. If omitted or \`null\`, the default width is used (2 with \`"style": "social"\`, about 3.7 pixels on a video 534 pixels high).
125
137
  `),
126
138
  position: positionSchema.default('bottom').describe(`
127
- Specifies the position of the subtitles.
139
+ Specifies the position of the subtitles. With \`"style": "social"\`, the default bottom position places JSON captions in the lower third. An explicit value overrides the style.
128
140
  `),
129
141
  language: optionalWithV3Semantics(z
130
142
  .string())
@@ -2,6 +2,12 @@ import type { RobotDefinition, RobotMetaInput, RobotSchemaVariantTypes } from '.
2
2
  import { z } from 'zod/v4';
3
3
  /** Markup over the AI provider cost for smart thumbnail selection. */
4
4
  export declare const smartThumbnailMarkupPercent = 50;
5
+ /** Dedicated vision model so /ai/chat default upgrades do not change thumbnail analysis costs. */
6
+ export declare const smartThumbnailModel = "openai/gpt-5.4-mini";
7
+ /** Maximum long-side dimension of scoring previews; returned thumbnails keep their output size. */
8
+ export declare const smartThumbnailAnalysisMaxSize = 512;
9
+ /** Frame ranking needs little reasoning compared with general-purpose chat. */
10
+ export declare const smartThumbnailReasoningEffort = "low";
5
11
  /** Candidate-pool size shared by smart thumbnail execution and its documented default example. */
6
12
  export declare function getSmartThumbnailCandidateCount(count: number, maximumCandidates: number): number;
7
13
  export declare const meta: RobotMetaInput;
@@ -1 +1 @@
1
- {"version":3,"file":"video-thumbs.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-thumbs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,uBAAuB,EACxB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAe1B,sEAAsE;AACtE,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAO7C,kGAAkG;AAClG,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED,eAAO,MAAM,IAAI,EAAE,cAmBlB,CAAA;AAED,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwGpC,CAAA;AAEX,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,OAAO,kCAAkC,CAAC,KAAK,CACtC,CAAA;AAEvD,eAAO,MACa,kDAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBACpD,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAChC,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAC/E,CAAA;AAEnB,KAAK,YAAY,GAAG,uBAAuB,CAAC,OAAO,eAAe,CAAC,CAAA;AAEnE,MAAM,MAAM,4BAA4B,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AACjE,MAAM,MAAM,4CAA4C,GAAG,YAAY,CAAC,cAAc,CAAC,CAAA;AACvF,MAAM,MAAM,0CAA0C,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAA;AAC5F,MAAM,MAAM,+CAA+C,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAA;AACjG,MAAM,MAAM,0DAA0D,GACpE,YAAY,CAAC,4BAA4B,CAAC,CAAA;AAC5C,MAAM,MAAM,+DAA+D,GACzE,YAAY,CAAC,2BAA2B,CAAC,CAAA"}
1
+ {"version":3,"file":"video-thumbs.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-thumbs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,uBAAuB,EACxB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAe1B,sEAAsE;AACtE,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAE7C,kGAAkG;AAClG,eAAO,MAAM,mBAAmB,wBAAkE,CAAA;AAElG,mGAAmG;AACnG,eAAO,MAAM,6BAA6B,MAAM,CAAA;AAEhD,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,QAAQ,CAAA;AAOlD,kGAAkG;AAClG,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED,eAAO,MAAM,IAAI,EAAE,cAmBlB,CAAA;AAED,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4GpC,CAAA;AAEX,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,OAAO,kCAAkC,CAAC,KAAK,CACtC,CAAA;AAEvD,eAAO,MACa,kDAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBACpD,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAChC,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAC/E,CAAA;AAEnB,KAAK,YAAY,GAAG,uBAAuB,CAAC,OAAO,eAAe,CAAC,CAAA;AAEnE,MAAM,MAAM,4BAA4B,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AACjE,MAAM,MAAM,4CAA4C,GAAG,YAAY,CAAC,cAAc,CAAC,CAAA;AACvF,MAAM,MAAM,0CAA0C,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAA;AAC5F,MAAM,MAAM,+CAA+C,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAA;AACjG,MAAM,MAAM,0DAA0D,GACpE,YAAY,CAAC,4BAA4B,CAAC,CAAA;AAC5C,MAAM,MAAM,+DAA+D,GACzE,YAAY,CAAC,2BAA2B,CAAC,CAAA"}
@@ -4,6 +4,12 @@ import { stackVersions } from "../stackVersions.js";
4
4
  import { color_with_alpha, createProcessingExample, defineRobot, percentageSchema, resize_strategy, robotBase, robotFFmpeg, robotUse, robotVideoEncodingMeta, } from "./_instructions-primitives.js";
5
5
  /** Markup over the AI provider cost for smart thumbnail selection. */
6
6
  export const smartThumbnailMarkupPercent = 50;
7
+ /** Dedicated vision model so /ai/chat default upgrades do not change thumbnail analysis costs. */
8
+ export const smartThumbnailModel = 'openai/gpt-5.4-mini';
9
+ /** Maximum long-side dimension of scoring previews; returned thumbnails keep their output size. */
10
+ export const smartThumbnailAnalysisMaxSize = 512;
11
+ /** Frame ranking needs little reasoning compared with general-purpose chat. */
12
+ export const smartThumbnailReasoningEffort = 'low';
7
13
  const thumbnailCountSchema = z.number().int().min(1).max(999).default(8);
8
14
  const smartMaximumCandidatesSchema = z.number().int().min(2).max(100).default(20);
9
15
  const defaultThumbnailCount = thumbnailCountSchema.parse(undefined);
@@ -36,13 +42,15 @@ export const robotVideoThumbsInstructionsSchema = robotBase
36
42
  .merge(robotFFmpeg)
37
43
  .extend({
38
44
  robot: z.literal('/video/thumbs').describe(`
39
- Set \`smart: true\` to select strong preview images with AI instead of taking frames only at regular intervals. The Robot scores candidate frames for clarity, brightness, composition, faces, expressions, action, and visual interest, then returns the best \`count\` frames in chronological order. Smart results include \`file.meta.smart_score\` and \`file.meta.smart_reasons\`. If AI scoring is unavailable, the Assembly continues with the candidate frames in fallback order. No AI credentials are required.
45
+ Set \`smart: true\` to select strong preview images with AI instead of taking frames only at regular intervals. The Robot scores candidate frames for clarity, brightness, composition, faces, expressions, action, and visual interest, then returns the best \`count\` frames in chronological order. Smart results include \`file.meta.smart_score\` and \`file.meta.smart_reasons\`. If AI scoring is unavailable, the Assembly continues with the candidate frames in fallback order and includes a warning. No AI credentials are required.
40
46
 
41
47
  ## AI pricing
42
48
 
43
- Regular \`/video/thumbs\` processing charges still apply. AI frame analysis is billed separately at the underlying provider cost plus a ${smartThumbnailMarkupPercent}% Transloadit markup. The exact AI charge varies with the number of candidate frames, the internally selected model and provider pricing, and the image payload size.
49
+ Regular \`/video/thumbs\` processing charges still apply. AI frame analysis is billed separately at the underlying provider cost plus a ${smartThumbnailMarkupPercent}% Transloadit markup. Smart selection uses the dedicated \`${smartThumbnailModel}\` vision model with \`${smartThumbnailReasoningEffort}\` reasoning, independently of the \`/ai/chat\` default. The exact AI charge varies with the number of candidate frames and provider pricing.
44
50
 
45
- \`smart_max_candidates\` is the main cost and latency control. The Robot analyzes up to three candidates per requested thumbnail, capped by \`smart_max_candidates\`, but never fewer than \`count\`. With the defaults of \`count: ${defaultThumbnailCount}\` and \`smart_max_candidates: ${defaultSmartMaximumCandidates}\`, it analyzes ${getSmartThumbnailCandidateCount(defaultThumbnailCount, defaultSmartMaximumCandidates)} frames and returns the best ${defaultThumbnailCount}. Lower the candidate limit to reduce AI cost and latency; raise it to give the AI more frames to choose from.
51
+ The AI scores preview copies capped at ${smartThumbnailAnalysisMaxSize} pixels on the long side, preserving aspect ratio and without enlarging smaller images. Returned thumbnails keep the requested output dimensions and format; larger outputs do not increase the scoring preview beyond this limit.
52
+
53
+ \`smart_max_candidates\` is the main cost and latency control. The Robot analyzes up to three candidates per requested thumbnail, capped by \`smart_max_candidates\`, but never fewer than \`count\`. With the defaults of \`count: ${defaultThumbnailCount}\` and \`smart_max_candidates: ${defaultSmartMaximumCandidates}\`, it analyzes ${getSmartThumbnailCandidateCount(defaultThumbnailCount, defaultSmartMaximumCandidates)} frames and returns the best ${defaultThumbnailCount}. Lower the candidate limit to reduce AI cost and latency. Raising it can enlarge the pool up to three times \`count\`; higher limits have no effect.
46
54
 
47
55
  > [!Note]
48
56
  > Use \`count\` with smart selection. To consistently extract exact timestamps with \`offsets\`, set \`smart: false\`.
@@ -121,17 +129,19 @@ The AI evaluates frames based on:
121
129
  - Action and motion (avoiding transition frames)
122
130
  - Overall visual interest
123
131
 
124
- Regular \`/video/thumbs\` processing charges still apply. AI frame analysis is billed separately at the underlying provider cost plus a ${smartThumbnailMarkupPercent}% Transloadit markup. You do not need to provide AI credentials.
132
+ Regular \`/video/thumbs\` processing charges still apply. AI frame analysis uses a dedicated low-cost vision model with \`${smartThumbnailReasoningEffort}\` reasoning and preview copies capped at ${smartThumbnailAnalysisMaxSize} pixels on the long side. Returned thumbnails retain their requested dimensions and format. Analysis is billed separately at the underlying provider cost plus a ${smartThumbnailMarkupPercent}% Transloadit markup. You do not need to provide AI credentials.
125
133
 
126
134
  Smart mode generates its own regularly spaced candidate timestamps; use \`smart: false\` with \`offsets\` when you need specified timestamps. Selected smart thumbnails are returned in chronological order, not score order. Inspect \`meta.thumb_offset\`, \`meta.smart_score\`, and \`meta.smart_reasons\` when evaluating the selection.
127
135
 
128
- If AI scoring fails, the Robot selects from the extracted candidates in chronological order and records a fallback reason. If no candidates can be extracted, it attempts standard thumbnail extraction. A completed Assembly does not guarantee a representative or publication-safe poster; check that outputs exist and apply your application’s review policy.
136
+ If AI scoring fails, the Robot selects extracted candidates in chronological order and records a fallback reason. With no candidates, it attempts standard extraction. Both fallbacks add an Assembly warning. A completed Assembly does not guarantee a representative or publication-safe poster; check that outputs exist and apply your application’s review policy.
129
137
  `),
130
138
  smart_max_candidates: smartMaximumCandidatesSchema.describe(`
131
139
  The maximum size of the candidate pool when \`smart\` is \`true\`. The Robot analyzes up to three candidates per requested thumbnail, capped by this value, but it will never analyze fewer candidates than the requested \`count\`.
132
140
 
133
141
  A higher number may yield better results but increases processing time and AI cost. With the defaults of \`count: ${defaultThumbnailCount}\` and \`smart_max_candidates: ${defaultSmartMaximumCandidates}\`, the Robot analyzes ${getSmartThumbnailCandidateCount(defaultThumbnailCount, defaultSmartMaximumCandidates)} frames and returns the best ${defaultThumbnailCount} in chronological order.
134
142
 
143
+ Raising this limit above three times \`count\` does not enlarge the pool. For example, \`count: 1\` analyzes at most three candidates.
144
+
135
145
  This parameter is only used when \`smart\` is \`true\`.
136
146
  `),
137
147
  })
@@ -1 +1 @@
1
- {"version":3,"file":"vimeo-import.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/vimeo-import.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpF,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAW1B,eAAO,MAAM,IAAI,EAAE,cAwBlB,CAAA;AAED,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAmCpC,CAAA;AAEX,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAC7F,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAElG,eAAO,MAAM,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE5D,CAAA;AACD,MAAM,MAAM,0CAA0C,GACpD,+CAA+C,CAAA;AAEjD,MAAM,MAAM,+CAA+C,GAAG,CAAC,CAAC,KAAK,CACnE,OAAO,gDAAgD,CACxD,CAAA;AAED,eAAO,MAAM,kDAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAU3D,CAAA;AAEJ,eAAO,MAAM,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE5E,CAAA;AACD,MAAM,MAAM,0DAA0D,GAAG,CAAC,CAAC,KAAK,CAC9E,OAAO,gEAAgE,CACxE,CAAA;AACD,MAAM,MAAM,+DAA+D,GAAG,CAAC,CAAC,KAAK,CACnF,OAAO,gEAAgE,CACxE,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,OAAO,gDAAgD,EACvD,OAAO,gEAAgE,CAKxE,CAAA"}
1
+ {"version":3,"file":"vimeo-import.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/vimeo-import.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpF,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAW1B,eAAO,MAAM,IAAI,EAAE,cAwBlB,CAAA;AAED,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqCpC,CAAA;AAEX,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAC7F,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAElG,eAAO,MAAM,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE5D,CAAA;AACD,MAAM,MAAM,0CAA0C,GACpD,+CAA+C,CAAA;AAEjD,MAAM,MAAM,+CAA+C,GAAG,CAAC,CAAC,KAAK,CACnE,OAAO,gDAAgD,CACxD,CAAA;AAED,eAAO,MAAM,kDAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAU3D,CAAA;AAEJ,eAAO,MAAM,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE5E,CAAA;AACD,MAAM,MAAM,0DAA0D,GAAG,CAAC,CAAC,KAAK,CAC9E,OAAO,gEAAgE,CACxE,CAAA;AACD,MAAM,MAAM,+DAA+D,GAAG,CAAC,CAAC,KAAK,CACnF,OAAO,gEAAgE,CACxE,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,OAAO,gDAAgD,EACvD,OAAO,gEAAgE,CAKxE,CAAA"}
@@ -59,7 +59,7 @@ You can also use an array of path strings here to import multiple paths in the s
59
59
  rendition: z
60
60
  .enum(['240p', '360p', '540p', '720p', '1080p', 'source'])
61
61
  .default('720p')
62
- .describe('The quality of the video to import.'),
62
+ .describe('The quality of the video to import. Use `source` for the original upload. Source availability depends on video permissions, your Vimeo account, the access token’s `video_files` scope, and whether Vimeo has retained the source file. The import fails with an error if the source file is unavailable.'),
63
63
  })
64
64
  .strict();
65
65
  export const interpolatableRobotVimeoImportInstructionsSchema = interpolateRobot(robotVimeoImportInstructionsSchema);
@@ -1,4 +1,4 @@
1
- import type { RobotDefinition, RobotMetaInput, RobotSchemaVariantTypes } from './_instructions-primitives.ts';
1
+ import type { RobotDefinitionWithHiddenFields, RobotMetaInput, RobotSchemaVariantTypes } from './_instructions-primitives.ts';
2
2
  import { z } from 'zod/v4';
3
3
  export declare const meta: RobotMetaInput;
4
4
  export declare const robotYoutubeStoreInstructionsSchema: z.ZodObject<{
@@ -38,30 +38,20 @@ export declare const robotYoutubeStoreInstructionsSchema: z.ZodObject<{
38
38
  credentials: z.ZodString;
39
39
  title: z.ZodString;
40
40
  description: z.ZodString;
41
- category: z.ZodPreprocess<z.ZodEnum<{
42
- "autos & vehicles": "autos & vehicles";
43
- comedy: "comedy";
44
- education: "education";
45
- entertainment: "entertainment";
46
- "film & animation": "film & animation";
47
- gaming: "gaming";
48
- "howto & style": "howto & style";
49
- music: "music";
50
- "news & politics": "news & politics";
51
- "people & blogs": "people & blogs";
52
- "pets & animals": "pets & animals";
53
- "science & technology": "science & technology";
54
- sports: "sports";
55
- "travel & events": "travel & events";
56
- }>>;
41
+ category: z.ZodType<"autos & vehicles" | "comedy" | "education" | "entertainment" | "film & animation" | "gaming" | "howto & style" | "music" | "news & politics" | "people & blogs" | "pets & animals" | "science & technology" | "sports" | "travel & events", unknown, z.core.$ZodTypeInternals<"autos & vehicles" | "comedy" | "education" | "entertainment" | "film & animation" | "gaming" | "howto & style" | "music" | "news & politics" | "people & blogs" | "pets & animals" | "science & technology" | "sports" | "travel & events", unknown>>;
57
42
  keywords: z.ZodString;
58
- visibility: z.ZodEnum<{
43
+ visibility: z.ZodDefault<z.ZodEnum<{
59
44
  private: "private";
60
45
  public: "public";
61
46
  unlisted: "unlisted";
62
- }>;
47
+ }>>;
63
48
  }, z.core.$strict>;
64
- export declare const robotDefinition: RobotDefinition<typeof robotYoutubeStoreInstructionsSchema.shape>;
49
+ declare const hiddenFields: {
50
+ access_token: z.ZodOptional<z.ZodString>;
51
+ credentials: z.ZodOptional<z.ZodString>;
52
+ refresh_token: z.ZodOptional<z.ZodString>;
53
+ };
54
+ export declare const robotDefinition: RobotDefinitionWithHiddenFields<typeof robotYoutubeStoreInstructionsSchema.shape, typeof hiddenFields>;
65
55
  export declare const robotYoutubeStoreInstructionsWithHiddenFieldsSchema: z.ZodObject<{
66
56
  interpolate: z.ZodOptional<z.ZodUnion<readonly [z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodEnum<{
67
57
  true: "true";
@@ -95,32 +85,19 @@ export declare const robotYoutubeStoreInstructionsWithHiddenFieldsSchema: z.ZodO
95
85
  fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
96
86
  }, z.core.$strict>]>>;
97
87
  robot: z.ZodLiteral<"/youtube/store">;
98
- credentials: z.ZodString;
99
88
  title: z.ZodString;
100
89
  description: z.ZodString;
101
- category: z.ZodPreprocess<z.ZodEnum<{
102
- "autos & vehicles": "autos & vehicles";
103
- comedy: "comedy";
104
- education: "education";
105
- entertainment: "entertainment";
106
- "film & animation": "film & animation";
107
- gaming: "gaming";
108
- "howto & style": "howto & style";
109
- music: "music";
110
- "news & politics": "news & politics";
111
- "people & blogs": "people & blogs";
112
- "pets & animals": "pets & animals";
113
- "science & technology": "science & technology";
114
- sports: "sports";
115
- "travel & events": "travel & events";
116
- }>>;
90
+ category: z.ZodType<"autos & vehicles" | "comedy" | "education" | "entertainment" | "film & animation" | "gaming" | "howto & style" | "music" | "news & politics" | "people & blogs" | "pets & animals" | "science & technology" | "sports" | "travel & events", unknown, z.core.$ZodTypeInternals<"autos & vehicles" | "comedy" | "education" | "entertainment" | "film & animation" | "gaming" | "howto & style" | "music" | "news & politics" | "people & blogs" | "pets & animals" | "science & technology" | "sports" | "travel & events", unknown>>;
117
91
  keywords: z.ZodString;
118
- visibility: z.ZodEnum<{
92
+ visibility: z.ZodDefault<z.ZodEnum<{
119
93
  private: "private";
120
94
  public: "public";
121
95
  unlisted: "unlisted";
122
- }>;
96
+ }>>;
123
97
  result: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"debug">, z.ZodDefault<z.ZodBoolean>]>>;
98
+ access_token: z.ZodOptional<z.ZodString>;
99
+ credentials: z.ZodOptional<z.ZodString>;
100
+ refresh_token: z.ZodOptional<z.ZodString>;
124
101
  }, z.core.$strict>, interpolatableRobotYoutubeStoreInstructionsSchema: z.ZodObject<{
125
102
  interpolate: z.ZodOptional<z.ZodUnion<readonly [z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodEnum<{
126
103
  true: "true";
@@ -158,28 +135,13 @@ export declare const robotYoutubeStoreInstructionsWithHiddenFieldsSchema: z.ZodO
158
135
  credentials: z.ZodString;
159
136
  title: z.ZodString;
160
137
  description: z.ZodString;
161
- category: z.ZodPreprocess<z.ZodEnum<{
162
- "autos & vehicles": "autos & vehicles";
163
- comedy: "comedy";
164
- education: "education";
165
- entertainment: "entertainment";
166
- "film & animation": "film & animation";
167
- gaming: "gaming";
168
- "howto & style": "howto & style";
169
- music: "music";
170
- "news & politics": "news & politics";
171
- "people & blogs": "people & blogs";
172
- "pets & animals": "pets & animals";
173
- "science & technology": "science & technology";
174
- sports: "sports";
175
- "travel & events": "travel & events";
176
- }>>;
138
+ category: z.ZodType<"autos & vehicles" | "comedy" | "education" | "entertainment" | "film & animation" | "gaming" | "howto & style" | "music" | "news & politics" | "people & blogs" | "pets & animals" | "science & technology" | "sports" | "travel & events", unknown, z.core.$ZodTypeInternals<"autos & vehicles" | "comedy" | "education" | "entertainment" | "film & animation" | "gaming" | "howto & style" | "music" | "news & politics" | "people & blogs" | "pets & animals" | "science & technology" | "sports" | "travel & events", unknown>>;
177
139
  keywords: z.ZodString;
178
- visibility: z.ZodUnion<[z.ZodString, z.ZodEnum<{
140
+ visibility: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodEnum<{
179
141
  private: "private";
180
142
  public: "public";
181
143
  unlisted: "unlisted";
182
- }>]>;
144
+ }>]>>;
183
145
  }, z.core.$strict>, interpolatableRobotYoutubeStoreInstructionsWithHiddenFieldsSchema: z.ZodObject<{
184
146
  interpolate: z.ZodOptional<z.ZodUnion<readonly [z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodEnum<{
185
147
  true: "true";
@@ -213,32 +175,19 @@ export declare const robotYoutubeStoreInstructionsWithHiddenFieldsSchema: z.ZodO
213
175
  fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
214
176
  }, z.core.$strict>]>>;
215
177
  robot: z.ZodLiteral<"/youtube/store">;
216
- credentials: z.ZodString;
217
178
  title: z.ZodString;
218
179
  description: z.ZodString;
219
- category: z.ZodPreprocess<z.ZodEnum<{
220
- "autos & vehicles": "autos & vehicles";
221
- comedy: "comedy";
222
- education: "education";
223
- entertainment: "entertainment";
224
- "film & animation": "film & animation";
225
- gaming: "gaming";
226
- "howto & style": "howto & style";
227
- music: "music";
228
- "news & politics": "news & politics";
229
- "people & blogs": "people & blogs";
230
- "pets & animals": "pets & animals";
231
- "science & technology": "science & technology";
232
- sports: "sports";
233
- "travel & events": "travel & events";
234
- }>>;
180
+ category: z.ZodType<"autos & vehicles" | "comedy" | "education" | "entertainment" | "film & animation" | "gaming" | "howto & style" | "music" | "news & politics" | "people & blogs" | "pets & animals" | "science & technology" | "sports" | "travel & events", unknown, z.core.$ZodTypeInternals<"autos & vehicles" | "comedy" | "education" | "entertainment" | "film & animation" | "gaming" | "howto & style" | "music" | "news & politics" | "people & blogs" | "pets & animals" | "science & technology" | "sports" | "travel & events", unknown>>;
235
181
  keywords: z.ZodString;
236
- visibility: z.ZodUnion<[z.ZodString, z.ZodEnum<{
182
+ visibility: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodEnum<{
237
183
  private: "private";
238
184
  public: "public";
239
185
  unlisted: "unlisted";
240
- }>]>;
186
+ }>]>>;
241
187
  result: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodUnion<[z.ZodString, z.ZodLiteral<"debug">]>, z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>]>>;
188
+ access_token: z.ZodOptional<z.ZodString>;
189
+ credentials: z.ZodOptional<z.ZodString>;
190
+ refresh_token: z.ZodOptional<z.ZodString>;
242
191
  }, z.core.$strict>;
243
192
  type Instructions = RobotSchemaVariantTypes<typeof robotDefinition>;
244
193
  export type RobotYoutubeStoreInstructions = Instructions['output'];