cutsdk 0.0.1 → 1.1.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 +130 -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 +11 -0
  20. package/dist/api/cloud/render-draft.d.ts.map +1 -0
  21. package/dist/api/cloud/render-draft.js +203 -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 +89 -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 +70 -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/query/get-text-effects.d.ts +4 -0
  108. package/dist/api/query/get-text-effects.d.ts.map +1 -0
  109. package/dist/api/query/get-text-effects.js +36 -0
  110. package/dist/api/query/get-text-effects.js.map +1 -0
  111. package/dist/api/setup/templates/project/.agents/skills/cut-draft/SKILL.md +92 -0
  112. package/dist/api/setup/templates/project/cutcli-docs/.env.example +6 -0
  113. package/dist/api/setup/templates/project/cutcli-docs/README.md +95 -0
  114. package/dist/api/setup/templates/project/cutcli-docs/api-cheatsheet.md +156 -0
  115. package/dist/api/setup/templates/project/cutcli-docs/examples/01-create-draft.ts +43 -0
  116. package/dist/api/setup/templates/project/cutcli-docs/examples/02-draft-spec.ts +73 -0
  117. package/dist/api/setup/templates/project/cutcli-docs/examples/03-create-and-render.ts +66 -0
  118. package/dist/api/setup/templates/project/cutcli-docs/examples/04-cli-examples.md +109 -0
  119. package/dist/api/setup/templates/project/cutcli-docs/quickstart.md +130 -0
  120. package/dist/api/sticker/add-sticker.d.ts +3 -0
  121. package/dist/api/sticker/add-sticker.d.ts.map +1 -0
  122. package/dist/api/sticker/add-sticker.js +22 -0
  123. package/dist/api/sticker/add-sticker.js.map +1 -0
  124. package/dist/api/sticker/get-stickers.d.ts +5 -0
  125. package/dist/api/sticker/get-stickers.d.ts.map +1 -0
  126. package/dist/api/sticker/get-stickers.js +23 -0
  127. package/dist/api/sticker/get-stickers.js.map +1 -0
  128. package/dist/api/text-style/add-text-style.d.ts +3 -0
  129. package/dist/api/text-style/add-text-style.d.ts.map +1 -0
  130. package/dist/api/text-style/add-text-style.js +25 -0
  131. package/dist/api/text-style/add-text-style.js.map +1 -0
  132. package/dist/api/videos/add-videos.d.ts +3 -0
  133. package/dist/api/videos/add-videos.d.ts.map +1 -0
  134. package/dist/api/videos/add-videos.js +84 -0
  135. package/dist/api/videos/add-videos.js.map +1 -0
  136. package/dist/api/videos/get-videos.d.ts +5 -0
  137. package/dist/api/videos/get-videos.d.ts.map +1 -0
  138. package/dist/api/videos/get-videos.js +30 -0
  139. package/dist/api/videos/get-videos.js.map +1 -0
  140. package/dist/config/index.d.ts +11 -0
  141. package/dist/config/index.d.ts.map +1 -0
  142. package/dist/config/index.js +27 -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 +77 -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 +62 -0
  402. package/dist/index.d.ts.map +1 -0
  403. package/dist/index.js +90 -0
  404. package/dist/index.js.map +1 -0
  405. package/dist/shared/cloud-client.d.ts +59 -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 +117 -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 +637 -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 +64 -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,4 @@
1
+ import type { GetTextEffectInput, GetTextEffectOutput, GetTextEffectsInput, GetTextEffectsOutput } from '../../types';
2
+ export declare function getTextEffects(params?: GetTextEffectsInput): Promise<GetTextEffectsOutput>;
3
+ export declare function getTextEffect(params: GetTextEffectInput): Promise<GetTextEffectOutput>;
4
+ //# sourceMappingURL=get-text-effects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-text-effects.d.ts","sourceRoot":"","sources":["../../../src/api/query/get-text-effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EAErB,MAAM,aAAa,CAAC;AAerB,wBAAsB,cAAc,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAUpG;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAS5F"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTextEffects = getTextEffects;
4
+ exports.getTextEffect = getTextEffect;
5
+ const { fetch_all_huazi, fetch_huazi_by_title, search_huazi_by_keyword } = require('../../draft/drafts/data/huazi/online_huazi');
6
+ function toTextEffectInfo(item) {
7
+ const attr = item?.common_attr || {};
8
+ return {
9
+ title: attr.title || '',
10
+ effectId: attr.effect_id,
11
+ description: attr.description,
12
+ isVip: attr.is_vip,
13
+ raw: item,
14
+ };
15
+ }
16
+ async function getTextEffects(params = {}) {
17
+ const limit = params.limit && params.limit > 0 ? params.limit : 20;
18
+ const keyword = params.keyword || '';
19
+ const items = keyword
20
+ ? await search_huazi_by_keyword(keyword, limit)
21
+ : (await fetch_all_huazi(false)).slice(0, limit);
22
+ return {
23
+ effects: items.map(toTextEffectInfo).filter((item) => item.title),
24
+ };
25
+ }
26
+ async function getTextEffect(params) {
27
+ const effect = await fetch_huazi_by_title(params.name);
28
+ if (!effect)
29
+ return { effect: null, exact: false };
30
+ const info = toTextEffectInfo(effect);
31
+ return {
32
+ effect: info,
33
+ exact: info.title === params.name,
34
+ };
35
+ }
36
+ //# sourceMappingURL=get-text-effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-text-effects.js","sourceRoot":"","sources":["../../../src/api/query/get-text-effects.ts"],"names":[],"mappings":";;AAqBA,wCAUC;AAED,sCASC;AAlCD,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,4CAA4C,CAAC,CAAC;AAEjI,SAAS,gBAAgB,CAAC,IAAS;IACjC,MAAM,IAAI,GAAG,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;IACrC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,GAAG,EAAE,IAAI;KACV,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,SAA8B,EAAE;IACnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO;QACnB,CAAC,CAAC,MAAM,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC;QAC/C,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEnD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;KAClF,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,MAA0B;IAC5D,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAEnD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI;KAClC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: cut-draft
3
+ description: >-
4
+ 使用 cutsdk 创建和操作剪映/CapCut 草稿工程。用户想创建剪映草稿、添加字幕/图片/视频/音频/特效/贴纸/关键帧/遮罩、
5
+ 提交渲染,或提到 cutsdk、cutcli、draft spec、剪映、草稿、字幕、CapCut draft 时使用此 skill。
6
+ ---
7
+
8
+ # cutcli 项目级 Skill
9
+
10
+ `cutsdk` 是用于创建剪映/CapCut 桌面端草稿文件夹的 Node.js SDK。`cutcli` 是给 AI 实时调用的命令行工具。生成后的草稿可直接在剪映桌面端打开。
11
+
12
+ ## 先读这些
13
+
14
+ 写代码前,先阅读本项目内的文档:
15
+
16
+ 1. `cutcli-docs/README.md`
17
+ 2. `cutcli-docs/quickstart.md`
18
+ 3. `cutcli-docs/api-cheatsheet.md`
19
+
20
+ 实现时优先从 `cutcli-docs/examples/` 里选择最接近的示例改起。
21
+
22
+ ## 推荐使用路径
23
+
24
+ - AI 生成完整时间线时,优先使用 `cutcli spec create --file draft.json`,或在代码中使用 `createDraftFromSpec(spec)`。
25
+ - 用户希望“一次创建草稿并提交云渲染”时,优先使用 `cutcli spec render --file draft.json --cloud --wait`,或在代码中使用 `createAndRenderDraft(input)`。
26
+ - 用户要逐步编辑草稿,或 Draft Spec 尚未覆盖某个能力时,再使用低层 API,例如 `createDraft`、`addCaptions`、`addImages`、`addVideos`、`addAudios`、`addMasks`、`addKeyframes`。
27
+ - 需要实时命令行操作时,优先使用便捷命令,例如 `cutcli image add ...`、`cutcli text add ...`、`cutcli audio add ...`。
28
+
29
+ ## 关键规则
30
+
31
+ - 包导入名是 `cutsdk`。
32
+ - 低层 SDK 的数字时间单位是微秒:`1s = 1000000`。
33
+ - `cutcli` 便捷命令和 AI Draft Spec 的时间字符串可写为 `1.5s`、`500ms`、`300000us`。
34
+ - 默认草稿目录是 `~/Movies/JianyingPro Drafts/{draftId}/`;可通过 `CUT_DRAFTS_DIR` 覆盖。
35
+ - 媒体本地路径和 URL 都可用:本地路径会复制到草稿 `resources/`,URL 会下载到 `resources/`。
36
+ - 图片必须提供 `width` 和 `height`。
37
+ - 使用低层 API 添加视频或音频时,要提供素材原始时长。
38
+ - 同一轨道内的片段不要重叠,除非目标 API 明确会创建独立轨道。
39
+ - CLI 参数使用 kebab-case,例如 `--font-size`,不要写成 `--fontSize`。
40
+ - 云渲染只有 `status = 7` 才算成功并写入 `video_url`;`0/1/2` 表示等待或处理中,`3/5/6` 表示失败终态。
41
+ - AI 调用 CLI 时,如需结构化错误,使用 `--json-errors` 或 `CUTCLI_JSON_ERRORS=1`。
42
+
43
+ ## 最小 Draft Spec 示例
44
+
45
+ 保存为 `draft.json`:
46
+
47
+ ```json
48
+ {
49
+ "version": "1.0",
50
+ "canvas": { "width": 1080, "height": 1920 },
51
+ "tracks": [
52
+ {
53
+ "type": "text",
54
+ "clips": [
55
+ { "type": "caption", "text": "你好剪映", "start": "0s", "duration": "3s" }
56
+ ]
57
+ }
58
+ ]
59
+ }
60
+ ```
61
+
62
+ 然后执行:
63
+
64
+ ```bash
65
+ cutcli spec validate --file draft.json --pretty
66
+ cutcli spec create --file draft.json --pretty
67
+ ```
68
+
69
+ ## 云渲染环境变量
70
+
71
+ 云渲染需要 API Token。优先让用户运行:
72
+
73
+ ```bash
74
+ cutcli login <apiToken>
75
+ ```
76
+
77
+ 也可以使用环境变量:
78
+
79
+ ```env
80
+ CUT_API_TOKEN=your_token
81
+ ```
82
+
83
+ `cutcli login` 会把 Token 保存到本机 `~/.cutcli/config.json`;`cutcli config show` 只显示 `<set>`,不会打印 Token 明文。
84
+
85
+ ## 常见坑
86
+
87
+ 1. 不要混用包名。除非项目明确覆盖,否则始终使用 `cutsdk`。
88
+ 2. 本地拼接优先用 `cutcli image/video/audio/text add`;批量 JSON 命令只在需要一次添加多段素材时使用。
89
+ 3. 不要把“秒”直接作为低层 API 的数字传入。数字 `3` 表示 3 微秒,不是 3 秒。
90
+ 4. 对动画/特效名有精确要求时,不要凭空编造。先用 CLI 查询可用资源,或使用项目里已有示例。
91
+ 5. 除非 SDK 无法表达目标操作,否则不要手动改剪映草稿 JSON。
92
+ 6. 生成复杂时间线时,先用 `cutcli spec validate --file draft.json` 或 `validateDraftSpec(spec)` 校验 Draft Spec。
@@ -0,0 +1,6 @@
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
@@ -0,0 +1,95 @@
1
+ # cutsdk 项目接入指南
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 @cutcli/cutcli
23
+ cutcli agents install
24
+ cutcli login <apiToken>
25
+ cutcli spec validate --file draft.json
26
+ cutcli spec create --file draft.json
27
+ ```
28
+
29
+ 不全局安装也可以直接用 `npx`:
30
+
31
+ ```bash
32
+ npx @cutcli/cutcli spec create --file draft.json
33
+ ```
34
+
35
+ ## 环境变量
36
+
37
+ 当项目需要自定义草稿目录或使用云渲染时,把 `.env.example` 复制为 `.env` 并填写:
38
+
39
+ ```env
40
+ CUT_DRAFTS_DIR=/absolute/path/to/JianyingPro Drafts
41
+ CUT_API_TOKEN=your_token
42
+ ```
43
+
44
+ 也可以用 CLI 保存云渲染 Token:
45
+
46
+ ```bash
47
+ cutcli login <apiToken>
48
+ cutcli config show --pretty
49
+ ```
50
+
51
+ Token 会保存到本机 `~/.cutcli/config.json`,输出中只显示 `<set>`。
52
+
53
+ 云渲染状态码:
54
+
55
+ | status | 含义 |
56
+ |--------|------|
57
+ | `0` | 初始创建,尚未正式入队 |
58
+ | `1` | 已提交/排队中,等待云渲染机器领取 |
59
+ | `2` | 处理中,机器已领取任务并开始渲染 |
60
+ | `3` | 草稿 ID 异常或草稿 ID 不存在 |
61
+ | `5` | 处理超时 |
62
+ | `6` | 处理失败 |
63
+ | `7` | 成功完成,此时才会写入 `video_url` |
64
+
65
+ ## 核心概念
66
+
67
+ - 一个草稿就是磁盘上的剪映兼容工程文件夹。
68
+ - 默认草稿路径是 `~/Movies/JianyingPro Drafts/{draftId}/`。
69
+ - 低层 SDK API 的时间数值使用微秒。
70
+ - AI Draft Spec 和 `cutcli image/text/audio/video add` 支持更易读的时间字符串,例如 `3s`、`500ms`、`300000us`。
71
+ - 媒体 URL 和本地文件路径会被复制/下载到草稿的 `resources` 文件夹。
72
+
73
+ ## 推荐优先使用
74
+
75
+ AI 生成视频草稿时,优先使用 `createDraftFromSpec`。它允许用一个 JSON 对象描述完整时间线,再由 SDK 调用底层草稿 API。
76
+
77
+ 创建草稿后还需要补充高级操作时,可以使用带 `afterCreate` 的 `createAndRenderDraft`,或直接调用低层 API。
78
+
79
+ 使用命令行时,优先使用:
80
+
81
+ ```bash
82
+ cutcli spec validate --file draft.json --pretty
83
+ cutcli spec create --file draft.json --pretty
84
+ cutcli spec render --file draft.json --cloud --wait --pretty
85
+ ```
86
+
87
+ 逐步修改草稿时,优先使用便捷命令:
88
+
89
+ ```bash
90
+ cutcli text add <draftId> --text "标题" --start 0s --duration 3s --font-size 8
91
+ cutcli image add <draftId> --src ./素材/bg.png --start 0s --duration 5s --width 1080 --height 1920
92
+ cutcli audio add <draftId> --src ./素材/bgm.mp3 --start 0s --duration 20s
93
+ ```
94
+
95
+ AI 调用 CLI 时,如果需要结构化错误输出,可以加 `--json-errors` 或设置 `CUTCLI_JSON_ERRORS=1`。
@@ -0,0 +1,156 @@
1
+ # cutsdk 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
+ getTextEffects,
21
+ getTextEffect,
22
+ renderDraft,
23
+ isCutSdkError,
24
+ } from 'cutsdk';
25
+ ```
26
+
27
+ ## 优先选择:AI Draft Spec
28
+
29
+ ```ts
30
+ const result = await createDraftFromSpec({
31
+ version: '1.0',
32
+ canvas: { width: 1080, height: 1920 },
33
+ duration: '5s',
34
+ tracks: [
35
+ { type: 'text', clips: [{ type: 'caption', text: 'Hello', start: '0s', duration: '5s' }] },
36
+ ],
37
+ });
38
+ ```
39
+
40
+ 用于一次性生成完整时间线。
41
+
42
+ ## 创建并渲染
43
+
44
+ ```ts
45
+ const result = await createAndRenderDraft({
46
+ draft: spec,
47
+ output: {
48
+ draftsDir: process.env.CUT_DRAFTS_DIR,
49
+ name: 'demo-draft',
50
+ },
51
+ render: {
52
+ cloud: true,
53
+ apiToken: process.env.CUT_API_TOKEN,
54
+ },
55
+ });
56
+
57
+ console.log(result.render?.videoUrl);
58
+ ```
59
+
60
+ ## 低层草稿流程
61
+
62
+ ```ts
63
+ const draft = await createDraft({ width: 1080, height: 1920 });
64
+
65
+ await addImages({
66
+ draftId: draft.draftId,
67
+ imageInfos: [
68
+ { imageUrl: '/absolute/path/bg.png', width: 1080, height: 1920, start: 0, end: 5000000 },
69
+ ],
70
+ });
71
+
72
+ await addCaptions({
73
+ draftId: draft.draftId,
74
+ captions: [{ text: 'Hello', start: 0, end: 5000000 }],
75
+ fontSize: 8,
76
+ textColor: '#ffffff',
77
+ textEffect: '红黄火焰综艺花字',
78
+ hasShadow: true,
79
+ });
80
+ ```
81
+
82
+ 需要逐步添加素材或操作时使用这种方式。
83
+
84
+ ## 时间
85
+
86
+ 低层 API 使用微秒:
87
+
88
+ | 人类时间 | 数值 |
89
+ |------------|-------|
90
+ | 0.5s | `500000` |
91
+ | 1s | `1000000` |
92
+ | 3s | `3000000` |
93
+ | 10s | `10000000` |
94
+
95
+ Draft Spec 可以使用字符串:
96
+
97
+ ```ts
98
+ '1.5s'
99
+ '500ms'
100
+ '300000us'
101
+ ```
102
+
103
+ ## 错误处理
104
+
105
+ ```ts
106
+ try {
107
+ await createDraftFromSpec(spec);
108
+ } catch (error) {
109
+ if (isCutSdkError(error)) {
110
+ console.error(error.code, error.operation, error.details);
111
+ } else {
112
+ console.error(error);
113
+ }
114
+ }
115
+ ```
116
+
117
+ 常见错误码:
118
+
119
+ | code | 含义 |
120
+ |------|---------|
121
+ | `INVALID_INPUT` | SDK 参数不合法 |
122
+ | `DRAFT_NOT_FOUND` | 草稿 ID 或草稿文件夹不存在 |
123
+ | `MEDIA_NOT_FOUND` | 本地媒体文件不存在 |
124
+ | `MEDIA_DOWNLOAD_FAILED` | 远程媒体下载失败 |
125
+ | `MISSING_API_TOKEN` | 缺少云渲染 token |
126
+ | `DRAFT_SPEC_VALIDATION_FAILED` | Draft Spec 校验失败 |
127
+ | `DRAFT_SPEC_RESOLVE_FAILED` | Draft Spec 无法归一化 |
128
+
129
+ ## 对应 CLI 命令
130
+
131
+ ```bash
132
+ cutcli draft create --width 1080 --height 1920
133
+ cutcli query text-effects --keyword 火焰 --limit 5
134
+ cutcli text add <draftId> --text "Hello" --start 0s --duration 3s
135
+ cutcli image add <draftId> --src ./素材/bg.png --start 0s --duration 5s --width 1080 --height 1920
136
+ cutcli cloud render <draftId> --wait
137
+ ```
138
+
139
+ 云渲染状态:
140
+
141
+ | status | 含义 |
142
+ |--------|------|
143
+ | `0` | 初始创建,尚未正式入队 |
144
+ | `1` | 已提交/排队中 |
145
+ | `2` | 处理中 |
146
+ | `3` | 草稿 ID 异常或不存在 |
147
+ | `5` | 处理超时 |
148
+ | `6` | 处理失败 |
149
+ | `7` | 成功完成,读取 `video_url` |
150
+
151
+ ## 花字查询
152
+
153
+ ```ts
154
+ const effects = await getTextEffects({ keyword: '火焰', limit: 5 });
155
+ const exact = await getTextEffect({ name: effects.effects[0].title });
156
+ ```
@@ -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
+ });