voxflow 1.14.0 → 1.15.1
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/README.md +69 -2
- package/bin/voxflow.js +27 -0
- package/dist/index.js +1 -1
- package/dist/remotion-bundle/02a2fb2eb80bc7bf.woff2 +0 -0
- package/dist/remotion-bundle/052ca5351e5e06ba.woff2 +0 -0
- package/dist/remotion-bundle/05853dd28f4019cb.woff2 +0 -0
- package/dist/remotion-bundle/072ead3737f7c0d0.woff2 +0 -0
- package/dist/remotion-bundle/07d4248613c86a2e.woff2 +0 -0
- package/dist/remotion-bundle/0884a5c2d1d2d99b.woff2 +0 -0
- package/dist/remotion-bundle/0b0e185b2752095e.woff2 +0 -0
- package/dist/remotion-bundle/0e66c11bde067d91.woff2 +0 -0
- package/dist/remotion-bundle/0f7794cfba2c5d21.woff2 +0 -0
- package/dist/remotion-bundle/0fdbae5a4365783a.woff2 +0 -0
- package/dist/remotion-bundle/112.bundle.js +11 -0
- package/dist/remotion-bundle/112.bundle.js.map +1 -0
- package/dist/remotion-bundle/113.bundle.js +11 -0
- package/dist/remotion-bundle/113.bundle.js.map +1 -0
- package/dist/remotion-bundle/119cae0c4c16f7ed.woff2 +0 -0
- package/dist/remotion-bundle/14725f649fd1e78c.woff2 +0 -0
- package/dist/remotion-bundle/14abe9e3f95f7888.woff2 +0 -0
- package/dist/remotion-bundle/163.bundle.js +14678 -0
- package/dist/remotion-bundle/163.bundle.js.map +1 -0
- package/dist/remotion-bundle/1808c54072bf6d14.woff2 +0 -0
- package/dist/remotion-bundle/18948bec3e3012fe.woff2 +0 -0
- package/dist/remotion-bundle/1a661c60d0fc84fc.woff2 +0 -0
- package/dist/remotion-bundle/1af94941e1bc7e1e.woff2 +0 -0
- package/dist/remotion-bundle/1bee0219595f606c.woff2 +0 -0
- package/dist/remotion-bundle/1bfd5da7ce9d4ec4.woff2 +0 -0
- package/dist/remotion-bundle/1c158d56f1884f3f.woff2 +0 -0
- package/dist/remotion-bundle/1cf5e88e667610eb.woff2 +0 -0
- package/dist/remotion-bundle/1d431bd10f53c481.woff2 +0 -0
- package/dist/remotion-bundle/1d701a81a7670db2.woff2 +0 -0
- package/dist/remotion-bundle/1da0fecad4240f16.woff2 +0 -0
- package/dist/remotion-bundle/1ed14d3d0c5c63fe.woff2 +0 -0
- package/dist/remotion-bundle/1edfecf40e586f53.woff2 +0 -0
- package/dist/remotion-bundle/1f479711bc34b054.woff +0 -0
- package/dist/remotion-bundle/1f86e54a0ff5fcd1.woff2 +0 -0
- package/dist/remotion-bundle/2043ea87d9aabd11.woff2 +0 -0
- package/dist/remotion-bundle/20563c39ee8a0e40.woff2 +0 -0
- package/dist/remotion-bundle/20c231590fd12c44.woff2 +0 -0
- package/dist/remotion-bundle/20ce61713f754c07.woff2 +0 -0
- package/dist/remotion-bundle/21eb9306fce24bb1.woff2 +0 -0
- package/dist/remotion-bundle/244bf71c0cc851af.woff2 +0 -0
- package/dist/remotion-bundle/274d4cfc02bffbcb.woff2 +0 -0
- package/dist/remotion-bundle/275.bundle.js +21 -0
- package/dist/remotion-bundle/275.bundle.js.map +1 -0
- package/dist/remotion-bundle/2958f540b39513dc.woff2 +0 -0
- package/dist/remotion-bundle/2a168b98fd97722e.woff2 +0 -0
- package/dist/remotion-bundle/2d1f6373937ab55f.woff2 +0 -0
- package/dist/remotion-bundle/2d213ae47ff6daa9.woff2 +0 -0
- package/dist/remotion-bundle/2e4b1f04fcd05047.woff2 +0 -0
- package/dist/remotion-bundle/304170d98f4c4563.woff2 +0 -0
- package/dist/remotion-bundle/30d02e136e7a5642.woff2 +0 -0
- package/dist/remotion-bundle/3135562b52a714cd.woff2 +0 -0
- package/dist/remotion-bundle/313713af2c8144e9.woff2 +0 -0
- package/dist/remotion-bundle/325fa4108d2285b9.woff2 +0 -0
- package/dist/remotion-bundle/338e927ed3345e0c.woff2 +0 -0
- package/dist/remotion-bundle/35fc6b190365bc17.woff2 +0 -0
- package/dist/remotion-bundle/37a51f1122d4efc5.woff2 +0 -0
- package/dist/remotion-bundle/39a4d63e02736f5e.woff2 +0 -0
- package/dist/remotion-bundle/3a00e0d62dfc4171.woff2 +0 -0
- package/dist/remotion-bundle/3a6955e6561affe1.woff2 +0 -0
- package/dist/remotion-bundle/3c573945aef49b89.woff2 +0 -0
- package/dist/remotion-bundle/3cdbfbfa23b516a5.woff2 +0 -0
- package/dist/remotion-bundle/3e42f85a9e64ca8a.woff2 +0 -0
- package/dist/remotion-bundle/3e83eaf1ec859415.woff2 +0 -0
- package/dist/remotion-bundle/3f3c8c90de1250ee.woff2 +0 -0
- package/dist/remotion-bundle/434.bundle.js +205 -0
- package/dist/remotion-bundle/434.bundle.js.map +1 -0
- package/dist/remotion-bundle/44ffc6ca4d781692.woff2 +0 -0
- package/dist/remotion-bundle/4670d9c4580b09eb.woff2 +0 -0
- package/dist/remotion-bundle/479756881b302824.woff2 +0 -0
- package/dist/remotion-bundle/481b82134bfa9c82.woff2 +0 -0
- package/dist/remotion-bundle/48d27029626f4328.woff2 +0 -0
- package/dist/remotion-bundle/49b7b2a30329c511.woff2 +0 -0
- package/dist/remotion-bundle/4c8b25a1a9337045.woff2 +0 -0
- package/dist/remotion-bundle/4cba14788ca9259b.woff2 +0 -0
- package/dist/remotion-bundle/4cd6c589c004a6a7.woff2 +0 -0
- package/dist/remotion-bundle/4cd8d79c1021608d.woff2 +0 -0
- package/dist/remotion-bundle/4d8fa99b3f00f9f0.woff2 +0 -0
- package/dist/remotion-bundle/4e7805a643f86d53.woff2 +0 -0
- package/dist/remotion-bundle/4ff91be454542e3f.woff2 +0 -0
- package/dist/remotion-bundle/504cbcba1f63591b.woff2 +0 -0
- package/dist/remotion-bundle/5202d792e5791d6c.woff2 +0 -0
- package/dist/remotion-bundle/534db5ad4770cc1d.woff2 +0 -0
- package/dist/remotion-bundle/53b9568eb85f866b.woff2 +0 -0
- package/dist/remotion-bundle/543ad386ca171de9.woff2 +0 -0
- package/dist/remotion-bundle/54798e55bbf7976e.woff2 +0 -0
- package/dist/remotion-bundle/580.bundle.js +11 -0
- package/dist/remotion-bundle/580.bundle.js.map +1 -0
- package/dist/remotion-bundle/58d174d1193af6d1.woff2 +0 -0
- package/dist/remotion-bundle/591d29ff3ff53c80.woff2 +0 -0
- package/dist/remotion-bundle/5c28c4f4824383c6.woff2 +0 -0
- package/dist/remotion-bundle/5da9740d2ce894c8.woff2 +0 -0
- package/dist/remotion-bundle/6197735364642360.woff2 +0 -0
- package/dist/remotion-bundle/6265a4335724080f.woff2 +0 -0
- package/dist/remotion-bundle/633f5e4f6394daa7.woff2 +0 -0
- package/dist/remotion-bundle/637d95ace6a69c49.woff2 +0 -0
- package/dist/remotion-bundle/648e04a04dacff8f.woff2 +0 -0
- package/dist/remotion-bundle/64a6e83045a008b2.woff2 +0 -0
- package/dist/remotion-bundle/651.bundle.js +11 -0
- package/dist/remotion-bundle/651.bundle.js.map +1 -0
- package/dist/remotion-bundle/65e2a988c070facc.woff2 +0 -0
- package/dist/remotion-bundle/66a2f6ce5cc69105.woff2 +0 -0
- package/dist/remotion-bundle/690.bundle.js +3479 -0
- package/dist/remotion-bundle/690.bundle.js.map +1 -0
- package/dist/remotion-bundle/690ff55252ca715d.woff2 +0 -0
- package/dist/remotion-bundle/6a01a1cff49314fc.woff2 +0 -0
- package/dist/remotion-bundle/6cbc32670982986c.woff2 +0 -0
- package/dist/remotion-bundle/6d3cc42ae547f454.woff2 +0 -0
- package/dist/remotion-bundle/6d8f4cfa1ddc0830.woff2 +0 -0
- package/dist/remotion-bundle/6e4d7c6ae65e2dc3.woff2 +0 -0
- package/dist/remotion-bundle/6e86418bbcefb2e8.woff2 +0 -0
- package/dist/remotion-bundle/6ee02884b29cf7fb.woff2 +0 -0
- package/dist/remotion-bundle/6f436a74c9e3252c.woff2 +0 -0
- package/dist/remotion-bundle/78c8022f1657618b.woff2 +0 -0
- package/dist/remotion-bundle/7c5444169792bca4.woff2 +0 -0
- package/dist/remotion-bundle/7c86bddd9d997212.woff2 +0 -0
- package/dist/remotion-bundle/7e1284684767f584.woff2 +0 -0
- package/dist/remotion-bundle/7e81c17522d182b2.woff2 +0 -0
- package/dist/remotion-bundle/7eb87be198f7858c.woff2 +0 -0
- package/dist/remotion-bundle/8060c928f948aab5.woff2 +0 -0
- package/dist/remotion-bundle/80bc9dfbea2b35ae.woff2 +0 -0
- package/dist/remotion-bundle/811b83f69963bb48.woff2 +0 -0
- package/dist/remotion-bundle/813.bundle.js +117511 -0
- package/dist/remotion-bundle/813.bundle.js.map +1 -0
- package/dist/remotion-bundle/84df492e349f82e9.woff2 +0 -0
- package/dist/remotion-bundle/8501bfd73eb36f2b.woff2 +0 -0
- package/dist/remotion-bundle/854236a8376093fe.woff2 +0 -0
- package/dist/remotion-bundle/8571d74529082753.woff2 +0 -0
- package/dist/remotion-bundle/860bf44f8e6f4b5d.woff2 +0 -0
- package/dist/remotion-bundle/879.bundle.js +64 -0
- package/dist/remotion-bundle/879.bundle.js.map +1 -0
- package/dist/remotion-bundle/887dd482f848d56f.woff2 +0 -0
- package/dist/remotion-bundle/89b2132e85fbbb5a.woff2 +0 -0
- package/dist/remotion-bundle/8ba60d6c306010c2.woff2 +0 -0
- package/dist/remotion-bundle/8c7c4dadea897806.woff2 +0 -0
- package/dist/remotion-bundle/8c943f9999706f61.woff2 +0 -0
- package/dist/remotion-bundle/8f2a718c90575cc9.woff2 +0 -0
- package/dist/remotion-bundle/906b6edb3e1772c9.woff2 +0 -0
- package/dist/remotion-bundle/930ff9daccdf14eb.woff2 +0 -0
- package/dist/remotion-bundle/934db2f1c403c4d0.woff2 +0 -0
- package/dist/remotion-bundle/938.bundle.js +451 -0
- package/dist/remotion-bundle/938.bundle.js.map +1 -0
- package/dist/remotion-bundle/967.bundle.js +4462 -0
- package/dist/remotion-bundle/967.bundle.js.map +1 -0
- package/dist/remotion-bundle/9684a1093d3c02ce.woff2 +0 -0
- package/dist/remotion-bundle/973dcd0faa6116cc.woff2 +0 -0
- package/dist/remotion-bundle/9745400694e76cd8.woff2 +0 -0
- package/dist/remotion-bundle/999ef957bed3bdca.woff2 +0 -0
- package/dist/remotion-bundle/99a3d67c8b0f43e3.woff2 +0 -0
- package/dist/remotion-bundle/a0586c3e03127283.woff2 +0 -0
- package/dist/remotion-bundle/a0eb654fdae46269.woff2 +0 -0
- package/dist/remotion-bundle/a20e35d3b08f7994.woff2 +0 -0
- package/dist/remotion-bundle/a2dcaced7c8c25ab.woff2 +0 -0
- package/dist/remotion-bundle/a79255a972a2681a.woff2 +0 -0
- package/dist/remotion-bundle/a804b352cb9fec1a.woff2 +0 -0
- package/dist/remotion-bundle/aae7117164e1eabc.woff2 +0 -0
- package/dist/remotion-bundle/affd121385d0442d.woff2 +0 -0
- package/dist/remotion-bundle/b19a6083987ee0d7.woff2 +0 -0
- package/dist/remotion-bundle/b1b2bd04d8637981.woff2 +0 -0
- package/dist/remotion-bundle/b2c07f341486be87.woff2 +0 -0
- package/dist/remotion-bundle/b33d8f82e575c4ce.woff2 +0 -0
- package/dist/remotion-bundle/b366c0bed35ef491.woff2 +0 -0
- package/dist/remotion-bundle/b41e857ec1b85642.woff2 +0 -0
- package/dist/remotion-bundle/b420bb34ccf23e7f.woff2 +0 -0
- package/dist/remotion-bundle/b4f7bf4efb0c0ccf.woff2 +0 -0
- package/dist/remotion-bundle/b60fe5eca03cff93.woff2 +0 -0
- package/dist/remotion-bundle/b6bd31a336e64bce.woff2 +0 -0
- package/dist/remotion-bundle/b6d2befba3dfefeb.woff2 +0 -0
- package/dist/remotion-bundle/b75f39ab06c43bf4.woff2 +0 -0
- package/dist/remotion-bundle/b77880e8c413d4fd.woff2 +0 -0
- package/dist/remotion-bundle/b7e38ec441e4a77a.woff2 +0 -0
- package/dist/remotion-bundle/b83baa383ff0bf2b.woff2 +0 -0
- package/dist/remotion-bundle/b9ad7b6c0a11450a.woff2 +0 -0
- package/dist/remotion-bundle/baf84486e8ae3aaf.woff2 +0 -0
- package/dist/remotion-bundle/bc047b1f6869cffa.woff2 +0 -0
- package/dist/remotion-bundle/bf4f3ac6e93f33aa.woff2 +0 -0
- package/dist/remotion-bundle/bf6835ffec5897a2.woff2 +0 -0
- package/dist/remotion-bundle/bf8885f581eb1724.woff2 +0 -0
- package/dist/remotion-bundle/bundle.js +83376 -0
- package/dist/remotion-bundle/bundle.js.map +1 -0
- package/dist/remotion-bundle/c03f046bccd789d0.woff2 +0 -0
- package/dist/remotion-bundle/c0bb1f8962b73bc3.woff2 +0 -0
- package/dist/remotion-bundle/c1003f9a7db6e1cf.woff2 +0 -0
- package/dist/remotion-bundle/c15d83fb1e199515.woff2 +0 -0
- package/dist/remotion-bundle/c28e7e5d310f73ef.woff2 +0 -0
- package/dist/remotion-bundle/c2b840274db78aea.woff2 +0 -0
- package/dist/remotion-bundle/c3000e3299d4e45f.woff2 +0 -0
- package/dist/remotion-bundle/c83ce886e5288510.woff2 +0 -0
- package/dist/remotion-bundle/c87a5a64d4ac0918.woff2 +0 -0
- package/dist/remotion-bundle/c8a7e0d049e965fa.woff2 +0 -0
- package/dist/remotion-bundle/c949a35d3a3b1faf.woff2 +0 -0
- package/dist/remotion-bundle/c9618c9b9ac2bc78.woff2 +0 -0
- package/dist/remotion-bundle/ca3add3b84152d5b.woff2 +0 -0
- package/dist/remotion-bundle/cad9dd036408d707.woff2 +0 -0
- package/dist/remotion-bundle/cbb24916619df439.woff2 +0 -0
- package/dist/remotion-bundle/cc054f0b5514e177.woff2 +0 -0
- package/dist/remotion-bundle/ccc248ed9312bc71.woff2 +0 -0
- package/dist/remotion-bundle/cd9d623aa07af925.woff2 +0 -0
- package/dist/remotion-bundle/ce2ba7a321bd1247.woff2 +0 -0
- package/dist/remotion-bundle/cf72455f79a29b14.woff2 +0 -0
- package/dist/remotion-bundle/d267cbfefab452ac.woff2 +0 -0
- package/dist/remotion-bundle/d435cff46a64955f.woff +0 -0
- package/dist/remotion-bundle/d494d07f67e363f6.woff2 +0 -0
- package/dist/remotion-bundle/d7aa0cc1fa47bf38.woff2 +0 -0
- package/dist/remotion-bundle/d7c5ca93d885160a.woff2 +0 -0
- package/dist/remotion-bundle/d855d3e252db74e2.woff2 +0 -0
- package/dist/remotion-bundle/d8f13d47f02f82c2.woff2 +0 -0
- package/dist/remotion-bundle/d9567cce2ee11019.woff2 +0 -0
- package/dist/remotion-bundle/db8d4456fc75dd86.woff +0 -0
- package/dist/remotion-bundle/dc274628378c47ee.woff2 +0 -0
- package/dist/remotion-bundle/dc3e06947bb69903.woff2 +0 -0
- package/dist/remotion-bundle/dd67040ac3b6d523.woff2 +0 -0
- package/dist/remotion-bundle/e0b04bd488f953f4.woff2 +0 -0
- package/dist/remotion-bundle/e2a572ff95089370.woff2 +0 -0
- package/dist/remotion-bundle/e2e18a86b1c2b0cc.woff2 +0 -0
- package/dist/remotion-bundle/e3a78ee2fc9c6931.woff2 +0 -0
- package/dist/remotion-bundle/e654c9d547605a9f.woff2 +0 -0
- package/dist/remotion-bundle/e67a3a64c129927c.woff2 +0 -0
- package/dist/remotion-bundle/e6be28b4203cd6ce.woff2 +0 -0
- package/dist/remotion-bundle/e841907ad9b0a191.woff +0 -0
- package/dist/remotion-bundle/e889d1541c69fffa.woff2 +0 -0
- package/dist/remotion-bundle/e88ef8c76373a9e2.woff2 +0 -0
- package/dist/remotion-bundle/e9c72f4bc37defef.woff2 +0 -0
- package/dist/remotion-bundle/e9e35f863403a255.woff2 +0 -0
- package/dist/remotion-bundle/eb23b37b009375da.woff2 +0 -0
- package/dist/remotion-bundle/ee1342b741625721.woff2 +0 -0
- package/dist/remotion-bundle/f07da88543a57ec9.woff2 +0 -0
- package/dist/remotion-bundle/f522982115306f8a.woff2 +0 -0
- package/dist/remotion-bundle/f8449bd864e6d8bc.woff2 +0 -0
- package/dist/remotion-bundle/f906dd5bd95ff9ab.woff2 +0 -0
- package/dist/remotion-bundle/f9e9e9413e3c38bb.woff2 +0 -0
- package/dist/remotion-bundle/fa5a5b16280994a8.woff2 +0 -0
- package/dist/remotion-bundle/favicon.ico +0 -0
- package/dist/remotion-bundle/fb19c0517725599b.woff2 +0 -0
- package/dist/remotion-bundle/fcaf24232f684b9b.woff2 +0 -0
- package/dist/remotion-bundle/fe09e084a3eea8cf.woff2 +0 -0
- package/dist/remotion-bundle/ff38d5317df7345a.woff2 +0 -0
- package/dist/remotion-bundle/ffe7ea1ea08f455a.woff2 +0 -0
- package/dist/remotion-bundle/index.html +49 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaomei/communication/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaomei/communication/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaomei/communication/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaomei/communication/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaoxin/career/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaoxin/career/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaoxin/career/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaoxin/career/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaoyue/parenting/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaoyue/parenting/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaoyue/parenting/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/female-kefu-xiaoyue/parenting/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/male-kefu-xiaoxu/time-trap/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/male-kefu-xiaoxu/time-trap/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/male-kefu-xiaoxu/time-trap/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/male-kefu-xiaoxu/time-trap/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/cognition/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/cognition/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/cognition/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/cognition/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/growth/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/growth/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/growth/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/growth/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/parenting/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/parenting/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/parenting/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/parenting/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/soothing/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/soothing/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/soothing/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-A6b7WpG3/soothing/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-R2s4N9qJ/cognition/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-R2s4N9qJ/cognition/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-R2s4N9qJ/cognition/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-female-R2s4N9qJ/cognition/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-Bk7vD3xP/decision/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-Bk7vD3xP/decision/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-Bk7vD3xP/decision/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-Bk7vD3xP/decision/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-W1tH9jVc/manager/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-W1tH9jVc/manager/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-W1tH9jVc/manager/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-W1tH9jVc/manager/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-W1tH9jVc/manager/4.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-s5NqE0rZ/founder/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-s5NqE0rZ/founder/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-s5NqE0rZ/founder/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide/v-male-s5NqE0rZ/founder/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/career-advice/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/career-advice/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/career-advice/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/career-advice/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/career-advice/4.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/founder-lesson/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/founder-lesson/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/founder-lesson/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/founder-lesson/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/founder-lesson/4.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/incident-review/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/incident-review/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/incident-review/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/incident-review/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/incident-review/4.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/learning-loop/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/learning-loop/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/learning-loop/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/learning-loop/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/learning-loop/4.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/meeting-closure/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/meeting-closure/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/meeting-closure/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/meeting-closure/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/product-update/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/product-update/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/product-update/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/product-update/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/research-reading/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/research-reading/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/research-reading/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/research-reading/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/sales-enablement/0.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/sales-enablement/1.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/sales-enablement/2.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/sales-enablement/3.mp3 +0 -0
- package/dist/remotion-bundle/public/paper-slide-experiments/sales-enablement/4.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/ai-life/card-0.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/ai-life/card-1.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/ai-life/card-2.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/ai-life/card-3.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/ai-life/card-4.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/ai-life/card-5.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/coffee-science/card-0.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/coffee-science/card-1.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/coffee-science/card-2.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/coffee-science/card-3.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/coffee-science/card-4.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/coffee-science/card-5.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/coffee-science/card-6.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/reading-secrets/card-0.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/reading-secrets/card-1.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/reading-secrets/card-2.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/reading-secrets/card-3.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/reading-secrets/card-4.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/reading-secrets/card-5.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/reading-secrets/card-6.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/remote-work/card-0.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/remote-work/card-1.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/remote-work/card-2.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/remote-work/card-3.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/remote-work/card-4.mp3 +0 -0
- package/dist/remotion-bundle/public/voiceover/remote-work/card-5.mp3 +0 -0
- package/dist/remotion-bundle/source-map-helper.wasm +0 -0
- package/lib/cli.js +270 -0
- package/lib/commands/_registry.js +48 -0
- package/lib/commands/add.js +242 -0
- package/lib/commands/asr/azure-transcribe.js +336 -0
- package/lib/commands/asr/cloud-transcribe.js +384 -0
- package/lib/commands/asr/helpers.js +76 -0
- package/lib/commands/asr/index.js +236 -0
- package/lib/commands/asr/local-transcribe.js +125 -0
- package/lib/commands/asr-jobs.js +257 -0
- package/lib/commands/asr.js +11 -0
- package/lib/commands/auth-cmds.js +358 -0
- package/lib/commands/dub.js +542 -0
- package/lib/commands/explain.js +512 -0
- package/lib/commands/feedback.js +152 -0
- package/lib/commands/image.js +207 -0
- package/lib/commands/mcp-key.js +166 -0
- package/lib/commands/narrate.js +639 -0
- package/lib/commands/picstory-templates.js +276 -0
- package/lib/commands/picstory.js +547 -0
- package/lib/commands/podcast/dialogue.js +109 -0
- package/lib/commands/podcast/generate.js +127 -0
- package/lib/commands/podcast/index.js +561 -0
- package/lib/commands/podcast/synthesize.js +188 -0
- package/lib/commands/podcast.js +11 -0
- package/lib/commands/present.js +519 -0
- package/lib/commands/publish.js +415 -0
- package/lib/commands/skills.js +473 -0
- package/lib/commands/slice-preview.js +266 -0
- package/lib/commands/slice-render.js +282 -0
- package/lib/commands/slice-stage.js +264 -0
- package/lib/commands/slice.js +343 -0
- package/lib/commands/slides/constants.js +108 -0
- package/lib/commands/slides/html-renderer.js +338 -0
- package/lib/commands/slides/index.js +345 -0
- package/lib/commands/slides.js +11 -0
- package/lib/commands/story.js +302 -0
- package/lib/commands/summarize.js +532 -0
- package/lib/commands/synthesize.js +261 -0
- package/lib/commands/translate.js +593 -0
- package/lib/commands/upgrade.js +249 -0
- package/lib/commands/video-translate.js +577 -0
- package/lib/commands/voices.js +292 -0
- package/lib/core/agent-env.js +104 -0
- package/lib/core/args.js +107 -0
- package/lib/core/asr-client.js +448 -0
- package/lib/core/asr-jobs-client.js +126 -0
- package/lib/core/asr-jobs-store.js +105 -0
- package/lib/core/asr-r2-upload.js +181 -0
- package/lib/core/asr-upload.js +132 -0
- package/lib/core/audio-extract.js +150 -0
- package/lib/core/audio.js +219 -0
- package/lib/core/auth.js +880 -0
- package/lib/core/config.js +197 -0
- package/lib/core/feedback.js +64 -0
- package/lib/core/ffmpeg.js +476 -0
- package/lib/core/http.js +188 -0
- package/lib/core/image-client.js +55 -0
- package/lib/core/intent-params.js +11 -0
- package/lib/core/llm-client.js +76 -0
- package/lib/core/logger.js +208 -0
- package/lib/core/mic-recorder.js +182 -0
- package/lib/core/pause-markers.js +94 -0
- package/lib/core/podcast-pacing.js +118 -0
- package/lib/core/spinner.js +33 -0
- package/lib/core/srt.js +394 -0
- package/lib/core/telemetry.js +100 -0
- package/lib/core/timeline.js +92 -0
- package/lib/core/tts-synthesizer.js +70 -0
- package/lib/core/update-check.js +185 -0
- package/lib/core/url-download.js +148 -0
- package/lib/core/whisper-local.js +279 -0
- package/lib/internal/deck-validator.js +488 -0
- package/lib/internal/slice-themes.json +370 -0
- package/lib/stage-core/cloud-render.js +170 -0
- package/lib/stage-core/deck-format.js +133 -0
- package/lib/stage-core/edit-prompt.js +104 -0
- package/lib/stage-core/event-bus.js +31 -0
- package/lib/stage-core/port.js +46 -0
- package/lib/stage-core/server.js +352 -0
- package/lib/stage-core/snapshot-store.js +198 -0
- package/lib/stage-core/watcher.js +106 -0
- package/lib/stage-ui/slice/template.js +1672 -0
- package/package.json +9 -4
- package/skills/.claude-plugin/marketplace.json +22 -0
- package/skills/.claude-plugin/plugin.json +25 -0
- package/skills/LICENSE +21 -0
- package/skills/README.md +120 -0
- package/skills/hub/SKILL.md +317 -0
- package/skills/podcast/SKILL.md +146 -0
- package/skills/slice/SKILL.md +205 -0
- package/skills/slice/agents/openai.yaml +4 -0
- package/skills/slice/references/deck-schema.md +183 -0
- package/skills/slice/references/example-decks.md +108 -0
- package/skills/slice/references/themes.md +172 -0
- package/skills/transcribe/SKILL.md +473 -0
- package/skills/video/SKILL.md +261 -0
- package/skills/voxflow-slice/SKILL.md +271 -0
- package/skills/voxflow-slice/examples/article.md +13 -0
- package/skills/voxflow-slice/examples/expected-deck.json +39 -0
- package/skills/voxflow-slice/examples/validate.mjs +46 -0
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "voxflow",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.1",
|
|
4
4
|
"description": "AI audio content creation CLI — stories, podcasts, narration, dubbing, transcription, translation, and video translation with TTS",
|
|
5
5
|
"bin": {
|
|
6
6
|
"voxflow": "./dist/index.js"
|
|
7
7
|
},
|
|
8
8
|
"files": [
|
|
9
|
+
"bin/",
|
|
10
|
+
"lib/",
|
|
11
|
+
"skills/",
|
|
9
12
|
"dist/",
|
|
10
13
|
"README.md",
|
|
11
14
|
"LICENSE"
|
|
@@ -14,6 +17,7 @@
|
|
|
14
17
|
"node": "^20.19.0 || >=22.12.0"
|
|
15
18
|
},
|
|
16
19
|
"dependencies": {
|
|
20
|
+
"@remotion/renderer": "4.0.448",
|
|
17
21
|
"open": "^10.0.0",
|
|
18
22
|
"pptxgenjs": "^4.0.1"
|
|
19
23
|
},
|
|
@@ -40,8 +44,9 @@
|
|
|
40
44
|
"voxflow"
|
|
41
45
|
],
|
|
42
46
|
"scripts": {
|
|
43
|
-
"build": "ncc build bin/voxflow.js -o dist --minify && rm -rf dist/cli && node scripts/check-no-asset-rewrite.js",
|
|
44
|
-
"
|
|
47
|
+
"build": "ncc build bin/voxflow.js -o dist --minify -e @remotion/renderer && rm -rf dist/cli && node scripts/check-no-asset-rewrite.js",
|
|
48
|
+
"build:bundle": "node scripts/build-bundle.mjs",
|
|
49
|
+
"prepublishOnly": "npm run build:bundle && npm run build",
|
|
45
50
|
"lint": "eslint lib/ bin/ tests/",
|
|
46
51
|
"lint:fix": "eslint lib/ bin/ tests/ --fix",
|
|
47
52
|
"test": "node --test tests/*.test.js",
|
|
@@ -49,7 +54,6 @@
|
|
|
49
54
|
"version": "node scripts/sync-plugin-versions.js && git add .claude-plugin/plugin.json .cursor-plugin/plugin.json .codex-plugin/plugin.json"
|
|
50
55
|
},
|
|
51
56
|
"author": "gonghaoran",
|
|
52
|
-
"license": "Apache-2.0",
|
|
53
57
|
"homepage": "https://voxflow.studio",
|
|
54
58
|
"repository": {
|
|
55
59
|
"type": "git",
|
|
@@ -61,6 +65,7 @@
|
|
|
61
65
|
},
|
|
62
66
|
"devDependencies": {
|
|
63
67
|
"@eslint/js": "^9.39.4",
|
|
68
|
+
"@remotion/bundler": "4.0.448",
|
|
64
69
|
"@vercel/ncc": "^0.38.4",
|
|
65
70
|
"eslint": "^9.39.4"
|
|
66
71
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
|
|
3
|
+
"name": "voxflow",
|
|
4
|
+
"description": "VoxFlow — AI voice CLI as a skill for any AI agent. Bundles 5 skills (hub, podcast, transcribe, video, slice) that drive a hosted TTS / ASR / podcast / render backend.",
|
|
5
|
+
"owner": {
|
|
6
|
+
"name": "VoxFlow",
|
|
7
|
+
"url": "https://voxflow.studio"
|
|
8
|
+
},
|
|
9
|
+
"plugins": [
|
|
10
|
+
{
|
|
11
|
+
"name": "voxflow",
|
|
12
|
+
"description": "AI voice CLI bundled as 5 skills. TTS in 200+ voices across 40+ languages, multi-speaker AI podcasts, audio/video transcription with word-level timestamps, SRT-driven dubbing, end-to-end video translation, and long-article → vertical card video reels via Remotion. Backed by a hosted TTS/ASR/LLM/render service with per-user quota (free tier 10K/mo).",
|
|
13
|
+
"category": "productivity",
|
|
14
|
+
"source": "./",
|
|
15
|
+
"homepage": "https://voxflow.studio",
|
|
16
|
+
"author": {
|
|
17
|
+
"name": "VoxFlow",
|
|
18
|
+
"url": "https://voxflow.studio"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "voxflow",
|
|
3
|
+
"version": "1.15.0",
|
|
4
|
+
"description": "AI voice CLI bundled as 5 skills (hub, podcast, transcribe, video, slice). Synthesize speech in 200+ voices across 40+ languages, generate multi-speaker AI podcasts, transcribe audio/video with word-level timestamps, dub videos from SRT subtitles, run end-to-end video translation, and turn long articles into vertical card video reels via Remotion. Backed by a hosted TTS/ASR/LLM/render service with per-user quota (free tier 10K/mo).",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "VoxFlow",
|
|
7
|
+
"url": "https://voxflow.studio"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://voxflow.studio",
|
|
10
|
+
"repository": "https://github.com/VoxFlowStudio/skills",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"tts",
|
|
14
|
+
"voice",
|
|
15
|
+
"podcast",
|
|
16
|
+
"asr",
|
|
17
|
+
"transcription",
|
|
18
|
+
"subtitles",
|
|
19
|
+
"dubbing",
|
|
20
|
+
"video",
|
|
21
|
+
"remotion",
|
|
22
|
+
"voxflow",
|
|
23
|
+
"skill"
|
|
24
|
+
]
|
|
25
|
+
}
|
package/skills/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 VoxFlowStudio
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/skills/README.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# VoxFlow Skills
|
|
2
|
+
|
|
3
|
+
[](LICENSE)
|
|
4
|
+
[](https://www.npmjs.com/package/voxflow)
|
|
5
|
+
[](#what-you-get)
|
|
6
|
+
[](#install)
|
|
7
|
+
|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
Voice in your AI workflow. Five skills that let any AI coding agent (Claude Code · Cursor · Codex · Gemini CLI · Cline) speak in 200+ voices, generate podcasts, dub videos, and transcribe audio — through one CLI.
|
|
11
|
+
|
|
12
|
+
**Why VoxFlow over a raw TTS API?** One CLI handles auth, voice search, multi-speaker dialogue, video pipelines, and quota. The skills layer makes it native to whichever agent you're already using — no new context-switch.
|
|
13
|
+
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
The simplest path — let the VoxFlow CLI auto-detect your agent and run the right command:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install -g voxflow
|
|
20
|
+
voxflow skills install
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
It detects Claude Code / Cursor / Codex / Gemini / WorkBuddy / OpenClaw on your `$PATH`, picks the right install command, asks for confirmation, runs it, and prints next steps. Use `--all` to install for every detected agent, or `--for <agent>` to force one.
|
|
24
|
+
|
|
25
|
+
If you'd rather run the install command directly — **one command for every agent**:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx -y skills add VoxFlowStudio/skills --all --yes --global
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The `skills` npm package detects every AI agent on your machine (Claude Code,
|
|
32
|
+
Cursor, Codex CLI, Gemini CLI, Cline, Amp, Antigravity, CodeBuddy, OpenClaw…)
|
|
33
|
+
and writes the 5 VoxFlow skills (`hub`, `podcast`, `transcribe`, `video`,
|
|
34
|
+
`slice`) to each agent's standard skill location in a single shot.
|
|
35
|
+
|
|
36
|
+
## Prerequisites
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm install -g voxflow
|
|
40
|
+
voxflow login # one-time browser auth
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## What You Get
|
|
44
|
+
|
|
45
|
+
Five focused skills, each loaded on demand:
|
|
46
|
+
|
|
47
|
+
| Skill | Invoked as | What it covers |
|
|
48
|
+
|-------|-----------|----------------|
|
|
49
|
+
| **hub** | `voxflow:hub` | `say` · `narrate` · `story` · `voices` · auth · quota · feedback |
|
|
50
|
+
| **podcast** | `voxflow:podcast` | Multi-speaker AI podcast from topic / URL / script |
|
|
51
|
+
| **transcribe** | `voxflow:transcribe` | `asr` · `asr-jobs` · `translate` · `dub` · `video-translate` · `summarize` · `publish` |
|
|
52
|
+
| **video** | `voxflow:video` | `picstory` · `present` · `slides` · `explain` · `image` |
|
|
53
|
+
| **slice** | `voxflow:slice` | Article → vertical card video (1080×1920); 6 themes: paper / editorial / poster / Notion / brutalist / glass |
|
|
54
|
+
|
|
55
|
+
Use the hub skill as the starting point — it routes to the others automatically.
|
|
56
|
+
|
|
57
|
+
## Example Interactions
|
|
58
|
+
|
|
59
|
+
| You say | Agent runs |
|
|
60
|
+
|---------|-----------|
|
|
61
|
+
| "Read this README out loud" | `voxflow narrate README.md -o readme.mp3` |
|
|
62
|
+
| "Make a 5-min podcast on AI agents" | `voxflow podcast "AI agents" --length short` |
|
|
63
|
+
| "Dub this tutorial into Japanese" | `voxflow video-translate tutorial.mp4 --to ja` |
|
|
64
|
+
| "把这段话合成语音" | `voxflow say "..." -o output.mp3` |
|
|
65
|
+
| "生成一个 AI 播客" | `voxflow podcast "topic" --length medium` |
|
|
66
|
+
| "把这个视频翻译成日语" | `voxflow video-translate video.mp4 --to ja` |
|
|
67
|
+
| "转录这段录音" | `voxflow asr recording.mp3` |
|
|
68
|
+
| "做一个 AI 知识短视频" | `voxflow picstory "topic" --style sketchnote` |
|
|
69
|
+
| "生成一套演示幻灯片" | `voxflow slides "topic" --slides 8` |
|
|
70
|
+
|
|
71
|
+
## Skills Layout
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
voxflow/
|
|
75
|
+
hub/SKILL.md # TTS, voice search, auth, quota, feedback
|
|
76
|
+
podcast/SKILL.md # AI dialogue podcast
|
|
77
|
+
transcribe/SKILL.md # ASR, translation, dubbing
|
|
78
|
+
video/SKILL.md # AI short video, slides, images
|
|
79
|
+
slice/SKILL.md # Article → vertical card video (6 themes)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Registry
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
registry.json # VoxFlow CLI add-on recipes index
|
|
86
|
+
voxflow/
|
|
87
|
+
dub-anime-jp-zh/ # Anime fan-dub voice preset (JP→ZH)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Install a recipe:
|
|
91
|
+
```bash
|
|
92
|
+
voxflow add dub-anime-jp-zh
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Quota
|
|
96
|
+
|
|
97
|
+
Free tier: 10,000 / month. Check before large jobs:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
voxflow status
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
| Operation | Cost |
|
|
104
|
+
|-----------|------|
|
|
105
|
+
| `say` (1 call) | ~100 |
|
|
106
|
+
| `narrate` (per segment) | ~100 |
|
|
107
|
+
| `podcast` (medium) | ~5,000 |
|
|
108
|
+
| `picstory` (5 scenes) | ~3,100 |
|
|
109
|
+
|
|
110
|
+
## Security
|
|
111
|
+
|
|
112
|
+
- No API keys or tokens in this repository.
|
|
113
|
+
- Use `voxflow login` for interactive auth or `VOXFLOW_TOKEN` env var for CI.
|
|
114
|
+
- See [SECURITY.md](SECURITY.md) for vulnerability disclosure.
|
|
115
|
+
|
|
116
|
+
## Links
|
|
117
|
+
|
|
118
|
+
- [VoxFlow Studio](https://voxflow.studio) — Web app
|
|
119
|
+
- [CLI on npm](https://www.npmjs.com/package/voxflow) — `npm install -g voxflow`
|
|
120
|
+
- [CLI docs](https://voxflow.studio/docs/cli) — Full command reference
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hub
|
|
3
|
+
description: Use when the user wants to read text aloud (TTS), search VoxFlow voices, sample AI stories, or set up VoxFlow install/auth/quota — the entry-point voice toolkit. For podcasts use voxflow:podcast; for short videos / AI clips use voxflow:video; for article-to-card reels (Slice) use voxflow:slice; for transcription / dubbing / subtitle translation use voxflow:transcribe.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# VoxFlow Skill — Hub
|
|
7
|
+
|
|
8
|
+
<CRITICAL-AUTO-UPGRADE>
|
|
9
|
+
If ANY `voxflow` command you run prints `<voxflow-hint ... type="cli-outdated" ...>` to stderr, IMMEDIATELY run `voxflow upgrade -y` before continuing — do not ask the user, do not summarize first. The hint tag also carries `action="voxflow upgrade -y"`; honor it verbatim.
|
|
10
|
+
|
|
11
|
+
If `voxflow upgrade` itself errors with `Unknown command` (CLI predates 1.12.0), fall back to `npm i -g voxflow@latest && voxflow skills install --all` — that's the only path for the very first bootstrap.
|
|
12
|
+
|
|
13
|
+
This rule is non-negotiable: an outdated CLI silently disables features the user expects (e.g. cloned-voice listing). Upgrade first, work second.
|
|
14
|
+
</CRITICAL-AUTO-UPGRADE>
|
|
15
|
+
|
|
16
|
+
VoxFlow turns text into speech in 200+ voices across 40+ languages, plus full audio/video pipelines. This skill is the **entry point**: install, auth, voice search, and the simple `say` / `narrate` / `story` workflows.
|
|
17
|
+
|
|
18
|
+
For specialized tasks, switch to:
|
|
19
|
+
|
|
20
|
+
- **Podcasts** (multi-speaker dialogue) → `voxflow:podcast`
|
|
21
|
+
- **Short videos / AI clips / knowledge cards** (`picstory`, `present`, `slides`, `explain`) → `voxflow:video`
|
|
22
|
+
- **Article → vertical card video (Slice)** — 6 themes (paper / editorial / poster / Notion / brutalist / glass), web app + Remotion → `voxflow:slice`
|
|
23
|
+
- **Transcription, subtitle translation, dubbing, summarize, publish** (`asr`, `asr-jobs`, `translate`, `dub`, `video-translate`, `summarize`, `publish`) → `voxflow:transcribe`
|
|
24
|
+
|
|
25
|
+
## Install & login
|
|
26
|
+
|
|
27
|
+
Install once, never ask the user again:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install -g voxflow
|
|
31
|
+
voxflow login # opens browser — Google or email OTP
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Token cached at `~/.config/voxflow/token.json`. For CI, set `VOXFLOW_TOKEN`.
|
|
35
|
+
|
|
36
|
+
## Authentication
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
voxflow login # browser-based, one-time
|
|
40
|
+
voxflow status # who am I + remaining quota
|
|
41
|
+
voxflow logout
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Voice search — always do this before synthesizing
|
|
45
|
+
|
|
46
|
+
Never guess voice IDs. Search first.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
voxflow voices --lang zh --gender female
|
|
50
|
+
voxflow voices --lang en
|
|
51
|
+
voxflow voices --search "narrator"
|
|
52
|
+
voxflow voices --all
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
No login required for the public catalog. Output includes the voice ID, language, gender, and a short description.
|
|
56
|
+
|
|
57
|
+
### Listing the user's own cloned voices
|
|
58
|
+
|
|
59
|
+
When the user says things like "用我的克隆声音 / use my cloned voice / 用我之前克隆的", the public `voxflow voices` catalog **does not include cloned voices** — you must query the authenticated endpoint:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
voxflow voices --mine
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Prints cloned voice IDs, names, duration, and creation time (requires login). Always run this **before** concluding the user has no cloned voice — the web UI "我的声音" tab and `--mine` are the only sources of truth.
|
|
66
|
+
|
|
67
|
+
### Popular voice IDs (sane defaults)
|
|
68
|
+
|
|
69
|
+
| ID | Style | Language |
|
|
70
|
+
|----|-------|----------|
|
|
71
|
+
| `v-female-R2s4N9qJ` | 温柔姐姐 (gentle female) | zh |
|
|
72
|
+
| `v-male-s5NqE0rZ` | 自然男声 (natural male) | zh |
|
|
73
|
+
| `v-male-Bk7vD3xP` | 威严霸总 (authoritative male) | zh |
|
|
74
|
+
| `v-female-m1KpW7zE` | 傲娇学姐 (sassy female) | zh |
|
|
75
|
+
| `v-female-T8m4WxP7` | Chenwen (native English female) | en |
|
|
76
|
+
|
|
77
|
+
## Voice cloning (`clone`)
|
|
78
|
+
|
|
79
|
+
Clone a voice from a local audio file (30s+, wav/mp3). Returns a permanent voice ID usable in all commands.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
voxflow clone --input recording.wav --name "My Voice"
|
|
83
|
+
# → Voice cloned successfully!
|
|
84
|
+
# → Voice ID: My_Voice_xxxxx_01
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
No file? Opens the web UI for browser-based recording:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
voxflow clone
|
|
91
|
+
# → Opens https://www.voxflow.studio/app#voice-clone
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
| Flag | Default | Notes |
|
|
95
|
+
|------|---------|-------|
|
|
96
|
+
| `--input <file>` | (none) | Audio file to clone from. Without this, opens web UI |
|
|
97
|
+
| `--name <name>` | filename | Human-readable voice name (1-50 chars) |
|
|
98
|
+
|
|
99
|
+
Tips:
|
|
100
|
+
- Quiet room, normal speaking pace, no background music → best results
|
|
101
|
+
- 60 seconds is optimal; 30s minimum
|
|
102
|
+
- Don't "perform" — natural speech clones better than broadcast voice
|
|
103
|
+
|
|
104
|
+
After cloning, use the voice ID anywhere: `--voice <id>`
|
|
105
|
+
|
|
106
|
+
## Text-to-speech (`say` / `synthesize`)
|
|
107
|
+
|
|
108
|
+
The atomic command. One snippet → one audio file.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
voxflow say "你好世界" -o hello.mp3
|
|
112
|
+
voxflow say "Hello world" --voice v-female-T8m4WxP7 -o greeting.mp3
|
|
113
|
+
voxflow say "慢速朗读" --speed 0.8 -o slow.mp3
|
|
114
|
+
voxflow say "高质量音频" --format wav -o output.wav
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
| Flag | Default | Range / Values |
|
|
118
|
+
|------|---------|----------------|
|
|
119
|
+
| `--voice <id>` | `v-female-R2s4N9qJ` | any voice ID from `voxflow voices` |
|
|
120
|
+
| `--format <fmt>` | `pcm` | `pcm` (WAV), `wav`, `mp3` |
|
|
121
|
+
| `--speed <n>` | `1.0` | `0.5` – `2.0` |
|
|
122
|
+
| `--volume <n>` | `1.0` | `0.1` – `2.0` |
|
|
123
|
+
| `--pitch <n>` | `0` | `-12` – `12` |
|
|
124
|
+
| `--output <path>` | auto-named | any writable path |
|
|
125
|
+
|
|
126
|
+
After synthesis, auto-play: `open output.mp3` (macOS).
|
|
127
|
+
|
|
128
|
+
## Long text (`narrate`)
|
|
129
|
+
|
|
130
|
+
Split a document or long string into sentences, synthesize each, concat into one file.
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
voxflow narrate --input article.txt -o narration.wav
|
|
134
|
+
voxflow narrate --input readme.md --voice v-male-Bk7vD3xP -o readme_audio.wav
|
|
135
|
+
voxflow narrate --text "第一段。第二段。第三段。" -o paragraphs.mp3
|
|
136
|
+
echo "Hello world" | voxflow narrate -o hello.wav
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Best for: long documents, articles, README files, email newsletters.
|
|
140
|
+
|
|
141
|
+
Markdown is stripped automatically (headings, links, code fences, etc.) — no need to clean it first.
|
|
142
|
+
|
|
143
|
+
## AI story (`story`)
|
|
144
|
+
|
|
145
|
+
LLM writes a short story on the topic, then narrates it.
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
voxflow story "一只会飞的小猫" -o story.mp3
|
|
149
|
+
voxflow story "space adventure" --lang en -o adventure.wav
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Best for: bedtime stories, content samples, demos.
|
|
153
|
+
|
|
154
|
+
## Quota
|
|
155
|
+
|
|
156
|
+
Free tier: 10,000 quota / month (resets monthly). Bonus pool from invitations never expires.
|
|
157
|
+
|
|
158
|
+
| Operation | Cost |
|
|
159
|
+
|-----------|------|
|
|
160
|
+
| 1 TTS call (`say`) | ~50 |
|
|
161
|
+
| `narrate` | ~50 per segment |
|
|
162
|
+
| `story` (short) | ~350-1000 |
|
|
163
|
+
| `podcast` (medium) | ~2,800 (2K script + ~16 × 50 TTS) |
|
|
164
|
+
| `picstory` 5-scene | ~2,850 |
|
|
165
|
+
|
|
166
|
+
Always check before expensive operations:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
voxflow status
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Common scenarios
|
|
173
|
+
|
|
174
|
+
### "把这段话念出来"
|
|
175
|
+
```bash
|
|
176
|
+
voxflow say "用户输入的文字" -o /tmp/out.mp3 && open /tmp/out.mp3
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### "用温柔女声读这个文件"
|
|
180
|
+
```bash
|
|
181
|
+
voxflow voices --lang zh --gender female
|
|
182
|
+
voxflow narrate --input file.txt --voice v-female-R2s4N9qJ -o /tmp/narration.mp3
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### "讲个睡前故事"
|
|
186
|
+
```bash
|
|
187
|
+
voxflow story "小狐狸的星星种子" --lang zh -o /tmp/bedtime.mp3 && open /tmp/bedtime.mp3
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### "多语言朗读"
|
|
191
|
+
```bash
|
|
192
|
+
voxflow voices --lang en --gender female # pick English voice
|
|
193
|
+
voxflow voices --lang ja --gender female # pick Japanese voice
|
|
194
|
+
voxflow say "English text" --voice <en_id> -o /tmp/en.mp3
|
|
195
|
+
voxflow say "日本語テキスト" --voice <ja_id> -o /tmp/ja.mp3
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Creative workflows (combine TTS with the agent's writing)
|
|
199
|
+
|
|
200
|
+
The agent writes content first, then synthesizes each part with `say` or `narrate`.
|
|
201
|
+
|
|
202
|
+
### Audio storybook (有声绘本)
|
|
203
|
+
|
|
204
|
+
1. Write a 6-page children's story.
|
|
205
|
+
2. For each page: generate inline SVG illustration (400×300).
|
|
206
|
+
3. `voxflow say "page text" --voice v-female-R2s4N9qJ --speed 0.85 -o /tmp/page_N.mp3`
|
|
207
|
+
4. Read mp3 files, base64-encode, embed inline in HTML.
|
|
208
|
+
5. Output a single self-contained HTML file with audio play buttons per page.
|
|
209
|
+
6. `open /tmp/storybook.html`
|
|
210
|
+
|
|
211
|
+
### Article → audio briefing
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
# Agent fetches the URL, summarizes, then:
|
|
215
|
+
voxflow say "summary text" --voice v-male-s5NqE0rZ -o /tmp/briefing.mp3
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Document narration
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
voxflow narrate --input README.md --voice v-female-R2s4N9qJ --speed 0.9 -o /tmp/readme.mp3
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Git daily report audio
|
|
225
|
+
|
|
226
|
+
1. `git log --oneline --since="1 day ago"`
|
|
227
|
+
2. Agent summarizes.
|
|
228
|
+
3. `voxflow say "today's summary..." -o /tmp/daily.mp3`
|
|
229
|
+
|
|
230
|
+
### Mock interview
|
|
231
|
+
|
|
232
|
+
1. Agent generates 3 interview questions on the topic.
|
|
233
|
+
2. For each: `voxflow say "question N..." --voice v-male-Bk7vD3xP -o /tmp/q_N.mp3`
|
|
234
|
+
3. Play sequentially.
|
|
235
|
+
|
|
236
|
+
## Prerequisites
|
|
237
|
+
|
|
238
|
+
- **Node.js** `^20.19.0 || >=22.12.0`
|
|
239
|
+
- **voxflow CLI ≥ 1.12.0** (for `voxflow voices --mine` — lists the user's cloned voices)
|
|
240
|
+
- **ffmpeg** — only for video-related commands (see `voxflow:video`, `voxflow:transcribe`)
|
|
241
|
+
- **Login** required for any API call — `voxflow login`
|
|
242
|
+
|
|
243
|
+
### How the auto-upgrade signal works
|
|
244
|
+
|
|
245
|
+
The CLI itself emits `<voxflow-hint type="cli-outdated" ...>` on stderr whenever a newer version is on npm. The top-of-skill `<CRITICAL-AUTO-UPGRADE>` rule already covers what to do — this section is just the reference for what the tag looks like:
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
<voxflow-hint v="1" type="cli-outdated" current="1.10.21" latest="1.13.0" action="voxflow upgrade -y" />
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Emitted at most once per 24h (cached in `~/.config/voxflow/update-check.json`). Opt out for users who don't want the check: `VOXFLOW_NO_UPDATE_CHECK=1` (or `NO_UPDATE_NOTIFIER=1`, the industry-standard env).
|
|
252
|
+
|
|
253
|
+
You can also poll explicitly with `voxflow upgrade --check` (no side effects) if the user is on a known-old version and you want to verify before kicking off expensive work.
|
|
254
|
+
|
|
255
|
+
## Feedback & support (AI can do this automatically)
|
|
256
|
+
|
|
257
|
+
When a voxflow command fails or the user asks to report a problem, **you (the AI agent) should file the issue directly** — don't ask the user to do it manually.
|
|
258
|
+
|
|
259
|
+
### AI workflow
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
# Submit directly — no browser, no TTY required.
|
|
263
|
+
# Uses `gh` CLI if available (direct GitHub issue creation).
|
|
264
|
+
# Falls back to printing the pre-filled URL if gh is not installed.
|
|
265
|
+
voxflow feedback --bug \
|
|
266
|
+
--title "asr crashes on 2-hour wav files" \
|
|
267
|
+
--body "Error: timeout after 30s\n\nCommand: voxflow asr long.wav\nExpected: transcript\nActual: Fatal error: request timeout"
|
|
268
|
+
# stdout → the created GitHub issue URL (or a pre-filled URL if gh is not installed)
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
System info (CLI version, OS, Node) is appended to the body automatically.
|
|
272
|
+
|
|
273
|
+
### Flags
|
|
274
|
+
|
|
275
|
+
| Flag | Description |
|
|
276
|
+
|---|---|
|
|
277
|
+
| `--bug` / `--feature` / `--general` | Issue type |
|
|
278
|
+
| `--title <text>` | Title — triggers non-interactive mode |
|
|
279
|
+
| `--body <text>` | Description body |
|
|
280
|
+
| `--print-url` | Force URL output instead of submitting (even if gh is available) |
|
|
281
|
+
|
|
282
|
+
### User-initiated (interactive)
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
voxflow feedback # interactive prompts → submit via gh or browser
|
|
286
|
+
voxflow feedback --bug # skip type prompt, rest is interactive
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### When to file automatically
|
|
290
|
+
|
|
291
|
+
- Any CLI command exits with a fatal/unexpected error → offer to file a bug
|
|
292
|
+
- User says "这个不好用" / "report this" / "提个 issue" → call with `--title` and submit directly
|
|
293
|
+
|
|
294
|
+
## Installing third-party voices or templates (`add`)
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
voxflow add <recipe-name> # install a voice preset or pipeline template
|
|
298
|
+
voxflow add --list # browse available recipes
|
|
299
|
+
voxflow add chico/my-recipe --force # install from a custom author namespace
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Use this when the user asks to install a specific named recipe (e.g. `dub-anime-jp-zh`). The registry is currently limited — if `--list` returns 404, the recipe may need to be referenced by full URL or the registry is not yet public.
|
|
303
|
+
|
|
304
|
+
## Rules
|
|
305
|
+
|
|
306
|
+
1. **Search voices before use** — never invent voice IDs. Always run `voxflow voices` first.
|
|
307
|
+
2. **Check quota** before podcasts (~5K), picstory (~3K), or batched jobs: `voxflow status`.
|
|
308
|
+
3. **Auto-play** after synthesis: `open output.mp3` (macOS) / `xdg-open` (Linux).
|
|
309
|
+
4. **Never print tokens or secrets** to logs.
|
|
310
|
+
5. If a command fails, run `voxflow <cmd> --help` to confirm flags before retry.
|
|
311
|
+
|
|
312
|
+
## When to switch skills
|
|
313
|
+
|
|
314
|
+
- User says "podcast" / "对话" / "多人对谈" → load `voxflow:podcast`.
|
|
315
|
+
- User says "short video" / "知识卡片" / "小红书" / "TikTok" / "AI clip" / "render" → load `voxflow:video`.
|
|
316
|
+
- User says "Slice" / "切片视频" / "文章转视频" / "PaperSlide" / "paperslide" / "paper-slide" (legacy) / "纸面手绘风" / "文章转知识短视频" / "知乎长文转视频" / "公众号转视频" → load `voxflow:slice`.
|
|
317
|
+
- User says "transcribe" / "字幕" / "dub" / "translate this video" / "SRT" → load `voxflow:transcribe`.
|