cutsdk 0.0.1 → 1.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 (439) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +127 -0
  3. package/dist/api/audios/add-audios.d.ts +3 -0
  4. package/dist/api/audios/add-audios.d.ts.map +1 -0
  5. package/dist/api/audios/add-audios.js +33 -0
  6. package/dist/api/audios/add-audios.js.map +1 -0
  7. package/dist/api/audios/get-audios.d.ts +5 -0
  8. package/dist/api/audios/get-audios.d.ts.map +1 -0
  9. package/dist/api/audios/get-audios.js +27 -0
  10. package/dist/api/audios/get-audios.js.map +1 -0
  11. package/dist/api/captions/add-captions.d.ts +3 -0
  12. package/dist/api/captions/add-captions.d.ts.map +1 -0
  13. package/dist/api/captions/add-captions.js +220 -0
  14. package/dist/api/captions/add-captions.js.map +1 -0
  15. package/dist/api/captions/get-captions.d.ts +5 -0
  16. package/dist/api/captions/get-captions.d.ts.map +1 -0
  17. package/dist/api/captions/get-captions.js +36 -0
  18. package/dist/api/captions/get-captions.js.map +1 -0
  19. package/dist/api/cloud/render-draft.d.ts +8 -0
  20. package/dist/api/cloud/render-draft.d.ts.map +1 -0
  21. package/dist/api/cloud/render-draft.js +101 -0
  22. package/dist/api/cloud/render-draft.js.map +1 -0
  23. package/dist/api/cloud/submit-video-render-task.d.ts +4 -0
  24. package/dist/api/cloud/submit-video-render-task.d.ts.map +1 -0
  25. package/dist/api/cloud/submit-video-render-task.js +54 -0
  26. package/dist/api/cloud/submit-video-render-task.js.map +1 -0
  27. package/dist/api/cloud/upload-draft.d.ts +4 -0
  28. package/dist/api/cloud/upload-draft.d.ts.map +1 -0
  29. package/dist/api/cloud/upload-draft.js +91 -0
  30. package/dist/api/cloud/upload-draft.js.map +1 -0
  31. package/dist/api/draft/create-draft.d.ts +3 -0
  32. package/dist/api/draft/create-draft.d.ts.map +1 -0
  33. package/dist/api/draft/create-draft.js +11 -0
  34. package/dist/api/draft/create-draft.js.map +1 -0
  35. package/dist/api/draft/easy-create-material.d.ts +3 -0
  36. package/dist/api/draft/easy-create-material.d.ts.map +1 -0
  37. package/dist/api/draft/easy-create-material.js +64 -0
  38. package/dist/api/draft/easy-create-material.js.map +1 -0
  39. package/dist/api/draft/get-draft-info.d.ts +5 -0
  40. package/dist/api/draft/get-draft-info.d.ts.map +1 -0
  41. package/dist/api/draft/get-draft-info.js +35 -0
  42. package/dist/api/draft/get-draft-info.js.map +1 -0
  43. package/dist/api/draft/list-drafts.d.ts +3 -0
  44. package/dist/api/draft/list-drafts.d.ts.map +1 -0
  45. package/dist/api/draft/list-drafts.js +51 -0
  46. package/dist/api/draft/list-drafts.js.map +1 -0
  47. package/dist/api/draft-spec/create-and-render-draft.d.ts +3 -0
  48. package/dist/api/draft-spec/create-and-render-draft.d.ts.map +1 -0
  49. package/dist/api/draft-spec/create-and-render-draft.js +71 -0
  50. package/dist/api/draft-spec/create-and-render-draft.js.map +1 -0
  51. package/dist/api/draft-spec/create-draft-from-spec.d.ts +4 -0
  52. package/dist/api/draft-spec/create-draft-from-spec.d.ts.map +1 -0
  53. package/dist/api/draft-spec/create-draft-from-spec.js +96 -0
  54. package/dist/api/draft-spec/create-draft-from-spec.js.map +1 -0
  55. package/dist/api/draft-spec/resolve.d.ts +21 -0
  56. package/dist/api/draft-spec/resolve.d.ts.map +1 -0
  57. package/dist/api/draft-spec/resolve.js +279 -0
  58. package/dist/api/draft-spec/resolve.js.map +1 -0
  59. package/dist/api/draft-spec/time.d.ts +17 -0
  60. package/dist/api/draft-spec/time.d.ts.map +1 -0
  61. package/dist/api/draft-spec/time.js +56 -0
  62. package/dist/api/draft-spec/time.js.map +1 -0
  63. package/dist/api/draft-spec/validation.d.ts +3 -0
  64. package/dist/api/draft-spec/validation.d.ts.map +1 -0
  65. package/dist/api/draft-spec/validation.js +179 -0
  66. package/dist/api/draft-spec/validation.js.map +1 -0
  67. package/dist/api/effects/add-effects.d.ts +3 -0
  68. package/dist/api/effects/add-effects.d.ts.map +1 -0
  69. package/dist/api/effects/add-effects.js +24 -0
  70. package/dist/api/effects/add-effects.js.map +1 -0
  71. package/dist/api/effects/get-effects.d.ts +5 -0
  72. package/dist/api/effects/get-effects.d.ts.map +1 -0
  73. package/dist/api/effects/get-effects.js +23 -0
  74. package/dist/api/effects/get-effects.js.map +1 -0
  75. package/dist/api/images/add-images.d.ts +3 -0
  76. package/dist/api/images/add-images.d.ts.map +1 -0
  77. package/dist/api/images/add-images.js +67 -0
  78. package/dist/api/images/add-images.js.map +1 -0
  79. package/dist/api/images/get-images.d.ts +5 -0
  80. package/dist/api/images/get-images.d.ts.map +1 -0
  81. package/dist/api/images/get-images.js +30 -0
  82. package/dist/api/images/get-images.js.map +1 -0
  83. package/dist/api/keyframes/add-keyframes.d.ts +3 -0
  84. package/dist/api/keyframes/add-keyframes.d.ts.map +1 -0
  85. package/dist/api/keyframes/add-keyframes.js +21 -0
  86. package/dist/api/keyframes/add-keyframes.js.map +1 -0
  87. package/dist/api/keyframes/get-keyframes.d.ts +6 -0
  88. package/dist/api/keyframes/get-keyframes.d.ts.map +1 -0
  89. package/dist/api/keyframes/get-keyframes.js +41 -0
  90. package/dist/api/keyframes/get-keyframes.js.map +1 -0
  91. package/dist/api/masks/add-masks.d.ts +3 -0
  92. package/dist/api/masks/add-masks.d.ts.map +1 -0
  93. package/dist/api/masks/add-masks.js +63 -0
  94. package/dist/api/masks/add-masks.js.map +1 -0
  95. package/dist/api/masks/get-masks.d.ts +6 -0
  96. package/dist/api/masks/get-masks.d.ts.map +1 -0
  97. package/dist/api/masks/get-masks.js +44 -0
  98. package/dist/api/masks/get-masks.js.map +1 -0
  99. package/dist/api/query/get-audio-duration.d.ts +3 -0
  100. package/dist/api/query/get-audio-duration.d.ts.map +1 -0
  101. package/dist/api/query/get-audio-duration.js +12 -0
  102. package/dist/api/query/get-audio-duration.js.map +1 -0
  103. package/dist/api/query/get-image-animations.d.ts +3 -0
  104. package/dist/api/query/get-image-animations.d.ts.map +1 -0
  105. package/dist/api/query/get-image-animations.js +21 -0
  106. package/dist/api/query/get-image-animations.js.map +1 -0
  107. package/dist/api/setup/templates/project/.agents/skills/cut-draft/SKILL.md +77 -0
  108. package/dist/api/setup/templates/project/cut-sdk/.env.example +7 -0
  109. package/dist/api/setup/templates/project/cut-sdk/README.md +54 -0
  110. package/dist/api/setup/templates/project/cut-sdk/api-cheatsheet.md +132 -0
  111. package/dist/api/setup/templates/project/cut-sdk/examples/01-create-draft.ts +43 -0
  112. package/dist/api/setup/templates/project/cut-sdk/examples/02-draft-spec.ts +73 -0
  113. package/dist/api/setup/templates/project/cut-sdk/examples/03-create-and-render.ts +67 -0
  114. package/dist/api/setup/templates/project/cut-sdk/examples/04-cli-examples.md +71 -0
  115. package/dist/api/setup/templates/project/cut-sdk/quickstart.md +110 -0
  116. package/dist/api/sticker/add-sticker.d.ts +3 -0
  117. package/dist/api/sticker/add-sticker.d.ts.map +1 -0
  118. package/dist/api/sticker/add-sticker.js +22 -0
  119. package/dist/api/sticker/add-sticker.js.map +1 -0
  120. package/dist/api/sticker/get-stickers.d.ts +5 -0
  121. package/dist/api/sticker/get-stickers.d.ts.map +1 -0
  122. package/dist/api/sticker/get-stickers.js +23 -0
  123. package/dist/api/sticker/get-stickers.js.map +1 -0
  124. package/dist/api/text-style/add-text-style.d.ts +3 -0
  125. package/dist/api/text-style/add-text-style.d.ts.map +1 -0
  126. package/dist/api/text-style/add-text-style.js +25 -0
  127. package/dist/api/text-style/add-text-style.js.map +1 -0
  128. package/dist/api/videos/add-videos.d.ts +3 -0
  129. package/dist/api/videos/add-videos.d.ts.map +1 -0
  130. package/dist/api/videos/add-videos.js +84 -0
  131. package/dist/api/videos/add-videos.js.map +1 -0
  132. package/dist/api/videos/get-videos.d.ts +5 -0
  133. package/dist/api/videos/get-videos.d.ts.map +1 -0
  134. package/dist/api/videos/get-videos.js +30 -0
  135. package/dist/api/videos/get-videos.js.map +1 -0
  136. package/dist/cli.d.ts +3 -0
  137. package/dist/cli.d.ts.map +1 -0
  138. package/dist/cli.js +339 -0
  139. package/dist/cli.js.map +1 -0
  140. package/dist/config/index.d.ts +10 -0
  141. package/dist/config/index.d.ts.map +1 -0
  142. package/dist/config/index.js +26 -0
  143. package/dist/config/index.js.map +1 -0
  144. package/dist/draft/drafts/AudioMaterial.d.ts +41 -0
  145. package/dist/draft/drafts/AudioMaterial.d.ts.map +1 -0
  146. package/dist/draft/drafts/AudioMaterial.js +45 -0
  147. package/dist/draft/drafts/AudioMaterial.js.map +1 -0
  148. package/dist/draft/drafts/Draft.d.ts +272 -0
  149. package/dist/draft/drafts/Draft.d.ts.map +1 -0
  150. package/dist/draft/drafts/Draft.js +374 -0
  151. package/dist/draft/drafts/Draft.js.map +1 -0
  152. package/dist/draft/drafts/Effects.d.ts +32 -0
  153. package/dist/draft/drafts/Effects.d.ts.map +1 -0
  154. package/dist/draft/drafts/Effects.js +78 -0
  155. package/dist/draft/drafts/Effects.js.map +1 -0
  156. package/dist/draft/drafts/Huazi.d.ts +47 -0
  157. package/dist/draft/drafts/Huazi.d.ts.map +1 -0
  158. package/dist/draft/drafts/Huazi.js +71 -0
  159. package/dist/draft/drafts/Huazi.js.map +1 -0
  160. package/dist/draft/drafts/Keyframe.d.ts +57 -0
  161. package/dist/draft/drafts/Keyframe.d.ts.map +1 -0
  162. package/dist/draft/drafts/Keyframe.js +66 -0
  163. package/dist/draft/drafts/Keyframe.js.map +1 -0
  164. package/dist/draft/drafts/Mask.d.ts +74 -0
  165. package/dist/draft/drafts/Mask.d.ts.map +1 -0
  166. package/dist/draft/drafts/Mask.js +93 -0
  167. package/dist/draft/drafts/Mask.js.map +1 -0
  168. package/dist/draft/drafts/MediaUtil.d.ts +18 -0
  169. package/dist/draft/drafts/MediaUtil.d.ts.map +1 -0
  170. package/dist/draft/drafts/MediaUtil.js +101 -0
  171. package/dist/draft/drafts/MediaUtil.js.map +1 -0
  172. package/dist/draft/drafts/Qipaos.d.ts +35 -0
  173. package/dist/draft/drafts/Qipaos.d.ts.map +1 -0
  174. package/dist/draft/drafts/Qipaos.js +41 -0
  175. package/dist/draft/drafts/Qipaos.js.map +1 -0
  176. package/dist/draft/drafts/Segments.d.ts +74 -0
  177. package/dist/draft/drafts/Segments.d.ts.map +1 -0
  178. package/dist/draft/drafts/Segments.js +112 -0
  179. package/dist/draft/drafts/Segments.js.map +1 -0
  180. package/dist/draft/drafts/Stickers.d.ts +58 -0
  181. package/dist/draft/drafts/Stickers.d.ts.map +1 -0
  182. package/dist/draft/drafts/Stickers.js +64 -0
  183. package/dist/draft/drafts/Stickers.js.map +1 -0
  184. package/dist/draft/drafts/TextMaterial.d.ts +119 -0
  185. package/dist/draft/drafts/TextMaterial.d.ts.map +1 -0
  186. package/dist/draft/drafts/TextMaterial.js +182 -0
  187. package/dist/draft/drafts/TextMaterial.js.map +1 -0
  188. package/dist/draft/drafts/Track.d.ts +18 -0
  189. package/dist/draft/drafts/Track.d.ts.map +1 -0
  190. package/dist/draft/drafts/Track.js +30 -0
  191. package/dist/draft/drafts/Track.js.map +1 -0
  192. package/dist/draft/drafts/Transitions.d.ts +14 -0
  193. package/dist/draft/drafts/Transitions.d.ts.map +1 -0
  194. package/dist/draft/drafts/Transitions.js +21 -0
  195. package/dist/draft/drafts/Transitions.js.map +1 -0
  196. package/dist/draft/drafts/VideoMaterial.d.ts +87 -0
  197. package/dist/draft/drafts/VideoMaterial.d.ts.map +1 -0
  198. package/dist/draft/drafts/VideoMaterial.js +92 -0
  199. package/dist/draft/drafts/VideoMaterial.js.map +1 -0
  200. package/dist/draft/drafts/add_keyframes_v2.d.ts +2 -0
  201. package/dist/draft/drafts/add_keyframes_v2.d.ts.map +1 -0
  202. package/dist/draft/drafts/add_keyframes_v2.js +281 -0
  203. package/dist/draft/drafts/add_keyframes_v2.js.map +1 -0
  204. package/dist/draft/drafts/add_text_animations.d.ts +7 -0
  205. package/dist/draft/drafts/add_text_animations.d.ts.map +1 -0
  206. package/dist/draft/drafts/add_text_animations.js +29 -0
  207. package/dist/draft/drafts/add_text_animations.js.map +1 -0
  208. package/dist/draft/drafts/add_video_animations.d.ts +7 -0
  209. package/dist/draft/drafts/add_video_animations.d.ts.map +1 -0
  210. package/dist/draft/drafts/add_video_animations.js +29 -0
  211. package/dist/draft/drafts/add_video_animations.js.map +1 -0
  212. package/dist/draft/drafts/add_video_effects.d.ts +27 -0
  213. package/dist/draft/drafts/add_video_effects.d.ts.map +1 -0
  214. package/dist/draft/drafts/add_video_effects.js +11 -0
  215. package/dist/draft/drafts/add_video_effects.js.map +1 -0
  216. package/dist/draft/drafts/data/audio/audio_effect.d.ts +35 -0
  217. package/dist/draft/drafts/data/audio/audio_effect.d.ts.map +1 -0
  218. package/dist/draft/drafts/data/audio/audio_effect.js +98 -0
  219. package/dist/draft/drafts/data/audio/audio_effect.js.map +1 -0
  220. package/dist/draft/drafts/data/audio//346/250/241/346/213/237.json +4275 -0
  221. package/dist/draft/drafts/data/audio//347/216/257/345/242/203.json +1673 -0
  222. package/dist/draft/drafts/data/audio//347/276/216/345/214/226.json +860 -0
  223. package/dist/draft/drafts/data/effect/cn/effect.d.ts +29 -0
  224. package/dist/draft/drafts/data/effect/cn/effect.d.ts.map +1 -0
  225. package/dist/draft/drafts/data/effect/cn/effect.js +122 -0
  226. package/dist/draft/drafts/data/effect/cn/effect.js.map +1 -0
  227. package/dist/draft/drafts/data/effect/cn/huamian/aixing.json +3097 -0
  228. package/dist/draft/drafts/data/effect/cn/huamian/anhei.json +3456 -0
  229. package/dist/draft/drafts/data/effect/cn/huamian/biankuang.json +8201 -0
  230. package/dist/draft/drafts/data/effect/cn/huamian/bling.json +5836 -0
  231. package/dist/draft/drafts/data/effect/cn/huamian/chaoku.json +3554 -0
  232. package/dist/draft/drafts/data/effect/cn/huamian/dianyin.json +624 -0
  233. package/dist/draft/drafts/data/effect/cn/huamian/donggan.json +11193 -0
  234. package/dist/draft/drafts/data/effect/cn/huamian/dv.json +3305 -0
  235. package/dist/draft/drafts/data/effect/cn/huamian/fanwei.json +10631 -0
  236. package/dist/draft/drafts/data/effect/cn/huamian/fenpin.json +1016 -0
  237. package/dist/draft/drafts/data/effect/cn/huamian/fugu.json +7592 -0
  238. package/dist/draft/drafts/data/effect/cn/huamian/guang.json +5614 -0
  239. package/dist/draft/drafts/data/effect/cn/huamian/hot.json +16202 -0
  240. package/dist/draft/drafts/data/effect/cn/huamian/jichu.json +10017 -0
  241. package/dist/draft/drafts/data/effect/cn/huamian/jinfen.json +2545 -0
  242. package/dist/draft/drafts/data/effect/cn/huamian/manhua.json +1897 -0
  243. package/dist/draft/drafts/data/effect/cn/huamian/niuqu.json +2037 -0
  244. package/dist/draft/drafts/data/effect/cn/huamian/touyin.json +1013 -0
  245. package/dist/draft/drafts/data/effect/cn/huamian/wenlin.json +2942 -0
  246. package/dist/draft/drafts/data/effect/cn/huamian/xinnian.json +4627 -0
  247. package/dist/draft/drafts/data/effect/cn/huamian/zhongyi.json +3063 -0
  248. package/dist/draft/drafts/data/effect/cn/huamian/ziran.json +4791 -0
  249. package/dist/draft/drafts/data/effect/cn/huamian/zuixin.json +5677 -0
  250. package/dist/draft/drafts/data/effect/cn/renwu/anhei.json +900 -0
  251. package/dist/draft/drafts/data/effect/cn/renwu/danglian.json +1518 -0
  252. package/dist/draft/drafts/data/effect/cn/renwu/hot.json +20280 -0
  253. package/dist/draft/drafts/data/effect/cn/renwu/huanrao.json +1447 -0
  254. package/dist/draft/drafts/data/effect/cn/renwu/kelong.json +1857 -0
  255. package/dist/draft/drafts/data/effect/cn/renwu/qingxu.json +5641 -0
  256. package/dist/draft/drafts/data/effect/cn/renwu/shenti.json +2827 -0
  257. package/dist/draft/drafts/data/effect/cn/renwu/shoubu.json +742 -0
  258. package/dist/draft/drafts/data/effect/cn/renwu/tousi.json +3129 -0
  259. package/dist/draft/drafts/data/effect/cn/renwu/xingxiang.json +1397 -0
  260. package/dist/draft/drafts/data/effect/cn/renwu/zhuangshi.json +5017 -0
  261. package/dist/draft/drafts/data/font/font.d.ts +11 -0
  262. package/dist/draft/drafts/data/font/font.d.ts.map +1 -0
  263. package/dist/draft/drafts/data/font/font.js +9303 -0
  264. package/dist/draft/drafts/data/font/font.js.map +1 -0
  265. package/dist/draft/drafts/data/font/font_0427.d.ts +3 -0
  266. package/dist/draft/drafts/data/font/font_0427.d.ts.map +1 -0
  267. package/dist/draft/drafts/data/font/font_0427.js +57922 -0
  268. package/dist/draft/drafts/data/font/font_0427.js.map +1 -0
  269. package/dist/draft/drafts/data/font/online_font.d.ts +7 -0
  270. package/dist/draft/drafts/data/font/online_font.d.ts.map +1 -0
  271. package/dist/draft/drafts/data/font/online_font.js +78 -0
  272. package/dist/draft/drafts/data/font/online_font.js.map +1 -0
  273. package/dist/draft/drafts/data/huazi/all_huazi_data.json +94057 -0
  274. package/dist/draft/drafts/data/huazi/online_huazi.d.ts +9 -0
  275. package/dist/draft/drafts/data/huazi/online_huazi.d.ts.map +1 -0
  276. package/dist/draft/drafts/data/huazi/online_huazi.js +163 -0
  277. package/dist/draft/drafts/data/huazi/online_huazi.js.map +1 -0
  278. package/dist/draft/drafts/data/texiao/aixin.json +2555 -0
  279. package/dist/draft/drafts/data/texiao/anhei.json +2909 -0
  280. package/dist/draft/drafts/data/texiao/biankuang.json +5906 -0
  281. package/dist/draft/drafts/data/texiao/bling.json +4171 -0
  282. package/dist/draft/drafts/data/texiao/chaoku.json +1560 -0
  283. package/dist/draft/drafts/data/texiao/dianyin.json +522 -0
  284. package/dist/draft/drafts/data/texiao/donggan.json +6157 -0
  285. package/dist/draft/drafts/data/texiao/dv.json +1796 -0
  286. package/dist/draft/drafts/data/texiao/fenpin.json +712 -0
  287. package/dist/draft/drafts/data/texiao/fenwei.json +4405 -0
  288. package/dist/draft/drafts/data/texiao/fugu.json +4472 -0
  289. package/dist/draft/drafts/data/texiao/guang.json +2297 -0
  290. package/dist/draft/drafts/data/texiao/jichu.json +4929 -0
  291. package/dist/draft/drafts/data/texiao/jinfen.json +1712 -0
  292. package/dist/draft/drafts/data/texiao/manhua.json +1700 -0
  293. package/dist/draft/drafts/data/texiao/niuqu.json +708 -0
  294. package/dist/draft/drafts/data/texiao/remen.json +7147 -0
  295. package/dist/draft/drafts/data/texiao/texiao.d.ts +53 -0
  296. package/dist/draft/drafts/data/texiao/texiao.d.ts.map +1 -0
  297. package/dist/draft/drafts/data/texiao/texiao.js +102 -0
  298. package/dist/draft/drafts/data/texiao/texiao.js.map +1 -0
  299. package/dist/draft/drafts/data/texiao/touyin.json +2354 -0
  300. package/dist/draft/drafts/data/texiao/wenli.json +2118 -0
  301. package/dist/draft/drafts/data/texiao/ziran.json +2882 -0
  302. package/dist/draft/drafts/data/texiao/zongyi.json +2287 -0
  303. package/dist/draft/drafts/data/text/chuchang.d.ts +35 -0
  304. package/dist/draft/drafts/data/text/chuchang.d.ts.map +1 -0
  305. package/dist/draft/drafts/data/text/chuchang.js +4547 -0
  306. package/dist/draft/drafts/data/text/chuchang.js.map +1 -0
  307. package/dist/draft/drafts/data/text/qipao.d.ts +87 -0
  308. package/dist/draft/drafts/data/text/qipao.d.ts.map +1 -0
  309. package/dist/draft/drafts/data/text/qipao.js +17773 -0
  310. package/dist/draft/drafts/data/text/qipao.js.map +1 -0
  311. package/dist/draft/drafts/data/text/ruchang.d.ts +35 -0
  312. package/dist/draft/drafts/data/text/ruchang.d.ts.map +1 -0
  313. package/dist/draft/drafts/data/text/ruchang.js +5363 -0
  314. package/dist/draft/drafts/data/text/ruchang.js.map +1 -0
  315. package/dist/draft/drafts/data/text/text_animations.d.ts +7 -0
  316. package/dist/draft/drafts/data/text/text_animations.d.ts.map +1 -0
  317. package/dist/draft/drafts/data/text/text_animations.js +147 -0
  318. package/dist/draft/drafts/data/text/text_animations.js.map +1 -0
  319. package/dist/draft/drafts/data/text/text_animations.json +26179 -0
  320. package/dist/draft/drafts/data/text/xunhuan.d.ts +35 -0
  321. package/dist/draft/drafts/data/text/xunhuan.d.ts.map +1 -0
  322. package/dist/draft/drafts/data/text/xunhuan.js +3435 -0
  323. package/dist/draft/drafts/data/text/xunhuan.js.map +1 -0
  324. package/dist/draft/drafts/data/tezhi/cn/aixin.json +3625 -0
  325. package/dist/draft/drafts/data/tezhi/cn/biaoqing.json +3269 -0
  326. package/dist/draft/drafts/data/tezhi/cn/bohemanbo.json +3270 -0
  327. package/dist/draft/drafts/data/tezhi/cn/dianshang.json +3269 -0
  328. package/dist/draft/drafts/data/tezhi/cn/dongri.json +3267 -0
  329. package/dist/draft/drafts/data/tezhi/cn/hot.json +3379 -0
  330. package/dist/draft/drafts/data/tezhi/cn/hudie.json +3490 -0
  331. package/dist/draft/drafts/data/tezhi/cn/hudong.json +3328 -0
  332. package/dist/draft/drafts/data/tezhi/cn/hunli.json +3290 -0
  333. package/dist/draft/drafts/data/tezhi/cn/jiari.json +3276 -0
  334. package/dist/draft/drafts/data/tezhi/cn/keai.json +3269 -0
  335. package/dist/draft/drafts/data/tezhi/cn/langman.json +3290 -0
  336. package/dist/draft/drafts/data/tezhi/cn/lvxing.json +3350 -0
  337. package/dist/draft/drafts/data/tezhi/cn/meishi.json +3294 -0
  338. package/dist/draft/drafts/data/tezhi/cn/meizhuang.json +3279 -0
  339. package/dist/draft/drafts/data/tezhi/cn/qingxu1.json +3421 -0
  340. package/dist/draft/drafts/data/tezhi/cn/qingxu2.json +3368 -0
  341. package/dist/draft/drafts/data/tezhi/cn/qingxu3.json +3358 -0
  342. package/dist/draft/drafts/data/tezhi/cn/qingxu4.json +3361 -0
  343. package/dist/draft/drafts/data/tezhi/cn/regeng.json +3292 -0
  344. package/dist/draft/drafts/data/tezhi/cn/vip.json +3336 -0
  345. package/dist/draft/drafts/data/tezhi/cn/vlog.json +3295 -0
  346. package/dist/draft/drafts/data/tezhi/cn/xiari.json +3411 -0
  347. package/dist/draft/drafts/data/tezhi/cn/xinnian.json +3274 -0
  348. package/dist/draft/drafts/data/tezhi/cn/yinyuejie.json +3285 -0
  349. package/dist/draft/drafts/data/tezhi/cn/yundong.json +3267 -0
  350. package/dist/draft/drafts/data/tezhi/cn/zhakai.json +3399 -0
  351. package/dist/draft/drafts/data/tezhi/cn/zhisi.json +3385 -0
  352. package/dist/draft/drafts/data/tezhi/cn_sticker.d.ts +2 -0
  353. package/dist/draft/drafts/data/tezhi/cn_sticker.d.ts.map +1 -0
  354. package/dist/draft/drafts/data/tezhi/cn_sticker.js +41 -0
  355. package/dist/draft/drafts/data/tezhi/cn_sticker.js.map +1 -0
  356. package/dist/draft/drafts/data/transitions/cn/MG/345/212/250/347/224/273.json +880 -0
  357. package/dist/draft/drafts/data/transitions/cn/hot.json +20419 -0
  358. package/dist/draft/drafts/data/transitions/cn//344/272/222/345/212/250emoji.json +820 -0
  359. package/dist/draft/drafts/data/transitions/cn//345/205/211/346/225/210.json +3355 -0
  360. package/dist/draft/drafts/data/transitions/cn//345/210/206/345/211/262.json +2255 -0
  361. package/dist/draft/drafts/data/transitions/cn//345/217/240/345/214/226.json +2206 -0
  362. package/dist/draft/drafts/data/transitions/cn//345/271/273/347/201/257/347/211/207.json +4175 -0
  363. package/dist/draft/drafts/data/transitions/cn//346/211/255/346/233/262.json +2388 -0
  364. package/dist/draft/drafts/data/transitions/cn//346/213/215/346/221/204.json +1546 -0
  365. package/dist/draft/drafts/data/transitions/cn//346/225/205/351/232/234.json +1616 -0
  366. package/dist/draft/drafts/data/transitions/cn//346/226/260/345/271/264.json +2935 -0
  367. package/dist/draft/drafts/data/transitions/cn//346/234/200/346/226/260.json +3167 -0
  368. package/dist/draft/drafts/data/transitions/cn//346/250/241/347/263/212.json +1535 -0
  369. package/dist/draft/drafts/data/transitions/cn//347/273/274/350/211/272.json +904 -0
  370. package/dist/draft/drafts/data/transitions/cn//350/207/252/347/204/266.json +657 -0
  371. package/dist/draft/drafts/data/transitions/cn//350/277/220/351/225/234.json +5283 -0
  372. package/dist/draft/drafts/data/transitions/cn_transitions.d.ts +3 -0
  373. package/dist/draft/drafts/data/transitions/cn_transitions.d.ts.map +1 -0
  374. package/dist/draft/drafts/data/transitions/cn_transitions.js +52 -0
  375. package/dist/draft/drafts/data/transitions/cn_transitions.js.map +1 -0
  376. package/dist/draft/drafts/data/video/group.d.ts +35 -0
  377. package/dist/draft/drafts/data/video/group.d.ts.map +1 -0
  378. package/dist/draft/drafts/data/video/group.js +7496 -0
  379. package/dist/draft/drafts/data/video/group.js.map +1 -0
  380. package/dist/draft/drafts/data/video/ins.d.ts +19 -0
  381. package/dist/draft/drafts/data/video/ins.d.ts.map +1 -0
  382. package/dist/draft/drafts/data/video/ins.js +3046 -0
  383. package/dist/draft/drafts/data/video/ins.js.map +1 -0
  384. package/dist/draft/drafts/data/video/out.d.ts +35 -0
  385. package/dist/draft/drafts/data/video/out.d.ts.map +1 -0
  386. package/dist/draft/drafts/data/video/out.js +1640 -0
  387. package/dist/draft/drafts/data/video/out.js.map +1 -0
  388. package/dist/draft/drafts/data/video/video_animations.d.ts +7 -0
  389. package/dist/draft/drafts/data/video/video_animations.d.ts.map +1 -0
  390. package/dist/draft/drafts/data/video/video_animations.js +138 -0
  391. package/dist/draft/drafts/data/video/video_animations.js.map +1 -0
  392. package/dist/draft/drafts/data/video/video_animations.json +22380 -0
  393. package/dist/draft/drafts/online_effects.d.ts +3 -0
  394. package/dist/draft/drafts/online_effects.d.ts.map +1 -0
  395. package/dist/draft/drafts/online_effects.js +57 -0
  396. package/dist/draft/drafts/online_effects.js.map +1 -0
  397. package/dist/draft/index.d.ts +23 -0
  398. package/dist/draft/index.d.ts.map +1 -0
  399. package/dist/draft/index.js +20 -0
  400. package/dist/draft/index.js.map +1 -0
  401. package/dist/index.d.ts +56 -0
  402. package/dist/index.d.ts.map +1 -0
  403. package/dist/index.js +86 -0
  404. package/dist/index.js.map +1 -0
  405. package/dist/shared/cloud-client.d.ts +64 -0
  406. package/dist/shared/cloud-client.d.ts.map +1 -0
  407. package/dist/shared/cloud-client.js +121 -0
  408. package/dist/shared/cloud-client.js.map +1 -0
  409. package/dist/shared/draft-service.d.ts +9 -0
  410. package/dist/shared/draft-service.d.ts.map +1 -0
  411. package/dist/shared/draft-service.js +91 -0
  412. package/dist/shared/draft-service.js.map +1 -0
  413. package/dist/shared/errors.d.ts +28 -0
  414. package/dist/shared/errors.d.ts.map +1 -0
  415. package/dist/shared/errors.js +138 -0
  416. package/dist/shared/errors.js.map +1 -0
  417. package/dist/shared/logger.d.ts +6 -0
  418. package/dist/shared/logger.d.ts.map +1 -0
  419. package/dist/shared/logger.js +9 -0
  420. package/dist/shared/logger.js.map +1 -0
  421. package/dist/shared/media-downloader.d.ts +14 -0
  422. package/dist/shared/media-downloader.d.ts.map +1 -0
  423. package/dist/shared/media-downloader.js +94 -0
  424. package/dist/shared/media-downloader.js.map +1 -0
  425. package/dist/shared/media.d.ts +6 -0
  426. package/dist/shared/media.d.ts.map +1 -0
  427. package/dist/shared/media.js +92 -0
  428. package/dist/shared/media.js.map +1 -0
  429. package/dist/template/attachment_pc_common.json +1 -0
  430. package/dist/template/draft_agency_config.json +1 -0
  431. package/dist/template/draft_content.json +132 -0
  432. package/dist/template/draft_meta_info.json +59 -0
  433. package/dist/template/template.tmp +1 -0
  434. package/dist/types/index.d.ts +620 -0
  435. package/dist/types/index.d.ts.map +1 -0
  436. package/dist/types/index.js +4 -0
  437. package/dist/types/index.js.map +1 -0
  438. package/package.json +67 -4
  439. package/index.js +0 -1
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMasks = getMasks;
4
+ const draft_service_1 = require("../../shared/draft-service");
5
+ async function getMasks(params) {
6
+ const draft = await (0, draft_service_1.loadDraft)(params.draftId);
7
+ const masks = draft.materials?.masks || [];
8
+ if (!params.segmentId) {
9
+ const results = [];
10
+ for (const track of draft.tracks || []) {
11
+ for (const segment of track.segments || []) {
12
+ const refs = segment.extra_material_refs || [];
13
+ for (const mask of masks) {
14
+ if (refs.includes(mask.id))
15
+ results.push(toMaskInfo(mask));
16
+ }
17
+ }
18
+ }
19
+ return results.length > 0 ? results : masks.map(toMaskInfo);
20
+ }
21
+ const segment = draft.get_segment_by_id(params.segmentId);
22
+ if (!segment)
23
+ return [];
24
+ const refs = segment.extra_material_refs || [];
25
+ return masks.filter((m) => refs.includes(m.id)).map(toMaskInfo);
26
+ }
27
+ function toMaskInfo(m) {
28
+ return {
29
+ id: m.id,
30
+ name: m.name || '',
31
+ resourceType: m.resource_type || '',
32
+ config: {
33
+ centerX: m.config?.centerX || 0,
34
+ centerY: m.config?.centerY || 0,
35
+ width: m.config?.width || 0,
36
+ height: m.config?.height || 0,
37
+ feather: m.config?.feather || 0,
38
+ rotation: m.config?.rotation || 0,
39
+ invert: m.config?.invert || false,
40
+ roundCorner: m.config?.roundCorner || 0,
41
+ },
42
+ };
43
+ }
44
+ //# sourceMappingURL=get-masks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-masks.js","sourceRoot":"","sources":["../../../src/api/masks/get-masks.ts"],"names":[],"mappings":";;AAGA,4BAsBC;AAzBD,8DAAuD;AAGhD,KAAK,UAAU,QAAQ,CAAC,MAA+C;IAC5E,MAAM,KAAK,GAAG,MAAM,IAAA,yBAAS,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAU,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC;IAElD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,OAAO,GAAe,EAAE,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACvC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAa,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;gBACzD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,IAAI,GAAa,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;IACzD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,UAAU,CAAC,CAAM;IACxB,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;QAClB,YAAY,EAAE,CAAC,CAAC,aAAa,IAAI,EAAE;QACnC,MAAM,EAAE;YACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;YAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;YAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC;YAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;YAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;YAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC;YACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK;YACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC;SACxC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GetAudioDurationInput, GetAudioDurationOutput } from '../../types';
2
+ export declare function getAudioDurationApi(params: GetAudioDurationInput): Promise<GetAudioDurationOutput>;
3
+ //# sourceMappingURL=get-audio-duration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-audio-duration.d.ts","sourceRoot":"","sources":["../../../src/api/query/get-audio-duration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAEjF,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAMxG"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAudioDurationApi = getAudioDurationApi;
4
+ const media_1 = require("../../shared/media");
5
+ async function getAudioDurationApi(params) {
6
+ const duration = await (0, media_1.getAudioDuration)(params.url);
7
+ if (duration === 0) {
8
+ return { message: 'Failed to get audio duration', duration: 0 };
9
+ }
10
+ return { message: 'ok', duration };
11
+ }
12
+ //# sourceMappingURL=get-audio-duration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-audio-duration.js","sourceRoot":"","sources":["../../../src/api/query/get-audio-duration.ts"],"names":[],"mappings":";;AAGA,kDAMC;AATD,8CAA8E;AAGvE,KAAK,UAAU,mBAAmB,CAAC,MAA6B;IACrE,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAoB,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAClE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GetImageAnimationsInput, GetImageAnimationsOutput } from '../../types';
2
+ export declare function getImageAnimations(params?: GetImageAnimationsInput): Promise<GetImageAnimationsOutput>;
3
+ //# sourceMappingURL=get-image-animations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-image-animations.d.ts","sourceRoot":"","sources":["../../../src/api/query/get-image-animations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAIrF,wBAAsB,kBAAkB,CAAC,MAAM,GAAE,uBAA4B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAehH"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getImageAnimations = getImageAnimations;
4
+ const { Draft } = require('../../draft');
5
+ async function getImageAnimations(params = {}) {
6
+ const mode = params.mode || 0;
7
+ const type = params.type || 'in';
8
+ const draft = new Draft();
9
+ let effects;
10
+ if (type === 'loop') {
11
+ effects = draft.get_all_video_loop_Effects(mode);
12
+ }
13
+ else if (type === 'out') {
14
+ effects = draft.get_all_video_chuchang_Effects(mode);
15
+ }
16
+ else {
17
+ effects = draft.get_all_video_ruchang_Effects(mode);
18
+ }
19
+ return { effects };
20
+ }
21
+ //# sourceMappingURL=get-image-animations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-image-animations.js","sourceRoot":"","sources":["../../../src/api/query/get-image-animations.ts"],"names":[],"mappings":";;AAIA,gDAeC;AAjBD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAElC,KAAK,UAAU,kBAAkB,CAAC,SAAkC,EAAE;IAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAE1B,IAAI,OAAc,CAAC;IACnB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,GAAG,KAAK,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;SAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,GAAG,KAAK,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,KAAK,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: cut-draft
3
+ description: >-
4
+ 使用 cutsdk 创建和操作剪映/CapCut 草稿工程。用户想创建剪映草稿、添加字幕/图片/视频/音频/特效/贴纸/关键帧/遮罩、
5
+ 提交渲染,或提到 cut_sdk、cut、draft spec、剪映、草稿、字幕、CapCut draft 时使用此 skill。
6
+ ---
7
+
8
+ # cut_sdk 项目级 Skill
9
+
10
+ `cutsdk` 是用于创建剪映/CapCut 桌面端草稿文件夹的 Node.js SDK 和 CLI。生成后的草稿可直接在剪映桌面端打开。
11
+
12
+ ## 先读这些
13
+
14
+ 写代码前,先阅读本项目内的文档:
15
+
16
+ 1. `cut-sdk/README.md`
17
+ 2. `cut-sdk/quickstart.md`
18
+ 3. `cut-sdk/api-cheatsheet.md`
19
+
20
+ 实现时优先从 `cut-sdk/examples/` 里选择最接近的示例改起。
21
+
22
+ ## 推荐使用路径
23
+
24
+ - AI 生成完整时间线时,优先使用 `createDraftFromSpec(spec)`。
25
+ - 用户希望“一次创建草稿并提交云渲染”时,使用 `createAndRenderDraft(input)`。
26
+ - 用户要逐步编辑草稿,或 Draft Spec 尚未覆盖某个能力时,再使用低层 API,例如 `createDraft`、`addCaptions`、`addImages`、`addVideos`、`addAudios`、`addMasks`、`addKeyframes`。
27
+ - 只有在用户明确需要命令行,或只是做快速手动操作时,才使用 CLI。
28
+
29
+ ## 关键规则
30
+
31
+ - 包导入名是 `cutsdk`。
32
+ - 低层 SDK 和 CLI 的所有时间数值都是微秒:`1s = 1000000`。
33
+ - AI Draft Spec 的时间字符串可写为 `1.5s`、`500ms`、`300000us`。
34
+ - 默认草稿目录是 `~/Movies/JianyingPro Drafts/{draftId}/`;可通过 `CUT_DRAFTS_DIR` 覆盖。
35
+ - 媒体 URL 和本地媒体路径会由 SDK 复制/下载到草稿的 `resources/` 文件夹。
36
+ - 图片必须提供 `width` 和 `height`。
37
+ - 使用低层 API 添加视频或音频时,要提供素材原始时长。
38
+ - 同一轨道内的片段不要重叠,除非目标 API 明确会创建独立轨道。
39
+ - CLI 参数使用 kebab-case,例如 `--font-size`,不要写成 `--fontSize`。
40
+
41
+ ## 最小 Draft Spec 示例
42
+
43
+ ```ts
44
+ import { createDraftFromSpec } from 'cutsdk';
45
+
46
+ await createDraftFromSpec({
47
+ version: '1.0',
48
+ canvas: { width: 1080, height: 1920 },
49
+ tracks: [
50
+ {
51
+ type: 'text',
52
+ clips: [
53
+ { type: 'caption', text: '你好剪映', start: '0s', duration: '3s' },
54
+ ],
55
+ },
56
+ ],
57
+ });
58
+ ```
59
+
60
+ ## 云渲染环境变量
61
+
62
+ 云渲染需要:
63
+
64
+ ```env
65
+ CUT_API_TOKEN=your_token
66
+ CUT_UPLOAD_API_BASE=http://your-render-backend:8080
67
+ ```
68
+
69
+ 在调用方项目中使用 `.env`,或在调用 SDK 前自行加载环境变量。
70
+
71
+ ## 常见坑
72
+
73
+ 1. 不要混用包名。除非项目明确覆盖,否则始终使用 `cutsdk`。
74
+ 2. 不要把“秒”直接作为低层 API 的数字传入。数字 `3` 表示 3 微秒,不是 3 秒。
75
+ 3. 对动画/特效名有精确要求时,不要凭空编造。先用 CLI 查询可用资源,或使用项目里已有示例。
76
+ 4. 除非 SDK 无法表达目标操作,否则不要手动改剪映草稿 JSON。
77
+ 5. 生成复杂时间线时,先用 `validateDraftSpec(spec)` 校验 Draft Spec。
@@ -0,0 +1,7 @@
1
+ # 可选:本地剪映草稿文件夹创建位置。
2
+ # macOS 默认路径是 ~/Movies/JianyingPro Drafts
3
+ CUT_DRAFTS_DIR=/absolute/path/to/JianyingPro Drafts
4
+
5
+ # 仅云渲染需要。
6
+ CUT_API_TOKEN=your_render_api_token
7
+ CUT_UPLOAD_API_BASE=http://your-render-backend:8080
@@ -0,0 +1,54 @@
1
+ # cut_sdk 项目接入指南
2
+
3
+ 这个目录是给 AI Agent 和开发者第一次在项目中使用 `cutsdk` 时看的接入资料。
4
+
5
+ `cutsdk` 可以用 Node.js 代码创建剪映/CapCut 桌面端草稿文件夹,支持字幕、图片、视频、音频、特效、贴纸、关键帧、遮罩、AI Draft Spec,以及可选的云渲染。
6
+
7
+ ## 阅读顺序
8
+
9
+ 1. 先读 `quickstart.md`。
10
+ 2. 再扫一遍 `api-cheatsheet.md`。
11
+ 3. 从 `examples/` 中复制最接近需求的示例改起。
12
+
13
+ ## 安装
14
+
15
+ ```bash
16
+ npm install cutsdk
17
+ ```
18
+
19
+ 如果要使用 CLI:
20
+
21
+ ```bash
22
+ npm install -g cutsdk
23
+ cut draft create --width 1080 --height 1920
24
+ ```
25
+
26
+ 不全局安装也可以直接用 `npx`:
27
+
28
+ ```bash
29
+ npx cutsdk draft create --width 1080 --height 1920
30
+ ```
31
+
32
+ ## 环境变量
33
+
34
+ 当项目需要自定义草稿目录或使用云渲染时,把 `.env.example` 复制为 `.env` 并填写:
35
+
36
+ ```env
37
+ CUT_DRAFTS_DIR=/absolute/path/to/JianyingPro Drafts
38
+ CUT_API_TOKEN=your_token
39
+ CUT_UPLOAD_API_BASE=http://your-render-backend:8080
40
+ ```
41
+
42
+ ## 核心概念
43
+
44
+ - 一个草稿就是磁盘上的剪映兼容工程文件夹。
45
+ - 默认草稿路径是 `~/Movies/JianyingPro Drafts/{draftId}/`。
46
+ - 低层 SDK API 的时间数值使用微秒。
47
+ - AI Draft Spec 支持更易读的时间字符串,例如 `3s`、`500ms`、`300000us`。
48
+ - 媒体 URL 和本地文件路径会被复制/下载到草稿的 `resources` 文件夹。
49
+
50
+ ## 推荐优先使用
51
+
52
+ AI 生成视频草稿时,优先使用 `createDraftFromSpec`。它允许用一个 JSON 对象描述完整时间线,再由 SDK 调用底层草稿 API。
53
+
54
+ 创建草稿后还需要补充高级操作时,可以使用带 `afterCreate` 的 `createAndRenderDraft`,或直接调用低层 API。
@@ -0,0 +1,132 @@
1
+ # cut_sdk API 速查
2
+
3
+ 从 `cutsdk` 导入:
4
+
5
+ ```ts
6
+ import {
7
+ createDraftFromSpec,
8
+ validateDraftSpec,
9
+ createAndRenderDraft,
10
+ createDraft,
11
+ getDraftInfo,
12
+ addCaptions,
13
+ addImages,
14
+ addVideos,
15
+ addAudios,
16
+ addEffects,
17
+ addSticker,
18
+ addKeyframes,
19
+ addMasks,
20
+ renderDraft,
21
+ isCutSdkError,
22
+ } from 'cutsdk';
23
+ ```
24
+
25
+ ## 优先选择:AI Draft Spec
26
+
27
+ ```ts
28
+ const result = await createDraftFromSpec({
29
+ version: '1.0',
30
+ canvas: { width: 1080, height: 1920 },
31
+ duration: '5s',
32
+ tracks: [
33
+ { type: 'text', clips: [{ type: 'caption', text: 'Hello', start: '0s', duration: '5s' }] },
34
+ ],
35
+ });
36
+ ```
37
+
38
+ 用于一次性生成完整时间线。
39
+
40
+ ## 创建并渲染
41
+
42
+ ```ts
43
+ const result = await createAndRenderDraft({
44
+ draft: spec,
45
+ output: {
46
+ draftsDir: process.env.CUT_DRAFTS_DIR,
47
+ name: 'demo-draft',
48
+ },
49
+ render: {
50
+ cloud: true,
51
+ apiToken: process.env.CUT_API_TOKEN,
52
+ apiBase: process.env.CUT_UPLOAD_API_BASE,
53
+ },
54
+ });
55
+
56
+ console.log(result.render?.videoUrl);
57
+ ```
58
+
59
+ ## 低层草稿流程
60
+
61
+ ```ts
62
+ const draft = await createDraft({ width: 1080, height: 1920 });
63
+
64
+ await addImages({
65
+ draftId: draft.draftId,
66
+ imageInfos: [
67
+ { imageUrl: '/absolute/path/bg.png', width: 1080, height: 1920, start: 0, end: 5000000 },
68
+ ],
69
+ });
70
+
71
+ await addCaptions({
72
+ draftId: draft.draftId,
73
+ captions: [{ text: 'Hello', start: 0, end: 5000000 }],
74
+ fontSize: 8,
75
+ textColor: '#ffffff',
76
+ });
77
+ ```
78
+
79
+ 需要逐步添加素材或操作时使用这种方式。
80
+
81
+ ## 时间
82
+
83
+ 低层 API 使用微秒:
84
+
85
+ | 人类时间 | 数值 |
86
+ |------------|-------|
87
+ | 0.5s | `500000` |
88
+ | 1s | `1000000` |
89
+ | 3s | `3000000` |
90
+ | 10s | `10000000` |
91
+
92
+ Draft Spec 可以使用字符串:
93
+
94
+ ```ts
95
+ '1.5s'
96
+ '500ms'
97
+ '300000us'
98
+ ```
99
+
100
+ ## 错误处理
101
+
102
+ ```ts
103
+ try {
104
+ await createDraftFromSpec(spec);
105
+ } catch (error) {
106
+ if (isCutSdkError(error)) {
107
+ console.error(error.code, error.operation, error.details);
108
+ } else {
109
+ console.error(error);
110
+ }
111
+ }
112
+ ```
113
+
114
+ 常见错误码:
115
+
116
+ | code | 含义 |
117
+ |------|---------|
118
+ | `INVALID_INPUT` | SDK 参数不合法 |
119
+ | `DRAFT_NOT_FOUND` | 草稿 ID 或草稿文件夹不存在 |
120
+ | `MEDIA_NOT_FOUND` | 本地媒体文件不存在 |
121
+ | `MEDIA_DOWNLOAD_FAILED` | 远程媒体下载失败 |
122
+ | `MISSING_API_TOKEN` | 缺少云渲染 token |
123
+ | `DRAFT_SPEC_VALIDATION_FAILED` | Draft Spec 校验失败 |
124
+ | `DRAFT_SPEC_RESOLVE_FAILED` | Draft Spec 无法归一化 |
125
+
126
+ ## 对应 CLI 命令
127
+
128
+ ```bash
129
+ cut draft create --width 1080 --height 1920
130
+ cut captions add <draftId> --captions '[{"text":"Hello","start":0,"end":3000000}]'
131
+ cut cloud render <draftId> --wait
132
+ ```
@@ -0,0 +1,43 @@
1
+ import { addCaptions, addImages, createDraft, getDraftInfo } from 'cutsdk';
2
+
3
+ async function main() {
4
+ const draft = await createDraft({ width: 1080, height: 1920 });
5
+
6
+ await addImages({
7
+ draftId: draft.draftId,
8
+ imageInfos: [
9
+ {
10
+ imageUrl: '/absolute/path/to/background.png',
11
+ width: 1080,
12
+ height: 1920,
13
+ start: 0,
14
+ end: 5000000,
15
+ },
16
+ ],
17
+ });
18
+
19
+ await addCaptions({
20
+ draftId: draft.draftId,
21
+ captions: [
22
+ {
23
+ text: '低层 SDK 示例',
24
+ start: 0,
25
+ end: 5000000,
26
+ keyword: 'SDK',
27
+ keywordColor: '#00ffaa',
28
+ },
29
+ ],
30
+ fontSize: 8,
31
+ textColor: '#ffffff',
32
+ bold: true,
33
+ transformY: -0.65,
34
+ });
35
+
36
+ const info = await getDraftInfo({ draftId: draft.draftId });
37
+ console.log({ draft, info });
38
+ }
39
+
40
+ main().catch((error) => {
41
+ console.error(error);
42
+ process.exit(1);
43
+ });
@@ -0,0 +1,73 @@
1
+ import { createDraftFromSpec, validateDraftSpec } from 'cutsdk';
2
+
3
+ const spec = {
4
+ version: '1.0',
5
+ canvas: { width: 1080, height: 1920 },
6
+ duration: '6s',
7
+ assets: {
8
+ cover: {
9
+ type: 'image',
10
+ src: '/absolute/path/to/cover.png',
11
+ width: 1080,
12
+ height: 1920,
13
+ },
14
+ bgm: {
15
+ type: 'audio',
16
+ src: '/absolute/path/to/music.mp3',
17
+ duration: '6s',
18
+ },
19
+ },
20
+ styles: {
21
+ title: {
22
+ fontSize: 10,
23
+ color: '#ffffff',
24
+ bold: true,
25
+ shadow: true,
26
+ },
27
+ },
28
+ tracks: [
29
+ {
30
+ type: 'visual',
31
+ clips: [
32
+ { type: 'image', asset: 'cover', start: '0s', duration: '6s' },
33
+ ],
34
+ },
35
+ {
36
+ type: 'text',
37
+ clips: [
38
+ {
39
+ type: 'caption',
40
+ text: 'AI Draft Spec 示例',
41
+ style: 'title',
42
+ keyword: 'AI|Spec',
43
+ keywordColor: '#00ffaa',
44
+ start: '0s',
45
+ duration: '6s',
46
+ position: 'bottom',
47
+ },
48
+ ],
49
+ },
50
+ {
51
+ type: 'audio',
52
+ clips: [
53
+ { type: 'audio', asset: 'bgm', start: '0s', duration: '6s', volume: 0.7 },
54
+ ],
55
+ },
56
+ ],
57
+ } as const;
58
+
59
+ async function main() {
60
+ const validation = validateDraftSpec(spec);
61
+ if (!validation.valid) {
62
+ console.error(validation.errors);
63
+ process.exit(1);
64
+ }
65
+
66
+ const draft = await createDraftFromSpec(spec);
67
+ console.log(draft);
68
+ }
69
+
70
+ main().catch((error) => {
71
+ console.error(error);
72
+ process.exit(1);
73
+ });
@@ -0,0 +1,67 @@
1
+ import { addKeyframes, addMasks, createAndRenderDraft } from 'cutsdk';
2
+
3
+ async function main() {
4
+ const result = await createAndRenderDraft({
5
+ draft: {
6
+ version: '1.0',
7
+ canvas: { width: 1080, height: 1920 },
8
+ duration: '5s',
9
+ assets: {
10
+ bg: {
11
+ type: 'image',
12
+ src: '/absolute/path/to/background.png',
13
+ width: 1080,
14
+ height: 1920,
15
+ },
16
+ },
17
+ tracks: [
18
+ {
19
+ type: 'visual',
20
+ clips: [{ type: 'image', asset: 'bg', start: '0s', duration: '5s' }],
21
+ },
22
+ {
23
+ type: 'text',
24
+ clips: [{ type: 'caption', text: '创建并云渲染', start: '0s', duration: '5s' }],
25
+ },
26
+ ],
27
+ },
28
+ output: {
29
+ draftsDir: process.env.CUT_DRAFTS_DIR,
30
+ name: 'cut-sdk-render-demo',
31
+ },
32
+ afterCreate: async ({ draft, clip }) => {
33
+ const firstImage = clip('image', 0);
34
+ if (!firstImage.segmentId) return;
35
+
36
+ await addMasks({
37
+ draftId: draft.draftId,
38
+ segmentIds: [firstImage.segmentId],
39
+ name: '矩形',
40
+ });
41
+
42
+ await addKeyframes({
43
+ draftId: draft.draftId,
44
+ keyframes: [
45
+ { segmentId: firstImage.segmentId, property: 'KFTypeScaleX', offset: 0, value: 1.0 },
46
+ { segmentId: firstImage.segmentId, property: 'KFTypeScaleX', offset: 5000000, value: 1.08 },
47
+ { segmentId: firstImage.segmentId, property: 'KFTypeScaleY', offset: 0, value: 1.0 },
48
+ { segmentId: firstImage.segmentId, property: 'KFTypeScaleY', offset: 5000000, value: 1.08 },
49
+ ],
50
+ });
51
+ },
52
+ render: {
53
+ cloud: true,
54
+ apiToken: process.env.CUT_API_TOKEN,
55
+ apiBase: process.env.CUT_UPLOAD_API_BASE,
56
+ wait: true,
57
+ },
58
+ });
59
+
60
+ console.log(result.draft.filePath);
61
+ console.log(result.render?.videoUrl);
62
+ }
63
+
64
+ main().catch((error) => {
65
+ console.error(error);
66
+ process.exit(1);
67
+ });
@@ -0,0 +1,71 @@
1
+ # cut_sdk CLI 示例
2
+
3
+ 当用户希望使用命令行而不是 SDK 代码时,参考这些示例。
4
+
5
+ ## 创建草稿
6
+
7
+ ```bash
8
+ cut draft create --width 1080 --height 1920 --pretty
9
+ ```
10
+
11
+ 输出中会包含 `draftId`,后续命令都使用这个草稿 ID。
12
+
13
+ ## 添加字幕
14
+
15
+ ```bash
16
+ cut captions add <draftId> --captions '[
17
+ {
18
+ "text": "CLI 字幕示例",
19
+ "start": 0,
20
+ "end": 3000000,
21
+ "keyword": "CLI",
22
+ "keywordColor": "#00ffaa",
23
+ "inAnimation": "渐显",
24
+ "outAnimation": "渐隐",
25
+ "inAnimationDuration": 500000,
26
+ "outAnimationDuration": 500000
27
+ }
28
+ ]' --font-size 8 --text-color "#ffffff" --bold --pretty
29
+ ```
30
+
31
+ ## 添加图片
32
+
33
+ ```bash
34
+ cut images add <draftId> --image-infos '[
35
+ {
36
+ "imageUrl": "/absolute/path/to/background.png",
37
+ "width": 1080,
38
+ "height": 1920,
39
+ "start": 0,
40
+ "end": 5000000
41
+ }
42
+ ]' --pretty
43
+ ```
44
+
45
+ ## 添加音频
46
+
47
+ ```bash
48
+ cut audios add <draftId> --audio-infos '[
49
+ {
50
+ "audioUrl": "/absolute/path/to/music.mp3",
51
+ "duration": 5000000,
52
+ "start": 0,
53
+ "end": 5000000,
54
+ "volume": 0.7
55
+ }
56
+ ]' --pretty
57
+ ```
58
+
59
+ ## 渲染
60
+
61
+ ```bash
62
+ cut cloud render <draftId> --wait --pretty
63
+ ```
64
+
65
+ ## JSON 文件输入
66
+
67
+ 大多数 JSON 参数也支持 `@file.json`:
68
+
69
+ ```bash
70
+ cut captions add <draftId> --captions @captions.json --pretty
71
+ ```