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.
- package/LICENSE +21 -0
- package/README.md +130 -0
- package/dist/api/audios/add-audios.d.ts +3 -0
- package/dist/api/audios/add-audios.d.ts.map +1 -0
- package/dist/api/audios/add-audios.js +33 -0
- package/dist/api/audios/add-audios.js.map +1 -0
- package/dist/api/audios/get-audios.d.ts +5 -0
- package/dist/api/audios/get-audios.d.ts.map +1 -0
- package/dist/api/audios/get-audios.js +27 -0
- package/dist/api/audios/get-audios.js.map +1 -0
- package/dist/api/captions/add-captions.d.ts +3 -0
- package/dist/api/captions/add-captions.d.ts.map +1 -0
- package/dist/api/captions/add-captions.js +220 -0
- package/dist/api/captions/add-captions.js.map +1 -0
- package/dist/api/captions/get-captions.d.ts +5 -0
- package/dist/api/captions/get-captions.d.ts.map +1 -0
- package/dist/api/captions/get-captions.js +36 -0
- package/dist/api/captions/get-captions.js.map +1 -0
- package/dist/api/cloud/render-draft.d.ts +11 -0
- package/dist/api/cloud/render-draft.d.ts.map +1 -0
- package/dist/api/cloud/render-draft.js +203 -0
- package/dist/api/cloud/render-draft.js.map +1 -0
- package/dist/api/cloud/submit-video-render-task.d.ts +4 -0
- package/dist/api/cloud/submit-video-render-task.d.ts.map +1 -0
- package/dist/api/cloud/submit-video-render-task.js +54 -0
- package/dist/api/cloud/submit-video-render-task.js.map +1 -0
- package/dist/api/cloud/upload-draft.d.ts +4 -0
- package/dist/api/cloud/upload-draft.d.ts.map +1 -0
- package/dist/api/cloud/upload-draft.js +89 -0
- package/dist/api/cloud/upload-draft.js.map +1 -0
- package/dist/api/draft/create-draft.d.ts +3 -0
- package/dist/api/draft/create-draft.d.ts.map +1 -0
- package/dist/api/draft/create-draft.js +11 -0
- package/dist/api/draft/create-draft.js.map +1 -0
- package/dist/api/draft/easy-create-material.d.ts +3 -0
- package/dist/api/draft/easy-create-material.d.ts.map +1 -0
- package/dist/api/draft/easy-create-material.js +64 -0
- package/dist/api/draft/easy-create-material.js.map +1 -0
- package/dist/api/draft/get-draft-info.d.ts +5 -0
- package/dist/api/draft/get-draft-info.d.ts.map +1 -0
- package/dist/api/draft/get-draft-info.js +35 -0
- package/dist/api/draft/get-draft-info.js.map +1 -0
- package/dist/api/draft/list-drafts.d.ts +3 -0
- package/dist/api/draft/list-drafts.d.ts.map +1 -0
- package/dist/api/draft/list-drafts.js +51 -0
- package/dist/api/draft/list-drafts.js.map +1 -0
- package/dist/api/draft-spec/create-and-render-draft.d.ts +3 -0
- package/dist/api/draft-spec/create-and-render-draft.d.ts.map +1 -0
- package/dist/api/draft-spec/create-and-render-draft.js +70 -0
- package/dist/api/draft-spec/create-and-render-draft.js.map +1 -0
- package/dist/api/draft-spec/create-draft-from-spec.d.ts +4 -0
- package/dist/api/draft-spec/create-draft-from-spec.d.ts.map +1 -0
- package/dist/api/draft-spec/create-draft-from-spec.js +96 -0
- package/dist/api/draft-spec/create-draft-from-spec.js.map +1 -0
- package/dist/api/draft-spec/resolve.d.ts +21 -0
- package/dist/api/draft-spec/resolve.d.ts.map +1 -0
- package/dist/api/draft-spec/resolve.js +279 -0
- package/dist/api/draft-spec/resolve.js.map +1 -0
- package/dist/api/draft-spec/time.d.ts +17 -0
- package/dist/api/draft-spec/time.d.ts.map +1 -0
- package/dist/api/draft-spec/time.js +56 -0
- package/dist/api/draft-spec/time.js.map +1 -0
- package/dist/api/draft-spec/validation.d.ts +3 -0
- package/dist/api/draft-spec/validation.d.ts.map +1 -0
- package/dist/api/draft-spec/validation.js +179 -0
- package/dist/api/draft-spec/validation.js.map +1 -0
- package/dist/api/effects/add-effects.d.ts +3 -0
- package/dist/api/effects/add-effects.d.ts.map +1 -0
- package/dist/api/effects/add-effects.js +24 -0
- package/dist/api/effects/add-effects.js.map +1 -0
- package/dist/api/effects/get-effects.d.ts +5 -0
- package/dist/api/effects/get-effects.d.ts.map +1 -0
- package/dist/api/effects/get-effects.js +23 -0
- package/dist/api/effects/get-effects.js.map +1 -0
- package/dist/api/images/add-images.d.ts +3 -0
- package/dist/api/images/add-images.d.ts.map +1 -0
- package/dist/api/images/add-images.js +67 -0
- package/dist/api/images/add-images.js.map +1 -0
- package/dist/api/images/get-images.d.ts +5 -0
- package/dist/api/images/get-images.d.ts.map +1 -0
- package/dist/api/images/get-images.js +30 -0
- package/dist/api/images/get-images.js.map +1 -0
- package/dist/api/keyframes/add-keyframes.d.ts +3 -0
- package/dist/api/keyframes/add-keyframes.d.ts.map +1 -0
- package/dist/api/keyframes/add-keyframes.js +21 -0
- package/dist/api/keyframes/add-keyframes.js.map +1 -0
- package/dist/api/keyframes/get-keyframes.d.ts +6 -0
- package/dist/api/keyframes/get-keyframes.d.ts.map +1 -0
- package/dist/api/keyframes/get-keyframes.js +41 -0
- package/dist/api/keyframes/get-keyframes.js.map +1 -0
- package/dist/api/masks/add-masks.d.ts +3 -0
- package/dist/api/masks/add-masks.d.ts.map +1 -0
- package/dist/api/masks/add-masks.js +63 -0
- package/dist/api/masks/add-masks.js.map +1 -0
- package/dist/api/masks/get-masks.d.ts +6 -0
- package/dist/api/masks/get-masks.d.ts.map +1 -0
- package/dist/api/masks/get-masks.js +44 -0
- package/dist/api/masks/get-masks.js.map +1 -0
- package/dist/api/query/get-audio-duration.d.ts +3 -0
- package/dist/api/query/get-audio-duration.d.ts.map +1 -0
- package/dist/api/query/get-audio-duration.js +12 -0
- package/dist/api/query/get-audio-duration.js.map +1 -0
- package/dist/api/query/get-image-animations.d.ts +3 -0
- package/dist/api/query/get-image-animations.d.ts.map +1 -0
- package/dist/api/query/get-image-animations.js +21 -0
- package/dist/api/query/get-image-animations.js.map +1 -0
- package/dist/api/query/get-text-effects.d.ts +4 -0
- package/dist/api/query/get-text-effects.d.ts.map +1 -0
- package/dist/api/query/get-text-effects.js +36 -0
- package/dist/api/query/get-text-effects.js.map +1 -0
- package/dist/api/setup/templates/project/.agents/skills/cut-draft/SKILL.md +92 -0
- package/dist/api/setup/templates/project/cutcli-docs/.env.example +6 -0
- package/dist/api/setup/templates/project/cutcli-docs/README.md +95 -0
- package/dist/api/setup/templates/project/cutcli-docs/api-cheatsheet.md +156 -0
- package/dist/api/setup/templates/project/cutcli-docs/examples/01-create-draft.ts +43 -0
- package/dist/api/setup/templates/project/cutcli-docs/examples/02-draft-spec.ts +73 -0
- package/dist/api/setup/templates/project/cutcli-docs/examples/03-create-and-render.ts +66 -0
- package/dist/api/setup/templates/project/cutcli-docs/examples/04-cli-examples.md +109 -0
- package/dist/api/setup/templates/project/cutcli-docs/quickstart.md +130 -0
- package/dist/api/sticker/add-sticker.d.ts +3 -0
- package/dist/api/sticker/add-sticker.d.ts.map +1 -0
- package/dist/api/sticker/add-sticker.js +22 -0
- package/dist/api/sticker/add-sticker.js.map +1 -0
- package/dist/api/sticker/get-stickers.d.ts +5 -0
- package/dist/api/sticker/get-stickers.d.ts.map +1 -0
- package/dist/api/sticker/get-stickers.js +23 -0
- package/dist/api/sticker/get-stickers.js.map +1 -0
- package/dist/api/text-style/add-text-style.d.ts +3 -0
- package/dist/api/text-style/add-text-style.d.ts.map +1 -0
- package/dist/api/text-style/add-text-style.js +25 -0
- package/dist/api/text-style/add-text-style.js.map +1 -0
- package/dist/api/videos/add-videos.d.ts +3 -0
- package/dist/api/videos/add-videos.d.ts.map +1 -0
- package/dist/api/videos/add-videos.js +84 -0
- package/dist/api/videos/add-videos.js.map +1 -0
- package/dist/api/videos/get-videos.d.ts +5 -0
- package/dist/api/videos/get-videos.d.ts.map +1 -0
- package/dist/api/videos/get-videos.js +30 -0
- package/dist/api/videos/get-videos.js.map +1 -0
- package/dist/config/index.d.ts +11 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +27 -0
- package/dist/config/index.js.map +1 -0
- package/dist/draft/drafts/AudioMaterial.d.ts +41 -0
- package/dist/draft/drafts/AudioMaterial.d.ts.map +1 -0
- package/dist/draft/drafts/AudioMaterial.js +45 -0
- package/dist/draft/drafts/AudioMaterial.js.map +1 -0
- package/dist/draft/drafts/Draft.d.ts +272 -0
- package/dist/draft/drafts/Draft.d.ts.map +1 -0
- package/dist/draft/drafts/Draft.js +374 -0
- package/dist/draft/drafts/Draft.js.map +1 -0
- package/dist/draft/drafts/Effects.d.ts +32 -0
- package/dist/draft/drafts/Effects.d.ts.map +1 -0
- package/dist/draft/drafts/Effects.js +77 -0
- package/dist/draft/drafts/Effects.js.map +1 -0
- package/dist/draft/drafts/Huazi.d.ts +47 -0
- package/dist/draft/drafts/Huazi.d.ts.map +1 -0
- package/dist/draft/drafts/Huazi.js +71 -0
- package/dist/draft/drafts/Huazi.js.map +1 -0
- package/dist/draft/drafts/Keyframe.d.ts +57 -0
- package/dist/draft/drafts/Keyframe.d.ts.map +1 -0
- package/dist/draft/drafts/Keyframe.js +66 -0
- package/dist/draft/drafts/Keyframe.js.map +1 -0
- package/dist/draft/drafts/Mask.d.ts +74 -0
- package/dist/draft/drafts/Mask.d.ts.map +1 -0
- package/dist/draft/drafts/Mask.js +93 -0
- package/dist/draft/drafts/Mask.js.map +1 -0
- package/dist/draft/drafts/MediaUtil.d.ts +18 -0
- package/dist/draft/drafts/MediaUtil.d.ts.map +1 -0
- package/dist/draft/drafts/MediaUtil.js +101 -0
- package/dist/draft/drafts/MediaUtil.js.map +1 -0
- package/dist/draft/drafts/Qipaos.d.ts +35 -0
- package/dist/draft/drafts/Qipaos.d.ts.map +1 -0
- package/dist/draft/drafts/Qipaos.js +41 -0
- package/dist/draft/drafts/Qipaos.js.map +1 -0
- package/dist/draft/drafts/Segments.d.ts +74 -0
- package/dist/draft/drafts/Segments.d.ts.map +1 -0
- package/dist/draft/drafts/Segments.js +112 -0
- package/dist/draft/drafts/Segments.js.map +1 -0
- package/dist/draft/drafts/Stickers.d.ts +58 -0
- package/dist/draft/drafts/Stickers.d.ts.map +1 -0
- package/dist/draft/drafts/Stickers.js +64 -0
- package/dist/draft/drafts/Stickers.js.map +1 -0
- package/dist/draft/drafts/TextMaterial.d.ts +119 -0
- package/dist/draft/drafts/TextMaterial.d.ts.map +1 -0
- package/dist/draft/drafts/TextMaterial.js +182 -0
- package/dist/draft/drafts/TextMaterial.js.map +1 -0
- package/dist/draft/drafts/Track.d.ts +18 -0
- package/dist/draft/drafts/Track.d.ts.map +1 -0
- package/dist/draft/drafts/Track.js +30 -0
- package/dist/draft/drafts/Track.js.map +1 -0
- package/dist/draft/drafts/Transitions.d.ts +14 -0
- package/dist/draft/drafts/Transitions.d.ts.map +1 -0
- package/dist/draft/drafts/Transitions.js +21 -0
- package/dist/draft/drafts/Transitions.js.map +1 -0
- package/dist/draft/drafts/VideoMaterial.d.ts +87 -0
- package/dist/draft/drafts/VideoMaterial.d.ts.map +1 -0
- package/dist/draft/drafts/VideoMaterial.js +92 -0
- package/dist/draft/drafts/VideoMaterial.js.map +1 -0
- package/dist/draft/drafts/add_keyframes_v2.d.ts +2 -0
- package/dist/draft/drafts/add_keyframes_v2.d.ts.map +1 -0
- package/dist/draft/drafts/add_keyframes_v2.js +281 -0
- package/dist/draft/drafts/add_keyframes_v2.js.map +1 -0
- package/dist/draft/drafts/add_text_animations.d.ts +7 -0
- package/dist/draft/drafts/add_text_animations.d.ts.map +1 -0
- package/dist/draft/drafts/add_text_animations.js +29 -0
- package/dist/draft/drafts/add_text_animations.js.map +1 -0
- package/dist/draft/drafts/add_video_animations.d.ts +7 -0
- package/dist/draft/drafts/add_video_animations.d.ts.map +1 -0
- package/dist/draft/drafts/add_video_animations.js +29 -0
- package/dist/draft/drafts/add_video_animations.js.map +1 -0
- package/dist/draft/drafts/add_video_effects.d.ts +27 -0
- package/dist/draft/drafts/add_video_effects.d.ts.map +1 -0
- package/dist/draft/drafts/add_video_effects.js +11 -0
- package/dist/draft/drafts/add_video_effects.js.map +1 -0
- package/dist/draft/drafts/data/audio/audio_effect.d.ts +35 -0
- package/dist/draft/drafts/data/audio/audio_effect.d.ts.map +1 -0
- package/dist/draft/drafts/data/audio/audio_effect.js +98 -0
- package/dist/draft/drafts/data/audio/audio_effect.js.map +1 -0
- package/dist/draft/drafts/data/audio//346/250/241/346/213/237.json +4275 -0
- package/dist/draft/drafts/data/audio//347/216/257/345/242/203.json +1673 -0
- package/dist/draft/drafts/data/audio//347/276/216/345/214/226.json +860 -0
- package/dist/draft/drafts/data/effect/cn/effect.d.ts +29 -0
- package/dist/draft/drafts/data/effect/cn/effect.d.ts.map +1 -0
- package/dist/draft/drafts/data/effect/cn/effect.js +122 -0
- package/dist/draft/drafts/data/effect/cn/effect.js.map +1 -0
- package/dist/draft/drafts/data/effect/cn/huamian/aixing.json +3097 -0
- package/dist/draft/drafts/data/effect/cn/huamian/anhei.json +3456 -0
- package/dist/draft/drafts/data/effect/cn/huamian/biankuang.json +8201 -0
- package/dist/draft/drafts/data/effect/cn/huamian/bling.json +5836 -0
- package/dist/draft/drafts/data/effect/cn/huamian/chaoku.json +3554 -0
- package/dist/draft/drafts/data/effect/cn/huamian/dianyin.json +624 -0
- package/dist/draft/drafts/data/effect/cn/huamian/donggan.json +11193 -0
- package/dist/draft/drafts/data/effect/cn/huamian/dv.json +3305 -0
- package/dist/draft/drafts/data/effect/cn/huamian/fanwei.json +10631 -0
- package/dist/draft/drafts/data/effect/cn/huamian/fenpin.json +1016 -0
- package/dist/draft/drafts/data/effect/cn/huamian/fugu.json +7592 -0
- package/dist/draft/drafts/data/effect/cn/huamian/guang.json +5614 -0
- package/dist/draft/drafts/data/effect/cn/huamian/hot.json +16202 -0
- package/dist/draft/drafts/data/effect/cn/huamian/jichu.json +10017 -0
- package/dist/draft/drafts/data/effect/cn/huamian/jinfen.json +2545 -0
- package/dist/draft/drafts/data/effect/cn/huamian/manhua.json +1897 -0
- package/dist/draft/drafts/data/effect/cn/huamian/niuqu.json +2037 -0
- package/dist/draft/drafts/data/effect/cn/huamian/touyin.json +1013 -0
- package/dist/draft/drafts/data/effect/cn/huamian/wenlin.json +2942 -0
- package/dist/draft/drafts/data/effect/cn/huamian/xinnian.json +4627 -0
- package/dist/draft/drafts/data/effect/cn/huamian/zhongyi.json +3063 -0
- package/dist/draft/drafts/data/effect/cn/huamian/ziran.json +4791 -0
- package/dist/draft/drafts/data/effect/cn/huamian/zuixin.json +5677 -0
- package/dist/draft/drafts/data/effect/cn/renwu/anhei.json +900 -0
- package/dist/draft/drafts/data/effect/cn/renwu/danglian.json +1518 -0
- package/dist/draft/drafts/data/effect/cn/renwu/hot.json +20280 -0
- package/dist/draft/drafts/data/effect/cn/renwu/huanrao.json +1447 -0
- package/dist/draft/drafts/data/effect/cn/renwu/kelong.json +1857 -0
- package/dist/draft/drafts/data/effect/cn/renwu/qingxu.json +5641 -0
- package/dist/draft/drafts/data/effect/cn/renwu/shenti.json +2827 -0
- package/dist/draft/drafts/data/effect/cn/renwu/shoubu.json +742 -0
- package/dist/draft/drafts/data/effect/cn/renwu/tousi.json +3129 -0
- package/dist/draft/drafts/data/effect/cn/renwu/xingxiang.json +1397 -0
- package/dist/draft/drafts/data/effect/cn/renwu/zhuangshi.json +5017 -0
- package/dist/draft/drafts/data/font/font.d.ts +11 -0
- package/dist/draft/drafts/data/font/font.d.ts.map +1 -0
- package/dist/draft/drafts/data/font/font.js +9303 -0
- package/dist/draft/drafts/data/font/font.js.map +1 -0
- package/dist/draft/drafts/data/font/font_0427.d.ts +3 -0
- package/dist/draft/drafts/data/font/font_0427.d.ts.map +1 -0
- package/dist/draft/drafts/data/font/font_0427.js +57922 -0
- package/dist/draft/drafts/data/font/font_0427.js.map +1 -0
- package/dist/draft/drafts/data/font/online_font.d.ts +7 -0
- package/dist/draft/drafts/data/font/online_font.d.ts.map +1 -0
- package/dist/draft/drafts/data/font/online_font.js +78 -0
- package/dist/draft/drafts/data/font/online_font.js.map +1 -0
- package/dist/draft/drafts/data/huazi/all_huazi_data.json +94057 -0
- package/dist/draft/drafts/data/huazi/online_huazi.d.ts +9 -0
- package/dist/draft/drafts/data/huazi/online_huazi.d.ts.map +1 -0
- package/dist/draft/drafts/data/huazi/online_huazi.js +163 -0
- package/dist/draft/drafts/data/huazi/online_huazi.js.map +1 -0
- package/dist/draft/drafts/data/texiao/aixin.json +2555 -0
- package/dist/draft/drafts/data/texiao/anhei.json +2909 -0
- package/dist/draft/drafts/data/texiao/biankuang.json +5906 -0
- package/dist/draft/drafts/data/texiao/bling.json +4171 -0
- package/dist/draft/drafts/data/texiao/chaoku.json +1560 -0
- package/dist/draft/drafts/data/texiao/dianyin.json +522 -0
- package/dist/draft/drafts/data/texiao/donggan.json +6157 -0
- package/dist/draft/drafts/data/texiao/dv.json +1796 -0
- package/dist/draft/drafts/data/texiao/fenpin.json +712 -0
- package/dist/draft/drafts/data/texiao/fenwei.json +4405 -0
- package/dist/draft/drafts/data/texiao/fugu.json +4472 -0
- package/dist/draft/drafts/data/texiao/guang.json +2297 -0
- package/dist/draft/drafts/data/texiao/jichu.json +4929 -0
- package/dist/draft/drafts/data/texiao/jinfen.json +1712 -0
- package/dist/draft/drafts/data/texiao/manhua.json +1700 -0
- package/dist/draft/drafts/data/texiao/niuqu.json +708 -0
- package/dist/draft/drafts/data/texiao/remen.json +7147 -0
- package/dist/draft/drafts/data/texiao/texiao.d.ts +53 -0
- package/dist/draft/drafts/data/texiao/texiao.d.ts.map +1 -0
- package/dist/draft/drafts/data/texiao/texiao.js +102 -0
- package/dist/draft/drafts/data/texiao/texiao.js.map +1 -0
- package/dist/draft/drafts/data/texiao/touyin.json +2354 -0
- package/dist/draft/drafts/data/texiao/wenli.json +2118 -0
- package/dist/draft/drafts/data/texiao/ziran.json +2882 -0
- package/dist/draft/drafts/data/texiao/zongyi.json +2287 -0
- package/dist/draft/drafts/data/text/chuchang.d.ts +35 -0
- package/dist/draft/drafts/data/text/chuchang.d.ts.map +1 -0
- package/dist/draft/drafts/data/text/chuchang.js +4547 -0
- package/dist/draft/drafts/data/text/chuchang.js.map +1 -0
- package/dist/draft/drafts/data/text/qipao.d.ts +87 -0
- package/dist/draft/drafts/data/text/qipao.d.ts.map +1 -0
- package/dist/draft/drafts/data/text/qipao.js +17773 -0
- package/dist/draft/drafts/data/text/qipao.js.map +1 -0
- package/dist/draft/drafts/data/text/ruchang.d.ts +35 -0
- package/dist/draft/drafts/data/text/ruchang.d.ts.map +1 -0
- package/dist/draft/drafts/data/text/ruchang.js +5363 -0
- package/dist/draft/drafts/data/text/ruchang.js.map +1 -0
- package/dist/draft/drafts/data/text/text_animations.d.ts +7 -0
- package/dist/draft/drafts/data/text/text_animations.d.ts.map +1 -0
- package/dist/draft/drafts/data/text/text_animations.js +147 -0
- package/dist/draft/drafts/data/text/text_animations.js.map +1 -0
- package/dist/draft/drafts/data/text/text_animations.json +26179 -0
- package/dist/draft/drafts/data/text/xunhuan.d.ts +35 -0
- package/dist/draft/drafts/data/text/xunhuan.d.ts.map +1 -0
- package/dist/draft/drafts/data/text/xunhuan.js +3435 -0
- package/dist/draft/drafts/data/text/xunhuan.js.map +1 -0
- package/dist/draft/drafts/data/tezhi/cn/aixin.json +3625 -0
- package/dist/draft/drafts/data/tezhi/cn/biaoqing.json +3269 -0
- package/dist/draft/drafts/data/tezhi/cn/bohemanbo.json +3270 -0
- package/dist/draft/drafts/data/tezhi/cn/dianshang.json +3269 -0
- package/dist/draft/drafts/data/tezhi/cn/dongri.json +3267 -0
- package/dist/draft/drafts/data/tezhi/cn/hot.json +3379 -0
- package/dist/draft/drafts/data/tezhi/cn/hudie.json +3490 -0
- package/dist/draft/drafts/data/tezhi/cn/hudong.json +3328 -0
- package/dist/draft/drafts/data/tezhi/cn/hunli.json +3290 -0
- package/dist/draft/drafts/data/tezhi/cn/jiari.json +3276 -0
- package/dist/draft/drafts/data/tezhi/cn/keai.json +3269 -0
- package/dist/draft/drafts/data/tezhi/cn/langman.json +3290 -0
- package/dist/draft/drafts/data/tezhi/cn/lvxing.json +3350 -0
- package/dist/draft/drafts/data/tezhi/cn/meishi.json +3294 -0
- package/dist/draft/drafts/data/tezhi/cn/meizhuang.json +3279 -0
- package/dist/draft/drafts/data/tezhi/cn/qingxu1.json +3421 -0
- package/dist/draft/drafts/data/tezhi/cn/qingxu2.json +3368 -0
- package/dist/draft/drafts/data/tezhi/cn/qingxu3.json +3358 -0
- package/dist/draft/drafts/data/tezhi/cn/qingxu4.json +3361 -0
- package/dist/draft/drafts/data/tezhi/cn/regeng.json +3292 -0
- package/dist/draft/drafts/data/tezhi/cn/vip.json +3336 -0
- package/dist/draft/drafts/data/tezhi/cn/vlog.json +3295 -0
- package/dist/draft/drafts/data/tezhi/cn/xiari.json +3411 -0
- package/dist/draft/drafts/data/tezhi/cn/xinnian.json +3274 -0
- package/dist/draft/drafts/data/tezhi/cn/yinyuejie.json +3285 -0
- package/dist/draft/drafts/data/tezhi/cn/yundong.json +3267 -0
- package/dist/draft/drafts/data/tezhi/cn/zhakai.json +3399 -0
- package/dist/draft/drafts/data/tezhi/cn/zhisi.json +3385 -0
- package/dist/draft/drafts/data/tezhi/cn_sticker.d.ts +2 -0
- package/dist/draft/drafts/data/tezhi/cn_sticker.d.ts.map +1 -0
- package/dist/draft/drafts/data/tezhi/cn_sticker.js +41 -0
- package/dist/draft/drafts/data/tezhi/cn_sticker.js.map +1 -0
- package/dist/draft/drafts/data/transitions/cn/MG/345/212/250/347/224/273.json +880 -0
- package/dist/draft/drafts/data/transitions/cn/hot.json +20419 -0
- package/dist/draft/drafts/data/transitions/cn//344/272/222/345/212/250emoji.json +820 -0
- package/dist/draft/drafts/data/transitions/cn//345/205/211/346/225/210.json +3355 -0
- package/dist/draft/drafts/data/transitions/cn//345/210/206/345/211/262.json +2255 -0
- package/dist/draft/drafts/data/transitions/cn//345/217/240/345/214/226.json +2206 -0
- package/dist/draft/drafts/data/transitions/cn//345/271/273/347/201/257/347/211/207.json +4175 -0
- package/dist/draft/drafts/data/transitions/cn//346/211/255/346/233/262.json +2388 -0
- package/dist/draft/drafts/data/transitions/cn//346/213/215/346/221/204.json +1546 -0
- package/dist/draft/drafts/data/transitions/cn//346/225/205/351/232/234.json +1616 -0
- package/dist/draft/drafts/data/transitions/cn//346/226/260/345/271/264.json +2935 -0
- package/dist/draft/drafts/data/transitions/cn//346/234/200/346/226/260.json +3167 -0
- package/dist/draft/drafts/data/transitions/cn//346/250/241/347/263/212.json +1535 -0
- package/dist/draft/drafts/data/transitions/cn//347/273/274/350/211/272.json +904 -0
- package/dist/draft/drafts/data/transitions/cn//350/207/252/347/204/266.json +657 -0
- package/dist/draft/drafts/data/transitions/cn//350/277/220/351/225/234.json +5283 -0
- package/dist/draft/drafts/data/transitions/cn_transitions.d.ts +3 -0
- package/dist/draft/drafts/data/transitions/cn_transitions.d.ts.map +1 -0
- package/dist/draft/drafts/data/transitions/cn_transitions.js +52 -0
- package/dist/draft/drafts/data/transitions/cn_transitions.js.map +1 -0
- package/dist/draft/drafts/data/video/group.d.ts +35 -0
- package/dist/draft/drafts/data/video/group.d.ts.map +1 -0
- package/dist/draft/drafts/data/video/group.js +7496 -0
- package/dist/draft/drafts/data/video/group.js.map +1 -0
- package/dist/draft/drafts/data/video/ins.d.ts +19 -0
- package/dist/draft/drafts/data/video/ins.d.ts.map +1 -0
- package/dist/draft/drafts/data/video/ins.js +3046 -0
- package/dist/draft/drafts/data/video/ins.js.map +1 -0
- package/dist/draft/drafts/data/video/out.d.ts +35 -0
- package/dist/draft/drafts/data/video/out.d.ts.map +1 -0
- package/dist/draft/drafts/data/video/out.js +1640 -0
- package/dist/draft/drafts/data/video/out.js.map +1 -0
- package/dist/draft/drafts/data/video/video_animations.d.ts +7 -0
- package/dist/draft/drafts/data/video/video_animations.d.ts.map +1 -0
- package/dist/draft/drafts/data/video/video_animations.js +138 -0
- package/dist/draft/drafts/data/video/video_animations.js.map +1 -0
- package/dist/draft/drafts/data/video/video_animations.json +22380 -0
- package/dist/draft/drafts/online_effects.d.ts +3 -0
- package/dist/draft/drafts/online_effects.d.ts.map +1 -0
- package/dist/draft/drafts/online_effects.js +57 -0
- package/dist/draft/drafts/online_effects.js.map +1 -0
- package/dist/draft/index.d.ts +23 -0
- package/dist/draft/index.d.ts.map +1 -0
- package/dist/draft/index.js +20 -0
- package/dist/draft/index.js.map +1 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/cloud-client.d.ts +59 -0
- package/dist/shared/cloud-client.d.ts.map +1 -0
- package/dist/shared/cloud-client.js +121 -0
- package/dist/shared/cloud-client.js.map +1 -0
- package/dist/shared/draft-service.d.ts +9 -0
- package/dist/shared/draft-service.d.ts.map +1 -0
- package/dist/shared/draft-service.js +91 -0
- package/dist/shared/draft-service.js.map +1 -0
- package/dist/shared/errors.d.ts +28 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +138 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/logger.d.ts +6 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +9 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/media-downloader.d.ts +14 -0
- package/dist/shared/media-downloader.d.ts.map +1 -0
- package/dist/shared/media-downloader.js +94 -0
- package/dist/shared/media-downloader.js.map +1 -0
- package/dist/shared/media.d.ts +6 -0
- package/dist/shared/media.d.ts.map +1 -0
- package/dist/shared/media.js +117 -0
- package/dist/shared/media.js.map +1 -0
- package/dist/template/attachment_pc_common.json +1 -0
- package/dist/template/draft_agency_config.json +1 -0
- package/dist/template/draft_content.json +132 -0
- package/dist/template/draft_meta_info.json +59 -0
- package/dist/template/template.tmp +1 -0
- package/dist/types/index.d.ts +637 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +64 -4
- 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 @@
|
|
|
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 @@
|
|
|
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,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
|
+
});
|