Kaynağa Gözat

chore: 清理调试文件,整理 docs 结构

Yi Jiarui 4 ay önce
ebeveyn
işleme
680a52f93a
100 değiştirilmiş dosya ile 1415 ekleme ve 10237 silme
  1. 1415 0
      1
  2. 0 17
      Whisper/TEST-0/beautified_transcript.txt
  3. 0 74
      Whisper/TEST-0/storyboard.json
  4. 0 44
      Whisper/TEST-0/storyboard.srt
  5. BIN
      Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.MP4
  6. 0 0
      Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.json
  7. 0 528
      Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.srt
  8. 0 133
      Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.tsv
  9. 0 132
      Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.txt
  10. 0 398
      Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.vtt
  11. 0 0
      Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.json
  12. BIN
      Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.mp3
  13. 0 340
      Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.srt
  14. 0 86
      Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.tsv
  15. 0 85
      Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.txt
  16. 0 257
      Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.vtt
  17. 0 1
      Whisper/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES.json
  18. 0 4
      Whisper/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES.srt
  19. 0 2
      Whisper/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES.tsv
  20. 0 1
      Whisper/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES.txt
  21. 0 5
      Whisper/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES.vtt
  22. 0 0
      Whisper/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人.json
  23. 0 112
      Whisper/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人.srt
  24. 0 29
      Whisper/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人.tsv
  25. 0 28
      Whisper/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人.txt
  26. 0 86
      Whisper/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人.vtt
  27. 0 0
      Whisper/机器学习/机器学习.json
  28. 0 156
      Whisper/机器学习/机器学习.srt
  29. 0 40
      Whisper/机器学习/机器学习.tsv
  30. 0 39
      Whisper/机器学习/机器学习.txt
  31. 0 119
      Whisper/机器学习/机器学习.vtt
  32. 0 1
      _test-batch.json
  33. 0 1
      body.json
  34. 0 210
      docs/AI数字人/调用步骤1:主体识别.md
  35. 0 118
      docs/AI数字人/调用步骤2:主体检测.md
  36. 0 272
      docs/AI数字人/调用步骤3:视频生成.md
  37. 0 224
      docs/BatchListMegaTTSTrainStatus - 分页查询SpeakerID状态.md
  38. 0 269
      docs/GENERATION_PIPELINES.md
  39. 0 101
      docs/MIGRATION_DIGITAL_HUMAN.md
  40. 0 8
      docs/Pixelle-Video-main/.devcontainer/devcontainer.json
  41. 0 58
      docs/Pixelle-Video-main/.devcontainer/postCreate.sh
  42. 0 44
      docs/Pixelle-Video-main/.devcontainer/postStart.sh
  43. 0 71
      docs/Pixelle-Video-main/.dockerignore
  44. 0 45
      docs/Pixelle-Video-main/.github/workflows/docs.yml
  45. 0 76
      docs/Pixelle-Video-main/.gitignore
  46. 0 77
      docs/Pixelle-Video-main/Dockerfile
  47. 0 201
      docs/Pixelle-Video-main/LICENSE
  48. 0 150
      docs/Pixelle-Video-main/NOTICE
  49. 0 436
      docs/Pixelle-Video-main/README.md
  50. 0 432
      docs/Pixelle-Video-main/README_EN.md
  51. 0 17
      docs/Pixelle-Video-main/api/__init__.py
  52. 0 191
      docs/Pixelle-Video-main/api/app.py
  53. 0 50
      docs/Pixelle-Video-main/api/config.py
  54. 0 61
      docs/Pixelle-Video-main/api/dependencies.py
  55. 0 40
      docs/Pixelle-Video-main/api/routers/__init__.py
  56. 0 146
      docs/Pixelle-Video-main/api/routers/content.py
  57. 0 128
      docs/Pixelle-Video-main/api/routers/files.py
  58. 0 161
      docs/Pixelle-Video-main/api/routers/frame.py
  59. 0 54
      docs/Pixelle-Video-main/api/routers/health.py
  60. 0 70
      docs/Pixelle-Video-main/api/routers/image.py
  61. 0 60
      docs/Pixelle-Video-main/api/routers/llm.py
  62. 0 269
      docs/Pixelle-Video-main/api/routers/resources.py
  63. 0 105
      docs/Pixelle-Video-main/api/routers/tasks.py
  64. 0 94
      docs/Pixelle-Video-main/api/routers/tts.py
  65. 0 290
      docs/Pixelle-Video-main/api/routers/video.py
  66. 0 60
      docs/Pixelle-Video-main/api/schemas/__init__.py
  67. 0 33
      docs/Pixelle-Video-main/api/schemas/base.py
  68. 0 103
      docs/Pixelle-Video-main/api/schemas/content.py
  69. 0 69
      docs/Pixelle-Video-main/api/schemas/frame.py
  70. 0 43
      docs/Pixelle-Video-main/api/schemas/image.py
  71. 0 43
      docs/Pixelle-Video-main/api/schemas/llm.py
  72. 0 69
      docs/Pixelle-Video-main/api/schemas/resources.py
  73. 0 53
      docs/Pixelle-Video-main/api/schemas/tts.py
  74. 0 116
      docs/Pixelle-Video-main/api/schemas/video.py
  75. 0 21
      docs/Pixelle-Video-main/api/tasks/__init__.py
  76. 0 270
      docs/Pixelle-Video-main/api/tasks/manager.py
  77. 0 70
      docs/Pixelle-Video-main/api/tasks/models.py
  78. BIN
      docs/Pixelle-Video-main/bgm/default.mp3
  79. 0 67
      docs/Pixelle-Video-main/config.example.yaml
  80. 0 123
      docs/Pixelle-Video-main/docker-compose.yml
  81. 0 84
      docs/Pixelle-Video-main/docker-start.sh
  82. 0 62
      docs/Pixelle-Video-main/docs/FAQ.md
  83. 0 65
      docs/Pixelle-Video-main/docs/FAQ_CN.md
  84. 0 54
      docs/Pixelle-Video-main/docs/en/development/architecture.md
  85. 0 50
      docs/Pixelle-Video-main/docs/en/development/contributing.md
  86. 0 87
      docs/Pixelle-Video-main/docs/en/faq.md
  87. 0 45
      docs/Pixelle-Video-main/docs/en/gallery/index.md
  88. 0 64
      docs/Pixelle-Video-main/docs/en/getting-started/configuration.md
  89. 0 134
      docs/Pixelle-Video-main/docs/en/getting-started/installation.md
  90. 0 115
      docs/Pixelle-Video-main/docs/en/getting-started/quick-start.md
  91. 0 99
      docs/Pixelle-Video-main/docs/en/index.md
  92. 0 141
      docs/Pixelle-Video-main/docs/en/reference/api-overview.md
  93. 0 89
      docs/Pixelle-Video-main/docs/en/reference/config-schema.md
  94. 0 108
      docs/Pixelle-Video-main/docs/en/troubleshooting.md
  95. 0 36
      docs/Pixelle-Video-main/docs/en/tutorials/custom-style.md
  96. 0 35
      docs/Pixelle-Video-main/docs/en/tutorials/voice-cloning.md
  97. 0 33
      docs/Pixelle-Video-main/docs/en/tutorials/your-first-video.md
  98. 0 42
      docs/Pixelle-Video-main/docs/en/user-guide/api.md
  99. 0 410
      docs/Pixelle-Video-main/docs/en/user-guide/templates.md
  100. 0 98
      docs/Pixelle-Video-main/docs/en/user-guide/web-ui.md

+ 1415 - 0
1

@@ -0,0 +1,1415 @@
+
+# Please enter the commit message for your changes. Lines starting
+# with '#' will be ignored, and an empty message aborts the commit.
+#
+# On branch master
+# Your branch is up to date with 'origin/master'.
+#
+# Changes to be committed:
+#	new file:   Whisper/TEST-0/beautified_transcript.txt
+#	new file:   Whisper/TEST-0/storyboard.json
+#	new file:   Whisper/TEST-0/storyboard.srt
+#	new file:   Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.MP4
+#	new file:   Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.json
+#	new file:   Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.srt
+#	new file:   Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.tsv
+#	new file:   Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.txt
+#	new file:   Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.vtt
+#	new file:   "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.json"
+#	new file:   "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.mp3"
+#	new file:   "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.srt"
+#	new file:   "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.tsv"
+#	new file:   "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.txt"
+#	new file:   "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.vtt"
+#	new file:   "Whisper/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES.json"
+#	new file:   "Whisper/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES.srt"
+#	new file:   "Whisper/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES.tsv"
+#	new file:   "Whisper/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES.txt"
+#	new file:   "Whisper/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES.vtt"
+#	new file:   "Whisper/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272.json"
+#	new file:   "Whisper/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272.srt"
+#	new file:   "Whisper/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272.tsv"
+#	new file:   "Whisper/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272.txt"
+#	new file:   "Whisper/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272.vtt"
+#	new file:   "Whisper/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240.json"
+#	new file:   "Whisper/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240.srt"
+#	new file:   "Whisper/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240.tsv"
+#	new file:   "Whisper/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240.txt"
+#	new file:   "Whisper/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240.vtt"
+#	new file:   _test-batch.json
+#	modified:   deploy.ps1
+#	new file:   "docs/AI\346\225\260\345\255\227\344\272\272/\350\260\203\347\224\250\346\255\245\351\252\2441\357\274\232\344\270\273\344\275\223\350\257\206\345\210\253.md"
+#	new file:   "docs/AI\346\225\260\345\255\227\344\272\272/\350\260\203\347\224\250\346\255\245\351\252\2442\357\274\232\344\270\273\344\275\223\346\243\200\346\265\213.md"
+#	new file:   "docs/AI\346\225\260\345\255\227\344\272\272/\350\260\203\347\224\250\346\255\245\351\252\2443\357\274\232\350\247\206\351\242\221\347\224\237\346\210\220.md"
+#	new file:   "docs/BatchListMegaTTSTrainStatus - \345\210\206\351\241\265\346\237\245\350\257\242SpeakerID\347\212\266\346\200\201.md"
+#	new file:   docs/GENERATION_PIPELINES.md
+#	new file:   docs/MIGRATION_DIGITAL_HUMAN.md
+#	new file:   docs/Pixelle-Video-main/.devcontainer/devcontainer.json
+#	new file:   docs/Pixelle-Video-main/.devcontainer/postCreate.sh
+#	new file:   docs/Pixelle-Video-main/.devcontainer/postStart.sh
+#	new file:   docs/Pixelle-Video-main/.dockerignore
+#	new file:   docs/Pixelle-Video-main/.github/workflows/docs.yml
+#	new file:   docs/Pixelle-Video-main/.gitignore
+#	new file:   docs/Pixelle-Video-main/Dockerfile
+#	new file:   docs/Pixelle-Video-main/LICENSE
+#	new file:   docs/Pixelle-Video-main/NOTICE
+#	new file:   docs/Pixelle-Video-main/README.md
+#	new file:   docs/Pixelle-Video-main/README_EN.md
+#	new file:   docs/Pixelle-Video-main/api/__init__.py
+#	new file:   docs/Pixelle-Video-main/api/app.py
+#	new file:   docs/Pixelle-Video-main/api/config.py
+#	new file:   docs/Pixelle-Video-main/api/dependencies.py
+#	new file:   docs/Pixelle-Video-main/api/routers/__init__.py
+#	new file:   docs/Pixelle-Video-main/api/routers/content.py
+#	new file:   docs/Pixelle-Video-main/api/routers/files.py
+#	new file:   docs/Pixelle-Video-main/api/routers/frame.py
+#	new file:   docs/Pixelle-Video-main/api/routers/health.py
+#	new file:   docs/Pixelle-Video-main/api/routers/image.py
+#	new file:   docs/Pixelle-Video-main/api/routers/llm.py
+#	new file:   docs/Pixelle-Video-main/api/routers/resources.py
+#	new file:   docs/Pixelle-Video-main/api/routers/tasks.py
+#	new file:   docs/Pixelle-Video-main/api/routers/tts.py
+#	new file:   docs/Pixelle-Video-main/api/routers/video.py
+#	new file:   docs/Pixelle-Video-main/api/schemas/__init__.py
+#	new file:   docs/Pixelle-Video-main/api/schemas/base.py
+#	new file:   docs/Pixelle-Video-main/api/schemas/content.py
+#	new file:   docs/Pixelle-Video-main/api/schemas/frame.py
+#	new file:   docs/Pixelle-Video-main/api/schemas/image.py
+#	new file:   docs/Pixelle-Video-main/api/schemas/llm.py
+#	new file:   docs/Pixelle-Video-main/api/schemas/resources.py
+#	new file:   docs/Pixelle-Video-main/api/schemas/tts.py
+#	new file:   docs/Pixelle-Video-main/api/schemas/video.py
+#	new file:   docs/Pixelle-Video-main/api/tasks/__init__.py
+#	new file:   docs/Pixelle-Video-main/api/tasks/manager.py
+#	new file:   docs/Pixelle-Video-main/api/tasks/models.py
+#	new file:   docs/Pixelle-Video-main/bgm/default.mp3
+#	new file:   docs/Pixelle-Video-main/config.example.yaml
+#	new file:   docs/Pixelle-Video-main/docker-compose.yml
+#	new file:   docs/Pixelle-Video-main/docker-start.sh
+#	new file:   docs/Pixelle-Video-main/docs/FAQ.md
+#	new file:   docs/Pixelle-Video-main/docs/FAQ_CN.md
+#	new file:   docs/Pixelle-Video-main/docs/en/development/architecture.md
+#	new file:   docs/Pixelle-Video-main/docs/en/development/contributing.md
+#	new file:   docs/Pixelle-Video-main/docs/en/faq.md
+#	new file:   docs/Pixelle-Video-main/docs/en/gallery/index.md
+#	new file:   docs/Pixelle-Video-main/docs/en/getting-started/configuration.md
+#	new file:   docs/Pixelle-Video-main/docs/en/getting-started/installation.md
+#	new file:   docs/Pixelle-Video-main/docs/en/getting-started/quick-start.md
+#	new file:   docs/Pixelle-Video-main/docs/en/index.md
+#	new file:   docs/Pixelle-Video-main/docs/en/reference/api-overview.md
+#	new file:   docs/Pixelle-Video-main/docs/en/reference/config-schema.md
+#	new file:   docs/Pixelle-Video-main/docs/en/troubleshooting.md
+#	new file:   docs/Pixelle-Video-main/docs/en/tutorials/custom-style.md
+#	new file:   docs/Pixelle-Video-main/docs/en/tutorials/voice-cloning.md
+#	new file:   docs/Pixelle-Video-main/docs/en/tutorials/your-first-video.md
+#	new file:   docs/Pixelle-Video-main/docs/en/user-guide/api.md
+#	new file:   docs/Pixelle-Video-main/docs/en/user-guide/templates.md
+#	new file:   docs/Pixelle-Video-main/docs/en/user-guide/web-ui.md
+#	new file:   docs/Pixelle-Video-main/docs/en/user-guide/workflows.md
+#	new file:   docs/Pixelle-Video-main/docs/gallery/index.md
+#	new file:   docs/Pixelle-Video-main/docs/gallery/reading-habit/prompts.txt
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1080/image_minimal_framed.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1080/image_minimal_framed_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_blur_card.png
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_blur_card_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_book.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_book_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_cartoon.png
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_cartoon_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_default.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_default_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_elegant.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_elegant_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_excerpt.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_excerpt_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_fashion_vintage.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_fashion_vintage_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_full.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_full_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_healing.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_healing_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_health_preservation.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_health_preservation_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_life_insights.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_life_insights_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_life_insights_light.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_life_insights_light_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_long_text.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_long_text_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_modern.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_modern_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_neon.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_neon_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_psychology_card.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_psychology_card_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_purple.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_purple_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_satirical_cartoon.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_satirical_cartoon_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_simple_black.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_simple_black_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_simple_line_drawing.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/image_simple_line_drawing_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/static_default.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/static_default_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/static_excerpt.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/static_excerpt_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/video_default.png
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/video_default_en.png
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/video_healing.png
+#	new file:   docs/Pixelle-Video-main/docs/images/1080x1920/video_healing_en.png
+#	new file:   docs/Pixelle-Video-main/docs/images/1920x1080/image_book.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1920x1080/image_book_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1920x1080/image_film.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1920x1080/image_film_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1920x1080/image_full.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1920x1080/image_full_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1920x1080/image_ultrawide_minimal.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1920x1080/image_ultrawide_minimal_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1920x1080/image_wide_darktech.jpg
+#	new file:   docs/Pixelle-Video-main/docs/images/1920x1080/image_wide_darktech_en.jpg
+#	new file:   docs/Pixelle-Video-main/docs/stylesheets/extra.css
+#	new file:   docs/Pixelle-Video-main/docs/zh/development/architecture.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/development/contributing.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/faq.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/gallery/index.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/getting-started/configuration.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/getting-started/installation.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/getting-started/quick-start.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/index.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/reference/api-overview.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/reference/config-schema.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/troubleshooting.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/tutorials/custom-style.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/tutorials/voice-cloning.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/tutorials/your-first-video.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/user-guide/api.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/user-guide/templates.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/user-guide/web-ui.md
+#	new file:   docs/Pixelle-Video-main/docs/zh/user-guide/workflows.md
+#	new file:   docs/Pixelle-Video-main/mkdocs.yml
+#	new file:   docs/Pixelle-Video-main/packaging/windows/README.md
+#	new file:   docs/Pixelle-Video-main/packaging/windows/build.py
+#	new file:   docs/Pixelle-Video-main/packaging/windows/config/build_config.yaml
+#	new file:   docs/Pixelle-Video-main/packaging/windows/requirements.txt
+#	new file:   docs/Pixelle-Video-main/packaging/windows/templates/README.txt
+#	new file:   docs/Pixelle-Video-main/packaging/windows/templates/start.bat
+#	new file:   docs/Pixelle-Video-main/pixelle_video/__init__.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/config/__init__.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/config/loader.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/config/manager.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/config/schema.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/llm_presets.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/models/media.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/models/progress.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/models/storyboard.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/pipelines/__init__.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/pipelines/asset_based.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/pipelines/base.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/pipelines/custom.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/pipelines/linear.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/pipelines/standard.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/prompts/__init__.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/prompts/asset_script_generation.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/prompts/content_narration.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/prompts/image_generation.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/prompts/style_conversion.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/prompts/title_generation.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/prompts/topic_narration.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/prompts/video_generation.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/service.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/__init__.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/comfy_base_service.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/frame_html.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/frame_processor.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/history_manager.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/image_analysis.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/llm_service.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/media.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/persistence.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/tts_service.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/video.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/services/video_analysis.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/tts_voices.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/utils/__init__.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/utils/content_generators.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/utils/llm_util.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/utils/os_util.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/utils/prompt_helper.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/utils/template_util.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/utils/tts_util.py
+#	new file:   docs/Pixelle-Video-main/pixelle_video/utils/workflow_util.py
+#	new file:   docs/Pixelle-Video-main/pyproject.toml
+#	new file:   docs/Pixelle-Video-main/requirements-docs.txt
+#	new file:   docs/Pixelle-Video-main/resources/discord.png
+#	new file:   docs/Pixelle-Video-main/resources/example.png
+#	new file:   docs/Pixelle-Video-main/resources/flow.png
+#	new file:   docs/Pixelle-Video-main/resources/flow_en.png
+#	new file:   docs/Pixelle-Video-main/resources/webui.png
+#	new file:   docs/Pixelle-Video-main/resources/webui_en.png
+#	new file:   docs/Pixelle-Video-main/resources/wechat.png
+#	new file:   docs/Pixelle-Video-main/start_web.bat
+#	new file:   docs/Pixelle-Video-main/start_web.sh
+#	new file:   docs/Pixelle-Video-main/templates/1080x1080/image_minimal_framed.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/asset_default.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_blur_card.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_book.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_cartoon.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_default.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_elegant.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_excerpt.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_fashion_vintage.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_full.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_healing.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_health_preservation.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_life_insights.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_life_insights_light.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_long_text.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_modern.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_neon.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_psychology_card.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_purple.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_satirical_cartoon.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_simple_black.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/image_simple_line_drawing.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/static_default.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/static_excerpt.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/video_default.html
+#	new file:   docs/Pixelle-Video-main/templates/1080x1920/video_healing.html
+#	new file:   docs/Pixelle-Video-main/templates/1920x1080/image_book.html
+#	new file:   docs/Pixelle-Video-main/templates/1920x1080/image_film.html
+#	new file:   docs/Pixelle-Video-main/templates/1920x1080/image_full.html
+#	new file:   docs/Pixelle-Video-main/templates/1920x1080/image_ultrawide_minimal.html
+#	new file:   docs/Pixelle-Video-main/templates/1920x1080/image_wide_darktech.html
+#	new file:   docs/Pixelle-Video-main/uv.lock
+#	new file:   docs/Pixelle-Video-main/web/__init__.py
+#	new file:   docs/Pixelle-Video-main/web/app.py
+#	new file:   docs/Pixelle-Video-main/web/components/__init__.py
+#	new file:   docs/Pixelle-Video-main/web/components/content_input.py
+#	new file:   docs/Pixelle-Video-main/web/components/digital_tts_config.py
+#	new file:   docs/Pixelle-Video-main/web/components/faq.py
+#	new file:   docs/Pixelle-Video-main/web/components/header.py
+#	new file:   docs/Pixelle-Video-main/web/components/output_preview.py
+#	new file:   docs/Pixelle-Video-main/web/components/settings.py
+#	new file:   docs/Pixelle-Video-main/web/components/style_config.py
+#	new file:   docs/Pixelle-Video-main/web/i18n/__init__.py
+#	new file:   docs/Pixelle-Video-main/web/i18n/locales/en_US.json
+#	new file:   docs/Pixelle-Video-main/web/i18n/locales/zh_CN.json
+#	new file:   "docs/Pixelle-Video-main/web/pages/1_\360\237\216\254_Home.py"
+#	new file:   "docs/Pixelle-Video-main/web/pages/2_\360\237\223\232_History.py"
+#	new file:   docs/Pixelle-Video-main/web/pages/__init__.py
+#	new file:   docs/Pixelle-Video-main/web/pipelines/__init__.py
+#	new file:   docs/Pixelle-Video-main/web/pipelines/action_transfer.py
+#	new file:   docs/Pixelle-Video-main/web/pipelines/asset_based.py
+#	new file:   docs/Pixelle-Video-main/web/pipelines/base.py
+#	new file:   docs/Pixelle-Video-main/web/pipelines/digital_human.py
+#	new file:   docs/Pixelle-Video-main/web/pipelines/i2v.py
+#	new file:   docs/Pixelle-Video-main/web/pipelines/standard.py
+#	new file:   docs/Pixelle-Video-main/web/state/__init__.py
+#	new file:   docs/Pixelle-Video-main/web/state/session.py
+#	new file:   docs/Pixelle-Video-main/web/utils/__init__.py
+#	new file:   docs/Pixelle-Video-main/web/utils/async_helpers.py
+#	new file:   docs/Pixelle-Video-main/web/utils/batch_manager.py
+#	new file:   docs/Pixelle-Video-main/web/utils/streamlit_helpers.py
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/af_scail.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/analyse_image.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/digital_combination.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/digital_customize.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/digital_image.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/i2v_LTX2.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/image_Z-image.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/image_flux.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/image_flux2.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/image_qwen.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/image_qwen_chinese_cartoon.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/image_sd3.5.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/image_sdxl.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/tts_edge.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/tts_index2.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/tts_spark.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/video_Z_image_wan2.2.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/video_qwen_wan2.2.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/video_understanding.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/video_wan2.1_fusionx.json
+#	new file:   docs/Pixelle-Video-main/workflows/runninghub/video_wan2.2.json
+#	new file:   docs/Pixelle-Video-main/workflows/selfhost/analyse_image.json
+#	new file:   docs/Pixelle-Video-main/workflows/selfhost/analyse_video.json
+#	new file:   docs/Pixelle-Video-main/workflows/selfhost/image_flux.json
+#	new file:   docs/Pixelle-Video-main/workflows/selfhost/image_nano_banana.json
+#	new file:   docs/Pixelle-Video-main/workflows/selfhost/image_qwen.json
+#	new file:   docs/Pixelle-Video-main/workflows/selfhost/tts_edge.json
+#	new file:   docs/Pixelle-Video-main/workflows/selfhost/tts_index2.json
+#	new file:   docs/Pixelle-Video-main/workflows/selfhost/video_wan2.1_fusionx.json
+#	new file:   docs/deploy.ps1
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude-plugin/marketplace.json
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude-plugin/plugin.json
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/banner-design/SKILL.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/banner-design/references/banner-sizes-and-styles.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/SKILL.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/approval-checklist.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/asset-organization.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/brand-guideline-template.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/color-palette-management.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/consistency-checklist.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/logo-usage-rules.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/messaging-framework.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/typography-specifications.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/update.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/visual-identity.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/voice-framework.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/scripts/extract-colors.cjs
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/scripts/inject-brand-context.cjs
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/scripts/sync-brand-to-tokens.cjs
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/scripts/validate-asset.cjs
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/brand/templates/brand-guidelines-starter.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/SKILL.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-backgrounds.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-charts.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-color-logic.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-copy.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-layout-logic.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-layouts.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-strategies.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-typography.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/component-specs.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/component-tokens.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/primitive-tokens.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/semantic-tokens.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/states-and-variants.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/tailwind-integration.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/token-architecture.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/embed-tokens.cjs
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/fetch-background.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/generate-slide.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/generate-tokens.cjs
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/html-token-validator.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/search-slides.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/slide-token-validator.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/slide_search_core.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/validate-tokens.cjs
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/templates/design-tokens-starter.json
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/SKILL.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/cip/deliverables.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/cip/industries.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/cip/mockup-contexts.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/cip/styles.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/icon/styles.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/logo/colors.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/logo/industries.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/logo/styles.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/banner-sizes-and-styles.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/cip-deliverable-guide.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/cip-design.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/cip-prompt-engineering.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/cip-style-guide.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/design-routing.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/icon-design.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/logo-color-psychology.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/logo-design.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/logo-prompt-engineering.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/logo-style-guide.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides-copywriting-formulas.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides-create.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides-html-template.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides-layout-patterns.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides-strategies.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/social-photos-design.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/cip/core.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/cip/generate.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/cip/render-html.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/cip/search.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/icon/generate.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/logo/core.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/logo/generate.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/logo/search.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/slides/SKILL.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/slides/references/copywriting-formulas.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/slides/references/create.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/slides/references/html-template.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/slides/references/layout-patterns.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/slides/references/slide-strategies.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/LICENSE.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/SKILL.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/DMMono-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Gloock-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Italiana-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Jura-Light.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Jura-Medium.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Jura-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Lora-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Lora-Italic.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Lora-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Lora-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Outfit-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Tektur-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/canvas-design-system.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/shadcn-accessibility.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/shadcn-components.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/shadcn-theming.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/tailwind-customization.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/tailwind-responsive.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/tailwind-utilities.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/.coverage
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/requirements.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/shadcn_add.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/tailwind_config_gen.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/tests/coverage-ui.json
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/tests/requirements.txt
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/tests/test_shadcn_add.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-ux-pro-max/SKILL.md
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-ux-pro-max/data
+#	new file:   docs/ui-ux-pro-max-skill-main/.claude/skills/ui-ux-pro-max/scripts
+#	new file:   docs/ui-ux-pro-max-skill-main/.github/workflows/claude-code-review.yml
+#	new file:   docs/ui-ux-pro-max-skill-main/.github/workflows/claude.yml
+#	new file:   docs/ui-ux-pro-max-skill-main/.github/workflows/python-package-conda.yml
+#	new file:   docs/ui-ux-pro-max-skill-main/.gitignore
+#	new file:   docs/ui-ux-pro-max-skill-main/CLAUDE.md
+#	new file:   docs/ui-ux-pro-max-skill-main/LICENSE
+#	new file:   docs/ui-ux-pro-max-skill-main/README.md
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/.gitignore
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/.npmignore
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/README.md
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/_sync_all.py
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/app-interface.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/charts.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/colors.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/design.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/draft.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/google-fonts.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/icons.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/landing.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/products.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/react-performance.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/angular.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/astro.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/flutter.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/html-tailwind.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/jetpack-compose.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/laravel.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/nextjs.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/nuxt-ui.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/nuxtjs.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/react-native.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/react.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/shadcn.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/svelte.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/swiftui.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/threejs.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/vue.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/styles.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/typography.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/ui-reasoning.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/data/ux-guidelines.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/scripts/core.py
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/scripts/design_system.py
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/scripts/search.py
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/base/quick-reference.md
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/base/skill-content.md
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/agent.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/augment.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/claude.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/codebuddy.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/codex.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/continue.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/copilot.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/cursor.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/droid.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/gemini.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/kilocode.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/kiro.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/opencode.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/qoder.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/roocode.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/trae.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/warp.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/windsurf.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/bun.lock
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/package-lock.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/package.json
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/src/commands/init.ts
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/src/commands/uninstall.ts
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/src/commands/update.ts
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/src/commands/versions.ts
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/src/index.ts
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/src/types/index.ts
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/src/utils/detect.ts
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/src/utils/extract.ts
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/src/utils/github.ts
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/src/utils/logger.ts
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/src/utils/template.ts
+#	new file:   docs/ui-ux-pro-max-skill-main/cli/tsconfig.json
+#	new file:   "docs/ui-ux-pro-max-skill-main/docs/\344\270\211\344\270\252 data-scripts-templates \347\232\204\345\214\272\345\210\253.md"
+#	new file:   docs/ui-ux-pro-max-skill-main/preview/xiaomaomi-app.html
+#	new file:   docs/ui-ux-pro-max-skill-main/screenshots/website.png
+#	new file:   docs/ui-ux-pro-max-skill-main/skill.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/_sync_all.py
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/app-interface.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/charts.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/colors.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/design.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/draft.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/google-fonts.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/icons.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/landing.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/products.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/react-performance.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/angular.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/astro.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/flutter.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/html-tailwind.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/jetpack-compose.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/laravel.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/nextjs.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/nuxt-ui.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/nuxtjs.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/react-native.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/react.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/shadcn.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/svelte.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/swiftui.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/threejs.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/vue.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/styles.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/typography.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/ui-reasoning.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/ux-guidelines.csv
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/scripts/core.py
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/scripts/design_system.py
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/scripts/search.py
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/base/quick-reference.md
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/base/skill-content.md
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/agent.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/augment.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/claude.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/codebuddy.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/codex.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/continue.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/copilot.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/cursor.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/droid.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/gemini.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/kilocode.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/kiro.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/opencode.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/qoder.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/roocode.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/trae.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/warp.json
+#	new file:   docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/windsurf.json
+#	new file:   "docs/\344\270\203\347\211\233\344\272\221/API\346\246\202\350\247\210.md"
+#	new file:   "docs/\344\270\203\347\211\233\344\272\221/HTTP Headers.md"
+#	new file:   "docs/\344\270\203\347\211\233\344\272\221/\346\225\260\346\215\256\346\240\274\345\274\217.md"
+#	new file:   "docs/\344\270\203\347\211\233\344\272\221/\351\224\231\350\257\257\345\223\215\345\272\224.md"
+#	new file:   "docs/\344\272\272\347\211\251\346\233\277\346\215\242.md"
+#	new file:   "docs/\344\275\277\347\224\250unique_id\357\274\210\346\212\226\351\237\263\345\217\267\357\274\211\350\216\267\345\217\226\346\214\207\345\256\232\347\224\250\346\210\267\347\232\204\344\277\241\346\201\257.md"
+#	new file:   "docs/\345\215\263\346\242\246--\345\233\276\347\211\207\347\224\237\346\210\2204.6--\346\216\245\345\217\243\346\226\207\346\241\243.md"
+#	new file:   "docs/\345\220\216\347\253\257\351\203\250\347\275\262.md"
+#	new file:   "docs/\346\220\234\347\264\242.md"
+#	new file:   "docs/\350\216\267\345\217\226\347\224\250\346\210\267\344\270\273\351\241\265\344\275\234\345\223\201.md"
+#	new file:   "docs/\351\200\232\350\277\207UID\350\216\267\345\217\226\347\224\250\346\210\267\344\277\241\346\201\257.md"
+#	new file:   "docs/\351\237\263\350\211\262\345\210\233\345\273\272/connectivity-test.log"
+#	new file:   "docs/\351\237\263\350\211\262\345\210\233\345\273\272/output/direct-synth-1778327649897.mp3"
+#	new file:   "docs/\351\237\263\350\211\262\345\210\233\345\273\272/speaker_id.md"
+#	new file:   "docs/\351\237\263\350\211\262\345\210\233\345\273\272/test.js"
+#	new file:   "docs/\351\237\263\350\211\262\345\210\233\345\273\272/\350\257\255\351\237\263\345\220\210\346\210\220/testAudioLocal.js"
+#	new file:   "docs/\351\237\263\350\211\262\345\210\233\345\273\272/\350\257\255\351\237\263\345\220\210\346\210\220/tts.md"
+#	new file:   "docs/\351\237\263\350\211\262\345\210\233\345\273\272/\350\257\255\351\237\263\345\220\210\346\210\220/\351\237\263\350\211\262\345\210\227\350\241\250.md"
+#	new file:   "docs/\351\237\263\350\211\262\345\210\233\345\273\272/\350\261\206\345\214\205\350\257\255\351\237\263_\345\211\215\347\253\257\350\260\203\347\224\250\346\226\207\346\241\243.md"
+#	new file:   public/favicon.ico
+#	modified:   server.js
+#	modified:   src/app/app.css
+#	modified:   src/app/app.html
+#	modified:   src/app/app.ts
+#	new file:   src/app/components/app-assistant/app-assistant.component.css
+#	new file:   src/app/components/app-assistant/app-assistant.component.html
+#	new file:   src/app/components/app-assistant/app-assistant.component.ts
+#	new file:   src/app/components/app-sidebar/app-sidebar.component.css
+#	new file:   src/app/components/app-sidebar/app-sidebar.component.html
+#	new file:   src/app/components/app-sidebar/app-sidebar.component.ts
+#	modified:   src/app/components/digital-human-form/digital-human-form.component.ts
+#	modified:   src/app/components/portrait-prepare/portrait-prepare.component.ts
+#	new file:   src/app/components/recent-task-pill/recent-task-pill.component.css
+#	new file:   src/app/components/recent-task-pill/recent-task-pill.component.html
+#	new file:   src/app/components/recent-task-pill/recent-task-pill.component.ts
+#	new file:   src/app/pages/home/home.component.css
+#	new file:   src/app/pages/home/home.component.html
+#	new file:   src/app/pages/home/home.component.ts
+#	new file:   src/app/pages/pipelines/action-transfer/action-transfer.component.css
+#	new file:   src/app/pages/pipelines/action-transfer/action-transfer.component.html
+#	new file:   src/app/pages/pipelines/action-transfer/action-transfer.component.ts
+#	new file:   src/app/pages/pipelines/asset-remix/asset-remix.component.css
+#	new file:   src/app/pages/pipelines/asset-remix/asset-remix.component.html
+#	new file:   src/app/pages/pipelines/asset-remix/asset-remix.component.ts
+#	new file:   src/app/pages/pipelines/digital-human/digital-human.component.ts
+#	new file:   src/app/pages/pipelines/image-to-video/image-to-video.component.css
+#	new file:   src/app/pages/pipelines/image-to-video/image-to-video.component.html
+#	new file:   src/app/pages/pipelines/image-to-video/image-to-video.component.ts
+#	new file:   src/app/pages/pipelines/topic-to-video/topic-to-video.component.css
+#	new file:   src/app/pages/pipelines/topic-to-video/topic-to-video.component.html
+#	new file:   src/app/pages/pipelines/topic-to-video/topic-to-video.component.ts
+#	new file:   src/app/pipelines/composite-sse.ts
+#	new file:   src/app/pipelines/pipeline-registry.ts
+#	new file:   src/app/services/assistant.service.ts
+#	modified:   src/app/services/jimeng.service.ts
+#	new file:   src/app/services/results.service.ts
+#	modified:   src/index.html
+#	deleted:    stream.txt
+#	new file:   "\345\220\216\347\253\257\351\203\250\347\275\262.md"
+#
+# Changes not staged for commit:
+#	deleted:    Whisper/TEST-0/beautified_transcript.txt
+#	deleted:    Whisper/TEST-0/storyboard.json
+#	deleted:    Whisper/TEST-0/storyboard.srt
+#	deleted:    Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.MP4
+#	deleted:    Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.json
+#	deleted:    Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.srt
+#	deleted:    Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.tsv
+#	deleted:    Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.txt
+#	deleted:    Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.vtt
+#	deleted:    "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.json"
+#	deleted:    "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.mp3"
+#	deleted:    "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.srt"
+#	deleted:    "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.tsv"
+#	deleted:    "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.txt"
+#	deleted:    "Whisper/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247/\345\215\241\345\260\224AAAAAI_skills \347\232\204\346\234\254\350\264\250\346\230\257\344\270\252\345\245\275\347\224\262\346\226\271\357\275\234\346\213\222\347\273\235\350\257\227\345\222\214\350\277\234\346\226\271 \345\244\247\351\203\250\345\210\206\344\272\272\347\232\204 AI \347\224\250\346\263\225\357\274\232\350\207\252\345\267\261\346\203\263\351\200\211\351\242\230\343\200\201\350\207\252\345\267\261\345\201\232\350\260\203\347\240\224\343\200\201\350\207\252\345\267\261\345\206\231\345\244\247.vtt"
+#	deleted:    "Whisper/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES.json"
+#	deleted:    "Whisper/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES.srt"
+#	deleted:    "Whisper/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES.tsv"
+#	deleted:    "Whisper/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES.txt"
+#	deleted:    "Whisper/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES/\345\245\210\346\226\257\347\224\234_\345\205\255\346\234\210\344\270\276\345\212\236\347\232\204\347\247\221\346\212\200\345\261\225\344\274\232\344\270\212\357\274\214FESTO\345\205\254\345\217\270\345\261\225\347\244\272\347\232\204\344\273\277\347\224\237\347\247\221\346\212\200\344\272\247\345\223\201\357\274\214\350\204\221\346\264\236\347\234\237\346\230\257\345\244\247\345\225\212\357\274\201#\346\212\226\351\237\263\347\234\213\344\270\226\347\225\214 #\350\247\206\350\247\211\351\234\207\346\222\274 #\347\247\221\346\212\200 #FES.vtt"
+#	deleted:    "Whisper/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272.json"
+#	deleted:    "Whisper/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272.srt"
+#	deleted:    "Whisper/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272.tsv"
+#	deleted:    "Whisper/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272.txt"
+#	deleted:    "Whisper/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272/\345\245\221\347\272\246\350\201\212\347\247\221\346\212\200_\346\210\221\345\233\275\347\247\221\346\212\200\350\277\216\346\235\245\345\205\250\346\226\260\347\252\201\347\240\264\357\274\214\344\270\200\345\235\227\345\270\203\347\253\237\346\213\245\346\234\211\347\224\265\345\255\220\346\204\237 #\347\247\221\346\212\200 #\347\224\265\345\255\220\347\232\256\350\202\244 #\346\234\272\345\231\250\344\272\272.vtt"
+#	deleted:    "Whisper/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240.json"
+#	deleted:    "Whisper/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240.srt"
+#	deleted:    "Whisper/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240.tsv"
+#	deleted:    "Whisper/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240.txt"
+#	deleted:    "Whisper/\346\234\272\345\231\250\345\255\246\344\271\240/\346\234\272\345\231\250\345\255\246\344\271\240.vtt"
+#	deleted:    _test-batch.json
+#	deleted:    body.json
+#	deleted:    "docs/AI\346\225\260\345\255\227\344\272\272/\350\260\203\347\224\250\346\255\245\351\252\2441\357\274\232\344\270\273\344\275\223\350\257\206\345\210\253.md"
+#	deleted:    "docs/AI\346\225\260\345\255\227\344\272\272/\350\260\203\347\224\250\346\255\245\351\252\2442\357\274\232\344\270\273\344\275\223\346\243\200\346\265\213.md"
+#	deleted:    "docs/AI\346\225\260\345\255\227\344\272\272/\350\260\203\347\224\250\346\255\245\351\252\2443\357\274\232\350\247\206\351\242\221\347\224\237\346\210\220.md"
+#	deleted:    "docs/BatchListMegaTTSTrainStatus - \345\210\206\351\241\265\346\237\245\350\257\242SpeakerID\347\212\266\346\200\201.md"
+#	deleted:    docs/GENERATION_PIPELINES.md
+#	deleted:    docs/MIGRATION_DIGITAL_HUMAN.md
+#	deleted:    docs/Pixelle-Video-main/.devcontainer/devcontainer.json
+#	deleted:    docs/Pixelle-Video-main/.devcontainer/postCreate.sh
+#	deleted:    docs/Pixelle-Video-main/.devcontainer/postStart.sh
+#	deleted:    docs/Pixelle-Video-main/.dockerignore
+#	deleted:    docs/Pixelle-Video-main/.github/workflows/docs.yml
+#	deleted:    docs/Pixelle-Video-main/.gitignore
+#	deleted:    docs/Pixelle-Video-main/Dockerfile
+#	deleted:    docs/Pixelle-Video-main/LICENSE
+#	deleted:    docs/Pixelle-Video-main/NOTICE
+#	deleted:    docs/Pixelle-Video-main/README.md
+#	deleted:    docs/Pixelle-Video-main/README_EN.md
+#	deleted:    docs/Pixelle-Video-main/api/__init__.py
+#	deleted:    docs/Pixelle-Video-main/api/app.py
+#	deleted:    docs/Pixelle-Video-main/api/config.py
+#	deleted:    docs/Pixelle-Video-main/api/dependencies.py
+#	deleted:    docs/Pixelle-Video-main/api/routers/__init__.py
+#	deleted:    docs/Pixelle-Video-main/api/routers/content.py
+#	deleted:    docs/Pixelle-Video-main/api/routers/files.py
+#	deleted:    docs/Pixelle-Video-main/api/routers/frame.py
+#	deleted:    docs/Pixelle-Video-main/api/routers/health.py
+#	deleted:    docs/Pixelle-Video-main/api/routers/image.py
+#	deleted:    docs/Pixelle-Video-main/api/routers/llm.py
+#	deleted:    docs/Pixelle-Video-main/api/routers/resources.py
+#	deleted:    docs/Pixelle-Video-main/api/routers/tasks.py
+#	deleted:    docs/Pixelle-Video-main/api/routers/tts.py
+#	deleted:    docs/Pixelle-Video-main/api/routers/video.py
+#	deleted:    docs/Pixelle-Video-main/api/schemas/__init__.py
+#	deleted:    docs/Pixelle-Video-main/api/schemas/base.py
+#	deleted:    docs/Pixelle-Video-main/api/schemas/content.py
+#	deleted:    docs/Pixelle-Video-main/api/schemas/frame.py
+#	deleted:    docs/Pixelle-Video-main/api/schemas/image.py
+#	deleted:    docs/Pixelle-Video-main/api/schemas/llm.py
+#	deleted:    docs/Pixelle-Video-main/api/schemas/resources.py
+#	deleted:    docs/Pixelle-Video-main/api/schemas/tts.py
+#	deleted:    docs/Pixelle-Video-main/api/schemas/video.py
+#	deleted:    docs/Pixelle-Video-main/api/tasks/__init__.py
+#	deleted:    docs/Pixelle-Video-main/api/tasks/manager.py
+#	deleted:    docs/Pixelle-Video-main/api/tasks/models.py
+#	deleted:    docs/Pixelle-Video-main/bgm/default.mp3
+#	deleted:    docs/Pixelle-Video-main/config.example.yaml
+#	deleted:    docs/Pixelle-Video-main/docker-compose.yml
+#	deleted:    docs/Pixelle-Video-main/docker-start.sh
+#	deleted:    docs/Pixelle-Video-main/docs/FAQ.md
+#	deleted:    docs/Pixelle-Video-main/docs/FAQ_CN.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/development/architecture.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/development/contributing.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/faq.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/gallery/index.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/getting-started/configuration.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/getting-started/installation.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/getting-started/quick-start.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/index.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/reference/api-overview.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/reference/config-schema.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/troubleshooting.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/tutorials/custom-style.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/tutorials/voice-cloning.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/tutorials/your-first-video.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/user-guide/api.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/user-guide/templates.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/user-guide/web-ui.md
+#	deleted:    docs/Pixelle-Video-main/docs/en/user-guide/workflows.md
+#	deleted:    docs/Pixelle-Video-main/docs/gallery/index.md
+#	deleted:    docs/Pixelle-Video-main/docs/gallery/reading-habit/prompts.txt
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1080/image_minimal_framed.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1080/image_minimal_framed_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_blur_card.png
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_blur_card_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_book.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_book_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_cartoon.png
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_cartoon_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_default.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_default_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_elegant.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_elegant_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_excerpt.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_excerpt_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_fashion_vintage.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_fashion_vintage_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_full.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_full_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_healing.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_healing_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_health_preservation.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_health_preservation_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_life_insights.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_life_insights_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_life_insights_light.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_life_insights_light_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_long_text.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_long_text_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_modern.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_modern_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_neon.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_neon_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_psychology_card.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_psychology_card_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_purple.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_purple_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_satirical_cartoon.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_satirical_cartoon_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_simple_black.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_simple_black_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_simple_line_drawing.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/image_simple_line_drawing_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/static_default.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/static_default_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/static_excerpt.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/static_excerpt_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/video_default.png
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/video_default_en.png
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/video_healing.png
+#	deleted:    docs/Pixelle-Video-main/docs/images/1080x1920/video_healing_en.png
+#	deleted:    docs/Pixelle-Video-main/docs/images/1920x1080/image_book.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1920x1080/image_book_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1920x1080/image_film.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1920x1080/image_film_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1920x1080/image_full.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1920x1080/image_full_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1920x1080/image_ultrawide_minimal.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1920x1080/image_ultrawide_minimal_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1920x1080/image_wide_darktech.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/images/1920x1080/image_wide_darktech_en.jpg
+#	deleted:    docs/Pixelle-Video-main/docs/stylesheets/extra.css
+#	deleted:    docs/Pixelle-Video-main/docs/zh/development/architecture.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/development/contributing.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/faq.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/gallery/index.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/getting-started/configuration.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/getting-started/installation.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/getting-started/quick-start.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/index.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/reference/api-overview.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/reference/config-schema.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/troubleshooting.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/tutorials/custom-style.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/tutorials/voice-cloning.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/tutorials/your-first-video.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/user-guide/api.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/user-guide/templates.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/user-guide/web-ui.md
+#	deleted:    docs/Pixelle-Video-main/docs/zh/user-guide/workflows.md
+#	deleted:    docs/Pixelle-Video-main/mkdocs.yml
+#	deleted:    docs/Pixelle-Video-main/packaging/windows/README.md
+#	deleted:    docs/Pixelle-Video-main/packaging/windows/build.py
+#	deleted:    docs/Pixelle-Video-main/packaging/windows/config/build_config.yaml
+#	deleted:    docs/Pixelle-Video-main/packaging/windows/requirements.txt
+#	deleted:    docs/Pixelle-Video-main/packaging/windows/templates/README.txt
+#	deleted:    docs/Pixelle-Video-main/packaging/windows/templates/start.bat
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/__init__.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/config/__init__.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/config/loader.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/config/manager.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/config/schema.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/llm_presets.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/models/media.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/models/progress.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/models/storyboard.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/pipelines/__init__.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/pipelines/asset_based.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/pipelines/base.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/pipelines/custom.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/pipelines/linear.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/pipelines/standard.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/prompts/__init__.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/prompts/asset_script_generation.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/prompts/content_narration.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/prompts/image_generation.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/prompts/style_conversion.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/prompts/title_generation.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/prompts/topic_narration.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/prompts/video_generation.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/service.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/__init__.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/comfy_base_service.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/frame_html.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/frame_processor.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/history_manager.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/image_analysis.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/llm_service.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/media.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/persistence.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/tts_service.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/video.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/services/video_analysis.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/tts_voices.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/utils/__init__.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/utils/content_generators.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/utils/llm_util.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/utils/os_util.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/utils/prompt_helper.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/utils/template_util.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/utils/tts_util.py
+#	deleted:    docs/Pixelle-Video-main/pixelle_video/utils/workflow_util.py
+#	deleted:    docs/Pixelle-Video-main/pyproject.toml
+#	deleted:    docs/Pixelle-Video-main/requirements-docs.txt
+#	deleted:    docs/Pixelle-Video-main/resources/discord.png
+#	deleted:    docs/Pixelle-Video-main/resources/example.png
+#	deleted:    docs/Pixelle-Video-main/resources/flow.png
+#	deleted:    docs/Pixelle-Video-main/resources/flow_en.png
+#	deleted:    docs/Pixelle-Video-main/resources/webui.png
+#	deleted:    docs/Pixelle-Video-main/resources/webui_en.png
+#	deleted:    docs/Pixelle-Video-main/resources/wechat.png
+#	deleted:    docs/Pixelle-Video-main/start_web.bat
+#	deleted:    docs/Pixelle-Video-main/start_web.sh
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1080/image_minimal_framed.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/asset_default.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_blur_card.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_book.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_cartoon.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_default.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_elegant.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_excerpt.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_fashion_vintage.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_full.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_healing.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_health_preservation.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_life_insights.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_life_insights_light.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_long_text.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_modern.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_neon.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_psychology_card.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_purple.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_satirical_cartoon.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_simple_black.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/image_simple_line_drawing.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/static_default.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/static_excerpt.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/video_default.html
+#	deleted:    docs/Pixelle-Video-main/templates/1080x1920/video_healing.html
+#	deleted:    docs/Pixelle-Video-main/templates/1920x1080/image_book.html
+#	deleted:    docs/Pixelle-Video-main/templates/1920x1080/image_film.html
+#	deleted:    docs/Pixelle-Video-main/templates/1920x1080/image_full.html
+#	deleted:    docs/Pixelle-Video-main/templates/1920x1080/image_ultrawide_minimal.html
+#	deleted:    docs/Pixelle-Video-main/templates/1920x1080/image_wide_darktech.html
+#	deleted:    docs/Pixelle-Video-main/uv.lock
+#	deleted:    docs/Pixelle-Video-main/web/__init__.py
+#	deleted:    docs/Pixelle-Video-main/web/app.py
+#	deleted:    docs/Pixelle-Video-main/web/components/__init__.py
+#	deleted:    docs/Pixelle-Video-main/web/components/content_input.py
+#	deleted:    docs/Pixelle-Video-main/web/components/digital_tts_config.py
+#	deleted:    docs/Pixelle-Video-main/web/components/faq.py
+#	deleted:    docs/Pixelle-Video-main/web/components/header.py
+#	deleted:    docs/Pixelle-Video-main/web/components/output_preview.py
+#	deleted:    docs/Pixelle-Video-main/web/components/settings.py
+#	deleted:    docs/Pixelle-Video-main/web/components/style_config.py
+#	deleted:    docs/Pixelle-Video-main/web/i18n/__init__.py
+#	deleted:    docs/Pixelle-Video-main/web/i18n/locales/en_US.json
+#	deleted:    docs/Pixelle-Video-main/web/i18n/locales/zh_CN.json
+#	deleted:    "docs/Pixelle-Video-main/web/pages/1_\360\237\216\254_Home.py"
+#	deleted:    "docs/Pixelle-Video-main/web/pages/2_\360\237\223\232_History.py"
+#	deleted:    docs/Pixelle-Video-main/web/pages/__init__.py
+#	deleted:    docs/Pixelle-Video-main/web/pipelines/__init__.py
+#	deleted:    docs/Pixelle-Video-main/web/pipelines/action_transfer.py
+#	deleted:    docs/Pixelle-Video-main/web/pipelines/asset_based.py
+#	deleted:    docs/Pixelle-Video-main/web/pipelines/base.py
+#	deleted:    docs/Pixelle-Video-main/web/pipelines/digital_human.py
+#	deleted:    docs/Pixelle-Video-main/web/pipelines/i2v.py
+#	deleted:    docs/Pixelle-Video-main/web/pipelines/standard.py
+#	deleted:    docs/Pixelle-Video-main/web/state/__init__.py
+#	deleted:    docs/Pixelle-Video-main/web/state/session.py
+#	deleted:    docs/Pixelle-Video-main/web/utils/__init__.py
+#	deleted:    docs/Pixelle-Video-main/web/utils/async_helpers.py
+#	deleted:    docs/Pixelle-Video-main/web/utils/batch_manager.py
+#	deleted:    docs/Pixelle-Video-main/web/utils/streamlit_helpers.py
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/af_scail.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/analyse_image.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/digital_combination.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/digital_customize.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/digital_image.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/i2v_LTX2.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/image_Z-image.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/image_flux.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/image_flux2.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/image_qwen.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/image_qwen_chinese_cartoon.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/image_sd3.5.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/image_sdxl.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/tts_edge.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/tts_index2.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/tts_spark.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/video_Z_image_wan2.2.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/video_qwen_wan2.2.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/video_understanding.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/video_wan2.1_fusionx.json
+#	deleted:    docs/Pixelle-Video-main/workflows/runninghub/video_wan2.2.json
+#	deleted:    docs/Pixelle-Video-main/workflows/selfhost/analyse_image.json
+#	deleted:    docs/Pixelle-Video-main/workflows/selfhost/analyse_video.json
+#	deleted:    docs/Pixelle-Video-main/workflows/selfhost/image_flux.json
+#	deleted:    docs/Pixelle-Video-main/workflows/selfhost/image_nano_banana.json
+#	deleted:    docs/Pixelle-Video-main/workflows/selfhost/image_qwen.json
+#	deleted:    docs/Pixelle-Video-main/workflows/selfhost/tts_edge.json
+#	deleted:    docs/Pixelle-Video-main/workflows/selfhost/tts_index2.json
+#	deleted:    docs/Pixelle-Video-main/workflows/selfhost/video_wan2.1_fusionx.json
+#	deleted:    docs/deploy.ps1
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude-plugin/marketplace.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude-plugin/plugin.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/banner-design/SKILL.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/banner-design/references/banner-sizes-and-styles.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/SKILL.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/approval-checklist.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/asset-organization.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/brand-guideline-template.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/color-palette-management.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/consistency-checklist.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/logo-usage-rules.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/messaging-framework.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/typography-specifications.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/update.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/visual-identity.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/references/voice-framework.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/scripts/extract-colors.cjs
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/scripts/inject-brand-context.cjs
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/scripts/sync-brand-to-tokens.cjs
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/scripts/validate-asset.cjs
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/brand/templates/brand-guidelines-starter.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/SKILL.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-backgrounds.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-charts.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-color-logic.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-copy.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-layout-logic.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-layouts.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-strategies.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/data/slide-typography.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/component-specs.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/component-tokens.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/primitive-tokens.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/semantic-tokens.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/states-and-variants.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/tailwind-integration.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/references/token-architecture.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/embed-tokens.cjs
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/fetch-background.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/generate-slide.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/generate-tokens.cjs
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/html-token-validator.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/search-slides.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/slide-token-validator.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/slide_search_core.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/scripts/validate-tokens.cjs
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design-system/templates/design-tokens-starter.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/SKILL.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/cip/deliverables.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/cip/industries.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/cip/mockup-contexts.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/cip/styles.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/icon/styles.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/logo/colors.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/logo/industries.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/data/logo/styles.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/banner-sizes-and-styles.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/cip-deliverable-guide.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/cip-design.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/cip-prompt-engineering.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/cip-style-guide.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/design-routing.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/icon-design.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/logo-color-psychology.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/logo-design.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/logo-prompt-engineering.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/logo-style-guide.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides-copywriting-formulas.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides-create.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides-html-template.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides-layout-patterns.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides-strategies.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/slides.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/references/social-photos-design.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/cip/core.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/cip/generate.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/cip/render-html.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/cip/search.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/icon/generate.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/logo/core.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/logo/generate.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/design/scripts/logo/search.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/slides/SKILL.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/slides/references/copywriting-formulas.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/slides/references/create.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/slides/references/html-template.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/slides/references/layout-patterns.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/slides/references/slide-strategies.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/LICENSE.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/SKILL.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/DMMono-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Gloock-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Italiana-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Jura-Light.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Jura-Medium.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Jura-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Lora-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Lora-Italic.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Lora-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Lora-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Outfit-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Tektur-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/canvas-design-system.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/shadcn-accessibility.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/shadcn-components.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/shadcn-theming.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/tailwind-customization.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/tailwind-responsive.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/references/tailwind-utilities.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/.coverage
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/requirements.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/shadcn_add.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/tailwind_config_gen.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/tests/coverage-ui.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/tests/requirements.txt
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/tests/test_shadcn_add.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-ux-pro-max/SKILL.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-ux-pro-max/data
+#	deleted:    docs/ui-ux-pro-max-skill-main/.claude/skills/ui-ux-pro-max/scripts
+#	deleted:    docs/ui-ux-pro-max-skill-main/.github/workflows/claude-code-review.yml
+#	deleted:    docs/ui-ux-pro-max-skill-main/.github/workflows/claude.yml
+#	deleted:    docs/ui-ux-pro-max-skill-main/.github/workflows/python-package-conda.yml
+#	deleted:    docs/ui-ux-pro-max-skill-main/.gitignore
+#	deleted:    docs/ui-ux-pro-max-skill-main/CLAUDE.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/LICENSE
+#	deleted:    docs/ui-ux-pro-max-skill-main/README.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/.gitignore
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/.npmignore
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/README.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/_sync_all.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/app-interface.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/charts.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/colors.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/design.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/draft.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/google-fonts.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/icons.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/landing.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/products.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/react-performance.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/angular.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/astro.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/flutter.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/html-tailwind.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/jetpack-compose.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/laravel.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/nextjs.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/nuxt-ui.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/nuxtjs.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/react-native.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/react.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/shadcn.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/svelte.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/swiftui.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/threejs.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/stacks/vue.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/styles.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/typography.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/ui-reasoning.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/data/ux-guidelines.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/scripts/core.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/scripts/design_system.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/scripts/search.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/base/quick-reference.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/base/skill-content.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/agent.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/augment.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/claude.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/codebuddy.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/codex.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/continue.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/copilot.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/cursor.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/droid.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/gemini.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/kilocode.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/kiro.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/opencode.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/qoder.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/roocode.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/trae.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/warp.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/assets/templates/platforms/windsurf.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/bun.lock
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/package-lock.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/package.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/src/commands/init.ts
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/src/commands/uninstall.ts
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/src/commands/update.ts
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/src/commands/versions.ts
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/src/index.ts
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/src/types/index.ts
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/src/utils/detect.ts
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/src/utils/extract.ts
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/src/utils/github.ts
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/src/utils/logger.ts
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/src/utils/template.ts
+#	deleted:    docs/ui-ux-pro-max-skill-main/cli/tsconfig.json
+#	deleted:    "docs/ui-ux-pro-max-skill-main/docs/\344\270\211\344\270\252 data-scripts-templates \347\232\204\345\214\272\345\210\253.md"
+#	deleted:    docs/ui-ux-pro-max-skill-main/preview/xiaomaomi-app.html
+#	deleted:    docs/ui-ux-pro-max-skill-main/screenshots/website.png
+#	deleted:    docs/ui-ux-pro-max-skill-main/skill.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/_sync_all.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/app-interface.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/charts.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/colors.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/design.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/draft.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/google-fonts.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/icons.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/landing.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/products.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/react-performance.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/angular.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/astro.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/flutter.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/html-tailwind.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/jetpack-compose.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/laravel.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/nextjs.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/nuxt-ui.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/nuxtjs.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/react-native.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/react.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/shadcn.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/svelte.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/swiftui.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/threejs.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/stacks/vue.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/styles.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/typography.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/ui-reasoning.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/data/ux-guidelines.csv
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/scripts/core.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/scripts/design_system.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/scripts/search.py
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/base/quick-reference.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/base/skill-content.md
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/agent.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/augment.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/claude.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/codebuddy.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/codex.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/continue.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/copilot.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/cursor.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/droid.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/gemini.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/kilocode.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/kiro.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/opencode.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/qoder.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/roocode.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/trae.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/warp.json
+#	deleted:    docs/ui-ux-pro-max-skill-main/src/ui-ux-pro-max/templates/platforms/windsurf.json
+#	deleted:    "docs/\344\270\203\347\211\233\344\272\221/API\346\246\202\350\247\210.md"
+#	deleted:    "docs/\344\270\203\347\211\233\344\272\221/HTTP Headers.md"
+#	deleted:    "docs/\344\270\203\347\211\233\344\272\221/\346\225\260\346\215\256\346\240\274\345\274\217.md"
+#	deleted:    "docs/\344\270\203\347\211\233\344\272\221/\351\224\231\350\257\257\345\223\215\345\272\224.md"
+#	deleted:    "docs/\344\272\272\347\211\251\346\233\277\346\215\242.md"
+#	deleted:    "docs/\344\275\277\347\224\250unique_id\357\274\210\346\212\226\351\237\263\345\217\267\357\274\211\350\216\267\345\217\226\346\214\207\345\256\232\347\224\250\346\210\267\347\232\204\344\277\241\346\201\257.md"
+#	deleted:    "docs/\345\215\263\346\242\246--\345\233\276\347\211\207\347\224\237\346\210\2204.6--\346\216\245\345\217\243\346\226\207\346\241\243.md"
+#	deleted:    "docs/\345\220\216\347\253\257\351\203\250\347\275\262.md"
+#	deleted:    "docs/\346\220\234\347\264\242.md"
+#	deleted:    "docs/\350\216\267\345\217\226\347\224\250\346\210\267\344\270\273\351\241\265\344\275\234\345\223\201.md"
+#	deleted:    "docs/\351\200\232\350\277\207UID\350\216\267\345\217\226\347\224\250\346\210\267\344\277\241\346\201\257.md"
+#	deleted:    "docs/\351\237\263\350\211\262\345\210\233\345\273\272/connectivity-test.log"
+#	deleted:    "docs/\351\237\263\350\211\262\345\210\233\345\273\272/output/direct-synth-1778327649897.mp3"
+#	deleted:    "docs/\351\237\263\350\211\262\345\210\233\345\273\272/speaker_id.md"
+#	deleted:    "docs/\351\237\263\350\211\262\345\210\233\345\273\272/test.js"
+#	deleted:    "docs/\351\237\263\350\211\262\345\210\233\345\273\272/\350\257\255\351\237\263\345\220\210\346\210\220/testAudioLocal.js"
+#	deleted:    "docs/\351\237\263\350\211\262\345\210\233\345\273\272/\350\257\255\351\237\263\345\220\210\346\210\220/tts.md"
+#	deleted:    "docs/\351\237\263\350\211\262\345\210\233\345\273\272/\350\257\255\351\237\263\345\220\210\346\210\220/\351\237\263\350\211\262\345\210\227\350\241\250.md"
+#	deleted:    "docs/\351\237\263\350\211\262\345\210\233\345\273\272/\350\261\206\345\214\205\350\257\255\351\237\263_\345\211\215\347\253\257\350\260\203\347\224\250\346\226\207\346\241\243.md"
+#	deleted:    payload-stream.json
+#	deleted:    payload.json
+#	deleted:    src/app/fetch
+#	deleted:    "\345\220\216\347\253\257\351\203\250\347\275\262.md"
+#

+ 0 - 17
Whisper/TEST-0/beautified_transcript.txt

@@ -1,17 +0,0 @@
-沉泽的三角洲军机赛直播,谁都没想到他刚开机就被关了。"我电脑被别人操控了!"这场面真的又离谱又搞笑。
-
-三角洲新一轮淘汰赛选手集结,本以为又是场正常比赛,没想到接下来变成了全网从没见过的远程攻防大战。
-
-打第一把时沉泽接受了队友林树的屏幕远程共享,打完后他尝试重新连接林树的电脑,结果出了大问题。
-
-他不小心暴露了自己的远程控制码,任何人输入就能接管电脑,而且还默认控制无需同意。很快有人发现了。
-
-被四个人同时操控!前一秒还信任队友不会乱搞,后一秒电脑直接被关机了。六十多万人看着都乐了。
-
-更离谱的是远程控制开机自启动,一开机就被人连上。刚开机又被关,队友都懵了电脑彻底失控了。
-
-在队友提醒下终于拔了网线,重新开机关掉远程控制,别人终于连不上了,可算回到了正式比赛节奏。
-
-两把之后更离谱的事来了,九八老师切屏时也把远程控制码暴露了。这下轮到九八的电脑被观众操控了。
-
-十多个设备同时入侵九八电脑,有人关机有人阻止,直播彻底混乱。这场不可能是剧本的闹剧画上了终局。

+ 0 - 74
Whisper/TEST-0/storyboard.json

@@ -1,74 +0,0 @@
-[
-  {
-    "id": "S-01",
-    "act": "开场",
-    "narration": "沉泽的三角洲军机赛直播,谁都没想到他刚开机就被关了。'我电脑被别人操控了!'这场面真的又离谱又搞笑。",
-    "type": "ai-gen",
-    "prompt": "Close-up of a gaming streamer's shocked face illuminated by monitor light in a dark room, computer screen suddenly turning off, dramatic reaction shot, esports gaming setup, high quality, cinematic lighting, 4K",
-    "duration": "10s"
-  },
-  {
-    "id": "S-02",
-    "act": "引入",
-    "narration": "三角洲新一轮淘汰赛选手集结,本以为又是场正常比赛,没想到接下来变成了全网从没见过的远程攻防大战。",
-    "type": "ai-gen",
-    "prompt": "Wide shot of an esports tournament stage with multiple gaming setups glowing in the dark, players gathering for intense competition, dramatic arena lighting with spotlights, competitive gaming atmosphere, epic scale, 4K cinematic",
-    "duration": "10s"
-  },
-  {
-    "id": "S-03",
-    "act": "引入",
-    "narration": "打第一把时沉泽接受了队友林树的屏幕远程共享,打完后他尝试重新连接林树的电脑,结果出了大问题。",
-    "type": "ai-gen",
-    "prompt": "Over-the-shoulder shot of a gamer using remote desktop software on dual monitors, screen sharing interface visible, blue and purple screen glow reflecting on face, tech-focused composition, suspenseful mood, cinematic depth of field",
-    "duration": "10s"
-  },
-  {
-    "id": "S-04",
-    "act": "正文",
-    "narration": "他不小心暴露了自己的远程控制码,任何人输入就能接管电脑,而且还默认控制无需同意。很快有人发现了。",
-    "type": "ai-gen",
-    "prompt": "Dramatic close-up of a computer screen displaying a remote access code being accidentally revealed during live stream, digital numbers glowing ominously, hacker aesthetic with green and red warning lights, neon highlights, tension building, cinematic",
-    "duration": "10s"
-  },
-  {
-    "id": "S-05",
-    "act": "正文",
-    "narration": "被四个人同时操控!前一秒还信任队友不会乱搞,后一秒电脑直接被关机了。六十多万人看着都乐了。",
-    "type": "ai-gen",
-    "prompt": "Split screen chaos showing multiple mouse cursors moving frantically on one computer screen, gaming stream overlay with scrolling chat messages going wild, streamer with shocked expression, comedic chaos, vibrant colors, dynamic camera movement, 4K",
-    "duration": "10s"
-  },
-  {
-    "id": "S-06",
-    "act": "正文",
-    "narration": "更离谱的是远程控制开机自启动,一开机就被人连上。刚开机又被关,队友都懵了电脑彻底失控了。",
-    "type": "ai-gen",
-    "prompt": "Extreme close-up of hands frantically pressing computer power button, screen flickering on and off repeatedly in rapid succession, frustrated gamer in background, dramatic tension, fast-paced editing feel, red warning lights flashing, cinematic",
-    "duration": "10s"
-  },
-  {
-    "id": "S-07",
-    "act": "正文",
-    "narration": "在队友提醒下终于拔了网线,重新开机关掉远程控制,别人终于连不上了,可算回到了正式比赛节奏。",
-    "type": "ai-gen",
-    "prompt": "Close-up of hands pulling ethernet cable from computer with sparks effect, network disconnection visualization, then wide shot of relieved gamer finally regaining control, returning to game screen, triumphant moment, warm lighting shift, cinematic",
-    "duration": "10s"
-  },
-  {
-    "id": "S-08",
-    "act": "正文",
-    "narration": "两把之后更离谱的事来了,九八老师切屏时也把远程控制码暴露了。这下轮到九八的电脑被观众操控了。",
-    "type": "ai-gen",
-    "prompt": "Another gaming streamer accidentally showing remote desktop access code on stream, dramatic zoom into the exposed code on screen, viewers in live chat going wild with excitement, shock reaction shot, screen capture moment, dramatic lighting, cinematic",
-    "duration": "10s"
-  },
-  {
-    "id": "S-09",
-    "act": "结尾",
-    "narration": "十多个设备同时入侵九八电脑,有人关机有人阻止,直播彻底混乱。这场不可能是剧本的闹剧画上了终局。",
-    "type": "ai-gen",
-    "prompt": "Epic wide shot of complete digital chaos, multiple device connections flooding a computer screen with pop-ups and cursors everywhere, split between people trying to shut down and others blocking, chaotic livestream finale, dramatic conclusion shot, cinematic composition, 4K quality",
-    "duration": "10s"
-  }
-]

+ 0 - 44
Whisper/TEST-0/storyboard.srt

@@ -1,44 +0,0 @@
-1
-00:00:00,000 --> 00:00:09,520
-沉泽的三角洲军机赛直播,谁都没想到他刚开机就被关了。
-'我电脑被别人操控了!'这场面真的又离谱又搞笑。
-
-2
-00:00:09,520 --> 00:00:21,640
-三角洲新一轮淘汰赛选手集结,本以为又是场正常比赛,
-没想到接下来变成了全网从没见过的远程攻防大战。
-
-3
-00:00:21,640 --> 00:00:32,240
-打第一把时沉泽接受了队友林树的屏幕远程共享,
-打完后他尝试重新连接林树的电脑,结果出了大问题。
-
-4
-00:00:32,240 --> 00:00:46,480
-他不小心暴露了自己的远程控制码,任何人输入就能接管电脑,
-而且还默认控制无需同意。很快有人发现了。
-
-5
-00:00:46,480 --> 00:01:02,560
-被四个人同时操控!前一秒还信任队友不会乱搞,
-后一秒电脑直接被关机了。六十多万人看着都乐了。
-
-6
-00:01:02,560 --> 00:01:14,920
-更离谱的是远程控制开机自启动,一开机就被人连上。
-刚开机又被关,队友都懵了电脑彻底失控了。
-
-7
-00:01:14,920 --> 00:01:32,640
-在队友提醒下终于拔了网线,重新开机关掉远程控制,
-别人终于连不上了,可算回到了正式比赛节奏。
-
-8
-00:01:32,640 --> 00:01:49,360
-两把之后更离谱的事来了,九八老师切屏时也把远程控制码暴露了。
-这下轮到九八的电脑被观众操控了。
-
-9
-00:01:49,360 --> 00:02:11,400
-十多个设备同时入侵九八电脑,有人关机有人阻止,
-直播彻底混乱。这场不可能是剧本的闹剧画上了终局。

BIN
Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.MP4


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.json


+ 0 - 528
Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.srt

@@ -1,528 +0,0 @@
-1
-00:00:00,000 --> 00:00:01,280
-到沉泽三角洲比赛
-
-2
-00:00:01,280 --> 00:00:02,320
-都随有夺史
-
-3
-00:00:02,320 --> 00:00:03,600
-立愿成空之间
-
-4
-00:00:03,600 --> 00:00:05,240
-我刚开开又顾电脑关机
-
-5
-00:00:05,240 --> 00:00:05,920
-一楼一楼
-
-6
-00:00:05,920 --> 00:00:07,560
-我电脑被别人操空了
-
-7
-00:00:07,560 --> 00:00:08,440
-这是个完整的
-
-8
-00:00:08,440 --> 00:00:09,520
-真的又离谱又高
-
-9
-00:00:09,520 --> 00:00:09,920
-在晚上
-
-10
-00:00:09,920 --> 00:00:11,120
-沉泽者的三角洲军机赛
-
-11
-00:00:11,120 --> 00:00:11,960
-新一轮加比倒
-
-12
-00:00:11,960 --> 00:00:12,880
-零树酒吧
-
-13
-00:00:12,880 --> 00:00:14,040
-像做的集结参与下
-
-14
-00:00:14,040 --> 00:00:14,920
-本来兄弟们觉得
-
-15
-00:00:14,920 --> 00:00:16,240
-这又是一玩的猛攻胜业
-
-16
-00:00:16,240 --> 00:00:17,960
-但真心谁都没能预想
-
-17
-00:00:17,960 --> 00:00:18,840
-接下来的场面
-
-18
-00:00:18,840 --> 00:00:20,480
-却变成了全网没词见过
-
-19
-00:00:20,480 --> 00:00:21,640
-愿成功防
-
-20
-00:00:21,640 --> 00:00:22,600
-因为打第一把的时候
-
-21
-00:00:22,600 --> 00:00:23,280
-沉泽接受的是
-
-22
-00:00:23,280 --> 00:00:24,560
-临树的屏幕远程共鲜
-
-23
-00:00:24,560 --> 00:00:25,640
-有点狠狠吗
-
-24
-00:00:25,640 --> 00:00:27,080
-咱俩一会打完把那个
-
-25
-00:00:27,080 --> 00:00:27,720
-部分转件
-
-26
-00:00:27,720 --> 00:00:28,720
-真正收回头低点吧
-
-27
-00:00:28,720 --> 00:00:29,280
-也真隐私
-
-28
-00:00:29,280 --> 00:00:30,000
-第一把结束
-
-29
-00:00:30,000 --> 00:00:32,240
-沉泽尝试重新连接临树电脑
-
-30
-00:00:32,240 --> 00:00:32,720
-但是
-
-31
-00:00:32,720 --> 00:00:34,480
-他不小心把自己电脑的远空吧
-
-32
-00:00:34,480 --> 00:00:35,360
-露止不见了
-
-33
-00:00:35,360 --> 00:00:36,120
-这东西一露
-
-34
-00:00:36,120 --> 00:00:37,280
-根本不用啥黑客
-
-35
-00:00:37,280 --> 00:00:38,840
-所以我们只要软厌一树
-
-36
-00:00:38,840 --> 00:00:39,960
-就能向他电脑接管
-
-37
-00:00:39,960 --> 00:00:41,080
-尤其他还默认的
-
-38
-00:00:41,080 --> 00:00:42,360
-控制无需同意
-
-39
-00:00:42,360 --> 00:00:43,000
-很快
-
-40
-00:00:43,000 --> 00:00:43,760
-就发现不对
-
-41
-00:00:43,760 --> 00:00:44,000
-不是
-
-42
-00:00:44,000 --> 00:00:45,080
-我现在操控你电脑
-
-43
-00:00:45,080 --> 00:00:46,240
-搭他敲出标呢
-
-44
-00:00:46,240 --> 00:00:46,480
-好
-
-45
-00:00:46,480 --> 00:00:46,960
-当时这电脑
-
-46
-00:00:46,960 --> 00:00:48,360
-我现在被四个人一起搜控
-
-47
-00:00:48,360 --> 00:00:49,200
-没认应该这个哥们
-
-48
-00:00:49,200 --> 00:00:49,880
-不是他会严
-
-49
-00:00:49,880 --> 00:00:50,600
-他就联系了
-
-50
-00:00:50,600 --> 00:00:51,120
-前一秒
-
-51
-00:00:51,120 --> 00:00:51,840
-沉泽还脸着嘴
-
-52
-00:00:51,840 --> 00:00:53,520
-相信这几个水有不会乱搞
-
-53
-00:00:53,520 --> 00:00:54,120
-后一秒
-
-54
-00:00:54,120 --> 00:00:54,320
-不是
-
-55
-00:00:54,320 --> 00:00:55,120
-我电脑被吃不掉
-
-56
-00:00:55,120 --> 00:00:55,360
-哥们
-
-57
-00:00:55,360 --> 00:00:55,880
-给滚了
-
-58
-00:00:55,880 --> 00:00:56,440
-我真服了
-
-59
-00:00:56,440 --> 00:00:57,560
-六十多万人
-
-60
-00:00:57,560 --> 00:00:58,760
-压过滚了
-
-61
-00:00:58,760 --> 00:01:00,400
-但是他点得挺乖
-
-62
-00:01:00,400 --> 00:01:00,800
-我
-
-63
-00:01:00,800 --> 00:01:01,440
-我没能抢过
-
-64
-00:01:01,440 --> 00:01:01,840
-这属标
-
-65
-00:01:01,840 --> 00:01:02,560
-他压过滚了
-
-66
-00:01:02,560 --> 00:01:03,000
-老讲嘛
-
-67
-00:01:03,000 --> 00:01:03,760
-更离谱的
-
-68
-00:01:03,760 --> 00:01:04,800
-因为沉泽开的远空
-
-69
-00:01:04,800 --> 00:01:06,680
-还是开机自己动完了
-
-70
-00:01:06,680 --> 00:01:09,000
-只要一开就被人远程同意
-
-71
-00:01:09,000 --> 00:01:09,760
-我刚开机
-
-72
-00:01:09,760 --> 00:01:10,800
-你又给我关机
-
-73
-00:01:10,800 --> 00:01:11,600
-我错了
-
-74
-00:01:11,600 --> 00:01:12,600
-别过了
-
-75
-00:01:12,600 --> 00:01:13,600
-传媒这几个都盟圈了
-
-76
-00:01:13,600 --> 00:01:14,920
-电脑技能已经抽棚了
-
-77
-00:01:14,920 --> 00:01:16,120
-可算在大一步的提醒下
-
-78
-00:01:16,120 --> 00:01:17,480
-小兜了把往下
-
-79
-00:01:17,480 --> 00:01:18,160
-被远进
-
-80
-00:01:18,160 --> 00:01:19,560
-再开机数把往下把了
-
-81
-00:01:19,560 --> 00:01:20,360
-快把把把把
-
-82
-00:01:20,360 --> 00:01:21,080
-快把把
-
-83
-00:01:21,080 --> 00:01:21,640
-我当问题
-
-84
-00:01:21,640 --> 00:01:22,200
-你怎么回头
-
-85
-00:01:22,200 --> 00:01:22,840
-哎
-
-86
-00:01:22,840 --> 00:01:23,560
-你用往下拿吧
-
-87
-00:01:23,560 --> 00:01:24,440
-上去玩
-
-88
-00:01:24,440 --> 00:01:25,600
-你连的外盘
-
-89
-00:01:25,600 --> 00:01:26,120
-充一
-
-90
-00:01:26,120 --> 00:01:28,040
-一方人给电脑盖断的全断完了
-
-91
-00:01:28,040 --> 00:01:29,200
-终于把远空把给
-
-92
-00:01:29,200 --> 00:01:30,000
-别人联不上
-
-93
-00:01:30,000 --> 00:01:30,480
-那准心
-
-94
-00:01:30,480 --> 00:01:31,760
-在头上你都觉得这玩证捷
-
-95
-00:01:31,760 --> 00:01:32,640
-可算过去了
-
-96
-00:01:32,640 --> 00:01:34,000
-狙击在正式节奏
-
-97
-00:01:34,000 --> 00:01:35,520
-人员更离谱的来的
-
-98
-00:01:35,520 --> 00:01:36,040
-两把之后
-
-99
-00:01:36,040 --> 00:01:36,240
-不是
-
-100
-00:01:36,240 --> 00:01:37,200
-九八老师不睡觉
-
-101
-00:01:37,200 --> 00:01:38,480
-玩不睡点睡觉了吗
-
-102
-00:01:38,480 --> 00:01:39,040
-这点什么
-
-103
-00:01:39,040 --> 00:01:40,200
-大气
-
-104
-00:01:40,200 --> 00:01:40,400
-我大气发
-
-105
-00:01:40,400 --> 00:01:41,880
-因为这回头评明的卖的九八
-
-106
-00:01:41,880 --> 00:01:43,640
-九八的想切评看眼之间
-
-107
-00:01:43,640 --> 00:01:45,360
-也把远程把切出来
-
-108
-00:01:45,360 --> 00:01:46,200
-我们好像犯罪了
-
-109
-00:01:46,200 --> 00:01:46,600
-九八老师
-
-110
-00:01:46,600 --> 00:01:47,960
-你好像给你骂了我们这个玩意
-
-111
-00:01:47,960 --> 00:01:49,360
-轮到九八的电脑被操控
-
-112
-00:01:49,360 --> 00:01:49,880
-对吧
-
-113
-00:01:49,880 --> 00:01:50,640
-这个拿着
-
-114
-00:01:50,640 --> 00:01:51,320
-现在一号
-
-115
-00:01:51,320 --> 00:01:53,000
-以为你不是我来玩了真的
-
-116
-00:01:53,000 --> 00:01:53,880
-你怎么做了
-
-117
-00:01:53,880 --> 00:01:54,640
-兄弟
-
-118
-00:01:54,640 --> 00:01:55,640
-直接十多个设备
-
-119
-00:01:55,640 --> 00:01:57,040
-共同强袭了九八电脑
-
-120
-00:01:57,040 --> 00:01:58,080
-有人要关机
-
-121
-00:01:58,080 --> 00:01:59,280
-有人在阻止
-
-122
-00:01:59,280 --> 00:02:00,160
-进宿宿工房
-
-123
-00:02:00,160 --> 00:02:00,840
-这直播呢
-
-124
-00:02:00,840 --> 00:02:01,680
-我一真有败弹
-
-125
-00:02:01,680 --> 00:02:02,400
-可太危险了
-
-126
-00:02:02,400 --> 00:02:03,640
-而终于燕开师傅的沉泽
-
-127
-00:02:03,640 --> 00:02:04,640
-将比赛终于
-
-128
-00:02:04,640 --> 00:02:06,240
-别终于八电脑了
-
-129
-00:02:06,240 --> 00:02:07,600
-九全十五千里
-
-130
-00:02:07,600 --> 00:02:08,440
-根本不可能是
-
-131
-00:02:08,440 --> 00:02:10,200
-剧本的工房闹剧化
-
-132
-00:02:10,200 --> 00:02:11,400
-上终局
-

+ 0 - 133
Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.tsv

@@ -1,133 +0,0 @@
-start	end	text
-0	1280	到沉泽三角洲比赛
-1280	2320	都随有夺史
-2320	3600	立愿成空之间
-3600	5240	我刚开开又顾电脑关机
-5240	5920	一楼一楼
-5920	7560	我电脑被别人操空了
-7560	8440	这是个完整的
-8440	9520	真的又离谱又高
-9520	9920	在晚上
-9920	11120	沉泽者的三角洲军机赛
-11120	11960	新一轮加比倒
-11960	12880	零树酒吧
-12880	14040	像做的集结参与下
-14040	14920	本来兄弟们觉得
-14920	16240	这又是一玩的猛攻胜业
-16240	17960	但真心谁都没能预想
-17960	18840	接下来的场面
-18840	20480	却变成了全网没词见过
-20480	21640	愿成功防
-21640	22600	因为打第一把的时候
-22600	23280	沉泽接受的是
-23280	24560	临树的屏幕远程共鲜
-24560	25640	有点狠狠吗
-25640	27080	咱俩一会打完把那个
-27080	27720	部分转件
-27720	28720	真正收回头低点吧
-28720	29280	也真隐私
-29280	30000	第一把结束
-30000	32240	沉泽尝试重新连接临树电脑
-32240	32720	但是
-32720	34480	他不小心把自己电脑的远空吧
-34480	35360	露止不见了
-35360	36120	这东西一露
-36120	37280	根本不用啥黑客
-37280	38840	所以我们只要软厌一树
-38840	39960	就能向他电脑接管
-39960	41080	尤其他还默认的
-41080	42360	控制无需同意
-42360	43000	很快
-43000	43760	就发现不对
-43760	44000	不是
-44000	45080	我现在操控你电脑
-45080	46240	搭他敲出标呢
-46240	46480	好
-46480	46960	当时这电脑
-46960	48360	我现在被四个人一起搜控
-48360	49200	没认应该这个哥们
-49200	49880	不是他会严
-49880	50600	他就联系了
-50600	51120	前一秒
-51120	51840	沉泽还脸着嘴
-51840	53520	相信这几个水有不会乱搞
-53520	54120	后一秒
-54120	54320	不是
-54320	55120	我电脑被吃不掉
-55120	55360	哥们
-55360	55880	给滚了
-55880	56440	我真服了
-56440	57560	六十多万人
-57560	58760	压过滚了
-58760	60400	但是他点得挺乖
-60400	60800	我
-60800	61440	我没能抢过
-61440	61840	这属标
-61840	62560	他压过滚了
-62560	63000	老讲嘛
-63000	63760	更离谱的
-63760	64800	因为沉泽开的远空
-64800	66680	还是开机自己动完了
-66680	69000	只要一开就被人远程同意
-69000	69760	我刚开机
-69760	70800	你又给我关机
-70800	71600	我错了
-71600	72600	别过了
-72600	73600	传媒这几个都盟圈了
-73600	74920	电脑技能已经抽棚了
-74920	76120	可算在大一步的提醒下
-76120	77480	小兜了把往下
-77480	78160	被远进
-78160	79560	再开机数把往下把了
-79560	80360	快把把把把
-80360	81080	快把把
-81080	81640	我当问题
-81640	82200	你怎么回头
-82200	82840	哎
-82840	83560	你用往下拿吧
-83560	84440	上去玩
-84440	85600	你连的外盘
-85600	86120	充一
-86120	88040	一方人给电脑盖断的全断完了
-88040	89200	终于把远空把给
-89200	90000	别人联不上
-90000	90480	那准心
-90480	91760	在头上你都觉得这玩证捷
-91760	92640	可算过去了
-92640	94000	狙击在正式节奏
-94000	95520	人员更离谱的来的
-95520	96040	两把之后
-96040	96240	不是
-96240	97200	九八老师不睡觉
-97200	98480	玩不睡点睡觉了吗
-98480	99040	这点什么
-99040	100200	大气
-100200	100400	我大气发
-100400	101880	因为这回头评明的卖的九八
-101880	103640	九八的想切评看眼之间
-103640	105360	也把远程把切出来
-105360	106200	我们好像犯罪了
-106200	106600	九八老师
-106600	107960	你好像给你骂了我们这个玩意
-107960	109360	轮到九八的电脑被操控
-109360	109880	对吧
-109880	110640	这个拿着
-110640	111320	现在一号
-111320	113000	以为你不是我来玩了真的
-113000	113880	你怎么做了
-113880	114640	兄弟
-114640	115640	直接十多个设备
-115640	117040	共同强袭了九八电脑
-117040	118080	有人要关机
-118080	119280	有人在阻止
-119280	120160	进宿宿工房
-120160	120840	这直播呢
-120840	121680	我一真有败弹
-121680	122400	可太危险了
-122400	123640	而终于燕开师傅的沉泽
-123640	124640	将比赛终于
-124640	126240	别终于八电脑了
-126240	127600	九全十五千里
-127600	128440	根本不可能是
-128440	130200	剧本的工房闹剧化
-130200	131400	上终局

+ 0 - 132
Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.txt

@@ -1,132 +0,0 @@
-到沉泽三角洲比赛
-都随有夺史
-立愿成空之间
-我刚开开又顾电脑关机
-一楼一楼
-我电脑被别人操空了
-这是个完整的
-真的又离谱又高
-在晚上
-沉泽者的三角洲军机赛
-新一轮加比倒
-零树酒吧
-像做的集结参与下
-本来兄弟们觉得
-这又是一玩的猛攻胜业
-但真心谁都没能预想
-接下来的场面
-却变成了全网没词见过
-愿成功防
-因为打第一把的时候
-沉泽接受的是
-临树的屏幕远程共鲜
-有点狠狠吗
-咱俩一会打完把那个
-部分转件
-真正收回头低点吧
-也真隐私
-第一把结束
-沉泽尝试重新连接临树电脑
-但是
-他不小心把自己电脑的远空吧
-露止不见了
-这东西一露
-根本不用啥黑客
-所以我们只要软厌一树
-就能向他电脑接管
-尤其他还默认的
-控制无需同意
-很快
-就发现不对
-不是
-我现在操控你电脑
-搭他敲出标呢
-好
-当时这电脑
-我现在被四个人一起搜控
-没认应该这个哥们
-不是他会严
-他就联系了
-前一秒
-沉泽还脸着嘴
-相信这几个水有不会乱搞
-后一秒
-不是
-我电脑被吃不掉
-哥们
-给滚了
-我真服了
-六十多万人
-压过滚了
-但是他点得挺乖
-我
-我没能抢过
-这属标
-他压过滚了
-老讲嘛
-更离谱的
-因为沉泽开的远空
-还是开机自己动完了
-只要一开就被人远程同意
-我刚开机
-你又给我关机
-我错了
-别过了
-传媒这几个都盟圈了
-电脑技能已经抽棚了
-可算在大一步的提醒下
-小兜了把往下
-被远进
-再开机数把往下把了
-快把把把把
-快把把
-我当问题
-你怎么回头
-哎
-你用往下拿吧
-上去玩
-你连的外盘
-充一
-一方人给电脑盖断的全断完了
-终于把远空把给
-别人联不上
-那准心
-在头上你都觉得这玩证捷
-可算过去了
-狙击在正式节奏
-人员更离谱的来的
-两把之后
-不是
-九八老师不睡觉
-玩不睡点睡觉了吗
-这点什么
-大气
-我大气发
-因为这回头评明的卖的九八
-九八的想切评看眼之间
-也把远程把切出来
-我们好像犯罪了
-九八老师
-你好像给你骂了我们这个玩意
-轮到九八的电脑被操控
-对吧
-这个拿着
-现在一号
-以为你不是我来玩了真的
-你怎么做了
-兄弟
-直接十多个设备
-共同强袭了九八电脑
-有人要关机
-有人在阻止
-进宿宿工房
-这直播呢
-我一真有败弹
-可太危险了
-而终于燕开师傅的沉泽
-将比赛终于
-别终于八电脑了
-九全十五千里
-根本不可能是
-剧本的工房闹剧化
-上终局

+ 0 - 398
Whisper/TEST-0/v0d00fg10000d7906p7og65l2uk2q2v0.vtt

@@ -1,398 +0,0 @@
-WEBVTT
-
-00:00.000 --> 00:01.280
-到沉泽三角洲比赛
-
-00:01.280 --> 00:02.320
-都随有夺史
-
-00:02.320 --> 00:03.600
-立愿成空之间
-
-00:03.600 --> 00:05.240
-我刚开开又顾电脑关机
-
-00:05.240 --> 00:05.920
-一楼一楼
-
-00:05.920 --> 00:07.560
-我电脑被别人操空了
-
-00:07.560 --> 00:08.440
-这是个完整的
-
-00:08.440 --> 00:09.520
-真的又离谱又高
-
-00:09.520 --> 00:09.920
-在晚上
-
-00:09.920 --> 00:11.120
-沉泽者的三角洲军机赛
-
-00:11.120 --> 00:11.960
-新一轮加比倒
-
-00:11.960 --> 00:12.880
-零树酒吧
-
-00:12.880 --> 00:14.040
-像做的集结参与下
-
-00:14.040 --> 00:14.920
-本来兄弟们觉得
-
-00:14.920 --> 00:16.240
-这又是一玩的猛攻胜业
-
-00:16.240 --> 00:17.960
-但真心谁都没能预想
-
-00:17.960 --> 00:18.840
-接下来的场面
-
-00:18.840 --> 00:20.480
-却变成了全网没词见过
-
-00:20.480 --> 00:21.640
-愿成功防
-
-00:21.640 --> 00:22.600
-因为打第一把的时候
-
-00:22.600 --> 00:23.280
-沉泽接受的是
-
-00:23.280 --> 00:24.560
-临树的屏幕远程共鲜
-
-00:24.560 --> 00:25.640
-有点狠狠吗
-
-00:25.640 --> 00:27.080
-咱俩一会打完把那个
-
-00:27.080 --> 00:27.720
-部分转件
-
-00:27.720 --> 00:28.720
-真正收回头低点吧
-
-00:28.720 --> 00:29.280
-也真隐私
-
-00:29.280 --> 00:30.000
-第一把结束
-
-00:30.000 --> 00:32.240
-沉泽尝试重新连接临树电脑
-
-00:32.240 --> 00:32.720
-但是
-
-00:32.720 --> 00:34.480
-他不小心把自己电脑的远空吧
-
-00:34.480 --> 00:35.360
-露止不见了
-
-00:35.360 --> 00:36.120
-这东西一露
-
-00:36.120 --> 00:37.280
-根本不用啥黑客
-
-00:37.280 --> 00:38.840
-所以我们只要软厌一树
-
-00:38.840 --> 00:39.960
-就能向他电脑接管
-
-00:39.960 --> 00:41.080
-尤其他还默认的
-
-00:41.080 --> 00:42.360
-控制无需同意
-
-00:42.360 --> 00:43.000
-很快
-
-00:43.000 --> 00:43.760
-就发现不对
-
-00:43.760 --> 00:44.000
-不是
-
-00:44.000 --> 00:45.080
-我现在操控你电脑
-
-00:45.080 --> 00:46.240
-搭他敲出标呢
-
-00:46.240 --> 00:46.480
-好
-
-00:46.480 --> 00:46.960
-当时这电脑
-
-00:46.960 --> 00:48.360
-我现在被四个人一起搜控
-
-00:48.360 --> 00:49.200
-没认应该这个哥们
-
-00:49.200 --> 00:49.880
-不是他会严
-
-00:49.880 --> 00:50.600
-他就联系了
-
-00:50.600 --> 00:51.120
-前一秒
-
-00:51.120 --> 00:51.840
-沉泽还脸着嘴
-
-00:51.840 --> 00:53.520
-相信这几个水有不会乱搞
-
-00:53.520 --> 00:54.120
-后一秒
-
-00:54.120 --> 00:54.320
-不是
-
-00:54.320 --> 00:55.120
-我电脑被吃不掉
-
-00:55.120 --> 00:55.360
-哥们
-
-00:55.360 --> 00:55.880
-给滚了
-
-00:55.880 --> 00:56.440
-我真服了
-
-00:56.440 --> 00:57.560
-六十多万人
-
-00:57.560 --> 00:58.760
-压过滚了
-
-00:58.760 --> 01:00.400
-但是他点得挺乖
-
-01:00.400 --> 01:00.800
-我
-
-01:00.800 --> 01:01.440
-我没能抢过
-
-01:01.440 --> 01:01.840
-这属标
-
-01:01.840 --> 01:02.560
-他压过滚了
-
-01:02.560 --> 01:03.000
-老讲嘛
-
-01:03.000 --> 01:03.760
-更离谱的
-
-01:03.760 --> 01:04.800
-因为沉泽开的远空
-
-01:04.800 --> 01:06.680
-还是开机自己动完了
-
-01:06.680 --> 01:09.000
-只要一开就被人远程同意
-
-01:09.000 --> 01:09.760
-我刚开机
-
-01:09.760 --> 01:10.800
-你又给我关机
-
-01:10.800 --> 01:11.600
-我错了
-
-01:11.600 --> 01:12.600
-别过了
-
-01:12.600 --> 01:13.600
-传媒这几个都盟圈了
-
-01:13.600 --> 01:14.920
-电脑技能已经抽棚了
-
-01:14.920 --> 01:16.120
-可算在大一步的提醒下
-
-01:16.120 --> 01:17.480
-小兜了把往下
-
-01:17.480 --> 01:18.160
-被远进
-
-01:18.160 --> 01:19.560
-再开机数把往下把了
-
-01:19.560 --> 01:20.360
-快把把把把
-
-01:20.360 --> 01:21.080
-快把把
-
-01:21.080 --> 01:21.640
-我当问题
-
-01:21.640 --> 01:22.200
-你怎么回头
-
-01:22.200 --> 01:22.840
-哎
-
-01:22.840 --> 01:23.560
-你用往下拿吧
-
-01:23.560 --> 01:24.440
-上去玩
-
-01:24.440 --> 01:25.600
-你连的外盘
-
-01:25.600 --> 01:26.120
-充一
-
-01:26.120 --> 01:28.040
-一方人给电脑盖断的全断完了
-
-01:28.040 --> 01:29.200
-终于把远空把给
-
-01:29.200 --> 01:30.000
-别人联不上
-
-01:30.000 --> 01:30.480
-那准心
-
-01:30.480 --> 01:31.760
-在头上你都觉得这玩证捷
-
-01:31.760 --> 01:32.640
-可算过去了
-
-01:32.640 --> 01:34.000
-狙击在正式节奏
-
-01:34.000 --> 01:35.520
-人员更离谱的来的
-
-01:35.520 --> 01:36.040
-两把之后
-
-01:36.040 --> 01:36.240
-不是
-
-01:36.240 --> 01:37.200
-九八老师不睡觉
-
-01:37.200 --> 01:38.480
-玩不睡点睡觉了吗
-
-01:38.480 --> 01:39.040
-这点什么
-
-01:39.040 --> 01:40.200
-大气
-
-01:40.200 --> 01:40.400
-我大气发
-
-01:40.400 --> 01:41.880
-因为这回头评明的卖的九八
-
-01:41.880 --> 01:43.640
-九八的想切评看眼之间
-
-01:43.640 --> 01:45.360
-也把远程把切出来
-
-01:45.360 --> 01:46.200
-我们好像犯罪了
-
-01:46.200 --> 01:46.600
-九八老师
-
-01:46.600 --> 01:47.960
-你好像给你骂了我们这个玩意
-
-01:47.960 --> 01:49.360
-轮到九八的电脑被操控
-
-01:49.360 --> 01:49.880
-对吧
-
-01:49.880 --> 01:50.640
-这个拿着
-
-01:50.640 --> 01:51.320
-现在一号
-
-01:51.320 --> 01:53.000
-以为你不是我来玩了真的
-
-01:53.000 --> 01:53.880
-你怎么做了
-
-01:53.880 --> 01:54.640
-兄弟
-
-01:54.640 --> 01:55.640
-直接十多个设备
-
-01:55.640 --> 01:57.040
-共同强袭了九八电脑
-
-01:57.040 --> 01:58.080
-有人要关机
-
-01:58.080 --> 01:59.280
-有人在阻止
-
-01:59.280 --> 02:00.160
-进宿宿工房
-
-02:00.160 --> 02:00.840
-这直播呢
-
-02:00.840 --> 02:01.680
-我一真有败弹
-
-02:01.680 --> 02:02.400
-可太危险了
-
-02:02.400 --> 02:03.640
-而终于燕开师傅的沉泽
-
-02:03.640 --> 02:04.640
-将比赛终于
-
-02:04.640 --> 02:06.240
-别终于八电脑了
-
-02:06.240 --> 02:07.600
-九全十五千里
-
-02:07.600 --> 02:08.440
-根本不可能是
-
-02:08.440 --> 02:10.200
-剧本的工房闹剧化
-
-02:10.200 --> 02:11.400
-上终局
-

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.json


BIN
Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.mp3


+ 0 - 340
Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.srt

@@ -1,340 +0,0 @@
-1
-00:00:00,000 --> 00:00:01,800
-给AI去写skill呢
-
-2
-00:00:01,800 --> 00:00:04,360
-本质上就在去学怎么当假方
-
-3
-00:00:04,360 --> 00:00:06,360
-好的假方会把续修给提清楚
-
-4
-00:00:06,360 --> 00:00:07,560
-比自己干要重要的多
-
-5
-00:00:07,560 --> 00:00:08,840
-而不好的假方只会说
-
-6
-00:00:08,840 --> 00:00:10,160
-哎 我想要适合远方
-
-7
-00:00:10,160 --> 00:00:12,120
-我问大家这个老哥最近的小红书很火
-
-8
-00:00:12,120 --> 00:00:14,280
-他联合anthropic出了一门课
-
-9
-00:00:14,280 --> 00:00:17,200
-核心就教大家一个词叫做skill
-
-10
-00:00:17,200 --> 00:00:18,840
-全网的AI博士都在讲这个词
-
-11
-00:00:18,840 --> 00:00:20,320
-但是用人话讲这个东西
-
-12
-00:00:20,320 --> 00:00:22,120
-它到底是什么
-
-13
-00:00:22,120 --> 00:00:22,840
-如果你是假方
-
-14
-00:00:22,840 --> 00:00:24,840
-那你一定能够写出很好的skill
-
-15
-00:00:24,840 --> 00:00:25,640
-其实特别简单
-
-16
-00:00:25,640 --> 00:00:27,640
-skill就是给AI写的SOP
-
-17
-00:00:27,640 --> 00:00:29,640
-你每次跟他聊天是不是都得重新教一遍
-
-18
-00:00:29,640 --> 00:00:30,840
-你是个什么什么的专家
-
-19
-00:00:30,840 --> 00:00:31,440
-你要注意什么
-
-20
-00:00:31,440 --> 00:00:32,480
-输出的格式要怎么样
-
-21
-00:00:32,480 --> 00:00:33,560
-每一次从他来备
-
-22
-00:00:33,560 --> 00:00:34,440
-有了skill的时候
-
-23
-00:00:34,440 --> 00:00:35,760
-AI读一次就永远记住
-
-24
-00:00:35,760 --> 00:00:37,160
-你只要说用选题skill
-
-25
-00:00:37,160 --> 00:00:39,560
-它就直接能够按照你定好的规矩
-
-26
-00:00:39,560 --> 00:00:40,480
-来翻译成人话
-
-27
-00:00:40,480 --> 00:00:42,760
-就是说你给新议员工写了一份操作手册
-
-28
-00:00:42,760 --> 00:00:44,560
-它就不用每天早上跑过来问你
-
-29
-00:00:44,560 --> 00:00:45,920
-哎 老板今天该怎么干
-
-30
-00:00:45,920 --> 00:00:46,400
-对不对
-
-31
-00:00:46,400 --> 00:00:47,960
-那么为什么之后你现在突然火了呢
-
-32
-00:00:47,960 --> 00:00:51,040
-因为单次对话的AI用法已经到顶了
-
-33
-00:00:51,040 --> 00:00:52,480
-你每次要重新教一遍
-
-34
-00:00:52,480 --> 00:00:54,920
-效率永远是要不然去天花板就在那个地方
-
-35
-00:00:54,920 --> 00:00:56,800
-那skill就是从一次性对话
-
-36
-00:00:56,800 --> 00:00:58,640
-到可负用能力的这么一个质变
-
-37
-00:00:58,640 --> 00:00:59,360
-这就是为什么
-
-38
-00:00:59,360 --> 00:01:00,440
-我们达阿扎哥们
-
-39
-00:01:00,440 --> 00:01:02,720
-专门出了一门课来讲这个事情
-
-40
-00:01:02,720 --> 00:01:03,600
-这不是一个小功能
-
-41
-00:01:03,600 --> 00:01:05,520
-这是一个AI使用方式的一次升级
-
-42
-00:01:05,520 --> 00:01:06,800
-那就让我自己烧了这个
-
-43
-00:01:06,800 --> 00:01:08,480
-极异这个Cloud Opus Token
-
-44
-00:01:08,480 --> 00:01:10,200
-做出来的这个编导系统来举例
-
-45
-00:01:10,200 --> 00:01:12,560
-它里面一共跑了四个非常核心的skill
-
-46
-00:01:12,560 --> 00:01:13,600
-一个是管选题的
-
-47
-00:01:13,600 --> 00:01:14,880
-它会帮我去扫描市场
-
-48
-00:01:14,880 --> 00:01:16,400
-去找到对标在做什么
-
-49
-00:01:16,400 --> 00:01:18,680
-还有呢是来负责管写稿的能力
-
-50
-00:01:18,680 --> 00:01:20,360
-它会用我自己的语感规则
-
-51
-00:01:20,360 --> 00:01:22,320
-来帮我写口播或者是公众号
-
-52
-00:01:22,320 --> 00:01:23,440
-或者是图文笔记
-
-53
-00:01:23,440 --> 00:01:26,000
-还有一个是管省月写完了之后
-
-54
-00:01:26,000 --> 00:01:27,800
-换视角帮我去挑毛病
-
-55
-00:01:27,800 --> 00:01:28,600
-那么还有个skill呢
-
-56
-00:01:28,600 --> 00:01:30,200
-是用来管知识成电的
-
-57
-00:01:30,200 --> 00:01:32,640
-帮我把和这个Cloud Code的聊天中
-
-58
-00:01:32,640 --> 00:01:34,600
-所有价值的东西会自动存下来
-
-59
-00:01:34,600 --> 00:01:38,080
-并且会把我每周固定跑的这个周报里所
-
-60
-00:01:38,080 --> 00:01:40,240
-呃提炼出来的一些关键的
-
-61
-00:01:40,240 --> 00:01:42,200
-对我内容身上有帮助的东西给沉淀下来
-
-62
-00:01:42,200 --> 00:01:43,720
-并且存到我整个系统上
-
-63
-00:01:43,720 --> 00:01:45,280
-说对的地方
-
-64
-00:01:45,280 --> 00:01:46,880
-那以前呢我每次做内容
-
-65
-00:01:46,880 --> 00:01:48,800
-我开头的20分钟都需要交AI
-
-66
-00:01:48,800 --> 00:01:49,280
-我是谁
-
-67
-00:01:49,280 --> 00:01:50,000
-我做什么方向
-
-68
-00:01:50,000 --> 00:01:50,800
-我的标准是什么
-
-69
-00:01:50,800 --> 00:01:52,320
-现在呢它其实很多时候
-
-70
-00:01:52,320 --> 00:01:53,600
-比我自己还要清楚
-
-71
-00:01:53,600 --> 00:01:54,800
-我到底该怎么做内容
-
-72
-00:01:54,800 --> 00:01:55,640
-呃所以说
-
-73
-00:01:55,640 --> 00:01:56,520
-呃大家可以看啊
-
-74
-00:01:56,520 --> 00:01:58,280
-给AI去写skill呢
-
-75
-00:01:58,280 --> 00:02:00,840
-本质上就是在去学怎么当假方
-
-76
-00:02:00,840 --> 00:02:02,840
-好的假方会把续舟给提清楚
-
-77
-00:02:02,840 --> 00:02:04,040
-比自己干要重要的多
-
-78
-00:02:04,040 --> 00:02:05,320
-而不好的假方只会说
-
-79
-00:02:05,320 --> 00:02:06,720
-哎我想要适合远方
-
-80
-00:02:06,720 --> 00:02:07,040
-对吧
-
-81
-00:02:07,040 --> 00:02:07,880
-关注我是卡尔
-
-82
-00:02:07,880 --> 00:02:09,320
-我是一个大家一起
-
-83
-00:02:09,320 --> 00:02:10,400
-学习AI节目的普通
-
-84
-00:02:10,400 --> 00:02:11,400
-下期我会拆解
-
-85
-00:02:11,400 --> 00:02:13,600
-怎么样去撇你自己的一个skill
-

+ 0 - 86
Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.tsv

@@ -1,86 +0,0 @@
-start	end	text
-0	1800	给AI去写skill呢
-1800	4360	本质上就在去学怎么当假方
-4360	6360	好的假方会把续修给提清楚
-6360	7560	比自己干要重要的多
-7560	8840	而不好的假方只会说
-8840	10160	哎 我想要适合远方
-10160	12120	我问大家这个老哥最近的小红书很火
-12120	14280	他联合anthropic出了一门课
-14280	17200	核心就教大家一个词叫做skill
-17200	18840	全网的AI博士都在讲这个词
-18840	20320	但是用人话讲这个东西
-20320	22120	它到底是什么
-22120	22840	如果你是假方
-22840	24840	那你一定能够写出很好的skill
-24840	25640	其实特别简单
-25640	27640	skill就是给AI写的SOP
-27640	29640	你每次跟他聊天是不是都得重新教一遍
-29640	30840	你是个什么什么的专家
-30840	31440	你要注意什么
-31440	32480	输出的格式要怎么样
-32480	33560	每一次从他来备
-33560	34440	有了skill的时候
-34440	35760	AI读一次就永远记住
-35760	37160	你只要说用选题skill
-37160	39560	它就直接能够按照你定好的规矩
-39560	40480	来翻译成人话
-40480	42760	就是说你给新议员工写了一份操作手册
-42760	44560	它就不用每天早上跑过来问你
-44560	45920	哎 老板今天该怎么干
-45920	46400	对不对
-46400	47960	那么为什么之后你现在突然火了呢
-47960	51040	因为单次对话的AI用法已经到顶了
-51040	52480	你每次要重新教一遍
-52480	54920	效率永远是要不然去天花板就在那个地方
-54920	56800	那skill就是从一次性对话
-56800	58640	到可负用能力的这么一个质变
-58640	59360	这就是为什么
-59360	60440	我们达阿扎哥们
-60440	62720	专门出了一门课来讲这个事情
-62720	63600	这不是一个小功能
-63600	65520	这是一个AI使用方式的一次升级
-65520	66800	那就让我自己烧了这个
-66800	68480	极异这个Cloud Opus Token
-68480	70200	做出来的这个编导系统来举例
-70200	72560	它里面一共跑了四个非常核心的skill
-72560	73600	一个是管选题的
-73600	74880	它会帮我去扫描市场
-74880	76400	去找到对标在做什么
-76400	78680	还有呢是来负责管写稿的能力
-78680	80360	它会用我自己的语感规则
-80360	82320	来帮我写口播或者是公众号
-82320	83440	或者是图文笔记
-83440	86000	还有一个是管省月写完了之后
-86000	87800	换视角帮我去挑毛病
-87800	88600	那么还有个skill呢
-88600	90200	是用来管知识成电的
-90200	92640	帮我把和这个Cloud Code的聊天中
-92640	94600	所有价值的东西会自动存下来
-94600	98080	并且会把我每周固定跑的这个周报里所
-98080	100240	呃提炼出来的一些关键的
-100240	102200	对我内容身上有帮助的东西给沉淀下来
-102200	103720	并且存到我整个系统上
-103720	105280	说对的地方
-105280	106880	那以前呢我每次做内容
-106880	108800	我开头的20分钟都需要交AI
-108800	109280	我是谁
-109280	110000	我做什么方向
-110000	110800	我的标准是什么
-110800	112320	现在呢它其实很多时候
-112320	113600	比我自己还要清楚
-113600	114800	我到底该怎么做内容
-114800	115640	呃所以说
-115640	116520	呃大家可以看啊
-116520	118280	给AI去写skill呢
-118280	120840	本质上就是在去学怎么当假方
-120840	122840	好的假方会把续舟给提清楚
-122840	124040	比自己干要重要的多
-124040	125320	而不好的假方只会说
-125320	126720	哎我想要适合远方
-126720	127040	对吧
-127040	127880	关注我是卡尔
-127880	129320	我是一个大家一起
-129320	130400	学习AI节目的普通
-130400	131400	下期我会拆解
-131400	133600	怎么样去撇你自己的一个skill

+ 0 - 85
Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.txt

@@ -1,85 +0,0 @@
-给AI去写skill呢
-本质上就在去学怎么当假方
-好的假方会把续修给提清楚
-比自己干要重要的多
-而不好的假方只会说
-哎 我想要适合远方
-我问大家这个老哥最近的小红书很火
-他联合anthropic出了一门课
-核心就教大家一个词叫做skill
-全网的AI博士都在讲这个词
-但是用人话讲这个东西
-它到底是什么
-如果你是假方
-那你一定能够写出很好的skill
-其实特别简单
-skill就是给AI写的SOP
-你每次跟他聊天是不是都得重新教一遍
-你是个什么什么的专家
-你要注意什么
-输出的格式要怎么样
-每一次从他来备
-有了skill的时候
-AI读一次就永远记住
-你只要说用选题skill
-它就直接能够按照你定好的规矩
-来翻译成人话
-就是说你给新议员工写了一份操作手册
-它就不用每天早上跑过来问你
-哎 老板今天该怎么干
-对不对
-那么为什么之后你现在突然火了呢
-因为单次对话的AI用法已经到顶了
-你每次要重新教一遍
-效率永远是要不然去天花板就在那个地方
-那skill就是从一次性对话
-到可负用能力的这么一个质变
-这就是为什么
-我们达阿扎哥们
-专门出了一门课来讲这个事情
-这不是一个小功能
-这是一个AI使用方式的一次升级
-那就让我自己烧了这个
-极异这个Cloud Opus Token
-做出来的这个编导系统来举例
-它里面一共跑了四个非常核心的skill
-一个是管选题的
-它会帮我去扫描市场
-去找到对标在做什么
-还有呢是来负责管写稿的能力
-它会用我自己的语感规则
-来帮我写口播或者是公众号
-或者是图文笔记
-还有一个是管省月写完了之后
-换视角帮我去挑毛病
-那么还有个skill呢
-是用来管知识成电的
-帮我把和这个Cloud Code的聊天中
-所有价值的东西会自动存下来
-并且会把我每周固定跑的这个周报里所
-呃提炼出来的一些关键的
-对我内容身上有帮助的东西给沉淀下来
-并且存到我整个系统上
-说对的地方
-那以前呢我每次做内容
-我开头的20分钟都需要交AI
-我是谁
-我做什么方向
-我的标准是什么
-现在呢它其实很多时候
-比我自己还要清楚
-我到底该怎么做内容
-呃所以说
-呃大家可以看啊
-给AI去写skill呢
-本质上就是在去学怎么当假方
-好的假方会把续舟给提清楚
-比自己干要重要的多
-而不好的假方只会说
-哎我想要适合远方
-对吧
-关注我是卡尔
-我是一个大家一起
-学习AI节目的普通
-下期我会拆解
-怎么样去撇你自己的一个skill

+ 0 - 257
Whisper/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大/卡尔AAAAAI_skills 的本质是个好甲方|拒绝诗和远方 大部分人的 AI 用法:自己想选题、自己做调研、自己写大.vtt

@@ -1,257 +0,0 @@
-WEBVTT
-
-00:00.000 --> 00:01.800
-给AI去写skill呢
-
-00:01.800 --> 00:04.360
-本质上就在去学怎么当假方
-
-00:04.360 --> 00:06.360
-好的假方会把续修给提清楚
-
-00:06.360 --> 00:07.560
-比自己干要重要的多
-
-00:07.560 --> 00:08.840
-而不好的假方只会说
-
-00:08.840 --> 00:10.160
-哎 我想要适合远方
-
-00:10.160 --> 00:12.120
-我问大家这个老哥最近的小红书很火
-
-00:12.120 --> 00:14.280
-他联合anthropic出了一门课
-
-00:14.280 --> 00:17.200
-核心就教大家一个词叫做skill
-
-00:17.200 --> 00:18.840
-全网的AI博士都在讲这个词
-
-00:18.840 --> 00:20.320
-但是用人话讲这个东西
-
-00:20.320 --> 00:22.120
-它到底是什么
-
-00:22.120 --> 00:22.840
-如果你是假方
-
-00:22.840 --> 00:24.840
-那你一定能够写出很好的skill
-
-00:24.840 --> 00:25.640
-其实特别简单
-
-00:25.640 --> 00:27.640
-skill就是给AI写的SOP
-
-00:27.640 --> 00:29.640
-你每次跟他聊天是不是都得重新教一遍
-
-00:29.640 --> 00:30.840
-你是个什么什么的专家
-
-00:30.840 --> 00:31.440
-你要注意什么
-
-00:31.440 --> 00:32.480
-输出的格式要怎么样
-
-00:32.480 --> 00:33.560
-每一次从他来备
-
-00:33.560 --> 00:34.440
-有了skill的时候
-
-00:34.440 --> 00:35.760
-AI读一次就永远记住
-
-00:35.760 --> 00:37.160
-你只要说用选题skill
-
-00:37.160 --> 00:39.560
-它就直接能够按照你定好的规矩
-
-00:39.560 --> 00:40.480
-来翻译成人话
-
-00:40.480 --> 00:42.760
-就是说你给新议员工写了一份操作手册
-
-00:42.760 --> 00:44.560
-它就不用每天早上跑过来问你
-
-00:44.560 --> 00:45.920
-哎 老板今天该怎么干
-
-00:45.920 --> 00:46.400
-对不对
-
-00:46.400 --> 00:47.960
-那么为什么之后你现在突然火了呢
-
-00:47.960 --> 00:51.040
-因为单次对话的AI用法已经到顶了
-
-00:51.040 --> 00:52.480
-你每次要重新教一遍
-
-00:52.480 --> 00:54.920
-效率永远是要不然去天花板就在那个地方
-
-00:54.920 --> 00:56.800
-那skill就是从一次性对话
-
-00:56.800 --> 00:58.640
-到可负用能力的这么一个质变
-
-00:58.640 --> 00:59.360
-这就是为什么
-
-00:59.360 --> 01:00.440
-我们达阿扎哥们
-
-01:00.440 --> 01:02.720
-专门出了一门课来讲这个事情
-
-01:02.720 --> 01:03.600
-这不是一个小功能
-
-01:03.600 --> 01:05.520
-这是一个AI使用方式的一次升级
-
-01:05.520 --> 01:06.800
-那就让我自己烧了这个
-
-01:06.800 --> 01:08.480
-极异这个Cloud Opus Token
-
-01:08.480 --> 01:10.200
-做出来的这个编导系统来举例
-
-01:10.200 --> 01:12.560
-它里面一共跑了四个非常核心的skill
-
-01:12.560 --> 01:13.600
-一个是管选题的
-
-01:13.600 --> 01:14.880
-它会帮我去扫描市场
-
-01:14.880 --> 01:16.400
-去找到对标在做什么
-
-01:16.400 --> 01:18.680
-还有呢是来负责管写稿的能力
-
-01:18.680 --> 01:20.360
-它会用我自己的语感规则
-
-01:20.360 --> 01:22.320
-来帮我写口播或者是公众号
-
-01:22.320 --> 01:23.440
-或者是图文笔记
-
-01:23.440 --> 01:26.000
-还有一个是管省月写完了之后
-
-01:26.000 --> 01:27.800
-换视角帮我去挑毛病
-
-01:27.800 --> 01:28.600
-那么还有个skill呢
-
-01:28.600 --> 01:30.200
-是用来管知识成电的
-
-01:30.200 --> 01:32.640
-帮我把和这个Cloud Code的聊天中
-
-01:32.640 --> 01:34.600
-所有价值的东西会自动存下来
-
-01:34.600 --> 01:38.080
-并且会把我每周固定跑的这个周报里所
-
-01:38.080 --> 01:40.240
-呃提炼出来的一些关键的
-
-01:40.240 --> 01:42.200
-对我内容身上有帮助的东西给沉淀下来
-
-01:42.200 --> 01:43.720
-并且存到我整个系统上
-
-01:43.720 --> 01:45.280
-说对的地方
-
-01:45.280 --> 01:46.880
-那以前呢我每次做内容
-
-01:46.880 --> 01:48.800
-我开头的20分钟都需要交AI
-
-01:48.800 --> 01:49.280
-我是谁
-
-01:49.280 --> 01:50.000
-我做什么方向
-
-01:50.000 --> 01:50.800
-我的标准是什么
-
-01:50.800 --> 01:52.320
-现在呢它其实很多时候
-
-01:52.320 --> 01:53.600
-比我自己还要清楚
-
-01:53.600 --> 01:54.800
-我到底该怎么做内容
-
-01:54.800 --> 01:55.640
-呃所以说
-
-01:55.640 --> 01:56.520
-呃大家可以看啊
-
-01:56.520 --> 01:58.280
-给AI去写skill呢
-
-01:58.280 --> 02:00.840
-本质上就是在去学怎么当假方
-
-02:00.840 --> 02:02.840
-好的假方会把续舟给提清楚
-
-02:02.840 --> 02:04.040
-比自己干要重要的多
-
-02:04.040 --> 02:05.320
-而不好的假方只会说
-
-02:05.320 --> 02:06.720
-哎我想要适合远方
-
-02:06.720 --> 02:07.040
-对吧
-
-02:07.040 --> 02:07.880
-关注我是卡尔
-
-02:07.880 --> 02:09.320
-我是一个大家一起
-
-02:09.320 --> 02:10.400
-学习AI节目的普通
-
-02:10.400 --> 02:11.400
-下期我会拆解
-
-02:11.400 --> 02:13.600
-怎么样去撇你自己的一个skill
-

+ 0 - 1
Whisper/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES.json

@@ -1 +0,0 @@
-{"text": "\u6765\u4fdd\u94f6\u6781\u901f\u5427 \u5f00\u59cb\u8bc4\u96f6\u7ebf\u91d1", "segments": [{"id": 0, "seek": 3000, "start": 30.0, "end": 37.0, "text": "\u6765\u4fdd\u94f6\u6781\u901f\u5427 \u5f00\u59cb\u8bc4\u96f6\u7ebf\u91d1", "tokens": [50364, 6912, 24302, 165, 241, 114, 7360, 223, 31217, 6062, 220, 45213, 5233, 226, 6306, 114, 16853, 123, 19117, 50714], "temperature": 0.0, "avg_logprob": -0.7633545285179502, "compression_ratio": 0.7708333333333334, "no_speech_prob": 0.42961278557777405}], "language": "Chinese"}

+ 0 - 4
Whisper/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES.srt

@@ -1,4 +0,0 @@
-1
-00:00:30,000 --> 00:00:37,000
-来保银极速吧 开始评零线金
-

+ 0 - 2
Whisper/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES.tsv

@@ -1,2 +0,0 @@
-start	end	text
-30000	37000	来保银极速吧 开始评零线金

+ 0 - 1
Whisper/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES.txt

@@ -1 +0,0 @@
-来保银极速吧 开始评零线金

+ 0 - 5
Whisper/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES/奈斯甜_六月举办的科技展会上,FESTO公司展示的仿生科技产品,脑洞真是大啊!#抖音看世界 #视觉震撼 #科技 #FES.vtt

@@ -1,5 +0,0 @@
-WEBVTT
-
-00:30.000 --> 00:37.000
-来保银极速吧 开始评零线金
-

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
Whisper/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人.json


+ 0 - 112
Whisper/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人.srt

@@ -1,112 +0,0 @@
-1
-00:00:00,000 --> 00:00:01,320
-真的是太震撼了
-
-2
-00:00:01,320 --> 00:00:03,160
-中国团队研发的传感之物
-
-3
-00:00:03,160 --> 00:00:04,680
-打破了柔性传感器
-
-4
-00:00:04,680 --> 00:00:06,320
-数十年的技术评计
-
-5
-00:00:06,320 --> 00:00:08,960
-传统传感器采用多层叠加结构
-
-6
-00:00:08,960 --> 00:00:10,200
-后重不透气
-
-7
-00:00:10,200 --> 00:00:12,000
-一损耗难以使用
-
-8
-00:00:12,000 --> 00:00:13,880
-研发团队创新将倒垫
-
-9
-00:00:13,880 --> 00:00:14,480
-压阻
-
-10
-00:00:14,480 --> 00:00:15,880
-垫及等功能层
-
-11
-00:00:15,880 --> 00:00:17,120
-转化为线微
-
-12
-00:00:17,120 --> 00:00:20,200
-支撑坚剧柔性与智能的电子之物
-
-13
-00:00:20,200 --> 00:00:22,240
-它触感于普通不了无益
-
-14
-00:00:22,240 --> 00:00:24,040
-柔软透气可弯折
-
-15
-00:00:24,040 --> 00:00:25,200
-灵敏度极高
-
-16
-00:00:25,200 --> 00:00:27,320
-能精准補装微弱压力
-
-17
-00:00:27,320 --> 00:00:28,280
-这款新材料
-
-18
-00:00:28,280 --> 00:00:30,080
-可用于机器人触觉皮膚
-
-19
-00:00:30,080 --> 00:00:31,000
-智能家居
-
-20
-00:00:31,000 --> 00:00:32,600
-健康监测服势等
-
-21
-00:00:32,600 --> 00:00:34,200
-应用前景管货
-
-22
-00:00:34,200 --> 00:00:36,720
-研发企业以实现自动化量产
-
-23
-00:00:36,720 --> 00:00:38,520
-服务多家机器人与车起
-
-24
-00:00:38,520 --> 00:00:40,280
-不仅突破国外技术证换
-
-25
-00:00:40,280 --> 00:00:41,560
-更以柔性新材料
-
-26
-00:00:41,560 --> 00:00:42,880
-打开了智能生活
-
-27
-00:00:42,880 --> 00:00:44,640
-与产业升级的新可能
-
-28
-00:00:44,640 --> 00:00:47,000
-关注我了解最新科技
-

+ 0 - 29
Whisper/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人.tsv

@@ -1,29 +0,0 @@
-start	end	text
-0	1320	真的是太震撼了
-1320	3160	中国团队研发的传感之物
-3160	4680	打破了柔性传感器
-4680	6320	数十年的技术评计
-6320	8960	传统传感器采用多层叠加结构
-8960	10200	后重不透气
-10200	12000	一损耗难以使用
-12000	13880	研发团队创新将倒垫
-13880	14480	压阻
-14480	15880	垫及等功能层
-15880	17120	转化为线微
-17120	20200	支撑坚剧柔性与智能的电子之物
-20200	22240	它触感于普通不了无益
-22240	24040	柔软透气可弯折
-24040	25200	灵敏度极高
-25200	27320	能精准補装微弱压力
-27320	28280	这款新材料
-28280	30080	可用于机器人触觉皮膚
-30080	31000	智能家居
-31000	32600	健康监测服势等
-32600	34200	应用前景管货
-34200	36720	研发企业以实现自动化量产
-36720	38520	服务多家机器人与车起
-38520	40280	不仅突破国外技术证换
-40280	41560	更以柔性新材料
-41560	42880	打开了智能生活
-42880	44640	与产业升级的新可能
-44640	47000	关注我了解最新科技

+ 0 - 28
Whisper/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人.txt

@@ -1,28 +0,0 @@
-真的是太震撼了
-中国团队研发的传感之物
-打破了柔性传感器
-数十年的技术评计
-传统传感器采用多层叠加结构
-后重不透气
-一损耗难以使用
-研发团队创新将倒垫
-压阻
-垫及等功能层
-转化为线微
-支撑坚剧柔性与智能的电子之物
-它触感于普通不了无益
-柔软透气可弯折
-灵敏度极高
-能精准補装微弱压力
-这款新材料
-可用于机器人触觉皮膚
-智能家居
-健康监测服势等
-应用前景管货
-研发企业以实现自动化量产
-服务多家机器人与车起
-不仅突破国外技术证换
-更以柔性新材料
-打开了智能生活
-与产业升级的新可能
-关注我了解最新科技

+ 0 - 86
Whisper/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人/契约聊科技_我国科技迎来全新突破,一块布竟拥有电子感 #科技 #电子皮肤 #机器人.vtt

@@ -1,86 +0,0 @@
-WEBVTT
-
-00:00.000 --> 00:01.320
-真的是太震撼了
-
-00:01.320 --> 00:03.160
-中国团队研发的传感之物
-
-00:03.160 --> 00:04.680
-打破了柔性传感器
-
-00:04.680 --> 00:06.320
-数十年的技术评计
-
-00:06.320 --> 00:08.960
-传统传感器采用多层叠加结构
-
-00:08.960 --> 00:10.200
-后重不透气
-
-00:10.200 --> 00:12.000
-一损耗难以使用
-
-00:12.000 --> 00:13.880
-研发团队创新将倒垫
-
-00:13.880 --> 00:14.480
-压阻
-
-00:14.480 --> 00:15.880
-垫及等功能层
-
-00:15.880 --> 00:17.120
-转化为线微
-
-00:17.120 --> 00:20.200
-支撑坚剧柔性与智能的电子之物
-
-00:20.200 --> 00:22.240
-它触感于普通不了无益
-
-00:22.240 --> 00:24.040
-柔软透气可弯折
-
-00:24.040 --> 00:25.200
-灵敏度极高
-
-00:25.200 --> 00:27.320
-能精准補装微弱压力
-
-00:27.320 --> 00:28.280
-这款新材料
-
-00:28.280 --> 00:30.080
-可用于机器人触觉皮膚
-
-00:30.080 --> 00:31.000
-智能家居
-
-00:31.000 --> 00:32.600
-健康监测服势等
-
-00:32.600 --> 00:34.200
-应用前景管货
-
-00:34.200 --> 00:36.720
-研发企业以实现自动化量产
-
-00:36.720 --> 00:38.520
-服务多家机器人与车起
-
-00:38.520 --> 00:40.280
-不仅突破国外技术证换
-
-00:40.280 --> 00:41.560
-更以柔性新材料
-
-00:41.560 --> 00:42.880
-打开了智能生活
-
-00:42.880 --> 00:44.640
-与产业升级的新可能
-
-00:44.640 --> 00:47.000
-关注我了解最新科技
-

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
Whisper/机器学习/机器学习.json


+ 0 - 156
Whisper/机器学习/机器学习.srt

@@ -1,156 +0,0 @@
-1
-00:00:00,000 --> 00:00:02,300
-別在被那些高大上的名詞給虎住了
-
-2
-00:00:02,300 --> 00:00:04,460
-七七學習 深度學習 強化學習
-
-3
-00:00:04,460 --> 00:00:07,000
-聽起來選虎 其實邏輯簡單地調渣
-
-4
-00:00:07,000 --> 00:00:09,000
-今天我用人話給你一次性講透
-
-5
-00:00:09,000 --> 00:00:10,300
-第一 七七學習
-
-6
-00:00:10,300 --> 00:00:12,000
-它其實就是AI的地基
-
-7
-00:00:12,000 --> 00:00:15,400
-以前教電腦 是你協死代碼 讓它照著做
-
-8
-00:00:15,400 --> 00:00:17,000
-現在是七七學習
-
-9
-00:00:17,000 --> 00:00:19,700
-你給它一堆數據 讓它自己去找規律
-
-10
-00:00:19,700 --> 00:00:23,000
-它是個大拳子 只要能讓七七自動進化
-
-11
-00:00:23,000 --> 00:00:24,700
-都叫做七七學習
-
-12
-00:00:24,700 --> 00:00:28,200
-第二 深度學習 這就是七七學習的特種兵
-
-13
-00:00:28,300 --> 00:00:30,500
-它模仿的是人類的大腦神經緣
-
-14
-00:00:30,500 --> 00:00:33,000
-像現在火出圈的GDP 全字風某
-
-15
-00:00:33,000 --> 00:00:34,500
-其實都在這個範疇裡
-
-16
-00:00:34,500 --> 00:00:37,700
-那記住了用了神經網絡的才教深度學習
-
-17
-00:00:37,700 --> 00:00:41,100
-沒用神經網絡 還在玩邏輯回規矩測數的
-
-18
-00:00:41,100 --> 00:00:42,700
-一叫傳統的G7學習
-
-19
-00:00:42,700 --> 00:00:45,400
-你一個是玩腦細胞 一個是玩的是統計表
-
-20
-00:00:45,400 --> 00:00:47,700
-懂了嗎 那第三 強化學習
-
-21
-00:00:47,700 --> 00:00:48,700
-這個最硬核
-
-22
-00:00:48,700 --> 00:00:51,400
-它不是看書學習 而是實戰演習
-
-23
-00:00:51,400 --> 00:00:52,700
-它不需要你為數據
-
-24
-00:00:52,700 --> 00:00:55,200
-它是在環境你不斷的 賺難強
-
-25
-00:00:55,200 --> 00:00:57,200
-做對了 給獎勵 做錯了 扣分
-
-26
-00:00:57,300 --> 00:00:58,500
-就像訓練小寶一樣
-
-27
-00:00:58,500 --> 00:01:00,100
-也像Alpha夠下棋
-
-28
-00:01:00,100 --> 00:01:02,100
-在無數詞實錯中
-
-29
-00:01:02,100 --> 00:01:04,200
-進化出最強的殺招
-
-30
-00:01:04,200 --> 00:01:06,800
-所以就別問他們誰大誰小了
-
-31
-00:01:06,800 --> 00:01:09,600
-機器學習是母體 深度學習是監刀
-
-32
-00:01:09,600 --> 00:01:12,300
-強化學習是它的實戰變體
-
-33
-00:01:12,300 --> 00:01:14,000
-在這個智能到爆發的時代
-
-34
-00:01:14,000 --> 00:01:16,000
-如果你黏著三個詞都分不清
-
-35
-00:01:16,000 --> 00:01:18,300
-你根本就看不清未來的財富邏輯
-
-36
-00:01:18,300 --> 00:01:21,000
-那最後我也是整理了一份完整的學習路線
-
-37
-00:01:21,000 --> 00:01:22,400
-加人工智能資料
-
-38
-00:01:22,400 --> 00:01:25,200
-裡面就包含了一系列的教程項目書籍的
-
-39
-00:01:25,200 --> 00:01:27,300
-可以去看一下 相信一定可以幫助到你
-

+ 0 - 40
Whisper/机器学习/机器学习.tsv

@@ -1,40 +0,0 @@
-start	end	text
-0	2300	別在被那些高大上的名詞給虎住了
-2300	4460	七七學習 深度學習 強化學習
-4460	7000	聽起來選虎 其實邏輯簡單地調渣
-7000	9000	今天我用人話給你一次性講透
-9000	10300	第一 七七學習
-10300	12000	它其實就是AI的地基
-12000	15400	以前教電腦 是你協死代碼 讓它照著做
-15400	17000	現在是七七學習
-17000	19700	你給它一堆數據 讓它自己去找規律
-19700	23000	它是個大拳子 只要能讓七七自動進化
-23000	24700	都叫做七七學習
-24700	28200	第二 深度學習 這就是七七學習的特種兵
-28300	30500	它模仿的是人類的大腦神經緣
-30500	33000	像現在火出圈的GDP 全字風某
-33000	34500	其實都在這個範疇裡
-34500	37700	那記住了用了神經網絡的才教深度學習
-37700	41100	沒用神經網絡 還在玩邏輯回規矩測數的
-41100	42700	一叫傳統的G7學習
-42700	45400	你一個是玩腦細胞 一個是玩的是統計表
-45400	47700	懂了嗎 那第三 強化學習
-47700	48700	這個最硬核
-48700	51400	它不是看書學習 而是實戰演習
-51400	52700	它不需要你為數據
-52700	55200	它是在環境你不斷的 賺難強
-55200	57200	做對了 給獎勵 做錯了 扣分
-57300	58500	就像訓練小寶一樣
-58500	60100	也像Alpha夠下棋
-60100	62100	在無數詞實錯中
-62100	64200	進化出最強的殺招
-64200	66800	所以就別問他們誰大誰小了
-66800	69600	機器學習是母體 深度學習是監刀
-69600	72300	強化學習是它的實戰變體
-72300	74000	在這個智能到爆發的時代
-74000	76000	如果你黏著三個詞都分不清
-76000	78300	你根本就看不清未來的財富邏輯
-78300	81000	那最後我也是整理了一份完整的學習路線
-81000	82400	加人工智能資料
-82400	85200	裡面就包含了一系列的教程項目書籍的
-85200	87300	可以去看一下 相信一定可以幫助到你

+ 0 - 39
Whisper/机器学习/机器学习.txt

@@ -1,39 +0,0 @@
-別在被那些高大上的名詞給虎住了
-七七學習 深度學習 強化學習
-聽起來選虎 其實邏輯簡單地調渣
-今天我用人話給你一次性講透
-第一 七七學習
-它其實就是AI的地基
-以前教電腦 是你協死代碼 讓它照著做
-現在是七七學習
-你給它一堆數據 讓它自己去找規律
-它是個大拳子 只要能讓七七自動進化
-都叫做七七學習
-第二 深度學習 這就是七七學習的特種兵
-它模仿的是人類的大腦神經緣
-像現在火出圈的GDP 全字風某
-其實都在這個範疇裡
-那記住了用了神經網絡的才教深度學習
-沒用神經網絡 還在玩邏輯回規矩測數的
-一叫傳統的G7學習
-你一個是玩腦細胞 一個是玩的是統計表
-懂了嗎 那第三 強化學習
-這個最硬核
-它不是看書學習 而是實戰演習
-它不需要你為數據
-它是在環境你不斷的 賺難強
-做對了 給獎勵 做錯了 扣分
-就像訓練小寶一樣
-也像Alpha夠下棋
-在無數詞實錯中
-進化出最強的殺招
-所以就別問他們誰大誰小了
-機器學習是母體 深度學習是監刀
-強化學習是它的實戰變體
-在這個智能到爆發的時代
-如果你黏著三個詞都分不清
-你根本就看不清未來的財富邏輯
-那最後我也是整理了一份完整的學習路線
-加人工智能資料
-裡面就包含了一系列的教程項目書籍的
-可以去看一下 相信一定可以幫助到你

+ 0 - 119
Whisper/机器学习/机器学习.vtt

@@ -1,119 +0,0 @@
-WEBVTT
-
-00:00.000 --> 00:02.300
-別在被那些高大上的名詞給虎住了
-
-00:02.300 --> 00:04.460
-七七學習 深度學習 強化學習
-
-00:04.460 --> 00:07.000
-聽起來選虎 其實邏輯簡單地調渣
-
-00:07.000 --> 00:09.000
-今天我用人話給你一次性講透
-
-00:09.000 --> 00:10.300
-第一 七七學習
-
-00:10.300 --> 00:12.000
-它其實就是AI的地基
-
-00:12.000 --> 00:15.400
-以前教電腦 是你協死代碼 讓它照著做
-
-00:15.400 --> 00:17.000
-現在是七七學習
-
-00:17.000 --> 00:19.700
-你給它一堆數據 讓它自己去找規律
-
-00:19.700 --> 00:23.000
-它是個大拳子 只要能讓七七自動進化
-
-00:23.000 --> 00:24.700
-都叫做七七學習
-
-00:24.700 --> 00:28.200
-第二 深度學習 這就是七七學習的特種兵
-
-00:28.300 --> 00:30.500
-它模仿的是人類的大腦神經緣
-
-00:30.500 --> 00:33.000
-像現在火出圈的GDP 全字風某
-
-00:33.000 --> 00:34.500
-其實都在這個範疇裡
-
-00:34.500 --> 00:37.700
-那記住了用了神經網絡的才教深度學習
-
-00:37.700 --> 00:41.100
-沒用神經網絡 還在玩邏輯回規矩測數的
-
-00:41.100 --> 00:42.700
-一叫傳統的G7學習
-
-00:42.700 --> 00:45.400
-你一個是玩腦細胞 一個是玩的是統計表
-
-00:45.400 --> 00:47.700
-懂了嗎 那第三 強化學習
-
-00:47.700 --> 00:48.700
-這個最硬核
-
-00:48.700 --> 00:51.400
-它不是看書學習 而是實戰演習
-
-00:51.400 --> 00:52.700
-它不需要你為數據
-
-00:52.700 --> 00:55.200
-它是在環境你不斷的 賺難強
-
-00:55.200 --> 00:57.200
-做對了 給獎勵 做錯了 扣分
-
-00:57.300 --> 00:58.500
-就像訓練小寶一樣
-
-00:58.500 --> 01:00.100
-也像Alpha夠下棋
-
-01:00.100 --> 01:02.100
-在無數詞實錯中
-
-01:02.100 --> 01:04.200
-進化出最強的殺招
-
-01:04.200 --> 01:06.800
-所以就別問他們誰大誰小了
-
-01:06.800 --> 01:09.600
-機器學習是母體 深度學習是監刀
-
-01:09.600 --> 01:12.300
-強化學習是它的實戰變體
-
-01:12.300 --> 01:14.000
-在這個智能到爆發的時代
-
-01:14.000 --> 01:16.000
-如果你黏著三個詞都分不清
-
-01:16.000 --> 01:18.300
-你根本就看不清未來的財富邏輯
-
-01:18.300 --> 01:21.000
-那最後我也是整理了一份完整的學習路線
-
-01:21.000 --> 01:22.400
-加人工智能資料
-
-01:22.400 --> 01:25.200
-裡面就包含了一系列的教程項目書籍的
-
-01:25.200 --> 01:27.300
-可以去看一下 相信一定可以幫助到你
-

+ 0 - 1
_test-batch.json

@@ -1 +0,0 @@
-{"token":"Bearer r:f0333969e312a40e4703e8fe4ed1c600","Action":"BatchListMegaTTSTrainStatus","Version":"2025-05-21","ProjectName":"","State":"Unknown","PageNumber":1,"PageSize":100,"SpeakerIDs":["S_ULZKhZWZ1","S_TLZKhZWZ1","S_SLZKhZWZ1","S_QLZKhZWZ1","S_PLZKhZWZ1","S_OLZKhZWZ1","S_MLZKhZWZ1","S_RWDjSzXZ1"]}

+ 0 - 1
body.json

@@ -1 +0,0 @@
-{"choices":[{"finish_reason":"stop","index":0,"logprobs":null,"message":{"annotations":[],"content":"Pong! How can I assist you today?","refusal":null,"role":"assistant"}}],"created":1777349287,"id":"chatcmpl-DZU1vQejM8OeQtYhwIR1iIMabgtHB","model":"gpt-4o-mini-2024-07-18","object":"chat.completion","service_tier":"default","system_fingerprint":"fp_eb37e061ec","usage":{"completion_tokens":11,"completion_tokens_details":{"accepted_prediction_tokens":0,"audio_tokens":0,"reasoning_tokens":0,"rejected_prediction_tokens":0},"prompt_tokens":8,"prompt_tokens_details":{"audio_tokens":0,"cached_tokens":0},"total_tokens":19}}

+ 0 - 210
docs/AI数字人/调用步骤1:主体识别.md

@@ -1,210 +0,0 @@
-<span id="iYs82pIr"></span>
-# 接口简介
-用于识别图片中是否包含人、类人、拟人等主体。
-<span id="RggU0CpI"></span>
-# 接入说明
-<span id="m9jyyRCY"></span>
-## 请求说明
-
-|名称 |内容 |
-|---|---|
-|接口地址 |[https://visual.volcengineapi.com](https://visual.volcengineapi.com/) |
-|请求方式 |POST |
-|Content\-Type |application/json |
-
-<span id="Wqosauyg"></span>
-## 提交任务
-<span id="UipBJfMe"></span>
-### **提交任务请求参数**
-**Query参数**
-:::tip 拼接到url后的参数,示例:[https://visual.volcengineapi.com?Action=CVSubmitTask&Version=2022-08-31](https://visual.volcengineapi.com?Action=CVSubmitTask&Version=2022-08-31)
-
-:::
-|参数 |类型 |**可选/必选** |说明 |
-|---|---|---|---|
-|Action |string |必选 |接口名,取值:**CVSubmitTask** |
-|Version |string |必选 |版本号,取值:2022\-08\-31 |
-
-<span id="UL1JJkrl"></span>
-#### **Header参数**
-:::warning
-本服务固定值:**Region为cn\-north\-1,Service为cv**
-:::
-主要用于鉴权,详见 [公共参数](https://www.volcengine.com/docs/6369/67268) \- 签名参数 \- 在Header中的场景部分
-<span id="lKGawgyP"></span>
-#### **Body参数**
-:::warning
-业务请求参数,放到request.body中,MIME\-Type为**application/json**
-
-:::
-|名称 |类型 |必选 |描述 |
-|---|---|---|---|
-|req_key |string |必选 |服务标识|\
-| | | |取固定值: **jimeng_realman_avatar_picture_create_role_omni_v15** |
-|image_url |string |必选 |人像图片URL链接 |
-
-<span id="gLk9V4gc"></span>
-### 提交任务返回参数
-<span id="aCU4u8so"></span>
-#### **通用返回参数**
-请参考[通用返回字段及错误码](https://www.volcengine.com/docs/6444/69728)
-<span id="hDOjda2V"></span>
-#### **业务返回参数**
-:::tip 重点关注data中以下字段,其他字段为公共返回(可忽略或不做解析)
-
-:::
-|字段 |类型 |说明 |
-|---|---|---|
-|task_id |string |任务ID,用于查询结果 |
-
-<span id="EhE6lncW"></span>
-### 提交任务请求&返回完整示例
-**请求示例:** 
-```JSON
-{
-    "req_key": "jimeng_realman_avatar_picture_create_role_omni_v15",
-    "image_url": "https://xxxxx"
-}
-```
-
-**返回示例:** 
-```JSON
-{
-    "code": 10000, //状态码,判断状态,code!=10000的情况下,不会返回task_id
-    "data": {
-        "task_id": "7392616336519610409" //任务ID,查询接口使用
-    },
-    "message": "Success",
-    "request_id": "20240720103939AF0029465CF6A74E51EC", //排查错误的关键信息
-    "time_elapsed": "104.852309ms" //链路耗时
-}
-```
-
-<span id="Kkpl7tcr"></span>
-## 查询任务
-<span id="2w0vDyP6"></span>
-### **查询任务请求参数**
-<span id="9T59GUSD"></span>
-#### **Query参数**
-:::tip 拼接到url后的参数,示例:[https://visual.volcengineapi.com](https://visual.volcengineapi.com/)[?Action=CVGetResult&Version=2022-08-31](https://visual.volcengineapi.com?Action=CVGetResult&Version=2022-08-31)
-
-:::
-|参数 |类型 |**可选/必选** |说明 |
-|---|---|---|---|
-|Action |string |必选 |接口名,固定值:**CVGetResult** |
-|Version |string |必选 |版本号,固定值:**2022\-08\-31** |
-
-<span id="2fbkyXAl"></span>
-#### **Header参数**
-:::warning
-本服务固定值:**Region为cn\-north\-1,Service为cv**
-:::
-主要用于鉴权,详见 [公共参数](https://www.volcengine.com/docs/6369/67268) \- 签名参数 \- 在Header中的场景部分
-<span id="5V2lUETO"></span>
-#### **Body参数**
-:::warning
-业务请求参数,放到request.body中,MIME\-Type为**application/json**
-
-:::
-|参数 |类型 |可选/必选 |说明 |
-|---|---|---|---|
-|req_key |string |必选 |服务标识|\
-| | | |取固定值: **jimeng_realman_avatar_picture_create_role_omni_v15** |
-|task_id |string |必选 |任务ID,此字段的取值为**提交任务接口**的返回 |
-
-<span id="nf5sT273"></span>
-### 查询任务返回参数
-<span id="XnVX9EJr"></span>
-#### **通用返回参数**
-请参考[通用返回字段及错误码](https://www.volcengine.com/docs/6444/69728)
-<span id="oeCO0r2h"></span>
-#### **业务返回参数**
-:::tip
-重点关注data中以下字段,其他字段为公共返回(可忽略或不做解析)
-
-:::
-|参数名 |参数说明 |参数示例 |
-|---|---|---|
-|resp_data |图片识别结果| |\
-| |resp_data为序列化后的JSON字符串,其中的**status**参数为识别结果,取值为:| |\
-| || |\
-| |* 0:不包含人、类人、拟人等主体| |\
-| |* 1:包含人、类人、拟人等主体 | |
-|status |任务执行状态| |\
-| || |\
-| |* in_queue:任务已提交| |\
-| |* generating:任务已被消费,处理中| |\
-| |* done:处理完成,成功或者失败,可根据外层code&message进行判断| |\
-| |* not_found:任务未找到,可能原因是无此任务或任务已过期(12小时)| |\
-| |* expired:任务已过期,请尝试重新提交任务请求 | |
-
-<span id="VrIpS7DD"></span>
-### 查询任务请求&返回完整示例
-**请求示例:** 
-```JSON
-{
-    "req_key": "jimeng_realman_avatar_picture_create_role_omni_v15",
-    "task_id": "<任务提交接口返回task_id>"
-}
-```
-
-**返回示例:** 
-```JSON
-{
-    "code": 10000, //状态码,优先判断 code=10000, 然后再判断data.status,否则解析有可能会panic
-    "data": {
-        "resp_data":"{\"status\":1}",
-        "status": "done" //任务状态
-    },
-    "message": "Success",
-    "status": 10000,  //无需关注,请忽略
-    "request_id": "2025061718460554C9B78D23B0BAB45B2A",  //排查错误的关键信息
-    "time_elapsed": "508.312154ms" //链路耗时
-}
-```
-
-**返回报错示例:** 
-```JSON
-{
-    "code": 50413, //状态码,优先判断 code=10000, 然后再判断data.status,否则解析有可能会panic
-    "data": null, //code!=10000的情况下,该字段返回为null
-    "message": "Post Text Risk Not Pass", //错误信息
-    "request_id": "202511281418218670D408837A9B0EB58F", //排查错误的关键信息
-    "status": 50413, //无需关注,请忽略
-    "time_elapsed": "36.799829ms" //链路耗时
-}
-```
-
-<span id="tsSGEop2"></span>
-## 错误码
-<span id="NPBaYTGD"></span>
-### **通用错误码**
-请参考[通用返回字段及错误码](https://www.volcengine.com/docs/6444/69728)
-<span id="yDjYXE2j"></span>
-### **业务错误码**
-
-|HttpCode |错误码 |错误消息 |描述 |是否需要重试 |
-|---|---|---|---|---|
-|200 |10000 |无 |请求成功 |不需要 |
-|400 |50411 |Pre Img Risk Not Pass |输入图片前审核未通过 |不需要 |
-|400 |50511 |Post Img Risk Not Pass |输出图片后审核未通过 |可重试 |
-|400 |50412 |Text Risk Not Pass |输入文本前审核未通过 |不需要 |
-|400 |50512 |Post Text Risk Not Pass |输出文本后审核未通过 |不需要 |
-|400 |50413 |Post Text Risk Not Pass |输入文本含敏感词、版权词等审核不通过 |不需要 |
-|429 |50429 |Request Has Reached API Limit, Please Try Later |QPS超限 |可重试 |
-|429 |50430 |Request Has Reached API Concurrent Limit, Please Try Later |并发超限 |可重试 |
-|500 |50500 |Internal Error |内部错误 |可重试 |
-|500 |50501 |Internal RPC Error |内部算法错误 |可重试 |
-
-&nbsp;
-<span id="Cso1U6US"></span>
-## 接入说明
-<span id="ahROYmp4"></span>
-### SDK使用说明
-请参考[SDK使用说明](https://www.volcengine.com/docs/6444/1340578)
-<span id="VmneJSlh"></span>
-### HTTP方式接入说明
-请参考[HTTP请求示例](https://www.volcengine.com/docs/6444/1390583)
-&nbsp;
-
-

+ 0 - 118
docs/AI数字人/调用步骤2:主体检测.md

@@ -1,118 +0,0 @@
-<span id="#9LMq2IVg"></span>
-# 接口简介
-检测图片中的主体,并支持返回主体对应的mask图。如果在视频生成时不需要指定主体说话,可以跳过该步骤。
-<span id="#EXBxwZ9u"></span>
-# 接入说明
-<span id="#wruGqTDz"></span>
-## 请求说明
-
-|名称 |内容 |
-|---|---|
-|接口地址 |[https://visual.volcengineapi.com](https://visual.volcengineapi.com/) |
-|请求方式 |POST |
-|Content\-Type |application/json |
-
-<span id="#mVWsdndN"></span>
-### **请求参数**
-<span id="#aM9LHKWv"></span>
-#### **Query参数**
-:::tip 拼接到url后的参数,示例:[https://visual.volcengineapi.com?Action=CVProcess&Version=2022-08-31](https://visual.volcengineapi.com?Action=CVProcess&Version=2022-08-31)
-
-:::
-|参数 |类型 |**可选/必选** |说明 |
-|---|---|---|---|
-|Action |string |必选 |接口名,取值:**CVProcess** |
-|Version |string |必选 |版本号,取值:2022\-08\-31 |
-
-<span id="#EK6Q4pMO"></span>
-#### **Header参数**
-:::warning
-本服务固定值:**Region为cn\-north\-1,Service为cv**
-:::
-主要用于鉴权,详见 [公共参数](https://www.volcengine.com/docs/6369/67268) \- 签名参数 \- 在Header中的场景部分
-<span id="#8WOqlkuo"></span>
-#### **Body参数**
-:::warning
-业务请求参数,放到request.body中,MIME\-Type为**application/json**
-
-:::
-|名称 |类型 |必选 |描述 |
-|---|---|---|---|
-|req_key |string |必选 |服务标识|\
-| | | |取固定值: **jimeng_realman_avatar_object_detection** |
-|image_url |string |必选 |人像图片URL链接 **(最多支持检测5个主体)**  |
-
-<span id="#ZsEHzXpu"></span>
-### 返回参数
-<span id="#u0pvhxRC"></span>
-#### **通用返回参数**
-请参考[通用返回字段及错误码](https://www.volcengine.com/docs/6444/69728)
-<span id="#yKb59ZCm"></span>
-#### **业务返回参数**
-:::tip 重点关注data中以下字段,其他字段为公共返回(可忽略或不做解析)
-
-:::
-|字段 |类型 |说明 |
-|---|---|---|
-|resp_data |JSON string |图片识别结果中各字段说明:|\
-| | ||\
-| | |* code:错误码,0表示成功|\
-| | |* status:是否包含主体,0表示不包含主体,1表示包含主体|\
-| | |* **object_detection_result.mask.url(重点关注此字段)** :图片中主体对应的mask图URL列表。**URL列表顺序与输入图中主体按照mask的面积进行排序** **。URL有效期为1小时。如需预览mask图片,可以通过URL下载并手动修改图片文件名的格式后缀为.png,保存为.png后再查看。**  |
-
-<span id="#Y7b2PTXU"></span>
-### 请求&返回完整示例
-**请求示例:** 
-```JSON
-{
-    "req_key": "jimeng_realman_avatar_object_detection",
-    "image_url": "https://xxxxx"
-}
-```
-
-**返回示例:** 
-```JSON
-{
-    "code": 10000,
-    "data": {
-        "resp_data": "{\"code\":0,\"object_detection_result\":{\"mask\":{\"url\":[\"https://xxxxx\"]}},\"status\":1}"
-    },
-    "message": "Success",
-    "request_id": "202509231217222E094AB54EF8C50A04E3",
-    "status": 10000,
-    "time_elapsed": "3.964553804s"
-}
-```
-
-<span id="#DMY108VL"></span>
-## 错误码
-<span id="#rOLgGSvW"></span>
-### **通用错误码**
-请参考[通用返回字段及错误码](https://www.volcengine.com/docs/6444/69728)
-<span id="#XL9dyCPx"></span>
-### **业务错误码**
-
-|HttpCode |错误码 |错误消息 |描述 |是否需要重试 |
-|---|---|---|---|---|
-|200 |10000 |无 |请求成功 |不需要 |
-|400 |50411 |Pre Img Risk Not Pass |输入图片前审核未通过 |不需要 |
-|400 |50511 |Post Img Risk Not Pass |输出图片后审核未通过 |可重试 |
-|400 |50412 |Text Risk Not Pass |输入文本前审核未通过 |不需要 |
-|400 |50512 |Post Text Risk Not Pass |输出文本后审核未通过 |不需要 |
-|400 |50413 |Post Text Risk Not Pass |输入文本含敏感词、版权词等审核不通过 |不需要 |
-|429 |50429 |Request Has Reached API Limit, Please Try Later |QPS超限 |可重试 |
-|429 |50430 |Request Has Reached API Concurrent Limit, Please Try Later |并发超限 |可重试 |
-|500 |50500 |Internal Error |内部错误 |可重试 |
-|500 |50501 |Internal RPC Error |内部算法错误 |可重试 |
-
-<span id="#AoAnCTi6"></span>
-## 接入说明
-<span id="#e3dqHfX8"></span>
-### SDK使用说明
-请参考[SDK使用说明](https://www.volcengine.com/docs/6444/1340578)
-<span id="#6I5PiHuS"></span>
-### HTTP方式接入说明
-请参考[HTTP请求示例](https://www.volcengine.com/docs/6444/1390583)
-&nbsp;
-
-

+ 0 - 272
docs/AI数字人/调用步骤3:视频生成.md

@@ -1,272 +0,0 @@
-<span id="CqWmhbOT"></span>
-# 接口简介
-OmniHuman1.5(即梦同源数字人模型),该模型可根据用户上传的**单张图片+音频**,生成与图片对应的**视频效果**。支持输入任意画幅包含人物或其他主体(宠物、动漫等)的图片,结合音频,生成高质量的视频。
-人物的情绪、动作与音频具有强关联性,支持通过提示词(prompt)对画面、动作、运镜进行调整。同时OmniHuman1.5对动漫、宠物等形象支持较好,允许指定讲话人/主体,可广泛应用于内容表达、唱歌和表演等场景。
-相较于上一代模型,OmniHuman1.5 在**运动自然度和结构稳定性**提升明显,在**人物/主体的运动表现力和画面质量上更优。** 可以广泛应用于制作剧情对话、多人对话/对唱、商品交互、漫剧等内容。对比其他视频通用模型,OmniHuman 数字人大模型在**人物/主体的剧情演绎效果**上极具优势。
-<span id="Vmnn1XrW"></span>
-# 接入说明
-<span id="slvinWHY"></span>
-## 请求说明
-
-|名称 |内容 |
-|---|---|
-|接口地址 |[https://visual.volcengineapi.com](https://visual.volcengineapi.com/) |
-|请求方式 |POST |
-|Content\-Type |application/json |
-
-<span id="L0IW2Ncc"></span>
-## 提交任务
-<span id="Xfkmq42L"></span>
-### **提交任务请求参数**
-**Query参数**
-:::tip 拼接到url后的参数,示例:[https://visual.volcengineapi.com?Action=CVSubmitTask&Version=2022-08-31](https://visual.volcengineapi.com?Action=CVSubmitTask&Version=2022-08-31)
-
-:::
-|参数 |类型 |**可选/必选** |说明 |
-|---|---|---|---|
-|Action |string |必选 |接口名,取值:**CVSubmitTask** |
-|Version |string |必选 |版本号,取值:2022\-08\-31 |
-
-<span id="9bD7KCSs"></span>
-#### **Header参数**
-:::warning
-本服务固定值:**Region为cn\-north\-1,Service为cv**
-:::
-主要用于鉴权,详见 [公共参数](https://www.volcengine.com/docs/6369/67268) \- 签名参数 \- 在Header中的场景部分
-<span id="HpYkrYBl"></span>
-#### **Body参数**
-:::warning
-业务请求参数,放到request.body中,MIME\-Type为**application/json**
-
-:::
-|名称 |类型 |必选 |描述 |
-|---|---|---|---|
-|req_key |string |必选 |服务标识|\
-| | | |取固定值: **jimeng_realman_avatar_picture_omni_v15** |
-|image_url |string |必选 |人像图片URL链接 |
-|mask_url |array of string |可选 |mask图URL列表|\
-| | | |如果需要指定图片中的某个主体说话,可通过**调用步骤2:主体检测**获取对应主体的mask图传入 |
-|audio_url |string |必选 |音频URL|\
-| | | |音频时长必须小于60秒,过长情况下提交任务正常,查询任务会报错如下:|\
-| | | |```JSON|\
-| | | |{|\
-| | | |    "code": 50215,|\
-| | | |    "data": null,|\
-| | | |    "message": "Input invalid for this service.",|\
-| | | |    "request_id": "2025092517155016D925474BBC35F63896",|\
-| | | |    "status": 50215,|\
-| | | |    "time_elapsed": "28.911171ms"|\
-| | | |}|\
-| | | |```|\
-| | | | |
-|seed |int |可选 |随机种子,作为确定扩散初始状态的基础,默认\-1(随机)。若随机种子为相同正整数且其他参数均一致,则生成内容极大概率效果一致|\
-| | | |默认值:\-1 |
-|prompt |string |可选 |提示词,仅限中文、英语、日语、韩语、墨西哥语、印尼语,建议长度≤300字符 |
-|output_resolution |int |可选 |输出视频分辨率|\
-| | | |可选值(二选一):[720, 1080]|\
-| | | |默认值:1080 |
-|pe_fast_mode |bool |可选 |是否启用快速模式|\
-| | | ||\
-| | | |* 开启后会通过牺牲部分效果加快生成速度|\
-| | | |* 如果希望与即梦客户端的效果保持较高的一致性,建议遵循如下传参规则:|\
-| | | |   * 当输出视频分辨率(output_resolution)取值为720时,pe_fast_mode传true|\
-| | | |   * 当输出视频分辨率(output_resolution)取值为1080时,pe_fast_mode传false|\
-| | | ||\
-| | | |默认值:false |
-
-<span id="SxBqueIQ"></span>
-### 提交任务返回参数
-<span id="RW88LZnH"></span>
-#### **通用返回参数**
-请参考[通用返回字段及错误码](https://www.volcengine.com/docs/6444/69728)
-<span id="kwqPevIu"></span>
-#### **业务返回参数**
-:::tip 重点关注data中以下字段,其他字段为公共返回(可忽略或不做解析)
-
-:::
-|字段 |类型 |说明 |
-|---|---|---|
-|task_id |string |任务ID,用于查询结果 |
-
-<span id="MV5sBjJT"></span>
-### 提交任务请求&返回完整示例
-**请求示例:** 
-```JSON
-{
-    "req_key": "jimeng_realman_avatar_picture_omni_v15",
-    "image_url": "https://xxxxx",
-    // "mask_url": ["https://xxxxx", ...]
-    "audio_url": "https://xxxxx"
-}
-```
-
-**返回示例:** 
-```JSON
-{
-    "code": 10000, //状态码,判断状态,code!=10000的情况下,不会返回task_id
-    "data": {
-        "task_id": "7392616336519610409" //任务ID,查询接口使用
-    },
-    "message": "Success",
-    "request_id": "20240720103939AF0029465CF6A74E51EC", //排查错误的关键信息
-    "time_elapsed": "104.852309ms" //链路耗时
-}
-```
-
-<span id="XkRzLbBF"></span>
-## 查询任务
-<span id="meJwcf0W"></span>
-### **查询任务请求参数**
-<span id="Mtw2N4GZ"></span>
-#### **Query参数**
-:::tip 拼接到url后的参数,示例:[https://visual.volcengineapi.com](https://visual.volcengineapi.com/)[?Action=CVGetResult&Version=2022-08-31](https://visual.volcengineapi.com?Action=CVGetResult&Version=2022-08-31)
-
-:::
-|参数 |类型 |**可选/必选** |说明 |
-|---|---|---|---|
-|Action |string |必选 |接口名,固定值:**CVGetResult** |
-|Version |string |必选 |版本号,固定值:**2022\-08\-31** |
-
-<span id="Cij1pwoF"></span>
-#### **Header参数**
-:::warning
-本服务固定值:**Region为cn\-north\-1,Service为cv**
-:::
-主要用于鉴权,详见 [公共参数](https://www.volcengine.com/docs/6369/67268) \- 签名参数 \- 在Header中的场景部分
-<span id="QtbA9YpR"></span>
-#### **Body参数**
-:::warning
-业务请求参数,放到request.body中,MIME\-Type为**application/json**
-
-:::
-|参数 |类型 |可选/必选 |说明 | |
-|---|---|---|---|---|
-|req_key |string |必选 |服务标识| |\
-| | | |取固定值: **jimeng_realman_avatar_picture_omni_v15** | |
-|task_id |string |必选 |任务ID,此字段的取值为**提交任务接口**的返回 | |
-|req_json |json string |可选 |json序列化后的字符串,目前支持隐性水印配置,可在返回结果中添加 |示例:"{\"aigc_meta\": {\"content_producer\": \"xxxxxx\", \"producer_id\": \"xxxxxx\", \"content_propagator\": \"xxxxxx\", \"propagate_id\": \"xxxxxx\"}}" |
-
-<span id="6fFSWsdl"></span>
-##### **ReqJson(序列化后的结果再赋值给req_json)** 
-配置信息
-
-|**参数** |**类型** |**可选/必选** |**说明** | |
-|---|---|---|---|---|
-|aigc_meta |AIGCMeta |可选 |隐式标识 |隐式标识验证方式:|\
-| | | | ||\
-| | | | |https://www.gcmark.com/web/index.html#/mark/check/video|\
-| | | | |   验证,先注册帐号 上传打标后的视频 点击开始检测 输出检测结果如下图即代表成功|\
-| | | | ||\
-| | | | |<div style="text-align: center">|\
-| | | | |<img src="https://portal.volccdn.com/obj/volcfe/cloud-universal-doc/upload_37d8115b3de900fec9b697787ea51d86.png" width="2362px" /></div>|\
-| | | | | |
-
-<span id="8zhlsx33"></span>
-##### AIGCMeta
-隐式标识,依据《人工智能生成合成内容标识办法》&《网络安全技术人工智能生成合成内容标识方法》
-
-|名称 |类型 |**可选/必选** |描述 |
-|---|---|---|---|
-|content_producer |string |可选 |内容生成服务ID(长度 <= 256字符) |
-|producer_id |string |必选 |内容生成服务商给此图片数据的唯一ID(长度 <= 256字符) |
-|content_propagator |string |必选 |内容传播服务商ID(长度 <= 256字符) |
-|propagate_id |string |可选 |传播服务商给此图片数据的唯一ID(长度 <= 256字符) |
-
-<span id="PtWWIA8z"></span>
-### 查询任务返回参数
-<span id="l8fdebjW"></span>
-#### **通用返回参数**
-请参考[通用返回字段及错误码](https://www.volcengine.com/docs/6444/69728)
-<span id="CI0dYiql"></span>
-#### **业务返回参数**
-:::tip
-重点关注data中以下字段,其他字段为公共返回(可忽略或不做解析)
-
-:::
-|参数名 |类型 |参数说明 |
-|---|---|---|
-|video_url |string |视频链接(**有效期为 1 小时**) |
-|aigc_meta_tagged |bool |隐式标识是否打标成功 |
-|status |string |任务执行状态|\
-| | ||\
-| | |* processing:任务前置处理|\
-| | |* in_queue:任务已提交|\
-| | |* generating:任务已被消费,处理中|\
-| | |* done:处理完成,成功或者失败,可根据外层code&message进行判断|\
-| | |* not_found:任务未找到,可能原因是无此任务或任务已过期(12小时)|\
-| | |* expired:任务已过期,请尝试重新提交任务请求 |
-
-<span id="E0xSZUkA"></span>
-### 查询任务请求&返回完整示例
-**请求示例:** 
-```JSON
-{
-    "req_key": "jimeng_realman_avatar_picture_omni_v15",
-    "task_id": "<任务提交接口返回task_id>",
-    "req_json": "{\"aigc_meta\": {\"content_producer\": \"001191440300192203821610000\", \"producer_id\": \"producer_id_test123\", \"content_propagator\": \"001191440300192203821610000\", \"propagate_id\": \"propagate_id_test123\"}}"
-}
-```
-
-**返回示例:** 
-```JSON
-{
-    "code": 10000, //状态码,优先判断 code=10000, 然后再判断data.status,否则解析有可能会panic
-    "data": {
-        "aigc_meta_tagged": true,
-        "status": "done", //任务状态
-        "video_url": "https://xxxx"
-    },
-    "message": "Success",
-    "status": 10000,  //无需关注,请忽略
-    "request_id": "2025061718460554C9B78D23B0BAB45B2A",  //排查错误的关键信息
-    "time_elapsed": "508.312154ms" //链路耗时
-}
-```
-
-**返回报错示例:** 
-```JSON
-{
-    "code": 50413, //状态码,优先判断 code=10000, 然后再判断data.status,否则解析有可能会panic
-    "data": null, //code!=10000的情况下,该字段返回为null
-    "message": "Post Text Risk Not Pass", //错误信息
-    "request_id": "202511281418218670D408837A9B0EB58F", //排查错误的关键信息
-    "status": 50413, //无需关注,请忽略
-    "time_elapsed": "36.799829ms" //链路耗时
-}
-```
-
-<span id="WAE8NxIC"></span>
-## 错误码
-<span id="guKxoBDI"></span>
-### **通用错误码**
-请参考[通用返回字段及错误码](https://www.volcengine.com/docs/6444/69728)
-<span id="hFJhfPZT"></span>
-### **业务错误码**
-
-|HttpCode |错误码 |错误消息 |描述 |是否需要重试 |
-|---|---|---|---|---|
-|200 |10000 |无 |请求成功 |不需要 |
-|400 |50411 |Pre Img Risk Not Pass |输入图片前审核未通过 |不需要 |
-|400 |50511 |Post Img Risk Not Pass |输出图片后审核未通过 |可重试 |
-|400 |50412 |Text Risk Not Pass |输入文本前审核未通过 |不需要 |
-|400 |50512 |Post Text Risk Not Pass |输出文本后审核未通过 |不需要 |
-|400 |50513 |Pre Video Risk Not Pass |输入视频前审核未通过 |不需要 |
-|400 |50514 |Pre Audio Risk Not Pass |输入音频前审核未通过 |不需要 |
-|400 |50413 |Post Text Risk Not Pass |输入文本含敏感词、版权词等审核不通过 |不需要 |
-|429 |50429 |Request Has Reached API Limit, Please Try Later |QPS超限 |可重试 |
-|429 |50430 |Request Has Reached API Concurrent Limit, Please Try Later |并发超限 |可重试 |
-|500 |50500 |Internal Error |内部错误 |可重试 |
-|500 |50501 |Internal RPC Error |内部算法错误 |可重试 |
-
-&nbsp;
-<span id="npp6rpqr"></span>
-## 接入说明
-<span id="9GgCcR8x"></span>
-### SDK使用说明
-请参考[SDK使用说明](https://www.volcengine.com/docs/6444/1340578)
-<span id="iDIaPTft"></span>
-### HTTP方式接入说明
-请参考[HTTP请求示例](https://www.volcengine.com/docs/6444/1390583)
-&nbsp;
-
-

+ 0 - 224
docs/BatchListMegaTTSTrainStatus - 分页查询SpeakerID状态.md

@@ -1,224 +0,0 @@
-分页查询已购买的音色状态;支持使用token和声明页数两种分页方式;其中,
-
-* 分页token在最后一页为空
-* 分页token采用私有密钥进行加密
-* 分页接口为新接口,不影响已有接口行为
-
-<span id=".6LCD6K-V"></span>
-## 调试
-<APILink link="https://api.volcengine.com/api-explorer/?action=BatchListMegaTTSTrainStatus&groupName=%E5%A3%B0%E9%9F%B3%E5%A4%8D%E5%88%BB&serviceCode=speech_saas_prod&version=2025-05-21" description="API Explorer 您可以通过 API Explorer 在线发起调用,无需关注签名生成过程,快速获取调用结果。"></APILink>
-<span id=".6K-35rGC5Y-C5pWw"></span>
-## 请求参数
-下方仅列出该接口特有的请求参数和部分公共参数。更多信息请见[公共参数](https://www.volcengine.com/docs/6369/67268)。
-
-
-**Action** <span data-label="purple">string</span> %%require%% `示例值:BatchListMegaTTSTrainStatus`
-要执行的操作,取值:BatchListMegaTTSTrainStatus。
-
-
-**Version** <span data-label="purple">string</span> %%require%% `示例值:2025-05-21`
-API的版本,取值:2025\-05\-21。
-
-
-**ProjectName** <span data-label="purple">string</span> %%require%% `示例值:xxx`
-火山项目名称
-
-
-**SpeakerIDs** <span data-label="purple">string[]</span> `可选` `示例值:S_x123`
-SpeakerID的列表,传空为返回指定ProjeceName下的全部SpeakerID
-
-
-**State** <span data-label="purple">string</span> %%require%% `示例值:Training`
-音色状态,支持取值:Unknown、Training、Success、Active、Expired、Reclaimed
-详见附录:State状态枚举值
-
-
-**OrderTimeStart** <span data-label="purple">long</span> `可选` `示例值:1752204841000`
-下单时间检索上边界毫秒级时间戳,受实例交付速度影响,可能比支付完成的时间晚
-
-
-**OrderTimeEnd** <span data-label="purple">long</span> `可选` `示例值:1752204841000`
-下单时间检索下边界毫秒级时间戳,受实例交付速度影响,可能比支付完成的时间晚
-
-
-**ExpireTimeStart** <span data-label="purple">long</span> `可选` `示例值:1752204841000`
-实例到期时间的检索上边界毫秒级时间戳
-
-
-**ExpireTimeEnd** <span data-label="purple">long</span> `可选` `示例值:1752204841000`
-实例到期时间的检索下边界毫秒级时间戳
-
-
-**PageNumber** <span data-label="purple">integer</span> `可选` `示例值:1`
-页数, 需大于0, 默认为1
-
-
-**PageSize** <span data-label="purple">integer</span> `可选` `示例值:10`
-每页条数
-
-
-**NextToken** <span data-label="purple">string</span> `可选` `示例值:abcdefghijklmn`
-上次请求返回的字符串; 如果不为空的话, 将覆盖PageNumber及PageSize的值
-
-
-**MaxResults** <span data-label="purple">integer</span> `可选` `示例值:10`
-与NextToken相配合控制返回结果的最大数量
-
-
-&nbsp;
-<span id=".6L-U5Zue5Y-C5pWw"></span>
-## 返回参数
-下方仅列出本接口特有的返回参数。更多信息请参见[返回结构](https://www.volcengine.com/docs/6369/80336)。
-
-
-**PageNumber** <span data-label="purple">integer</span> `示例值:1`
-页数
-
-
-**PageSize** <span data-label="purple">integer</span> `示例值:100`
-每页条数
-
-
-**TotalCount** <span data-label="purple">integer</span> `示例值:1000`
-列表总条数
-
-
-**NextToken** <span data-label="purple">string</span> `示例值:abcdefghijklmn`
-下次分页的字符串,用于放在请求参数里的NextToken
-
-
-**Statuses** <span data-label="purple">object[]</span> `示例值:参考响应示例`
-音色列表
-
-**SpeakerID** <span data-label="purple">string</span> `示例值:S_foobar`
-音色ID
-
-
-**InstanceNO** <span data-label="purple">string</span> `示例值:Model_storage_mefoobar`
-火山引擎实例Number
-
-
-**IsActivable** <span data-label="purple">string</span> `示例值:true`
-是否可激活
-
-
-**State** <span data-label="purple">string</span> `示例值:Training`
-音色状态,Unknown、Training、Success、Active、Expired、Reclaimed
-详见附录:State状态枚举值
-
-
-**DemoAudio** <span data-label="purple">string</span> `示例值:https://example.com`
-试听url公网链接,只有success和active状态有
-
-
-**Version** <span data-label="purple">string</span> `示例值:v1`
-SpeakerID已训练过的次数
-
-
-**CreateTime** <span data-label="purple">long</span> `示例值:1700727790000`
-unix epoch格式的创建时间,单位ms
-
-
-**ExpireTime** <span data-label="purple">long</span> `示例值:1964793599000`
-到期时间, 为空的时候表示永远生效
-
-
-**OrderTime** <span data-label="purple">long</span> `示例值:1701771990000`
-下单时间
-
-
-**Alias** <span data-label="purple">string</span> `示例值:foobar`
-模型别名,和控制台同步
-
-
-**AvailableTrainingTimes** <span data-label="purple">integer</span> `示例值:10`
-剩余训练次数
-
-
-
-&nbsp;
-<span id=".6K-35rGC56S65L6L"></span>
-## 请求示例
-```text
-POST /?Action=BatchListMegaTTSTrainStatus&Version=2025-05-21 HTTP/1.1
-Host: https://open.volcengineapi.com
-Content-Type: application/json; charset=UTF-8
-X-Date: 20250711T035336Z
-X-Content-Sha256: 287e874e******d653b44d21e
-Authorization: HMAC-SHA256 Credential=Adfks******wekfwe/20250711/cn-beijing/speech_saas_prod/request, SignedHeaders=host;x-content-sha256;x-date, Signature=47a7d934ff7b37c03938******cd7b8278a40a1057690c401e92246a0e41085f
-
-{
-  "ProjectName": "xxx",
-  "SpeakerIDs": [
-    "S_x123"
-  ],
-  "State": "Training",
-  "OrderTimeStart": 1752204841000,
-  "OrderTimeEnd": 1752204841000,
-  "ExpireTimeStart": 1752204841000,
-  "ExpireTimeEnd": 1752204841000,
-  "PageNumber": 1,
-  "PageSize": 10,
-  "NextToken": "abcdefghijklmn",
-  "MaxResults": 10
-}
-```
-
-<span id=".6L-U5Zue56S65L6L"></span>
-## 返回示例
-```text
-{
-  "ResponseMetadata": {
-    "RequestId": "20250711115347211075189135E05683",
-    "Action": "BatchListMegaTTSTrainStatus",
-    "Version": "2025-05-21",
-    "Service": "speech_saas_prod",
-    "Region": "cn-beijing"
-  },
-  "Result": {
-    "PageNumber": 1,
-    "PageSize": 100,
-    "TotalCount": 1000,
-    "NextToken": "abcdefghijklmn",
-    "Statuses": [
-      {
-        "SpeakerID": "S_foobar",
-        "InstanceNO": "Model_storage_mefoobar",
-        "IsActivable": "true",
-        "State": "Training",
-        "DemoAudio": "https://example.com",
-        "Version": "v1",
-        "CreateTime": 1700727790000,
-        "ExpireTime": 1964793599000,
-        "OrderTime": 1701771990000,
-        "Alias": "foobar",
-        "AvailableTrainingTimes": 10
-      }
-    ]
-  }
-}
-```
-
-<span id=".6ZSZ6K-v56CB"></span>
-## 错误码
-下表为您列举了该接口与业务逻辑相关的错误码。公共错误码请参见[公共错误码](https://www.volcengine.com/docs/6369/68677)文档。
-
-|状态码 |错误码 |错误信息 |说明 |
-|---|---|---|---|
-|400 |InvalidParameter |The specified parameter %s is invalid. | |
-|400 |OperationDenied.InvalidSpeakerID |illegal status to update | |
-|400 |OperationDenied.InvalidInstanceNO |illegal instance number | |
-
-<span id="sdk"></span>
-## SDK
-下表提供了豆包语音支持的SDK列表,您可以在GitHub仓库查看SDK更新历史、获取安装包、查看指导文档。
-
-|类别 |编程语言 |Github地址 |
-|---|---|---|
-|SpeechSaasProd |Java |[volcengine-java-sdk](https://github.com/volcengine/volcengine-java-sdk/tree/master/volcengine-java-sdk-speechsaasprod) |
-|^^|Go |[volcengine-go-sdk](https://github.com/volcengine/volcengine-go-sdk/tree/master/service/speechsaasprod) |
-|^^|Python |[volcengine-python-sdk](https://github.com/volcengine/volcengine-python-sdk/tree/master/volcenginesdkspeechsaasprod) |
-|^^|PHP |[volcengine-php-sdk](https://github.com/volcengine/volcengine-php-sdk/tree/main/src/Speechsaasprod) |
-
-
-

+ 0 - 269
docs/GENERATION_PIPELINES.md

@@ -1,269 +0,0 @@
-# AI 视频生成模式总览
-
-本文档汇总了 Tik-tok 项目内已落地的全部 AI 视频生成模式。整个系统借鉴 [Pixelle-Video](https://github.com/AIDC-AI/Pixelle-Video) 的多流水线架构,前后端均通过**插件式 Pipeline 注册中心**实现解耦:每新增一种模式 ≈ 1 个 Angular 独立组件 + 1 行注册元数据,无需改动主应用。
-
-## 🗂 目录
-
-1. [架构总览](#架构总览)
-2. [六种生成模式](#六种生成模式)
-3. [关键服务与接口](#关键服务与接口)
-4. [新增 Pipeline 的方法](#新增-pipeline-的方法)
-5. [开发与部署](#开发与部署)
-
----
-
-## 架构总览
-
-```
-┌─────────────────────────────────────────────────────────┐
-│                  生成模式中心(Hub)                      │
-│       /src/app/pipelines/pipeline-registry.ts            │
-└────────────────────┬────────────────────────────────────┘
-                     ↓ *ngFor 动态渲染
-┌─────────────────────────────────────────────────────────┐
-│                 侧栏 / Hub 卡片网格                       │
-└────────────────────┬────────────────────────────────────┘
-                     ↓ setCurrentTab(route)
-┌─────────────────────────────────────────────────────────┐
-│  6 个独立 Standalone Angular 组件(按 currentTab 切换)  │
-│                                                          │
-│  ┌──────────┬──────────┬──────────┬──────────┐         │
-│  │ 数字人    │ 标准重塑  │ 图生视频  │ 动作迁移  │ ...     │
-│  └──────────┴──────────┴──────────┴──────────┘         │
-└────────────────────┬────────────────────────────────────┘
-                     ↓ 共享服务层
-┌─────────────────────────────────────────────────────────┐
-│   JimengService / LlmService / ResultsService /         │
-│   composeVideoStream (SSE) / Volc TTS                   │
-└─────────────────────────────────────────────────────────┘
-                     ↓
-┌─────────────────────────────────────────────────────────┐
-│         server.js (Express + ffmpeg + Qiniu)            │
-│  /api/remix/upload-asset       (Qiniu 七牛上传)          │
-│  /api/video/composite          (ffmpeg 同步合成)         │
-│  /api/video/composite/stream   (ffmpeg SSE 流式合成)     │
-└─────────────────────────────────────────────────────────┘
-```
-
-**关键文件:**
-
-| 文件 | 作用 |
-|---|---|
-| `src/app/pipelines/pipeline-registry.ts` | Pipeline 元数据注册中心,决定侧栏与 Hub 卡片 |
-| `src/app/pipelines/composite-sse.ts` | fetch + SSE 客户端 helper |
-| `src/app/services/jimeng.service.ts` | 即梦 API 封装(视频/图像/数字人/动作迁移) |
-| `src/app/services/llm.service.ts` | LLM 对话封装 |
-| `src/app/services/results.service.ts` | 结果库/历史持久化(带 pipelineId) |
-| `src/app/pages/pipelines/<id>/*.component.ts` | 每种模式的独立 Angular 组件 |
-
----
-
-## 六种生成模式
-
-### 1️⃣ 数字人合成 (`digital_human`) — `stable`
-
-> 上传形象图/参考视频 + 脚本,生成数字人口播视频。
-
-- **后端 API**:即梦 OmniHuman `getOhIdentifyMain` → `getOmniHuman`
-- **关键链路**:主体识别 → TTS 合成音频 → 数字人生成 → 轮询结果
-- **计费**:¥1.0/秒
-- **位置**:仍嵌在 `app.html` 主组件中(后续可抽出为独立组件)
-
-### 2️⃣ 标准视频生成 (`video_generation`) — `beta`
-
-> 上传原视频,AI 转录 + 改写 + 重新配音 + 配图后重新合成。
-
-- **入口**:旧版 `vg-*` 流程,与新版生成模式并存
-- **位置**:嵌在 `app.html` 主组件
-
-### 3️⃣ 图生视频 (`image_to_video`) — `beta`
-
-> 单张图(首帧)/ 双张图(首尾帧)/ 单图 + 运镜模板 → 动态视频。
-
-- **后端 API**:即梦 v3 `getVideoV3_720p` / `getVideoV3_1080p` / `getVideoV3_Pro`
-- **支持模式**:
-  - **首帧** (`method='2'`):720P / 1080P / Pro
-  - **首尾帧** (`method='3'`):仅 720P / 1080P
-  - **运镜** (`method='4'`):**仅 720P**,11 种官方模板:
-    - hitchcock_dolly_in/out(希区柯克推进/拉远)
-    - quick_pull_back(超级拉远)
-    - crane_push(起重机)
-    - robo_arm(机械臂)
-    - dynamic_orbit / central_orbit(动感/中心环绕)
-    - clockwise/counterclockwise_swivel(顺/逆时针回旋)
-    - handheld(手持运镜)
-    - rapid_push_pull(快速推拉)
-- **统一入口**:`JimengService.generateImageToVideo(params)`
-- **关键修复**:Pro 接口需顶层 `image_url` + 整数 `aspect_ratio` 1-6(与 720P/1080P 入参不同),已通过 `generateVideoPro` 适配
-- **计费**:720P ¥0.28/秒,1080P ¥0.63/秒,Pro ¥1.0/秒
-- **位置**:`src/app/pages/pipelines/image-to-video/`
-
-### 4️⃣ 动作迁移 (`action_transfer`) — `beta`
-
-> 角色图 + 参考视频 → 让角色按视频中的动作 / 表情 / 口型动起来。
-
-- **后端 API**:即梦 `getActorV2`(动作模仿 2.0,支持多人 / 非真人驱动)
-- **关键链路**:上传 → submit → `pollUntilComplete(workId, 'getActorV2')` → 取 `videos[0]`
-- **关键调整**:服务端 multer `assetUpload` 上限从 50MB 提升至 **200MB** 以支持视频
-- **计费**:¥0.4/秒
-- **位置**:`src/app/pages/pipelines/action-transfer/`
-
-### 5️⃣ 素材合成视频 (`asset_remix`) — `beta`
-
-> 多张图片 + 主题 → AI 生成口播文案 → 火山 TTS 配音 → ffmpeg 拼接成片。
-
-- **关键链路**:
-  1. 多图上传到七牛云(`/api/remix/upload-asset`)
-  2. `LlmService.chat()` 输出 JSON 文案数组
-  3. 串行(`concatMap`)调火山 TTS `/tts/unidirectional` 生成每段 `audioUrl`
-  4. `composeVideoStream`(SSE)→ ffmpeg 实时拼接
-- **风格**:纪实 / 激情 / 故事 / 种草
-- **位置**:`src/app/pages/pipelines/asset-remix/`
-
-### 6️⃣ 主题生视频 (`topic_to_video`) — `beta`
-
-> 一句话主题 → 全自动 4 阶段生成视频。
-
-- **关键链路(一键启动)**:
-  1. **Step 1 LLM 分镜**:拆分成 N 段 `{scene_prompt, narration}` JSON
-  2. **Step 2 即梦 img-v4**:每段 prompt 文生图(串行避免限流)
-  3. **Step 3 火山 TTS**:每段解说合成音频
-  4. **Step 4 ffmpeg SSE 合成**:实时进度推送
-- **风格**:电影感 / 写实 / 动漫 / 插画 / 纪录片(自动注入英文 prompt 后缀)
-- **比例**:横屏 16:9 / 竖屏 9:16 / 方屏 1:1
-- **容错**:单段失败自动跳过,仅当全部失败才 abort
-- **总进度**:综合 4 阶段(分镜 5% + 图 45% + 音 20% + 合成 30%)
-- **位置**:`src/app/pages/pipelines/topic-to-video/`
-
----
-
-## 关键服务与接口
-
-### JimengService 新增方法
-
-```ts
-// 统一图生视频入口,自动按 (method, quality) 路由 + 校验不兼容组合
-generateImageToVideo(params: {
-  imageUrls: string[];
-  prompt: string;
-  method: '2' | '3' | '4';
-  quality: '720p' | '1080p' | 'pro';
-  frames?: number;
-  cameraTemplate?: JimengCameraTemplateId;
-  cameraStrength?: 'weak' | 'medium' | 'strong';
-  aspectRatio?: JimengAspectRatio;
-}, onProgress?): Observable<{ videoUrl, workId }>
-
-// 动作迁移
-actionTransfer(imageUrl, videoUrl, { cutFirstSecond }, onProgress?): Observable<{ videoUrl, workId }>
-```
-
-### 后端 SSE 流式合成
-
-```
-POST /api/video/composite/stream
-Content-Type: application/json
-Body: { segments: [{ id, imageUrl, audioUrl }], title }
-↓
-事件流:
-  event: stage    data: { stage, message }
-  event: progress data: { stage, current, total, percent, message }
-  event: done     data: { videoUrl, filename, size, segments }
-  event: error    data: { error }
-```
-
-前端使用:
-```ts
-import { composeVideoStream } from '@/app/pipelines/composite-sse';
-const handle = composeVideoStream({ segments, title, onProgress, onStage });
-const result = await handle.promise;
-// 可随时 handle.abort()
-```
-
-### 结果与历史
-
-`ResultsService` (`src/app/services/results.service.ts`) 为所有新模式提供统一的结果库 / 历史持久化:
-
-```ts
-this.results.saveResult({ type: 'video', url, title, pipelineId: 'image_to_video', ... });
-this.results.saveHistory({ keyword, status: 'completed', resultUrl, pipelineId, ... });
-```
-
-`GeneratedResult` 与 `HistoryRecord` 接口已添加 `pipelineId` 字段,后续可在结果库 tab 按模式筛选。
-
----
-
-## 新增 Pipeline 的方法
-
-1. **创建组件**:在 `src/app/pages/pipelines/<id>/` 新建 standalone Angular 组件
-2. **注册元数据**:在 `pipeline-registry.ts` 的 `PIPELINES` 数组追加一项
-   ```ts
-   {
-     id: 'new_mode',
-     displayName: '新模式',
-     description: '...',
-     inputHint: '...',
-     iconSvg: '<...>',
-     route: 'new-mode',
-     status: 'beta',
-     showInSidebar: true,
-   }
-   ```
-3. **扩展类型**:`pipeline-registry.ts` 的 `PipelineRoute` 联合类型加新 route
-4. **注入主组件**:`app.ts` import + 加入 `imports` 数组
-5. **接入路由**:`app.html` 加 `<app-new-mode *ngIf="currentTab === 'new-mode'">`
-6. **类型联合**:`app.ts` 的 `currentTab` 联合 + `setCurrentTab`/`restoreCurrentTab` 签名同步
-7. **持久化(可选)**:注入 `ResultsService`,在成功回调中 `saveResult` + `saveHistory` 带 pipelineId
-
----
-
-## 开发与部署
-
-### 启动开发环境
-
-```powershell
-# 后端(含 ffmpeg / Qiniu / SSE)
-node server.js
-
-# 前端
-npm run start
-```
-
-打开 `http://localhost:4200`,侧栏点击 **生成模式** 进入 Hub 选择模式。
-
-### 依赖
-
-| 依赖 | 用途 |
-|---|---|
-| **ffmpeg** | 必须在系统 PATH(视频合成、音频提取) |
-| **七牛云** | 公网素材存储(即梦 / 动作迁移要求公网 URL) |
-| **即梦 token** | 视频 / 图像 / 数字人 / 动作迁移付费 API |
-| **火山 TTS token** | TTS 配音 |
-| **LLM** | DeepSeek/GPT/Claude,通过 `/api/llm/chat` 统一代理 |
-
-### 上线检查清单
-
-- [ ] `node server.js` 启动无报错
-- [ ] 七牛 Access Key / Secret Key 配置正确
-- [ ] 即梦 token 余额充足
-- [ ] ffmpeg `ffmpeg -version` 可调用
-- [ ] 前端 `ng build --configuration production` 无错误
-- [ ] 进入 **生成模式** Hub,6 张卡片可见且状态正确
-- [ ] 各 Beta 模式按指引可生成成片
-- [ ] 结果库可见各 pipelineId 的记录
-
-### 已知限制
-
-| 限制 | 说明 |
-|---|---|
-| Pro 不支持首尾帧/运镜 | UI 已自动禁用,切换模式时回退到 720P/1080P |
-| 运镜仅 720P | UI 已自动锁定 |
-| TTS 串行 | 火山 API QPS 限制,串行更稳定 |
-| 数字人 / 标准 AI 重塑仍嵌主组件 | 后续可抽出为独立组件以彻底解耦 |
-| 结果库 UI 无模式筛选 | `pipelineId` 已落库,UI 筛选器可后续添加 |
-
----
-
-## 致谢
-
-本系统的多 Pipeline 架构设计借鉴 [Pixelle-Video](https://github.com/AIDC-AI/Pixelle-Video) 的双层抽象(`BasePipeline` + `PipelineUI`)与生成模式分类。

+ 0 - 101
docs/MIGRATION_DIGITAL_HUMAN.md

@@ -1,101 +0,0 @@
-# 数字人合成页 DOM/逻辑抽离迁移计划
-
-## 现状
-
-数字人合成(`currentTab === 'digital-human'`)是项目最早最成熟的生成流程,但代码完全嵌在主组件 `App` 中:
-
-| 资产 | 位置 | 估计规模 |
-|---|---|---|
-| 模板 | `src/app/app.html`(数字人 section) | ~700 行 |
-| 字段 | `src/app/app.ts` 中 `dh*` 前缀 | ~60+ 字段 |
-| 方法 | `src/app/app.ts` 中 `dh*` 前缀 | ~40+ 方法 |
-| AI 对话助手 | `dhChat*` 子系统 | ~200 行 |
-| 共享依赖 | `voiceProfiles` / `managedVideos` / `JimengService` / `refreshView` / `showToast` 等 | 与主组件强耦合 |
-
-## 为什么暂不抽离
-
-- 现有逻辑已生产可用,单测覆盖率为 0
-- 状态依赖跨越 `App` 主组件多个子系统(音色库、视频管理、任务队列、历史/结果)
-- 一次性整体抽离风险高,可能引入难以复现的 UI 状态 bug
-- 用户当前迭代节奏快,更应聚焦新模式增量价值
-
-## 推荐渐进式迁移路径
-
-### Stage 1:**只搬模板** ✅ 优先
-
-将 `app.html` 中数字人 section 整段移到 `digital-human.component.html`,组件通过 `@Input()` 接收主组件提供的全部 `dh*` 字段,通过 `@Output()` 反向触发主组件的 `dh*` 方法。
-
-```ts
-// digital-human.component.ts(简化示意)
-@Component({
-  selector: 'app-digital-human',
-  templateUrl: './digital-human.component.html',
-})
-export class DigitalHumanComponent {
-  @Input() dhStep = 1;
-  @Input() dhRefVideoUrl = '';
-  @Input() dhTtsText = '';
-  // ... 60+ 字段全部映射
-  @Output() actionUploadRef = new EventEmitter<File>();
-  @Output() actionStartGeneration = new EventEmitter<void>();
-  // ... 40+ 事件
-}
-```
-
-主组件 `app.html` 内容简化为:
-
-```html
-<app-digital-human *ngIf="currentTab === 'digital-human'"
-  [dhStep]="dhStep"
-  [dhRefVideoUrl]="dhRefVideoUrl"
-  ...
-  (actionStartGeneration)="dhStartGeneration()"
-  ...
-></app-digital-human>
-```
-
-**风险**:纯模板搬迁,不动逻辑;可在分支上回归一次完整数字人流程后合并。
-
-### Stage 2:**抽离 AI 对话子系统**
-
-`dhChat*` 是相对独立的子系统:上下文管理 + LLM 调用 + 历史保存。可以先抽出:
-
-- `src/app/components/dh-chat-assistant/`:独立组件,接收 `referenceTranscript`、`currentScript`,发出 `scriptUpdate` 事件
-- 主组件解耦 `dhChatSend` / `dhChatHistory` 字段
-
-### Stage 3:**抽离状态到 Service**
-
-创建 `DigitalHumanStateService`(`@Injectable({ providedIn: 'root' })`)持有所有 `dh*` 状态字段,主组件与新组件均通过依赖注入访问。
-
-```ts
-@Injectable({ providedIn: 'root' })
-export class DigitalHumanStateService {
-  state = signal<DhState>({
-    step: 1,
-    refVideoUrl: '',
-    ttsText: '',
-    // ...
-  });
-
-  startGeneration() { /* ... */ }
-}
-```
-
-### Stage 4:**最终独立组件**
-
-数字人组件成为完全自包含的 standalone 组件,与其它五种生成模式架构对齐。`app.ts` 中 `dh*` 字段全部移除。
-
-## 时间预估
-
-| Stage | 工时 | 风险 |
-|---|---|---|
-| 1(模板搬迁) | 1-2 天 | 中 |
-| 2(AI 对话抽离) | 1 天 | 低 |
-| 3(状态 Service) | 2-3 天 | 高 |
-| 4(最终自包含) | 1 天 | 中 |
-
-**建议**:仅在确实需要数字人组件多处复用、或主组件 `app.ts` 行数过大严重影响开发体验时再启动 Stage 3+,否则保留现状即可。
-
-## 临时锚点
-
-`src/app/pages/pipelines/digital-human/digital-human.component.ts`:占位组件,未来 Stage 1 起可直接在此填充模板。

+ 0 - 8
docs/Pixelle-Video-main/.devcontainer/devcontainer.json

@@ -1,8 +0,0 @@
-{
-  "name": "Pixelle-Video Codespace",
-  "image": "mcr.microsoft.com/devcontainers/python:1-3.11",
-  "forwardPorts": [8501],
-  "postCreateCommand": ".devcontainer/postCreate.sh",
-  "postStartCommand": ".devcontainer/postStart.sh",
-  "remoteUser": "vscode"
-}

+ 0 - 58
docs/Pixelle-Video-main/.devcontainer/postCreate.sh

@@ -1,58 +0,0 @@
-#!/usr/bin/env bash
-set -uo pipefail
-
-echo "[devcontainer] Running postCreate tasks..."
-
-cd /workspaces/Pixelle-Video
-
-# ============================================================================
-# System Dependencies Installation
-# ============================================================================
-
-export DEBIAN_FRONTEND=noninteractive
-
-# Remove problematic Yarn repository if it exists
-echo "[devcontainer] Removing problematic repositories..."
-sudo rm -f /etc/apt/sources.list.d/yarn.sources 2>/dev/null || true
-sudo rm -f /etc/apt/sources.list.d/yarn.list 2>/dev/null || true
-
-# Update package lists
-echo "[devcontainer] Updating package lists..."
-sudo apt-get update -y || {
-  echo "[devcontainer] Warning: apt-get update had issues, continuing anyway..."
-  true
-}
-
-# Install system packages needed by the project
-echo "[devcontainer] Installing system packages..."
-sudo apt-get install -y --no-install-recommends \
-  ffmpeg \
-  fontconfig \
-  fonts-liberation \
-  fonts-noto-cjk \
-  wget \
-  xdg-utils \
-  ca-certificates || true
-
-# Verify installation
-echo "[devcontainer] Verifying system packages..."
-echo "[devcontainer] Chinese fonts (sample):"
-fc-list :lang=zh | head -n 10 || true
-
-# ============================================================================
-# Python Dependencies Installation
-# ============================================================================
-
-# Install uv package manager
-echo "[devcontainer] Installing uv package manager..."
-pip install uv --quiet
-
-# Install Python dependencies with uv
-echo "[devcontainer] Installing Python dependencies with uv..."
-uv sync --frozen
-
-# Install Playwright browser (Chromium for HTML template rendering)
-echo "[devcontainer] Installing Playwright Chromium browser..."
-uv run playwright install --with-deps chromium || true
-
-echo "[devcontainer] postCreate complete. Streamlit will start automatically via postStart.sh"

+ 0 - 44
docs/Pixelle-Video-main/.devcontainer/postStart.sh

@@ -1,44 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-
-echo "[devcontainer] postStart: launching Pixelle-Video Web UI in background..."
-cd /workspaces/Pixelle-Video
-
-# Set Streamlit config for headless mode and proper port binding
-export STREAMLIT_SERVER_PORT=8501
-export STREAMLIT_SERVER_ADDRESS=0.0.0.0
-export STREAMLIT_SERVER_HEADLESS=true
-export STREAMLIT_LOGGER_LEVEL=info
-export UV_LINK_MODE=copy
-
-# Start the web UI in background so the forwarded port is ready
-nohup bash start_web.sh > /tmp/pixelle_streamlit.log 2>&1 &
-WEB_PID=$!
-echo "[devcontainer] Streamlit started with PID $WEB_PID (logs: /tmp/pixelle_streamlit.log)"
-
-# Wait briefly for startup and show success message
-sleep 3
-if ps -p $WEB_PID > /dev/null 2>&1; then
-    echo ""
-    echo "✅ Pixelle-Video Web UI is launching on port 8501"
-    echo "🌐 The URL will be available shortly (usually within 5-10 seconds)"
-    echo ""
-else
-    echo ""
-    echo "⚠️ Warning: Process may have exited. Check logs with: tail -f /tmp/pixelle_streamlit.log"
-    echo ""
-fi
-
-echo "Common commands:"
-echo "1. View logs:"
-echo "   tail -f /tmp/pixelle_streamlit.log"
-echo "2. Stop service:"
-echo "   pkill -f 'streamlit run web/app.py'"
-echo "3. Restart service:"
-echo "   pkill -f 'streamlit run web/app.py' && nohup bash start_web.sh > /tmp/pixelle_streamlit.log 2>&1 &"
-echo "4. Check port usage:"
-echo "   lsof -i:8501"
-echo "5. View processes:"
-echo "   ps aux | grep streamlit"
-echo ""
-echo "For more help, see README or run 'ps aux | grep streamlit'."

+ 0 - 71
docs/Pixelle-Video-main/.dockerignore

@@ -1,71 +0,0 @@
-# Python
-__pycache__/
-*.py[cod]
-*$py.class
-*.so
-.Python
-*.egg-info/
-dist/
-build/
-*.egg
-
-# Virtual environments
-.venv/
-venv/
-ENV/
-env/
-
-# IDE
-.vscode/
-.idea/
-*.swp
-*.swo
-*~
-
-# Git
-.git/
-.gitignore
-.gitattributes
-
-# Documentation
-docs/*
-!docs/images/
-!docs/FAQ*.md
-*.md
-!README.md
-
-# Plans and development files
-plans/
-repositories/
-examples/
-
-# Test files
-test_*.py
-tests/
-*.log
-
-# Output and temporary files
-output/*
-!output/.gitkeep
-temp/
-*.tmp
-
-# User data (will be mounted)
-data/users/*
-!data/.gitkeep
-
-# Config (will be mounted)
-config.yaml
-config.yaml.bak
-config.example.yaml
-
-# macOS
-.DS_Store
-.AppleDouble
-.LSOverride
-
-# Misc
-*.bak
-restart_web.sh
-start_web.sh
-

+ 0 - 45
docs/Pixelle-Video-main/.github/workflows/docs.yml

@@ -1,45 +0,0 @@
-name: Deploy Documentation
-
-on:
-  push:
-    branches:
-      - main
-    paths:
-      - 'docs/**'
-      - 'mkdocs.yml'
-      - '.github/workflows/docs.yml'
-  workflow_dispatch:  # Allow manual trigger
-
-permissions:
-  contents: write
-
-jobs:
-  deploy:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout code
-        uses: actions/checkout@v4
-        with:
-          fetch-depth: 0  # Fetch all history for git-revision-date-localized plugin
-
-      - name: Setup Python
-        uses: actions/setup-python@v5
-        with:
-          python-version: '3.12'
-
-      - name: Cache dependencies
-        uses: actions/cache@v4
-        with:
-          path: ~/.cache/pip
-          key: ${{ runner.os }}-pip-${{ hashFiles('requirements-docs.txt') }}
-          restore-keys: |
-            ${{ runner.os }}-pip-
-
-      - name: Install dependencies
-        run: |
-          pip install --upgrade pip
-          pip install -r requirements-docs.txt
-
-      - name: Build and deploy documentation
-        run: mkdocs gh-deploy --force
-

+ 0 - 76
docs/Pixelle-Video-main/.gitignore

@@ -1,76 +0,0 @@
-# Python
-__pycache__/
-*.py[cod]
-*$py.class
-*.so
-.Python
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-
-# Virtual environments
-venv/
-ENV/
-env/
-.venv/
-
-# IDEs
-.vscode/
-.idea/
-*.swp
-*.swo
-*~
-.cursorrules
-.cursorignore
-.kiro/
-
-# OS
-.DS_Store
-Thumbs.db
-
-# Config files with sensitive data
-config.yaml
-config.yaml.bak
-*.yaml.bak
-.env
-
-# Logs
-*.log
-
-# Test outputs
-test_outputs/
-*.mp3
-*.wav
-*.bak
-test_*.py
-
-!bgm/default.mp3
-
-# Temp files
-temp/
-tmp/
-.cache/
-
-# MkDocs build output
-site/
-
-data
-output
-
-plans/
-examples/
-repositories/
-
-*.out

+ 0 - 77
docs/Pixelle-Video-main/Dockerfile

@@ -1,77 +0,0 @@
-# Pixelle-Video Docker Image
-# Based on Python 3.11 slim for smaller image size
-
-FROM python:3.11-slim
-
-# Build arguments for mirror configuration
-# USE_CN_MIRROR: whether to use China mirrors (true/false)
-ARG USE_CN_MIRROR=false
-
-# Set working directory
-WORKDIR /app
-
-# Replace apt sources with China mirrors if needed
-# Debian 12 uses DEB822 format in /etc/apt/sources.list.d/debian.sources
-RUN if [ "$USE_CN_MIRROR" = "true" ]; then \
-    sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources && \
-    sed -i 's|security.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources; \
-    fi
-
-# Install system dependencies
-# - curl: for health checks and downloads
-# - ffmpeg: for video/audio processing
-# - fonts-noto-cjk: for CJK character support
-RUN apt-get update && apt-get install -y \
-    curl \
-    ffmpeg \
-    fonts-noto-cjk \
-    && rm -rf /var/lib/apt/lists/*
-
-# Install uv package manager
-# For China: use pip to install uv from mirror (faster and more stable)
-# For International: use official installer script
-RUN if [ "$USE_CN_MIRROR" = "true" ]; then \
-        pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple/ uv; \
-    else \
-        curl -LsSf https://astral.sh/uv/install.sh | sh; \
-    fi
-ENV PATH="/root/.local/bin:$PATH"
-RUN uv --version
-
-# Copy dependency files and source code for building
-# Note: pixelle_video is needed for hatchling to build the package
-COPY pyproject.toml uv.lock README.md ./
-COPY pixelle_video ./pixelle_video
-
-# Create virtual environment and install dependencies
-# Use -i flag to specify mirror when USE_CN_MIRROR=true
-RUN export UV_HTTP_TIMEOUT=300 && \
-    uv venv && \
-    if [ "$USE_CN_MIRROR" = "true" ]; then \
-        uv pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple; \
-    else \
-        uv pip install -e .; \
-    fi && \
-    uv run playwright install --with-deps chromium
-
-# Copy rest of application code
-COPY api ./api
-COPY web ./web
-COPY bgm ./bgm
-COPY templates ./templates
-COPY workflows ./workflows
-COPY resources ./resources
-COPY docs/images ./docs/images
-COPY docs/FAQ*.md ./docs/
-
-# Create output, data and temp directories
-RUN mkdir -p /app/output /app/data /app/temp
-
-# Expose ports
-# 8000: API service
-# 8501: Web UI service
-EXPOSE 8000 8501
-
-# Default command (can be overridden in docker-compose)
-CMD ["uv", "run", "python", "api/app.py"]
-

+ 0 - 201
docs/Pixelle-Video-main/LICENSE

@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

+ 0 - 150
docs/Pixelle-Video-main/NOTICE

@@ -1,150 +0,0 @@
-Copyright (C) 2025 AIDC-AI
-This project incorporates components from the Open Source Software below. 
-The original copyright notices and the licenses under which we received such components are set forth below for informational purposes. 
-
-Open Source Software Licensed under the MIT-CMU License:
---------------------------------------------------------------------
-1. pillow 11.3.0 
-Terms of the MIT-CMU: 
---------------------------------------------------------------------
-By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply with the following terms and conditions:
-
-Permission to use, copy, modify, and distribute this software and its associated documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies, and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of the copyright holder not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.
-
-THE COPYRIGHT HOLDER DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM THE LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-
-
-Open Source Software Licensed under the BSD-3-Clause License:
---------------------------------------------------------------------
-1. httpx 0.28.1 https://pypi.org/project/httpx
-copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-Terms of the BSD-3-Clause: 
---------------------------------------------------------------------
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-Open Source Software Licensed under the Apache-2.0 License:
---------------------------------------------------------------------
-1. streamlit 1.40.0 https://pypi.org/project/streamlit
-Copyright 2018 Adrien Treuille
-Copyright 2018 Streamlit Inc. All rights reserved.
-Copyright 2008 Google Inc.  All rights reserved.
-2. openai 2.6.0 
-3. python-multipart 0.0.20 https://pypi.org/project/python-multipart
-Copyright (c) 2010 by Armin Ronacher.
-Copyright 2012; Andrew Dunham
-4. ffmpeg-python 0.2.0 https://pypi.org/project/ffmpeg-python
-Copyright 2017 Karl Kroening
-Terms of the Apache-2.0: 
---------------------------------------------------------------------
-Apache License
-Version 2.0, January 2004
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-     (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-     (b) You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-     (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-     (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
-
-     You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!)  The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-
-Open Source Software Licensed under the MIT License:
---------------------------------------------------------------------
-1. fastmcp 2.0.0 https://pypi.org/project/fastmcp
-2. pyyaml 6.0.0 
-3. comfykit 0.1.6 
-4. certifi 2025.10.5 
-5. playwright 1.58.0 https://pypi.org/project/playwright
-Copyright (c) Microsoft Corporation
-6. edge-tts 7.2.3 
-7. fastapi 0.115.0 https://pypi.org/project/fastapi
-Copyright (c) 2018 Sebasti  n Ram  rez
-Copyright (c) 2018 Sebasti..n Ram..rez
-Copyright (c) 2018 Sebasti10n Ram.:rez
-8. pydantic 2.0.0 
-9. loguru 0.7.0 https://pypi.org/project/loguru
-Copyright (c) 2017 
-Terms of the MIT: 
---------------------------------------------------------------------
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 0 - 436
docs/Pixelle-Video-main/README.md

@@ -1,436 +0,0 @@
-<h1 align="center">🎬 Pixelle-Video —— AI 全自动短视频引擎</h1>
-
-<p align="center"><a href="README_EN.md">English</a> | <b>中文</b></p>
-
-<p align="center">
-  <a href="https://www.bilibili.com/video/BV1WzyGBnEVp/?vd_source=e7e7d4ca8db9a18c80f17a24a6582fca" target="_blank"><img src="https://img.shields.io/badge/🎥 视频教程-EA4C89" alt="视频教程"></a>
-  <a href="https://github.com/AIDC-AI/Pixelle-Video/releases" target="_blank"><img src="https://img.shields.io/badge/📦 Windows包-50C878" alt="Windows整合包"></a>
-  <a href="https://aidc-ai.github.io/Pixelle-Video/zh" target="_blank"><img src="https://img.shields.io/badge/📘 使用文档-4A90E2" alt="使用文档"></a>
-  <a href="https://github.com/AIDC-AI/Pixelle-Video/stargazers"><img src="https://img.shields.io/github/stars/AIDC-AI/Pixelle-Video.svg" alt="Stargazers"></a>
-  <a href="https://github.com/AIDC-AI/Pixelle-Video/issues"><img src="https://img.shields.io/github/issues/AIDC-AI/Pixelle-Video.svg" alt="Issues"></a>
-  <a href="https://github.com/AIDC-AI/Pixelle-Video/network/members"><img src="https://img.shields.io/github/forks/AIDC-AI/Pixelle-Video.svg" alt="Forks"></a>
-  <a href="https://github.com/AIDC-AI/Pixelle-Video/blob/main/LICENSE"><img src="https://img.shields.io/github/license/AIDC-AI/Pixelle-Video.svg" alt="License"></a>
-</p>
-
-https://github.com/user-attachments/assets/a42e7457-fcc8-40da-83fc-784c45a8b95d
-
-<br/>
-
-只需输入一个 **主题**,Pixelle-Video 就能自动完成:
-- ✍️ 撰写视频文案  
-- 🎨 生成 AI 配图/视频  
-- 🗣️ 合成语音解说  
-- 🎵 添加背景音乐  
-- 🎬 一键合成视频  
-
-**零门槛,零剪辑经验**,让视频创作成为一句话的事!
-
-
-## 🖥️ Web 界面预览
-
-![Web UI界面](resources/webui.png)
-
-
-## 📋 最近更新
-
-- ✅ **2026-01-26**: 新增「动作迁移」模块,上传参考视频和图片进行动作迁移
-- ✅ **2026-01-14**: 新增「数字人口播」和「图生视频」流水线,新增多语言 TTS 音色支持
-- ✅ **2026-01-06**: 新增 RunningHub 48G 显存机器调用支持
-- ✅ **2025-12-28**: 支持 RunningHub 并发限制可配置,优化 LLM 返回结构化数据的逻辑
-- ✅ **2025-12-17**: 支持 ComfyUI API Key 配置,支持 Nano Banana 模型调用,API 接口支持模板自定义参数
-- ✅ **2025-12-10**: 侧边栏内置 FAQ,锁定 edge-tts 版本修复 TTS 服务不稳定问题
-- ✅ **2025-12-08**: 支持固定脚本多种分割方式(段落/行/句子),优化模板选择交互逻辑支持直接预览选择
-- ✅ **2025-12-06**: 修复视频生成 API 返回 URL 路径处理,支持跨平台兼容
-- ✅ **2025-12-05**: 新增 Windows 整合包下载,优化图片与视频反推工作流
-- ✅ **2025-12-04**: 新增「自定义素材」功能,支持用户上传自己的照片和视频,AI 智能分析生成脚本
-- ✅ **2025-11-18**: 优化 RunningHub 服务调用支持并行处理,新增历史记录页面,支持批量创建视频任务
-
-
-## ✨ 功能亮点
-
-- ✅ **全自动生成** - 输入主题,自动生成完整视频
-- ✅ **AI 智能文案** - 根据主题智能创作解说词,无需自己写脚本
-- ✅ **AI 生成配图** - 每句话都配上精美的 AI 插图
-- ✅ **AI 生成视频** - 支持使用 AI 视频生成模型(如 WAN 2.1)创建动态视频内容
-- ✅ **AI 生成语音** - 支持 Edge-TTS、Index-TTS 等众多主流 TTS 方案
-- ✅ **背景音乐** - 支持添加 BGM,让视频更有氛围
-- ✅ **视觉风格** - 多种模板可选,打造独特视频风格
-- ✅ **灵活尺寸** - 支持竖屏、横屏等多种视频尺寸
-- ✅ **多种 AI 模型** - 支持 GPT、通义千问、DeepSeek、Ollama 等
-- ✅ **原子能力灵活组合** - 基于 ComfyUI 架构,可使用预置工作流,也可自定义任意能力(如替换生图模型为 FLUX、替换 TTS 为 ChatTTS 等)
-
-
-## 📊 视频生成流程
-
-Pixelle-Video 采用模块化设计,整个视频生成流程清晰简洁:
-
-![视频生成流程图](resources/flow.png)
-
-从输入文本到最终视频输出,整个流程简洁清晰:**文案生成 → 配图规划 → 逐帧处理 → 视频合成**
-
-每个环节都支持灵活定制,可选择不同的 AI 模型、音频引擎、视觉风格等,满足个性化创作需求。
-
-
-## 🎬 视频示例
-
-以下是使用 Pixelle-Video 生成的实际案例,展示了不同主题和风格的视频效果:
-
-### 📱 扩展模块视频展示
-
-<table>
-<tr>
-<td width="33%">
-<h3>👤 数字人口播</h3>
-<video src="https://github.com/user-attachments/assets/7c122563-c2e0-4dcd-a73c-25ba1d4fa2dd" controls width="100%"></video>
-<p align="center"><b>韩语数字人口播</b></p>
-</td>
-<td width="33%">
-<h3>🖼️ 图生视频</h3>
-<video src="https://github.com/user-attachments/assets/5b4eef17-07d0-4bde-9748-2ed68cc9888e" controls width="100%"></video>
-<p align="center"><b>卡通视频</b></p>
-</td>
-<td width="33%">
-<h3>💃 动作迁移</h3>
-<video src="https://github.com/user-attachments/assets/7b1240bc-e965-434c-b343-118ec4793d4f" controls width="100%"></video>
-<p align="center"><b>跳舞小猫</b></p>
-</td>
-</tr>
-</table>
-
-
-### 📱 竖屏视频展示
-
-<table>
-<tr>
-<td width="33%">
-<h3>🌄 人文纪实类 - 视频默认模版</h3>
-<video src="https://github.com/user-attachments/assets/e6716c1d-78de-453d-84c2-10873c8c595f" controls width="100%"></video>
-<p align="center"><b>旅行路上的风景让人流连忘返</b></p>
-</td>
-<td width="33%">
-<h3>🔍 文化解构类 - 视频默认模版</h3>
-<video src="https://github.com/user-attachments/assets/f5de75f6-135a-4ab4-9f5f-079f649764d5" controls width="100%"></video>
-<p align="center"><b>Santa ID</b></p>
-</td>
-<td width="33%">
-<h3>🔭 科学思辨类 - 视频默认模版</h3>
-<video src="https://github.com/user-attachments/assets/ceb8b0df-8331-4e1f-88e7-db5b295a1c1d" controls width="100%"></video>
-<p align="center"><b>为什么我们还没有找到外星文明?</b></p>
-</td>
-</tr>
-<tr>
-<td width="33%">
-<h3>🌱 个人成长类 - 克隆音色</h3>
-<video src="https://github.com/user-attachments/assets/1bad9a49-df83-4905-9cc8-9a7640e9c7d8" controls width="100%"></video>
-<p align="center"><b>如何提升自己</b></p>
-</td>
-<td width="33%">
-<h3>🧠 深度思考类 - 默认模板</h3>
-<video src="https://github.com/user-attachments/assets/663b705a-2aea-44bc-b266-4bb27aa255a8" controls width="100%"></video>
-<p align="center"><b>如何理解反脆弱</b></p>
-</td>
-<td width="33%">
-<h3>🏯 历史文化类 - 固定画面</h3>
-<video src="https://github.com/user-attachments/assets/56e0a018-fa99-47eb-a97f-fc2fa8915724" controls width="100%"></video>
-<p align="center"><b>资治通鉴</b></p>
-</td>
-</tr>
-<tr>
-<td width="33%">
-<h3>☀️ 情感类 - 克隆音色</h3>
-<video src="https://github.com/user-attachments/assets/4687df95-dd21-4a7b-b01e-f33a7b646644" controls width="100%"></video>
-<p align="center"><b>冬日暖阳</b></p>
-</td>
-<td width="33%">
-<h3>📜 小说解说类 - 自创脚本</h3>
-<video src="https://github.com/user-attachments/assets/d354465e-3fa8-40b4-93e9-61ad75ef0697" controls width="100%"></video>
-<p align="center"><b>斗破苍穹</b></p>
-</td>
-<td width="33%">
-<h3>🧬 知识科普类 - Qwen生图</h3>
-<video src="https://github.com/user-attachments/assets/8ac21768-41ce-4d41-acdd-e3dd3eb9725a" controls width="100%"></video>
-<p align="center"><b>养生知识</b></p>
-</td>
-</tr>
-</table>
-
-### 🖥️ 横屏视频展示
-
-<table>
-<tr>
-<td width="50%">
-<h3>💰 副业赚钱 - 电影模板</h3>
-<video src="https://github.com/user-attachments/assets/c9209d4e-73a6-4b82-aaad-cf102248c9e2" controls width="100%"></video>
-<p align="center"><b>副业赚钱</b></p>
-</td>
-<td width="50%">
-<h3>🏛️ 历史解说 - 自定义模板</h3>
-<video src="https://github.com/user-attachments/assets/a767c452-d5f1-4cff-bb34-b80fff0d4c3e" controls width="100%"></video>
-<p align="center"><b>资治通鉴启示录</b></p>
-</td>
-</tr>
-</table>
-
-> 💡 **提示**: 这些视频都是通过输入一个主题关键词,由 AI 全自动生成的,无需任何视频剪辑经验!
-
-
-<div id="tutorial-start" />
-
-
-## 🚀 快速开始
-
-### 🪟 Windows 一键整合包(推荐 Windows 用户使用)
-
-**无需安装 Python、uv 或 ffmpeg,一键开箱即用!**
-
-👉 **[下载 Windows 一键整合包](https://github.com/AIDC-AI/Pixelle-Video/releases/latest)**
-
-1. 下载最新的 Windows 一键整合包并解压
-2. 双击运行 `start.bat` 启动 Web 界面
-3. 浏览器会自动打开 http://localhost:8501
-4. 在「⚙️ 系统配置」中配置 LLM API 和图像生成服务
-5. 开始生成视频!
-
-> 💡 **提示**: 整合包已包含所有依赖,无需手动安装任何环境。首次使用只需配置 API 密钥即可。
-
-
-### 从源码安装(适合 macOS / Linux 用户或需要自定义的用户)
-
-#### 前置环境依赖
-
-在开始之前,需要先安装 Python 包管理器 `uv` 和视频处理工具 `ffmpeg`:
-
-##### 安装 uv
-
-请访问 uv 官方文档查看适合你系统的安装方法:  
-👉 **[uv 安装指南](https://docs.astral.sh/uv/getting-started/installation/)**
-
-安装完成后,在终端中运行 `uv --version` 验证安装成功。
-
-##### 安装 ffmpeg
-
-**macOS**
-```bash
-brew install ffmpeg
-```
-
-**Ubuntu / Debian**
-```bash
-sudo apt update
-sudo apt install ffmpeg
-```
-
-**Windows**
-- 下载地址:https://ffmpeg.org/download.html
-- 下载后解压,将 `bin` 目录添加到系统环境变量 PATH 中
-
-安装完成后,在终端中运行 `ffmpeg -version` 验证安装成功。
-
-
-#### 第一步:下载项目
-
-```bash
-git clone https://github.com/AIDC-AI/Pixelle-Video.git
-cd Pixelle-Video
-```
-
-#### 第二步:启动 Web 界面
-
-```bash
-# 使用 uv 运行(推荐,会自动安装依赖)
-uv run streamlit run web/app.py
-```
-
-浏览器会自动打开 http://localhost:8501
-
-#### 第三步:在 Web 界面配置
-
-首次使用时,展开「⚙️ 系统配置」面板,填写:
-- **LLM 配置**: 选择 AI 模型(如通义千问、GPT 等)并填入 API Key
-- **图像配置**: 如需生成图片,配置 ComfyUI 地址或 RunningHub API Key
-
-配置好后点击「保存配置」,就可以开始生成视频了!
-
-<div id="tutorial-end" />
-
-## 💻 使用方法
-
-打开 Web 界面后,你会看到三栏布局,下面详细讲解每个部分:
-
-
-### ⚙️ 系统配置(首次必填)
-
-首次使用时需要配置,点击展开「⚙️ 系统配置」面板:
-
-#### 1. LLM 配置(大语言模型)
-用于生成视频文案的 AI。
-
-**快速选择预设**  
-- 通过下拉菜单选择预设模型(通义千问、GPT-4o、DeepSeek 等)
-- 选择后会自动填充 base_url 和 model
-- 点击「🔑 获取 API Key」链接去注册并获取密钥
-
-**手动配置**  
-- API Key: 填入你的密钥
-- Base URL: API 地址
-- Model: 模型名称
-
-#### 2. 图像配置
-用于生成视频配图的 AI。
-
-**本地部署(推荐)**  
-- ComfyUI URL: 本地 ComfyUI 服务地址(默认 http://127.0.0.1:8188)
-- 点击「测试连接」确认服务可用
-
-**云端部署**  
-- RunningHub API Key: 云端图像生成服务的密钥
-
-配置完成后点击「保存配置」。
-
-
-### 📝 内容输入(左侧栏)
-
-#### 生成模式
-- **AI 生成内容**: 输入主题,AI 自动创作文案
-  - 适合:想快速生成视频,让 AI 写稿
-  - 例如:「为什么要养成阅读习惯」
-- **固定文案内容**: 直接输入完整文案,跳过 AI 创作
-  - 适合:已有现成文案,直接生成视频
-
-#### 背景音乐(BGM)
-- **无 BGM**: 纯人声解说
-- **内置音乐**: 选择预置的背景音乐(如 default.mp3)
-- **自定义音乐**: 将你的音乐文件(MP3/WAV 等)放到 `bgm/` 文件夹
-- 点击「试听 BGM」可以预览音乐
-
-
-### 🎤 语音设置(中间栏)
-
-#### TTS 工作流
-- 从下拉菜单选择 TTS 工作流(支持 Edge-TTS、Index-TTS 等)
-- 系统会自动扫描 `workflows/` 文件夹中的 TTS 工作流
-- 如果懂 ComfyUI,可以自定义 TTS 工作流
-
-#### 参考音频(可选)
-- 上传参考音频文件用于声音克隆(支持 MP3/WAV/FLAC 等格式)
-- 适用于支持声音克隆的 TTS 工作流(如 Index-TTS)
-- 上传后可以直接试听
-
-#### 预览功能
-- 输入测试文本,点击「预览语音」即可试听效果
-- 支持使用参考音频进行预览
-
-
-### 🎨 视觉设置(中间栏)
-
-#### 图像生成
-决定 AI 生成什么风格的配图。
-
-**ComfyUI 工作流**  
-- 从下拉菜单选择图像生成工作流
-- 支持本地部署(selfhost)和云端(RunningHub)工作流
-- 默认使用 `image_flux.json`
-- 如果懂 ComfyUI,可以放自己的工作流到 `workflows/` 文件夹
-
-**图像尺寸**  
-- 设置生成图像的宽度和高度(单位:像素)
-- 默认 1024x1024,可根据需要调整
-- 注意:不同的模型对尺寸有不同的限制
-
-**提示词前缀(Prompt Prefix)**  
-- 控制图像的整体风格(语言需要是英文的)
-- 例如:Minimalist black-and-white matchstick figure style illustration, clean lines, simple sketch style
-- 点击「预览风格」可以测试效果
-
-#### 视频模板
-决定视频画面的布局和设计。
-
-**模板命名规范**  
-- `static_*.html`: 静态模板(无需AI生成媒体,纯文字样式)
-- `image_*.html`: 图片模板(使用AI生成的图片作为背景)
-- `video_*.html`: 视频模板(使用AI生成的视频作为背景)
-
-**使用方法**  
-- 从下拉菜单选择模板,按尺寸分组显示(竖屏/横屏/方形)
-- 点击「预览模板」可以自定义参数测试效果
-- 如果懂 HTML,可以在 `templates/` 文件夹创建自己的模板
-- 🔗 [查看所有模板效果图](https://aidc-ai.github.io/Pixelle-Video/zh/user-guide/templates/#_3)
-
-
-### 🎬 生成视频(右侧栏)
-
-#### 生成按钮
-- 配置好所有参数后,点击「🎬 生成视频」
-- 会显示实时进度(生成文案 → 生成配图 → 合成语音 → 合成视频)
-- 生成完成后自动显示视频预览
-
-#### 进度显示
-- 实时显示当前步骤
-- 例如:「分镜 3/5 - 生成插图」
-
-#### 视频预览
-- 生成完成后自动播放
-- 显示视频时长、文件大小、分镜数等信息
-- 视频文件保存在 `output/` 文件夹
-
-
-### ❓ 常见问题
-
-**Q: 第一次使用需要多久?**  
-A: 生成时长取决于视频分镜数量、网络状况和 AI 推理速度,通常几分钟内即可完成。
-
-**Q: 视频效果不满意怎么办?**  
-A: 可以尝试:
-1. 更换 LLM 模型(不同模型文案风格不同)
-2. 调整图像尺寸和提示词前缀(改变配图风格)
-3. 更换 TTS 工作流或上传参考音频(改变语音效果)
-4. 尝试不同的视频模板和尺寸
-
-**Q: 费用大概多少?**  
-A: **本项目完全支持免费运行!**
-
-- **完全免费方案**: LLM 使用 Ollama(本地运行)+ ComfyUI 本地部署 = 0 元
-- **推荐方案**: LLM 使用通义千问(成本极低,性价比高)+ ComfyUI 本地部署
-- **云端方案**: LLM 使用 OpenAI + 图像使用 RunningHub(费用较高但无需本地环境)
-
-**选择建议**:本地有显卡建议完全免费方案,否则推荐使用通义千问(性价比高)
-
-
-## 🤝 参考项目
-
-Pixelle-Video 的设计受到以下优秀开源项目的启发:
-
-- [Pixelle-MCP](https://github.com/AIDC-AI/Pixelle-MCP) - ComfyUI MCP 服务器,让 AI 助手直接调用 ComfyUI
-- [MoneyPrinterTurbo](https://github.com/harry0703/MoneyPrinterTurbo) - 优秀的视频生成工具
-- [NarratoAI](https://github.com/linyqh/NarratoAI) - 影视解说自动化工具
-- [MoneyPrinterPlus](https://github.com/ddean2009/MoneyPrinterPlus) - 视频创作平台
-- [ComfyKit](https://github.com/puke3615/ComfyKit) - ComfyUI 工作流封装库
-
-感谢这些项目的开源精神!🙏
-
-
-## 💬 社区交流
-
-扫描下方二维码加入我们的社区,获取最新动态和技术支持:
-
-| 微信群 | Discord 社区 |
-| ---- | ---- |
-| <img src="resources/wechat.png" alt="微信交流群" width="250" /> | <img src="resources/discord.png" alt="Discord 社区" width="250" /> |
-
-
-## 📢 反馈与支持
-
-- 🐛 **遇到问题**: 提交 [Issue](https://github.com/AIDC-AI/Pixelle-Video/issues)
-- 💡 **功能建议**: 提交 [Feature Request](https://github.com/AIDC-AI/Pixelle-Video/issues)
-- ⭐ **给个 Star**: 如果这个项目对你有帮助,欢迎给个 Star 支持一下!
-
-
-## 📝 许可证
-
-本项目采用 Apache 2.0 许可证,详情请查看 [LICENSE](LICENSE) 文件。
-
-
-## ⭐ Star History
-
-[![Star History Chart](https://api.star-history.com/svg?repos=AIDC-AI/Pixelle-Video&type=Date)](https://star-history.com/#AIDC-AI/Pixelle-Video&Date)
-

+ 0 - 432
docs/Pixelle-Video-main/README_EN.md

@@ -1,432 +0,0 @@
-<h1 align="center">🎬 Pixelle-Video —— AI Fully Automated Short Video Engine</h1>
-
-<p align="center"><b>English</b> | <a href="README.md">中文</a></p>
-
-<p align="center">
-  <a href="https://www.youtube.com/watch?v=uUkx-lRxLjc" target="_blank"><img src="https://img.shields.io/badge/🎥 Video%20Tutorial-EA4C89" alt="Video Tutorial"></a>
-  <a href="https://github.com/AIDC-AI/Pixelle-Video/releases" target="_blank"><img src="https://img.shields.io/badge/📦 Windows-50C878" alt="Windows Package"></a>
-  <a href="https://aidc-ai.github.io/Pixelle-Video" target="_blank"><img src="https://img.shields.io/badge/📘 Documentation-4A90E2" alt="Documentation"></a>
-  <a href="https://github.com/AIDC-AI/Pixelle-Video/stargazers"><img src="https://img.shields.io/github/stars/AIDC-AI/Pixelle-Video.svg" alt="Stargazers"></a>
-  <a href="https://github.com/AIDC-AI/Pixelle-Video/issues"><img src="https://img.shields.io/github/issues/AIDC-AI/Pixelle-Video.svg" alt="Issues"></a>
-  <a href="https://github.com/AIDC-AI/Pixelle-Video/network/members"><img src="https://img.shields.io/github/forks/AIDC-AI/Pixelle-Video.svg" alt="Forks"></a>
-  <a href="https://github.com/AIDC-AI/Pixelle-Video/blob/main/LICENSE"><img src="https://img.shields.io/github/license/AIDC-AI/Pixelle-Video.svg" alt="License"></a>
-</p>
-
-https://github.com/user-attachments/assets/a42e7457-fcc8-40da-83fc-784c45a8b95d
-
-Just input a **topic**, and Pixelle-Video will automatically:
-- ✍️ Write video script
-- 🎨 Generate AI images/videos  
-- 🗣️ Synthesize voice narration
-- 🎵 Add background music
-- 🎬 Create video with one click
-
-
-**Zero threshold, zero editing experience** - Make video creation as simple as typing a sentence!
-
-
-## 🖥️ Web Interface Preview
-
-![Web UI Interface](resources/webui_en.png)
-
-
-## 📋 Recent Updates
-
-- ✅ **2026-01-26**: Added the Motion Transfer pipeline — upload a reference video and an image to transfer motion.
-- ✅ **2026-01-14**: Added "Digital Human" and "Image-to-Video" pipelines, multi-language TTS voices support
-- ✅ **2026-01-06**: Added RunningHub 48G VRAM machine support
-- ✅ **2025-12-28**: Configurable RunningHub concurrency limit, improved LLM structured data response handling
-- ✅ **2025-12-17**: Added ComfyUI API Key configuration, Nano Banana model support, API template custom parameters
-- ✅ **2025-12-10**: Built-in FAQ in sidebar, fixed edge-tts version to resolve TTS service instability
-- ✅ **2025-12-08**: Support multiple script split modes (paragraph/line/sentence), improved template selection with direct preview
-- ✅ **2025-12-06**: Fixed video generation API URL path handling with cross-platform compatibility
-- ✅ **2025-12-05**: Added Windows all-in-one package download, optimized image and video analysis workflows
-- ✅ **2025-12-04**: New "Custom Media" feature - upload your photos/videos with AI-powered analysis and script generation
-- ✅ **2025-11-18**: Parallel processing for RunningHub, added history page, batch video task creation support
-
-
-## ✨ Key Features
-
-- ✅ **Fully Automatic Generation** - Input a topic, automatically generate complete video
-- ✅ **AI Smart Copywriting** - Intelligently create narration based on topic, no need to write scripts yourself
-- ✅ **AI Generated Images** - Each sentence comes with beautiful AI illustrations
-- ✅ **AI Generated Videos** - Support AI video generation models (like WAN 2.1) to create dynamic video content
-- ✅ **AI Generated Voice** - Support Edge-TTS, Index-TTS and many other mainstream TTS solutions
-- ✅ **Background Music** - Support adding BGM to make videos more atmospheric
-- ✅ **Visual Styles** - Multiple templates to choose from, create unique video styles
-- ✅ **Flexible Dimensions** - Support portrait, landscape and other video dimensions
-- ✅ **Multiple AI Models** - Support GPT, Qwen, DeepSeek, Ollama and more
-- ✅ **Flexible Atomic Capability Combination** - Based on ComfyUI architecture, can use preset workflows or customize any capability (such as replacing image generation model with FLUX, replacing TTS with ChatTTS, etc.)
-
-
-## 📊 Video Generation Pipeline
-
-Pixelle-Video adopts a modular design, the entire video generation process is clear and concise:
-
-![Video Generation Flow](resources/flow_en.png)
-
-From input text to final video output, the entire process is clear and simple: **Script Generation → Image Planning → Frame-by-Frame Processing → Video Composition**
-
-Each step supports flexible customization, allowing you to choose different AI models, audio engines, visual styles, etc., to meet personalized creation needs.
-
-
-## 🎬 Video Examples
-
-Here are actual cases generated using Pixelle-Video, showcasing video effects with different themes and styles:
-
-### 📱 Extension Module Video Showcase
-
-<table>
-<tr>
-<td width="33%">
-<h3>👤 AI Digital Avatar</h3>
-<video src="https://github.com/user-attachments/assets/7c122563-c2e0-4dcd-a73c-25ba1d4fa2dd" controls width="100%"></video>
-<p align="center"><b>Korean-speaking AI Avatar</b></p>
-</td>
-<td width="33%">
-<h3>🖼️ Image-to-Video</h3>
-<video src="https://github.com/user-attachments/assets/5b4eef17-07d0-4bde-9748-2ed68cc9888e" controls width="100%"></video>
-<p align="center"><b>Animated Cartoon Video</b></p>
-</td>
-<td width="33%">
-<h3>💃 Motion Transfer</h3>
-<video src="https://github.com/user-attachments/assets/7b1240bc-e965-434c-b343-118ec4793d4f" controls width="100%"></video>
-<p align="center"><b>Dancing Kitten</b></p>
-</td>
-</tr>
-</table>
-
-### 📱 Portrait Video Showcase
-
-<table>
-<tr>
-<td width="33%">
-<h3>🌄 Documentary & Lifestyle – Default Template</h3>
-<video src="https://github.com/user-attachments/assets/e6716c1d-78de-453d-84c2-10873c8c595f" controls width="100%"></video>
-<p align="center"><b>The Scenery Along the Journey</b></p>
-</td>
-<td width="33%">
-<h3>🔍 Cultural Deconstruction – Default Template</h3>
-<video src="https://github.com/user-attachments/assets/f5de75f6-135a-4ab4-9f5f-079f649764d5" controls width="100%"></video>
-<p align="center"><b>Santa ID</b></p>
-</td>
-<td width="33%">
-<h3>🔭 Scientific Inquiry – Default Template</h3>
-<video src="https://github.com/user-attachments/assets/ceb8b0df-8331-4e1f-88e7-db5b295a1c1d" controls width="100%"></video>
-<p align="center"><b>Why Haven’t We Found Alien Civilizations Yet?</b></p>
-</td>
-</tr>
-<tr>
-<td width="33%">
-<h3>🌱 Personal Growth – Cloned Voice</h3>
-<video src="https://github.com/user-attachments/assets/1bad9a49-df83-4905-9cc8-9a7640e9c7d8" controls width="100%"></video>
-<p align="center"><b>How to Level Up Yourself</b></p>
-</td>
-<td width="33%">
-<h3>🧠 Deep Thinking – Default Template</h3>
-<video src="https://github.com/user-attachments/assets/663b705a-2aea-44bc-b266-4bb27aa255a8" controls width="100%"></video>
-<p align="center"><b>Understanding Antifragility</b></p>
-</td>
-<td width="33%">
-<h3>🏯 History & Culture – Static Frame</h3>
-<video src="https://github.com/user-attachments/assets/56e0a018-fa99-47eb-a97f-fc2fa8915724" controls width="100%"></video>
-<p align="center"><b>Zizhi Tongjian (Comprehensive Mirror for Aid in Governance)</b></p>
-</td>
-</tr>
-<tr>
-<td width="33%">
-<h3>☀️ Emotional Storytelling – Cloned Voice</h3>
-<video src="https://github.com/user-attachments/assets/4687df95-dd21-4a7b-b01e-f33a7b646644" controls width="100%"></video>
-<p align="center"><b>Winter Sunlight</b></p>
-</td>
-<td width="33%">
-<h3>📜 Novel Adaptation – Custom Script</h3>
-<video src="https://github.com/user-attachments/assets/d354465e-3fa8-40b4-93e9-61ad75ef0697" controls width="100%"></video>
-<p align="center"><b>Doupo Cangqiong (Battle Through the Heavens)</b></p>
-</td>
-<td width="33%">
-<h3>🧬 Knowledge Explainer – Qwen Image Generation</h3>
-<video src="https://github.com/user-attachments/assets/8ac21768-41ce-4d41-acdd-e3dd3eb9725a" controls width="100%"></video>
-<p align="center"><b>Essential Wellness Tips</b></p>
-</td>
-</tr>
-</table>
-
-### 🖥️ Landscape Video Showcase
-
-<table>
-<tr>
-<td width="50%">
-<h3>💰 Side Hustle Money Making - Movie Template</h3>
-<video src="https://github.com/user-attachments/assets/c9209d4e-73a6-4b82-aaad-cf102248c9e2" controls width="100%"></video>
-<p align="center"><b>Side Hustle Money Making</b></p>
-</td>
-<td width="50%">
-<h3>🏛️ Historical Commentary - Custom Template</h3>
-<video src="https://github.com/user-attachments/assets/a767c452-d5f1-4cff-bb34-b80fff0d4c3e" controls width="100%"></video>
-<p align="center"><b>Insights from Zizhi Tongjian</b></p>
-</td>
-</tr>
-</table>
-
-> 💡 **Tip**: All these videos are fully automatically generated by AI just by inputting a topic keyword, without any video editing experience required!
-
-<div id="tutorial-start" />
-
-## 🚀 Quick Start
-
-### 🪟 Windows All-in-One Package (Recommended for Windows Users)
-
-**No need to install Python, uv, or ffmpeg - ready to use out of the box!**
-
-👉 **[Download Windows All-in-One Package](https://github.com/AIDC-AI/Pixelle-Video/releases/latest)**
-
-1. Download the latest Windows All-in-One Package and extract it
-2. Double-click `start.bat` to launch the Web interface
-3. Browser will automatically open http://localhost:8501
-4. Configure LLM API and image generation service in "⚙️ System Configuration"
-5. Start generating videos!
-
-> 💡 **Tip**: The package includes all dependencies, no need to manually install any environment. On first use, you only need to configure API keys.
-
-
-### Install from Source (For macOS / Linux Users or Users Who Need Customization)
-
-#### Prerequisites
-
-Before starting, you need to install Python package manager `uv` and video processing tool `ffmpeg`:
-
-##### Install uv
-
-Please visit the uv official documentation to see the installation method for your system:  
-👉 **[uv Installation Guide](https://docs.astral.sh/uv/getting-started/installation/)**
-
-After installation, run `uv --version` in the terminal to verify successful installation.
-
-##### Install ffmpeg
-
-**macOS**
-```bash
-brew install ffmpeg
-```
-
-**Ubuntu / Debian**
-```bash
-sudo apt update
-sudo apt install ffmpeg
-```
-
-**Windows**
-- Download URL: https://ffmpeg.org/download.html
-- After downloading, extract and add the `bin` directory to the system environment variable PATH
-
-After installation, run `ffmpeg -version` in the terminal to verify successful installation.
-
-
-#### Step 1: Clone Project
-
-```bash
-git clone https://github.com/AIDC-AI/Pixelle-Video.git
-cd Pixelle-Video
-```
-
-#### Step 2: Launch Web Interface
-
-```bash
-# Run with uv (recommended, will automatically install dependencies)
-uv run streamlit run web/app.py
-```
-
-Browser will automatically open http://localhost:8501
-
-#### Step 3: Configure in Web Interface
-
-On first use, expand the "⚙️ System Configuration" panel and fill in:
-- **LLM Configuration**: Select AI model (such as Qwen, GPT, etc.) and enter API Key
-- **Image Configuration**: If you need to generate images, configure ComfyUI address or RunningHub API Key
-
-After configuration, click "Save Configuration", and you can start generating videos!
-
-<div id="tutorial-end" />
-
-## 💻 Usage
-
-After opening the Web interface, you will see a three-column layout. Here's a detailed explanation of each part:
-
-
-### ⚙️ System Configuration (Required on First Use)
-
-Configuration is required on first use. Click to expand the "⚙️ System Configuration" panel:
-
-#### 1. LLM Configuration (Large Language Model)
-Used for generating video scripts.
-
-**Quick Select Preset**  
-- Select preset model from dropdown menu (Qwen, GPT-4o, DeepSeek, etc.)
-- After selection, base_url and model will be automatically filled
-- Click "🔑 Get API Key" link to register and obtain key
-
-**Manual Configuration**  
-- API Key: Enter your key
-- Base URL: API address
-- Model: Model name
-
-#### 2. Image Configuration
-Used for generating video images.
-
-**Local Deployment (Recommended)**  
-- ComfyUI URL: Local ComfyUI service address (default http://127.0.0.1:8188)
-- Click "Test Connection" to confirm service is available
-
-**Cloud Deployment**  
-- RunningHub API Key: Cloud image generation service key
-
-After configuration, click "Save Configuration".
-
-
-### 📝 Content Input (Left Column)
-
-#### Generation Mode
-- **AI Generated Content**: Input topic, AI automatically creates script
-  - Suitable for: Want to quickly generate video, let AI write script
-  - Example: "Why develop a reading habit"
-- **Fixed Script Content**: Directly input complete script, skip AI creation
-  - Suitable for: Already have ready-made script, directly generate video
-
-#### Background Music (BGM)
-- **No BGM**: Pure voice narration
-- **Built-in Music**: Select preset background music (such as default.mp3)
-- **Custom Music**: Put your music files (MP3/WAV, etc.) in the `bgm/` folder
-- Click "Preview BGM" to preview music
-
-
-### 🎤 Voice Settings (Middle Column)
-
-#### TTS Workflow
-- Select TTS workflow from dropdown menu (supports Edge-TTS, Index-TTS, etc.)
-- System will automatically scan TTS workflows in the `workflows/` folder
-- If you know ComfyUI, you can customize TTS workflows
-
-#### Reference Audio (Optional)
-- Upload reference audio file for voice cloning (supports MP3/WAV/FLAC and other formats)
-- Suitable for TTS workflows that support voice cloning (such as Index-TTS)
-- Can listen directly after upload
-
-#### Preview Function
-- Enter test text, click "Preview Voice" to listen to the effect
-- Supports using reference audio for preview
-
-
-### 🎨 Visual Settings (Middle Column)
-
-#### Image Generation
-Determine what style of images AI generates.
-
-**ComfyUI Workflow**  
-- Select image generation workflow from dropdown menu
-- Supports local deployment (selfhost) and cloud (RunningHub) workflows
-- Default uses `image_flux.json`
-- If you know ComfyUI, you can put your own workflows in the `workflows/` folder
-
-**Image Dimensions**  
-- Set width and height of generated images (unit: pixels)
-- Default 1024x1024, can be adjusted as needed
-- Note: Different models have different dimension limitations
-
-**Prompt Prefix**  
-- Controls overall image style (language needs to be English)
-- Example: Minimalist black-and-white matchstick figure style illustration, clean lines, simple sketch style
-- Click "Preview Style" to test effect
-
-#### Video Template
-Determines video layout and design.
-
-**Template Naming Convention**  
-- `static_*.html`: Static templates (no AI-generated media, text-only styles)
-- `image_*.html`: Image templates (uses AI-generated images as background)
-- `video_*.html`: Video templates (uses AI-generated videos as background)
-
-**Usage**  
-- Select template from dropdown menu, displayed grouped by dimension (portrait/landscape/square)
-- Click "Preview Template" to test effect with custom parameters
-- If you know HTML, you can create your own templates in the `templates/` folder
-- 🔗 [View All Template Previews](https://aidc-ai.github.io/Pixelle-Video/user-guide/templates/#built-in-template-preview)
-
-
-### 🎬 Generate Video (Right Column)
-
-#### Generate Button
-- After configuring all parameters, click "🎬 Generate Video"
-- Shows real-time progress (generating script → generating images → synthesizing voice → composing video)
-- Automatically shows video preview after completion
-
-#### Progress Display
-- Shows current step in real-time
-- Example: "Frame 3/5 - Generating Image"
-
-#### Video Preview
-- Automatically plays after generation
-- Shows video duration, file size, number of frames, etc.
-- Video files are saved in the `output/` folder
-
-
-### ❓ FAQ
-
-**Q: How long does it take to use for the first time?**  
-A: Generation time depends on the number of video frames, network conditions, and AI inference speed, typically completed within a few minutes.
-
-**Q: What if I'm not satisfied with the video?**  
-A: You can try:
-1. Change LLM model (different models have different script styles)
-2. Adjust image dimensions and prompt prefix (change image style)
-3. Change TTS workflow or upload reference audio (change voice effect)
-4. Try different video templates and dimensions
-
-**Q: What about the cost?**  
-A: **This project fully supports free operation!**
-
-- **Completely Free Solution**: LLM using Ollama (local) + ComfyUI local deployment = 0 cost
-- **Recommended Solution**: LLM using Qwen (extremely low cost, highly cost-effective) + ComfyUI local deployment
-- **Cloud Solution**: LLM using OpenAI + Image using RunningHub (higher cost but no need for local environment)
-
-**Selection Suggestion**: If you have a local GPU, recommend completely free solution, otherwise recommend using Qwen (cost-effective)
-
-
-## 🤝 Referenced Projects
-
-Pixelle-Video design is inspired by the following excellent open-source projects:
-
-- [Pixelle-MCP](https://github.com/AIDC-AI/Pixelle-MCP) - ComfyUI MCP server, allows AI assistants to directly call ComfyUI
-- [MoneyPrinterTurbo](https://github.com/harry0703/MoneyPrinterTurbo) - Excellent video generation tool
-- [NarratoAI](https://github.com/linyqh/NarratoAI) - Film commentary automation tool
-- [MoneyPrinterPlus](https://github.com/ddean2009/MoneyPrinterPlus) - Video creation platform
-- [ComfyKit](https://github.com/puke3615/ComfyKit) - ComfyUI workflow wrapper library
-
-Thanks for the open-source spirit of these projects! 🙏
-
-
-## 💬 Community
-
-Scan the QR codes below to join our communities for latest updates and technical support:
-
-| Discord Community | WeChat Group |
-| ---- | ---- |
-| <img src="resources/discord.png" alt="Discord Community" width="250" /> | <img src="resources/wechat.png" alt="WeChat Group" width="250" /> |
-
-
-## 📢 Feedback and Support
-
-- 🐛 **Encountered Issues**: Submit [Issue](https://github.com/AIDC-AI/Pixelle-Video/issues)
-- 💡 **Feature Suggestions**: Submit [Feature Request](https://github.com/AIDC-AI/Pixelle-Video/issues)
-- ⭐ **Give a Star**: If this project helps you, feel free to give a Star for support!
-
-
-## 📝 License
-
-This project is released under the Apache License 2.0. For details, please see the [LICENSE](LICENSE) file.
-
-
-## ⭐ Star History
-
-[![Star History Chart](https://api.star-history.com/svg?repos=AIDC-AI/Pixelle-Video&type=Date)](https://star-history.com/#AIDC-AI/Pixelle-Video&Date)
-

+ 0 - 17
docs/Pixelle-Video-main/api/__init__.py

@@ -1,17 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Pixelle-Video API Layer
-
-FastAPI-based REST API for video generation services.
-"""

+ 0 - 191
docs/Pixelle-Video-main/api/app.py

@@ -1,191 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Pixelle-Video FastAPI Application
-
-Main FastAPI app with all routers and middleware.
-
-Run this script to start the FastAPI server:
-    uv run python api/app.py
-    
-Or with custom settings:
-    uv run python api/app.py --host 0.0.0.0 --port 8080 --reload
-"""
-
-import sys
-from pathlib import Path
-
-# Add project root to sys.path for module imports
-# This ensures imports work correctly in both development and packaged environments
-_script_dir = Path(__file__).resolve().parent
-_project_root = _script_dir.parent
-if str(_project_root) not in sys.path:
-    sys.path.insert(0, str(_project_root))
-
-import argparse
-from contextlib import asynccontextmanager
-from fastapi import FastAPI
-from fastapi.middleware.cors import CORSMiddleware
-from loguru import logger
-
-from api.config import api_config
-from api.tasks import task_manager
-from api.dependencies import shutdown_pixelle_video
-
-# Import routers
-from api.routers import (
-    health_router,
-    llm_router,
-    tts_router,
-    image_router,
-    content_router,
-    video_router,
-    tasks_router,
-    files_router,
-    resources_router,
-    frame_router,
-)
-
-
-@asynccontextmanager
-async def lifespan(app: FastAPI):
-    """
-    Application lifespan manager
-    
-    Handles startup and shutdown events.
-    """
-    # Startup
-    logger.info("🚀 Starting Pixelle-Video API...")
-    await task_manager.start()
-    logger.info("✅ Pixelle-Video API started successfully\n")
-    
-    yield
-    
-    # Shutdown
-    logger.info("🛑 Shutting down Pixelle-Video API...")
-    await task_manager.stop()
-    await shutdown_pixelle_video()
-    logger.info("✅ Pixelle-Video API shutdown complete")
-
-
-# Create FastAPI app
-app = FastAPI(
-    title="Pixelle-Video API",
-    description="""
-    ## Pixelle-Video - AI Video Generation Platform API
-    
-    ### Features
-    - 🤖 **LLM**: Large language model integration
-    - 🔊 **TTS**: Text-to-speech synthesis
-    - 🎨 **Image**: AI image generation
-    - 📝 **Content**: Automated content generation
-    - 🎬 **Video**: End-to-end video generation
-    
-    ### Video Generation Modes
-    - **Sync**: `/api/video/generate/sync` - For small videos (< 30s)
-    - **Async**: `/api/video/generate/async` - For large videos with task tracking
-    
-    ### Getting Started
-    1. Check health: `GET /health`
-    2. Generate narrations: `POST /api/content/narration`
-    3. Generate video: `POST /api/video/generate/sync` or `/async`
-    4. Track task progress: `GET /api/tasks/{task_id}`
-    """,
-    version="0.1.0",
-    docs_url=api_config.docs_url,
-    redoc_url=api_config.redoc_url,
-    openapi_url=api_config.openapi_url,
-    lifespan=lifespan,
-)
-
-# Add CORS middleware
-if api_config.cors_enabled:
-    app.add_middleware(
-        CORSMiddleware,
-        allow_origins=api_config.cors_origins,
-        allow_credentials=True,
-        allow_methods=["*"],
-        allow_headers=["*"],
-    )
-    logger.info(f"CORS enabled for origins: {api_config.cors_origins}")
-
-# Include routers
-# Health check (no prefix)
-app.include_router(health_router)
-
-# API routers (with /api prefix)
-app.include_router(llm_router, prefix=api_config.api_prefix)
-app.include_router(tts_router, prefix=api_config.api_prefix)
-app.include_router(image_router, prefix=api_config.api_prefix)
-app.include_router(content_router, prefix=api_config.api_prefix)
-app.include_router(video_router, prefix=api_config.api_prefix)
-app.include_router(tasks_router, prefix=api_config.api_prefix)
-app.include_router(files_router, prefix=api_config.api_prefix)
-app.include_router(resources_router, prefix=api_config.api_prefix)
-app.include_router(frame_router, prefix=api_config.api_prefix)
-
-
-@app.get("/")
-async def root():
-    """Root endpoint with API information"""
-    return {
-        "service": "Pixelle-Video API",
-        "version": "0.1.0",
-        "docs": api_config.docs_url,
-        "health": "/health",
-        "api": {
-            "llm": f"{api_config.api_prefix}/llm",
-            "tts": f"{api_config.api_prefix}/tts",
-            "image": f"{api_config.api_prefix}/image",
-            "content": f"{api_config.api_prefix}/content",
-            "video": f"{api_config.api_prefix}/video",
-            "tasks": f"{api_config.api_prefix}/tasks",
-            "files": f"{api_config.api_prefix}/files",
-            "resources": f"{api_config.api_prefix}/resources",
-            "frame": f"{api_config.api_prefix}/frame",
-        }
-    }
-
-
-if __name__ == "__main__":
-    import uvicorn
-    
-    # Parse command line arguments
-    parser = argparse.ArgumentParser(description="Start Pixelle-Video API Server")
-    parser.add_argument("--host", default="0.0.0.0", help="Host to bind to")
-    parser.add_argument("--port", type=int, default=8000, help="Port to bind to")
-    parser.add_argument("--reload", action="store_true", help="Enable auto-reload")
-    
-    args = parser.parse_args()
-    
-    # Print startup banner
-    print(f"""
-╔══════════════════════════════════════════════════════════════╗
-║                    Pixelle-Video API Server                      ║
-╚══════════════════════════════════════════════════════════════╝
-
-Starting server at http://{args.host}:{args.port}
-API Docs: http://{args.host}:{args.port}/docs
-ReDoc: http://{args.host}:{args.port}/redoc
-
-Press Ctrl+C to stop the server
-""")
-    
-    # Start server
-    uvicorn.run(
-        "api.app:app",
-        host=args.host,
-        port=args.port,
-        reload=args.reload,
-    )
-

+ 0 - 50
docs/Pixelle-Video-main/api/config.py

@@ -1,50 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-API Configuration
-"""
-
-from typing import Optional
-from pydantic import BaseModel
-
-
-class APIConfig(BaseModel):
-    """API configuration"""
-    
-    # Server settings
-    host: str = "0.0.0.0"
-    port: int = 8000
-    reload: bool = False
-    
-    # CORS settings
-    cors_enabled: bool = True
-    cors_origins: list[str] = ["*"]
-    
-    # Task settings
-    max_concurrent_tasks: int = 5
-    task_cleanup_interval: int = 3600  # Clean completed tasks every hour
-    task_retention_time: int = 86400   # Keep task results for 24 hours
-    
-    # File upload settings
-    max_upload_size: int = 100 * 1024 * 1024  # 100MB
-    
-    # API settings
-    api_prefix: str = "/api"
-    docs_url: Optional[str] = "/docs"
-    redoc_url: Optional[str] = "/redoc"
-    openapi_url: Optional[str] = "/openapi.json"
-
-
-# Global config instance
-api_config = APIConfig()
-

+ 0 - 61
docs/Pixelle-Video-main/api/dependencies.py

@@ -1,61 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-FastAPI Dependencies
-
-Provides dependency injection for PixelleVideoCore and other services.
-"""
-
-from typing import Annotated
-from fastapi import Depends
-from loguru import logger
-
-from pixelle_video.service import PixelleVideoCore
-
-
-# Global Pixelle-Video instance
-_pixelle_video_instance: PixelleVideoCore = None
-
-
-async def get_pixelle_video() -> PixelleVideoCore:
-    """
-    Get Pixelle-Video core instance (dependency injection)
-    
-    Returns:
-        PixelleVideoCore instance
-    """
-    global _pixelle_video_instance
-    
-    if _pixelle_video_instance is None:
-        _pixelle_video_instance = PixelleVideoCore()
-        await _pixelle_video_instance.initialize()
-        logger.info("✅ Pixelle-Video initialized for API")
-    
-    return _pixelle_video_instance
-
-
-async def shutdown_pixelle_video():
-    """Shutdown Pixelle-Video instance and cleanup resources"""
-    global _pixelle_video_instance
-    if _pixelle_video_instance:
-        logger.info("Shutting down Pixelle-Video...")
-        await _pixelle_video_instance.cleanup()
-        _pixelle_video_instance = None
-    
-    from pixelle_video.services.frame_html import HTMLFrameGenerator
-    await HTMLFrameGenerator.close_browser()
-
-
-# Type alias for dependency injection
-PixelleVideoDep = Annotated[PixelleVideoCore, Depends(get_pixelle_video)]
-

+ 0 - 40
docs/Pixelle-Video-main/api/routers/__init__.py

@@ -1,40 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-API Routers
-"""
-
-from api.routers.health import router as health_router
-from api.routers.llm import router as llm_router
-from api.routers.tts import router as tts_router
-from api.routers.image import router as image_router
-from api.routers.content import router as content_router
-from api.routers.video import router as video_router
-from api.routers.tasks import router as tasks_router
-from api.routers.files import router as files_router
-from api.routers.resources import router as resources_router
-from api.routers.frame import router as frame_router
-
-__all__ = [
-    "health_router",
-    "llm_router",
-    "tts_router",
-    "image_router",
-    "content_router",
-    "video_router",
-    "tasks_router",
-    "files_router",
-    "resources_router",
-    "frame_router",
-]
-

+ 0 - 146
docs/Pixelle-Video-main/api/routers/content.py

@@ -1,146 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Content generation endpoints
-
-Endpoints for generating narrations, image prompts, and titles.
-"""
-
-from fastapi import APIRouter, HTTPException
-from loguru import logger
-
-from api.dependencies import PixelleVideoDep
-from api.schemas.content import (
-    NarrationGenerateRequest,
-    NarrationGenerateResponse,
-    ImagePromptGenerateRequest,
-    ImagePromptGenerateResponse,
-    TitleGenerateRequest,
-    TitleGenerateResponse,
-)
-from pixelle_video.utils.content_generators import (
-    generate_narrations_from_topic,
-    generate_image_prompts,
-    generate_title,
-)
-
-router = APIRouter(prefix="/content", tags=["Content Generation"])
-
-
-@router.post("/narration", response_model=NarrationGenerateResponse)
-async def generate_narration(
-    request: NarrationGenerateRequest,
-    pixelle_video: PixelleVideoDep
-):
-    """
-    Generate narrations from text
-    
-    Uses LLM to break down text into multiple narration segments.
-    
-    - **text**: Source text
-    - **n_scenes**: Number of narrations to generate
-    - **min_words**: Minimum words per narration
-    - **max_words**: Maximum words per narration
-    
-    Returns list of narration strings.
-    """
-    try:
-        logger.info(f"Generating {request.n_scenes} narrations from text")
-        
-        # Call narration generator utility function
-        narrations = await generate_narrations_from_topic(
-            llm_service=pixelle_video.llm,
-            topic=request.text,
-            n_scenes=request.n_scenes,
-            min_words=request.min_words,
-            max_words=request.max_words
-        )
-        
-        return NarrationGenerateResponse(
-            narrations=narrations
-        )
-        
-    except Exception as e:
-        logger.error(f"Narration generation error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-
-
-@router.post("/image-prompt", response_model=ImagePromptGenerateResponse)
-async def generate_image_prompt(
-    request: ImagePromptGenerateRequest,
-    pixelle_video: PixelleVideoDep
-):
-    """
-    Generate image prompts from narrations
-    
-    Uses LLM to create detailed image generation prompts.
-    
-    - **narrations**: List of narration texts
-    - **min_words**: Minimum words per prompt
-    - **max_words**: Maximum words per prompt
-    
-    Returns list of image prompts.
-    """
-    try:
-        logger.info(f"Generating image prompts for {len(request.narrations)} narrations")
-        
-        # Call image prompt generator utility function
-        image_prompts = await generate_image_prompts(
-            llm_service=pixelle_video.llm,
-            narrations=request.narrations,
-            min_words=request.min_words,
-            max_words=request.max_words
-        )
-        
-        return ImagePromptGenerateResponse(
-            image_prompts=image_prompts
-        )
-        
-    except Exception as e:
-        logger.error(f"Image prompt generation error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-
-
-@router.post("/title", response_model=TitleGenerateResponse)
-async def generate_title_endpoint(
-    request: TitleGenerateRequest,
-    pixelle_video: PixelleVideoDep
-):
-    """
-    Generate video title from text
-    
-    Uses LLM to create an engaging title.
-    
-    - **text**: Source text
-    - **style**: Optional title style hint
-    
-    Returns generated title.
-    """
-    try:
-        logger.info("Generating title from text")
-        
-        # Call title generator utility function
-        title = await generate_title(
-            llm_service=pixelle_video.llm,
-            content=request.text,
-            strategy="llm"
-        )
-        
-        return TitleGenerateResponse(
-            title=title
-        )
-        
-    except Exception as e:
-        logger.error(f"Title generation error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-

+ 0 - 128
docs/Pixelle-Video-main/api/routers/files.py

@@ -1,128 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-File service endpoints
-
-Provides access to generated files (videos, images, audio) and resource files.
-"""
-
-from pathlib import Path
-from fastapi import APIRouter, HTTPException
-from fastapi.responses import FileResponse
-from loguru import logger
-
-router = APIRouter(prefix="/files", tags=["Files"])
-
-
-@router.get("/{file_path:path}")
-async def get_file(file_path: str):
-    """
-    Get file by path
-    
-    Serves files from allowed directories:
-    - output/ - Generated files (videos, images, audio)
-    - workflows/ - ComfyUI workflow files
-    - templates/ - HTML templates
-    - bgm/ - Background music
-    - data/bgm/ - Custom background music
-    - data/templates/ - Custom templates
-    - resources/ - Other resources (images, fonts, etc.)
-    
-    - **file_path**: File path relative to allowed directories
-    
-    Examples:
-    - "abc123.mp4" → output/abc123.mp4
-    - "workflows/runninghub/image_flux.json" → workflows/runninghub/image_flux.json
-    - "templates/1080x1920/default.html" → templates/1080x1920/default.html
-    - "bgm/default.mp3" → bgm/default.mp3
-    - "resources/example.png" → resources/example.png
-    
-    Returns file for download or preview.
-    """
-    try:
-        # Define allowed directories (in priority order)
-        allowed_prefixes = [
-            "output/",
-            "workflows/",
-            "templates/",
-            "bgm/",
-            "data/bgm/",
-            "data/templates/",
-            "resources/",
-        ]
-        
-        # Check if path starts with allowed prefix, otherwise try output/
-        full_path = None
-        for prefix in allowed_prefixes:
-            if file_path.startswith(prefix):
-                full_path = file_path
-                break
-        
-        # If no prefix matched, assume it's in output/ (backward compatibility)
-        if full_path is None:
-            full_path = f"output/{file_path}"
-        
-        abs_path = Path.cwd() / full_path
-        
-        if not abs_path.exists():
-            raise HTTPException(status_code=404, detail=f"File not found: {file_path}")
-        
-        if not abs_path.is_file():
-            raise HTTPException(status_code=400, detail=f"Path is not a file: {file_path}")
-        
-        # Security: only allow access to specified directories
-        try:
-            rel_path = abs_path.relative_to(Path.cwd())
-            rel_path_str = str(rel_path)
-            
-            # Check if path starts with any allowed prefix
-            is_allowed = any(rel_path_str.startswith(prefix.rstrip('/')) for prefix in allowed_prefixes)
-            
-            if not is_allowed:
-                raise HTTPException(
-                    status_code=403, 
-                    detail=f"Access denied: only {', '.join(p.rstrip('/') for p in allowed_prefixes)} directories are accessible"
-                )
-        except ValueError:
-            raise HTTPException(status_code=403, detail="Access denied")
-        
-        # Determine media type
-        suffix = abs_path.suffix.lower()
-        media_types = {
-            '.mp4': 'video/mp4',
-            '.mp3': 'audio/mpeg',
-            '.wav': 'audio/wav',
-            '.png': 'image/png',
-            '.jpg': 'image/jpeg',
-            '.jpeg': 'image/jpeg',
-            '.gif': 'image/gif',
-            '.html': 'text/html',
-            '.json': 'application/json',
-        }
-        media_type = media_types.get(suffix, 'application/octet-stream')
-        
-        # Use inline disposition for browser preview
-        return FileResponse(
-            path=str(abs_path),
-            media_type=media_type,
-            headers={
-                "Content-Disposition": f'inline; filename="{abs_path.name}"'
-            }
-        )
-        
-    except HTTPException:
-        raise
-    except Exception as e:
-        logger.error(f"File access error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-

+ 0 - 161
docs/Pixelle-Video-main/api/routers/frame.py

@@ -1,161 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Frame/Template rendering endpoints
-"""
-
-from fastapi import APIRouter, HTTPException
-from loguru import logger
-
-from api.dependencies import PixelleVideoDep
-from api.schemas.frame import FrameRenderRequest, FrameRenderResponse, TemplateParamsResponse
-from pixelle_video.services.frame_html import HTMLFrameGenerator
-from pixelle_video.utils.template_util import parse_template_size, resolve_template_path
-
-router = APIRouter(prefix="/frame", tags=["Frame Rendering"])
-
-
-@router.post("/render", response_model=FrameRenderResponse)
-async def render_frame(
-    request: FrameRenderRequest,
-    pixelle_video: PixelleVideoDep
-):
-    """
-    Render a single frame using HTML template
-    
-    Generates a frame image by combining template, title, text, and image.
-    This is useful for previewing templates or generating custom frames.
-    
-    - **template**: Template key (e.g., '1080x1920/default.html')
-    - **title**: Optional title text
-    - **text**: Frame text content
-    - **image**: Image path (can be local path or URL)
-    
-    Returns path to generated frame image.
-    
-    Example:
-    ```json
-    {
-        "template": "1080x1920/modern.html",
-        "title": "Welcome",
-        "text": "This is a beautiful frame with custom styling",
-        "image": "resources/example.png"
-    }
-    ```
-    """
-    try:
-        logger.info(f"Frame render request: template={request.template}")
-        
-        # Resolve template path (returns absolute path with "templates/" or "data/templates/" prefix)
-        template_path = resolve_template_path(request.template)
-        
-        # Parse template size
-        width, height = parse_template_size(template_path)
-        
-        # Create HTML frame generator
-        generator = HTMLFrameGenerator(template_path)
-        
-        # Generate frame
-        frame_path = await generator.generate_frame(
-            title=request.title,
-            text=request.text,
-            image=request.image
-        )
-        
-        return FrameRenderResponse(
-            frame_path=frame_path,
-            width=width,
-            height=height
-        )
-        
-    except Exception as e:
-        logger.error(f"Frame render error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-
-
-@router.get("/template/params", response_model=TemplateParamsResponse)
-async def get_template_params(
-    template: str
-):
-    """
-    Get custom parameters for a template
-    
-    Returns the custom parameters defined in the template HTML file.
-    These parameters can be passed via `template_params` in video generation requests.
-    
-    Template parameters are defined using syntax: `{{param_name:type=default}}`
-    
-    Supported types:
-    - `text`: String input
-    - `number`: Numeric input
-    - `color`: Color picker (hex format)
-    - `bool`: Boolean checkbox
-    
-    Example template syntax:
-    ```html
-    <div style="color: {{accent_color:color=#ff0000}}">
-        {{custom_text:text=Hello World}}
-    </div>
-    ```
-    
-    Args:
-        template: Template path (e.g., '1080x1920/image_default.html')
-    
-    Returns:
-        Template parameters with their types, defaults, and labels
-    
-    Example response:
-    ```json
-    {
-        "template": "1080x1920/image_default.html",
-        "media_width": 1080,
-        "media_height": 1440,
-        "params": {
-            "accent_color": {
-                "type": "color",
-                "default": "#ff0000",
-                "label": "accent_color"
-            },
-            "background": {
-                "type": "text", 
-                "default": "https://example.com/bg.jpg",
-                "label": "background"
-            }
-        }
-    }
-    ```
-    """
-    try:
-        logger.info(f"Get template params: {template}")
-        
-        # Resolve template path
-        template_path = resolve_template_path(template)
-        
-        # Create generator and parse parameters
-        generator = HTMLFrameGenerator(template_path)
-        params = generator.parse_template_parameters()
-        media_width, media_height = generator.get_media_size()
-        
-        return TemplateParamsResponse(
-            template=template,
-            media_width=media_width,
-            media_height=media_height,
-            params=params
-        )
-        
-    except FileNotFoundError:
-        raise HTTPException(status_code=404, detail=f"Template not found: {template}")
-    except Exception as e:
-        logger.error(f"Get template params error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-

+ 0 - 54
docs/Pixelle-Video-main/api/routers/health.py

@@ -1,54 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Health check and system info endpoints
-"""
-
-from fastapi import APIRouter
-from pydantic import BaseModel
-
-router = APIRouter(tags=["Health"])
-
-
-class HealthResponse(BaseModel):
-    """Health check response"""
-    status: str = "healthy"
-    version: str = "0.1.0"
-    service: str = "Pixelle-Video API"
-
-
-class CapabilitiesResponse(BaseModel):
-    """Capabilities response"""
-    success: bool = True
-    capabilities: dict
-
-
-@router.get("/health", response_model=HealthResponse)
-async def health_check():
-    """
-    Health check endpoint
-    
-    Returns service status and version information.
-    """
-    return HealthResponse()
-
-
-@router.get("/version", response_model=HealthResponse)
-async def get_version():
-    """
-    Get API version
-    
-    Returns version information.
-    """
-    return HealthResponse()
-

+ 0 - 70
docs/Pixelle-Video-main/api/routers/image.py

@@ -1,70 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Image generation endpoints
-"""
-
-from fastapi import APIRouter, HTTPException
-from loguru import logger
-
-from api.dependencies import PixelleVideoDep
-from api.schemas.image import ImageGenerateRequest, ImageGenerateResponse
-
-router = APIRouter(prefix="/image", tags=["Basic Services"])
-
-
-@router.post("/generate", response_model=ImageGenerateResponse)
-async def image_generate(
-    request: ImageGenerateRequest,
-    pixelle_video: PixelleVideoDep
-):
-    """
-    Image generation endpoint
-    
-    Generate image from text prompt using ComfyKit.
-    
-    - **prompt**: Image description/prompt
-    - **width**: Image width (512-2048)
-    - **height**: Image height (512-2048)
-    - **workflow**: Optional custom workflow filename
-    
-    Returns path to generated image.
-    """
-    try:
-        logger.info(f"Image generation request: {request.prompt[:50]}...")
-        
-        # Call media service (backward compatible with image API)
-        media_result = await pixelle_video.media(
-            prompt=request.prompt,
-            width=request.width,
-            height=request.height,
-            workflow=request.workflow
-        )
-        
-        # For backward compatibility, only support image results in /image endpoint
-        if media_result.is_video:
-            raise HTTPException(
-                status_code=400,
-                detail="Video workflow used. Please use /media/generate endpoint for video generation."
-            )
-        
-        return ImageGenerateResponse(
-            image_path=media_result.url
-        )
-        
-    except HTTPException:
-        raise
-    except Exception as e:
-        logger.error(f"Image generation error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-

+ 0 - 60
docs/Pixelle-Video-main/api/routers/llm.py

@@ -1,60 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-LLM (Large Language Model) endpoints
-"""
-
-from fastapi import APIRouter, HTTPException
-from loguru import logger
-
-from api.dependencies import PixelleVideoDep
-from api.schemas.llm import LLMChatRequest, LLMChatResponse
-
-router = APIRouter(prefix="/llm", tags=["Basic Services"])
-
-
-@router.post("/chat", response_model=LLMChatResponse)
-async def llm_chat(
-    request: LLMChatRequest,
-    pixelle_video: PixelleVideoDep
-):
-    """
-    LLM chat endpoint
-    
-    Generate text response using configured LLM.
-    
-    - **prompt**: User prompt/question
-    - **temperature**: Creativity level (0.0-2.0, lower = more deterministic)
-    - **max_tokens**: Maximum response length
-    
-    Returns generated text response.
-    """
-    try:
-        logger.info(f"LLM chat request: {request.prompt[:50]}...")
-        
-        # Call LLM service
-        response = await pixelle_video.llm(
-            prompt=request.prompt,
-            temperature=request.temperature,
-            max_tokens=request.max_tokens
-        )
-        
-        return LLMChatResponse(
-            content=response,
-            tokens_used=None  # Can add token counting if needed
-        )
-        
-    except Exception as e:
-        logger.error(f"LLM chat error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-

+ 0 - 269
docs/Pixelle-Video-main/api/routers/resources.py

@@ -1,269 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Resource discovery endpoints
-
-Provides endpoints to discover available workflows, templates, and BGM.
-"""
-
-from pathlib import Path
-from fastapi import APIRouter, HTTPException
-from loguru import logger
-
-from api.dependencies import PixelleVideoDep
-from api.schemas.resources import (
-    WorkflowInfo,
-    WorkflowListResponse,
-    TemplateInfo,
-    TemplateListResponse,
-    BGMInfo,
-    BGMListResponse,
-)
-from pixelle_video.utils.os_util import list_resource_files, get_root_path, get_data_path
-from pixelle_video.utils.template_util import get_all_templates_with_info
-
-router = APIRouter(prefix="/resources", tags=["Resources"])
-
-
-@router.get("/workflows/tts", response_model=WorkflowListResponse)
-async def list_tts_workflows(pixelle_video: PixelleVideoDep):
-    """
-    List available TTS workflows
-    
-    Returns list of TTS workflows from both RunningHub and self-hosted sources.
-    
-    Example response:
-    ```json
-    {
-        "workflows": [
-            {
-                "name": "tts_edge.json",
-                "display_name": "tts_edge.json - Runninghub",
-                "source": "runninghub",
-                "path": "workflows/runninghub/tts_edge.json",
-                "key": "runninghub/tts_edge.json",
-                "workflow_id": "123456"
-            }
-        ]
-    }
-    ```
-    """
-    try:
-        # Get all workflows from TTS service
-        all_workflows = pixelle_video.tts.list_workflows()
-        
-        # Filter to TTS workflows only (filename starts with "tts_")
-        tts_workflows = [
-            WorkflowInfo(**wf) 
-            for wf in all_workflows 
-            if wf["name"].startswith("tts_")
-        ]
-        
-        return WorkflowListResponse(workflows=tts_workflows)
-        
-    except Exception as e:
-        logger.error(f"List TTS workflows error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-
-
-@router.get("/workflows/media", response_model=WorkflowListResponse)
-async def list_media_workflows(pixelle_video: PixelleVideoDep):
-    """
-    List available media workflows (both image and video)
-    
-    Returns list of all media workflows from both RunningHub and self-hosted sources.
-    
-    Example response:
-    ```json
-    {
-        "workflows": [
-            {
-                "name": "image_flux.json",
-                "display_name": "image_flux.json - Runninghub",
-                "source": "runninghub",
-                "path": "workflows/runninghub/image_flux.json",
-                "key": "runninghub/image_flux.json",
-                "workflow_id": "123456"
-            },
-            {
-                "name": "video_wan2.1.json",
-                "display_name": "video_wan2.1.json - Runninghub",
-                "source": "runninghub",
-                "path": "workflows/runninghub/video_wan2.1.json",
-                "key": "runninghub/video_wan2.1.json",
-                "workflow_id": "123457"
-            }
-        ]
-    }
-    ```
-    """
-    try:
-        # Get all workflows from media service (includes both image and video)
-        all_workflows = pixelle_video.media.list_workflows()
-        
-        media_workflows = [WorkflowInfo(**wf) for wf in all_workflows]
-        
-        return WorkflowListResponse(workflows=media_workflows)
-        
-    except Exception as e:
-        logger.error(f"List media workflows error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-
-
-# Keep old endpoint for backward compatibility
-@router.get("/workflows/image", response_model=WorkflowListResponse)
-async def list_image_workflows(pixelle_video: PixelleVideoDep):
-    """
-    List available image workflows (deprecated, use /workflows/media instead)
-    
-    This endpoint is kept for backward compatibility but will filter to image_ workflows only.
-    """
-    try:
-        all_workflows = pixelle_video.media.list_workflows()
-        
-        # Filter to image workflows only (filename starts with "image_")
-        image_workflows = [
-            WorkflowInfo(**wf) 
-            for wf in all_workflows 
-            if wf["name"].startswith("image_")
-        ]
-        
-        return WorkflowListResponse(workflows=image_workflows)
-        
-    except Exception as e:
-        logger.error(f"List image workflows error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-
-
-@router.get("/templates", response_model=TemplateListResponse)
-async def list_templates():
-    """
-    List available video templates
-    
-    Returns list of HTML templates grouped by size (portrait, landscape, square).
-    Templates are merged from both default (templates/) and custom (data/templates/) directories.
-    
-    Example response:
-    ```json
-    {
-        "templates": [
-            {
-                "name": "default.html",
-                "display_name": "default.html",
-                "size": "1080x1920",
-                "width": 1080,
-                "height": 1920,
-                "orientation": "portrait",
-                "path": "templates/1080x1920/default.html",
-                "key": "1080x1920/default.html"
-            }
-        ]
-    }
-    ```
-    """
-    try:
-        # Get all templates with info
-        all_templates = get_all_templates_with_info()
-        
-        # Convert to API response format
-        templates = []
-        for t in all_templates:
-            templates.append(TemplateInfo(
-                name=t.display_info.name,
-                display_name=t.display_info.name,
-                size=t.display_info.size,
-                width=t.display_info.width,
-                height=t.display_info.height,
-                orientation=t.display_info.orientation,
-                path=t.template_path,
-                key=t.template_path
-            ))
-        
-        return TemplateListResponse(templates=templates)
-        
-    except Exception as e:
-        logger.error(f"List templates error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-
-
-@router.get("/bgm", response_model=BGMListResponse)
-async def list_bgm():
-    """
-    List available background music files
-    
-    Returns list of BGM files merged from both default (bgm/) and custom (data/bgm/) directories.
-    Custom files take precedence over default files with the same name.
-    
-    Supported formats: mp3, wav, flac, m4a, aac, ogg
-    
-    Example response:
-    ```json
-    {
-        "bgm_files": [
-            {
-                "name": "default.mp3",
-                "path": "bgm/default.mp3",
-                "source": "default"
-            },
-            {
-                "name": "happy.mp3",
-                "path": "data/bgm/happy.mp3",
-                "source": "custom"
-            }
-        ]
-    }
-    ```
-    """
-    try:
-        # Supported audio extensions
-        audio_extensions = ('.mp3', '.wav', '.flac', '.m4a', '.aac', '.ogg')
-        
-        # Collect BGM files from both locations
-        bgm_files_dict = {}  # {filename: {"path": str, "source": str}}
-        
-        # Scan default bgm/ directory
-        default_bgm_dir = Path(get_root_path("bgm"))
-        if default_bgm_dir.exists() and default_bgm_dir.is_dir():
-            for item in default_bgm_dir.iterdir():
-                if item.is_file() and item.suffix.lower() in audio_extensions:
-                    bgm_files_dict[item.name] = {
-                        "path": f"bgm/{item.name}",
-                        "source": "default"
-                    }
-        
-        # Scan custom data/bgm/ directory (overrides default)
-        custom_bgm_dir = Path(get_data_path("bgm"))
-        if custom_bgm_dir.exists() and custom_bgm_dir.is_dir():
-            for item in custom_bgm_dir.iterdir():
-                if item.is_file() and item.suffix.lower() in audio_extensions:
-                    bgm_files_dict[item.name] = {
-                        "path": f"data/bgm/{item.name}",
-                        "source": "custom"
-                    }
-        
-        # Convert to response format
-        bgm_files = [
-            BGMInfo(
-                name=name,
-                path=info["path"],
-                source=info["source"]
-            )
-            for name, info in sorted(bgm_files_dict.items())
-        ]
-        
-        return BGMListResponse(bgm_files=bgm_files)
-        
-    except Exception as e:
-        logger.error(f"List BGM error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-

+ 0 - 105
docs/Pixelle-Video-main/api/routers/tasks.py

@@ -1,105 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Task management endpoints
-
-Endpoints for managing async tasks (checking status, canceling, etc.)
-"""
-
-from typing import List, Optional
-from fastapi import APIRouter, HTTPException, Query
-from loguru import logger
-
-from api.tasks import task_manager, Task, TaskStatus
-
-router = APIRouter(prefix="/tasks", tags=["Tasks"])
-
-
-@router.get("", response_model=List[Task])
-async def list_tasks(
-    status: Optional[TaskStatus] = Query(None, description="Filter by status"),
-    limit: int = Query(100, ge=1, le=1000, description="Maximum number of tasks")
-):
-    """
-    List tasks
-    
-    Retrieve list of tasks with optional filtering.
-    
-    - **status**: Optional filter by status (pending/running/completed/failed/cancelled)
-    - **limit**: Maximum number of tasks to return (default 100)
-    
-    Returns list of tasks sorted by creation time (newest first).
-    """
-    try:
-        tasks = task_manager.list_tasks(status=status, limit=limit)
-        return tasks
-        
-    except Exception as e:
-        logger.error(f"List tasks error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-
-
-@router.get("/{task_id}", response_model=Task)
-async def get_task(task_id: str):
-    """
-    Get task details
-    
-    Retrieve detailed information about a specific task.
-    
-    - **task_id**: Task ID
-    
-    Returns task details including status, progress, and result (if completed).
-    """
-    try:
-        task = task_manager.get_task(task_id)
-        
-        if not task:
-            raise HTTPException(status_code=404, detail=f"Task {task_id} not found")
-        
-        return task
-        
-    except HTTPException:
-        raise
-    except Exception as e:
-        logger.error(f"Get task error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-
-
-@router.delete("/{task_id}")
-async def cancel_task(task_id: str):
-    """
-    Cancel task
-    
-    Cancel a running or pending task.
-    
-    - **task_id**: Task ID
-    
-    Returns success status.
-    """
-    try:
-        success = task_manager.cancel_task(task_id)
-        
-        if not success:
-            raise HTTPException(status_code=404, detail=f"Task {task_id} not found")
-        
-        return {
-            "success": True,
-            "message": f"Task {task_id} cancelled successfully"
-        }
-        
-    except HTTPException:
-        raise
-    except Exception as e:
-        logger.error(f"Cancel task error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-

+ 0 - 94
docs/Pixelle-Video-main/api/routers/tts.py

@@ -1,94 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-TTS (Text-to-Speech) endpoints
-"""
-
-from fastapi import APIRouter, HTTPException
-from loguru import logger
-
-from api.dependencies import PixelleVideoDep
-from api.schemas.tts import TTSSynthesizeRequest, TTSSynthesizeResponse
-from pixelle_video.utils.tts_util import get_audio_duration
-
-router = APIRouter(prefix="/tts", tags=["Basic Services"])
-
-
-@router.post("/synthesize", response_model=TTSSynthesizeResponse)
-async def tts_synthesize(
-    request: TTSSynthesizeRequest,
-    pixelle_video: PixelleVideoDep
-):
-    """
-    Text-to-Speech synthesis endpoint
-    
-    Convert text to speech audio using ComfyUI workflows.
-    
-    - **text**: Text to synthesize
-    - **workflow**: TTS workflow key (optional, uses default if not specified)
-    - **ref_audio**: Reference audio for voice cloning (optional)
-    - **voice_id**: (Deprecated) Voice ID for legacy compatibility
-    
-    Returns path to generated audio file and duration.
-    
-    Examples:
-    ```json
-    {
-        "text": "Hello, welcome to Pixelle-Video!",
-        "workflow": "runninghub/tts_edge.json"
-    }
-    ```
-    
-    With voice cloning:
-    ```json
-    {
-        "text": "Hello, this is a cloned voice",
-        "workflow": "runninghub/tts_index2.json",
-        "ref_audio": "path/to/reference.wav"
-    }
-    ```
-    """
-    try:
-        logger.info(f"TTS synthesis request: {request.text[:50]}...")
-        
-        # Build TTS parameters
-        tts_params = {"text": request.text}
-        
-        # Add workflow if specified
-        if request.workflow:
-            tts_params["workflow"] = request.workflow
-        
-        # Add ref_audio if specified
-        if request.ref_audio:
-            tts_params["ref_audio"] = request.ref_audio
-        
-        # Legacy voice_id support (deprecated)
-        if request.voice_id and not request.workflow:
-            logger.warning("voice_id parameter is deprecated, please use workflow instead")
-            tts_params["voice"] = request.voice_id
-        
-        # Call TTS service
-        audio_path = await pixelle_video.tts(**tts_params)
-        
-        # Get audio duration
-        duration = get_audio_duration(audio_path)
-        
-        return TTSSynthesizeResponse(
-            audio_path=audio_path,
-            duration=duration
-        )
-        
-    except Exception as e:
-        logger.error(f"TTS synthesis error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-

+ 0 - 290
docs/Pixelle-Video-main/api/routers/video.py

@@ -1,290 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Video generation endpoints
-
-Supports both synchronous and asynchronous video generation.
-"""
-
-import os
-from fastapi import APIRouter, HTTPException, Request
-from loguru import logger
-
-from api.dependencies import PixelleVideoDep
-from api.schemas.video import (
-    VideoGenerateRequest,
-    VideoGenerateResponse,
-    VideoGenerateAsyncResponse,
-)
-from api.tasks import task_manager, TaskType
-
-router = APIRouter(prefix="/video", tags=["Video Generation"])
-
-
-def path_to_url(request: Request, file_path: str) -> str:
-    """
-    Convert file path to accessible URL
-    
-    Handles both absolute and relative paths, extracting the path relative
-    to the output directory for URL construction.
-    
-    Args:
-        request: FastAPI Request object (provides base_url from actual request)
-        file_path: Absolute or relative file path
-    
-    Returns:
-        Full URL to access the file
-    
-    Examples:
-        Windows: G:\\...\\output\\20251205_233630_c939\\final.mp4
-              -> http://localhost:8000/api/files/20251205_233630_c939/final.mp4
-        
-        Linux:   /home/user/.../output/20251205_233630_c939/final.mp4
-              -> http://localhost:8000/api/files/20251205_233630_c939/final.mp4
-        
-        Domain:  With domain request -> https://your-domain.com/api/files/...
-    """
-    from pathlib import Path
-    import os
-    
-    # Normalize path separators to forward slashes first (for cross-platform compatibility)
-    file_path = file_path.replace("\\", "/")
-    
-    # Check if it's an absolute path (works for both Windows and Linux)
-    is_absolute = os.path.isabs(file_path) or Path(file_path).is_absolute()
-    
-    if is_absolute:
-        # Find "output" in the path and get everything after it
-        # Split by / to work with normalized paths
-        parts = file_path.split("/")
-        try:
-            output_idx = parts.index("output")
-            # Get all parts after "output" and join them
-            relative_parts = parts[output_idx + 1:]
-            file_path = "/".join(relative_parts)
-        except ValueError:
-            # If "output" not in path, use the filename only
-            file_path = Path(file_path).name
-    else:
-        # If relative path starting with "output/", remove it
-        if file_path.startswith("output/"):
-            file_path = file_path[7:]  # Remove "output/"
-    
-    # Build URL using request's base_url (automatically matches the request host)
-    base_url = str(request.base_url).rstrip('/')
-    return f"{base_url}/api/files/{file_path}"
-
-
-@router.post("/generate/sync", response_model=VideoGenerateResponse)
-async def generate_video_sync(
-    request_body: VideoGenerateRequest,
-    pixelle_video: PixelleVideoDep,
-    request: Request
-):
-    """
-    Generate video synchronously
-    
-    This endpoint blocks until video generation is complete.
-    Suitable for small videos (< 30 seconds).
-    
-    **Note**: May timeout for large videos. Use `/generate/async` instead.
-    
-    Request body includes all video generation parameters.
-    See VideoGenerateRequest schema for details.
-    
-    Returns path to generated video, duration, and file size.
-    """
-    try:
-        logger.info(f"Sync video generation: {request_body.text[:50]}...")
-        
-        # Auto-determine media_width and media_height from template meta tags (required)
-        if not request_body.frame_template:
-            raise ValueError("frame_template is required to determine media size")
-        
-        from pixelle_video.services.frame_html import HTMLFrameGenerator
-        from pixelle_video.utils.template_util import resolve_template_path
-        template_path = resolve_template_path(request_body.frame_template)
-        generator = HTMLFrameGenerator(template_path)
-        media_width, media_height = generator.get_media_size()
-        logger.debug(f"Auto-determined media size from template: {media_width}x{media_height}")
-        
-        # Build video generation parameters
-        video_params = {
-            "text": request_body.text,
-            "mode": request_body.mode,
-            "title": request_body.title,
-            "n_scenes": request_body.n_scenes,
-            "min_narration_words": request_body.min_narration_words,
-            "max_narration_words": request_body.max_narration_words,
-            "min_image_prompt_words": request_body.min_image_prompt_words,
-            "max_image_prompt_words": request_body.max_image_prompt_words,
-            "media_width": media_width,
-            "media_height": media_height,
-            "media_workflow": request_body.media_workflow,
-            "video_fps": request_body.video_fps,
-            "frame_template": request_body.frame_template,
-            "prompt_prefix": request_body.prompt_prefix,
-            "bgm_path": request_body.bgm_path,
-            "bgm_volume": request_body.bgm_volume,
-        }
-        
-        # Add TTS workflow if specified
-        if request_body.tts_workflow:
-            video_params["tts_workflow"] = request_body.tts_workflow
-        
-        # Add ref_audio if specified
-        if request_body.ref_audio:
-            video_params["ref_audio"] = request_body.ref_audio
-        
-        # Legacy voice_id support (deprecated)
-        if request_body.voice_id:
-            logger.warning("voice_id parameter is deprecated, please use tts_workflow instead")
-            video_params["voice_id"] = request_body.voice_id
-        
-        # Add custom template parameters if specified
-        if request_body.template_params:
-            video_params["template_params"] = request_body.template_params
-        
-        # Call video generator service
-        result = await pixelle_video.generate_video(**video_params)
-        
-        # Get file size
-        file_size = os.path.getsize(result.video_path) if os.path.exists(result.video_path) else 0
-        
-        # Convert path to URL
-        video_url = path_to_url(request, result.video_path)
-        
-        return VideoGenerateResponse(
-            video_url=video_url,
-            duration=result.duration,
-            file_size=file_size
-        )
-        
-    except Exception as e:
-        logger.error(f"Sync video generation error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-
-
-@router.post("/generate/async", response_model=VideoGenerateAsyncResponse)
-async def generate_video_async(
-    request_body: VideoGenerateRequest,
-    pixelle_video: PixelleVideoDep,
-    request: Request
-):
-    """
-    Generate video asynchronously
-    
-    Creates a background task for video generation.
-    Returns immediately with a task_id for tracking progress.
-    
-    **Workflow:**
-    1. Submit video generation request
-    2. Receive task_id in response
-    3. Poll `/api/tasks/{task_id}` to check status
-    4. When status is "completed", retrieve video from result
-    
-    Request body includes all video generation parameters.
-    See VideoGenerateRequest schema for details.
-    
-    Returns task_id for tracking progress.
-    """
-    try:
-        logger.info(f"Async video generation: {request_body.text[:50]}...")
-        
-        # Create task
-        task = task_manager.create_task(
-            task_type=TaskType.VIDEO_GENERATION,
-            request_params=request_body.model_dump()
-        )
-        
-        # Define async execution function
-        async def execute_video_generation():
-            """Execute video generation in background"""
-            # Auto-determine media_width and media_height from template meta tags (required)
-            if not request_body.frame_template:
-                raise ValueError("frame_template is required to determine media size")
-            
-            from pixelle_video.services.frame_html import HTMLFrameGenerator
-            from pixelle_video.utils.template_util import resolve_template_path
-            template_path = resolve_template_path(request_body.frame_template)
-            generator = HTMLFrameGenerator(template_path)
-            media_width, media_height = generator.get_media_size()
-            logger.debug(f"Auto-determined media size from template: {media_width}x{media_height}")
-            
-            # Build video generation parameters
-            video_params = {
-                "text": request_body.text,
-                "mode": request_body.mode,
-                "title": request_body.title,
-                "n_scenes": request_body.n_scenes,
-                "min_narration_words": request_body.min_narration_words,
-                "max_narration_words": request_body.max_narration_words,
-                "min_image_prompt_words": request_body.min_image_prompt_words,
-                "max_image_prompt_words": request_body.max_image_prompt_words,
-                "media_width": media_width,
-                "media_height": media_height,
-                "media_workflow": request_body.media_workflow,
-                "video_fps": request_body.video_fps,
-                "frame_template": request_body.frame_template,
-                "prompt_prefix": request_body.prompt_prefix,
-                "bgm_path": request_body.bgm_path,
-                "bgm_volume": request_body.bgm_volume,
-                # Progress callback can be added here if needed
-                # "progress_callback": lambda event: task_manager.update_progress(...)
-            }
-            
-            # Add TTS workflow if specified
-            if request_body.tts_workflow:
-                video_params["tts_workflow"] = request_body.tts_workflow
-            
-            # Add ref_audio if specified
-            if request_body.ref_audio:
-                video_params["ref_audio"] = request_body.ref_audio
-            
-            # Legacy voice_id support (deprecated)
-            if request_body.voice_id:
-                logger.warning("voice_id parameter is deprecated, please use tts_workflow instead")
-                video_params["voice_id"] = request_body.voice_id
-            
-            # Add custom template parameters if specified
-            if request_body.template_params:
-                video_params["template_params"] = request_body.template_params
-            
-            result = await pixelle_video.generate_video(**video_params)
-            
-            # Get file size
-            file_size = os.path.getsize(result.video_path) if os.path.exists(result.video_path) else 0
-            
-            # Convert path to URL
-            video_url = path_to_url(request, result.video_path)
-            
-            return {
-                "video_url": video_url,
-                "duration": result.duration,
-                "file_size": file_size
-            }
-        
-        # Start execution
-        await task_manager.execute_task(
-            task_id=task.task_id,
-            coro_func=execute_video_generation
-        )
-        
-        return VideoGenerateAsyncResponse(
-            task_id=task.task_id
-        )
-        
-    except Exception as e:
-        logger.error(f"Async video generation error: {e}")
-        raise HTTPException(status_code=500, detail=str(e))
-

+ 0 - 60
docs/Pixelle-Video-main/api/schemas/__init__.py

@@ -1,60 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-API Schemas (Pydantic models)
-"""
-
-from api.schemas.base import BaseResponse, ErrorResponse
-from api.schemas.llm import LLMChatRequest, LLMChatResponse
-from api.schemas.tts import TTSSynthesizeRequest, TTSSynthesizeResponse
-from api.schemas.image import ImageGenerateRequest, ImageGenerateResponse
-from api.schemas.content import (
-    NarrationGenerateRequest,
-    NarrationGenerateResponse,
-    ImagePromptGenerateRequest,
-    ImagePromptGenerateResponse,
-    TitleGenerateRequest,
-    TitleGenerateResponse,
-)
-from api.schemas.video import (
-    VideoGenerateRequest,
-    VideoGenerateResponse,
-    VideoGenerateAsyncResponse,
-)
-
-__all__ = [
-    # Base
-    "BaseResponse",
-    "ErrorResponse",
-    # LLM
-    "LLMChatRequest",
-    "LLMChatResponse",
-    # TTS
-    "TTSSynthesizeRequest",
-    "TTSSynthesizeResponse",
-    # Image
-    "ImageGenerateRequest",
-    "ImageGenerateResponse",
-    # Content
-    "NarrationGenerateRequest",
-    "NarrationGenerateResponse",
-    "ImagePromptGenerateRequest",
-    "ImagePromptGenerateResponse",
-    "TitleGenerateRequest",
-    "TitleGenerateResponse",
-    # Video
-    "VideoGenerateRequest",
-    "VideoGenerateResponse",
-    "VideoGenerateAsyncResponse",
-]
-

+ 0 - 33
docs/Pixelle-Video-main/api/schemas/base.py

@@ -1,33 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Base schemas
-"""
-
-from typing import Any, Optional
-from pydantic import BaseModel
-
-
-class BaseResponse(BaseModel):
-    """Base API response"""
-    success: bool = True
-    message: str = "Success"
-    data: Optional[Any] = None
-
-
-class ErrorResponse(BaseModel):
-    """Error response"""
-    success: bool = False
-    message: str
-    error: Optional[str] = None
-

+ 0 - 103
docs/Pixelle-Video-main/api/schemas/content.py

@@ -1,103 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Content generation API schemas
-"""
-
-from typing import List, Optional
-from pydantic import BaseModel, Field
-
-
-# ============================================================================
-# Narration Generation
-# ============================================================================
-
-class NarrationGenerateRequest(BaseModel):
-    """Narration generation request"""
-    text: str = Field(..., description="Source text to generate narrations from")
-    n_scenes: int = Field(5, ge=1, le=20, description="Number of scenes")
-    min_words: int = Field(5, ge=1, le=100, description="Minimum words per narration")
-    max_words: int = Field(20, ge=1, le=200, description="Maximum words per narration")
-    
-    class Config:
-        json_schema_extra = {
-            "example": {
-                "text": "Atomic Habits is about making small changes that lead to remarkable results.",
-                "n_scenes": 5,
-                "min_words": 5,
-                "max_words": 20
-            }
-        }
-
-
-class NarrationGenerateResponse(BaseModel):
-    """Narration generation response"""
-    success: bool = True
-    message: str = "Success"
-    narrations: List[str] = Field(..., description="Generated narrations")
-
-
-# ============================================================================
-# Image Prompt Generation
-# ============================================================================
-
-class ImagePromptGenerateRequest(BaseModel):
-    """Image prompt generation request"""
-    narrations: List[str] = Field(..., description="List of narrations")
-    min_words: int = Field(30, ge=10, le=100, description="Minimum words per prompt")
-    max_words: int = Field(60, ge=10, le=200, description="Maximum words per prompt")
-    
-    class Config:
-        json_schema_extra = {
-            "example": {
-                "narrations": [
-                    "Small habits compound over time",
-                    "Focus on systems, not goals"
-                ],
-                "min_words": 30,
-                "max_words": 60
-            }
-        }
-
-
-class ImagePromptGenerateResponse(BaseModel):
-    """Image prompt generation response"""
-    success: bool = True
-    message: str = "Success"
-    image_prompts: List[str] = Field(..., description="Generated image prompts")
-
-
-# ============================================================================
-# Title Generation
-# ============================================================================
-
-class TitleGenerateRequest(BaseModel):
-    """Title generation request"""
-    text: str = Field(..., description="Source text")
-    style: Optional[str] = Field(None, description="Title style (e.g., 'engaging', 'formal')")
-    
-    class Config:
-        json_schema_extra = {
-            "example": {
-                "text": "Atomic Habits is about making small changes that lead to remarkable results.",
-                "style": "engaging"
-            }
-        }
-
-
-class TitleGenerateResponse(BaseModel):
-    """Title generation response"""
-    success: bool = True
-    message: str = "Success"
-    title: str = Field(..., description="Generated title")
-

+ 0 - 69
docs/Pixelle-Video-main/api/schemas/frame.py

@@ -1,69 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Frame/Template rendering API schemas
-"""
-
-from typing import Optional, Dict, Any, List
-from pydantic import BaseModel, Field
-
-
-class FrameRenderRequest(BaseModel):
-    """Frame rendering request"""
-    template: str = Field(
-        ..., 
-        description="Template key (e.g., '1080x1920/default.html'). Can also be just filename (e.g., 'default.html') to use default size."
-    )
-    title: Optional[str] = Field(None, description="Frame title (optional)")
-    text: str = Field(..., description="Frame text content")
-    image: Optional[str] = Field(None, description="Image path or URL (optional)")
-    
-    class Config:
-        json_schema_extra = {
-            "example": {
-                "template": "1080x1920/default.html",
-                "title": "Sample Title",
-                "text": "This is a sample text for the frame.",
-                "image": "resources/example.png"
-            }
-        }
-
-
-class FrameRenderResponse(BaseModel):
-    """Frame rendering response"""
-    success: bool = True
-    message: str = "Success"
-    frame_path: str = Field(..., description="Path to generated frame image")
-    width: int = Field(..., description="Frame width in pixels")
-    height: int = Field(..., description="Frame height in pixels")
-
-
-class TemplateParamConfig(BaseModel):
-    """Single template parameter configuration"""
-    type: str = Field(..., description="Parameter type: 'text', 'number', 'color', 'bool'")
-    default: Any = Field(..., description="Default value")
-    label: str = Field(..., description="Display label for the parameter")
-
-
-class TemplateParamsResponse(BaseModel):
-    """Template parameters response"""
-    success: bool = True
-    message: str = "Success"
-    template: str = Field(..., description="Template path")
-    media_width: int = Field(..., description="Media width from template meta tags")
-    media_height: int = Field(..., description="Media height from template meta tags")
-    params: Dict[str, TemplateParamConfig] = Field(
-        default_factory=dict,
-        description="Custom parameters defined in template. Key is parameter name, value is config."
-    )
-

+ 0 - 43
docs/Pixelle-Video-main/api/schemas/image.py

@@ -1,43 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Image generation API schemas
-"""
-
-from typing import Optional
-from pydantic import BaseModel, Field
-
-
-class ImageGenerateRequest(BaseModel):
-    """Image generation request"""
-    prompt: str = Field(..., description="Image generation prompt")
-    width: int = Field(1024, ge=512, le=2048, description="Image width")
-    height: int = Field(1024, ge=512, le=2048, description="Image height")
-    workflow: Optional[str] = Field(None, description="Custom workflow filename")
-    
-    class Config:
-        json_schema_extra = {
-            "example": {
-                "prompt": "A serene mountain landscape at sunset, photorealistic style",
-                "width": 1024,
-                "height": 1024
-            }
-        }
-
-
-class ImageGenerateResponse(BaseModel):
-    """Image generation response"""
-    success: bool = True
-    message: str = "Success"
-    image_path: str = Field(..., description="Path to generated image")
-

+ 0 - 43
docs/Pixelle-Video-main/api/schemas/llm.py

@@ -1,43 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-LLM API schemas
-"""
-
-from typing import Optional
-from pydantic import BaseModel, Field
-
-
-class LLMChatRequest(BaseModel):
-    """LLM chat request"""
-    prompt: str = Field(..., description="User prompt")
-    temperature: float = Field(0.7, ge=0.0, le=2.0, description="Temperature (0.0-2.0)")
-    max_tokens: int = Field(2000, ge=1, le=32000, description="Maximum tokens")
-    
-    class Config:
-        json_schema_extra = {
-            "example": {
-                "prompt": "Explain the concept of atomic habits in 3 sentences",
-                "temperature": 0.7,
-                "max_tokens": 2000
-            }
-        }
-
-
-class LLMChatResponse(BaseModel):
-    """LLM chat response"""
-    success: bool = True
-    message: str = "Success"
-    content: str = Field(..., description="Generated response")
-    tokens_used: Optional[int] = Field(None, description="Tokens used (if available)")
-

+ 0 - 69
docs/Pixelle-Video-main/api/schemas/resources.py

@@ -1,69 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Resource discovery API schemas
-"""
-
-from typing import List, Optional
-from pydantic import BaseModel, Field
-
-
-class WorkflowInfo(BaseModel):
-    """Workflow information"""
-    name: str = Field(..., description="Workflow filename")
-    display_name: str = Field(..., description="Display name with source info")
-    source: str = Field(..., description="Source (runninghub or selfhost)")
-    path: str = Field(..., description="Full path to workflow file")
-    key: str = Field(..., description="Workflow key (source/name)")
-    workflow_id: Optional[str] = Field(None, description="RunningHub workflow ID (if applicable)")
-
-
-class WorkflowListResponse(BaseModel):
-    """Workflow list response"""
-    success: bool = True
-    message: str = "Success"
-    workflows: List[WorkflowInfo] = Field(..., description="List of available workflows")
-
-
-class TemplateInfo(BaseModel):
-    """Template information"""
-    name: str = Field(..., description="Template filename")
-    display_name: str = Field(..., description="Display name")
-    size: str = Field(..., description="Size (e.g., 1080x1920)")
-    width: int = Field(..., description="Width in pixels")
-    height: int = Field(..., description="Height in pixels")
-    orientation: str = Field(..., description="Orientation (portrait/landscape/square)")
-    path: str = Field(..., description="Full path to template file")
-    key: str = Field(..., description="Template key (size/name)")
-
-
-class TemplateListResponse(BaseModel):
-    """Template list response"""
-    success: bool = True
-    message: str = "Success"
-    templates: List[TemplateInfo] = Field(..., description="List of available templates")
-
-
-class BGMInfo(BaseModel):
-    """BGM information"""
-    name: str = Field(..., description="BGM filename")
-    path: str = Field(..., description="Full path to BGM file")
-    source: str = Field(..., description="Source (default or custom)")
-
-
-class BGMListResponse(BaseModel):
-    """BGM list response"""
-    success: bool = True
-    message: str = "Success"
-    bgm_files: List[BGMInfo] = Field(..., description="List of available BGM files")
-

+ 0 - 53
docs/Pixelle-Video-main/api/schemas/tts.py

@@ -1,53 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-TTS API schemas
-"""
-
-from typing import Optional
-from pydantic import BaseModel, Field
-
-
-class TTSSynthesizeRequest(BaseModel):
-    """TTS synthesis request"""
-    text: str = Field(..., description="Text to synthesize")
-    workflow: Optional[str] = Field(
-        None, 
-        description="TTS workflow key (e.g., 'runninghub/tts_edge.json' or 'selfhost/tts_edge.json'). If not specified, uses default workflow from config."
-    )
-    ref_audio: Optional[str] = Field(
-        None, 
-        description="Reference audio path for voice cloning (optional). Can be a local file path or URL."
-    )
-    voice_id: Optional[str] = Field(
-        None, 
-        description="Voice ID (deprecated, use workflow instead)"
-    )
-    
-    class Config:
-        json_schema_extra = {
-            "example": {
-                "text": "Hello, welcome to Pixelle-Video!",
-                "workflow": "runninghub/tts_edge.json",
-                "ref_audio": None
-            }
-        }
-
-
-class TTSSynthesizeResponse(BaseModel):
-    """TTS synthesis response"""
-    success: bool = True
-    message: str = "Success"
-    audio_path: str = Field(..., description="Path to generated audio file")
-    duration: float = Field(..., description="Audio duration in seconds")
-

+ 0 - 116
docs/Pixelle-Video-main/api/schemas/video.py

@@ -1,116 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Video generation API schemas
-"""
-
-from typing import Optional, Literal, Dict, Any
-from pydantic import BaseModel, Field
-
-
-class VideoGenerateRequest(BaseModel):
-    """Video generation request"""
-    
-    # === Input ===
-    text: str = Field(..., description="Source text for video generation")
-    
-    # === Processing Mode ===
-    mode: Literal["generate", "fixed"] = Field(
-        "generate",
-        description="Processing mode: 'generate' (AI generates narrations) or 'fixed' (use text as-is)"
-    )
-    
-    # === Optional Title ===
-    title: Optional[str] = Field(None, description="Video title (auto-generated if not provided)")
-    
-    # === Basic Config ===
-    n_scenes: Optional[int] = Field(5, ge=1, le=20, description="Number of scenes (only used in 'generate' mode, ignored in 'fixed' mode)")
-    
-    # === TTS Parameters ===
-    tts_workflow: Optional[str] = Field(
-        None, 
-        description="TTS workflow key (e.g., 'runninghub/tts_edge.json'). If not specified, uses default workflow from config."
-    )
-    ref_audio: Optional[str] = Field(
-        None, 
-        description="Reference audio path for voice cloning (optional)"
-    )
-    voice_id: Optional[str] = Field(
-        None, 
-        description="(Deprecated) TTS voice ID for legacy compatibility"
-    )
-    
-    # === LLM Parameters ===
-    min_narration_words: int = Field(5, ge=1, le=100, description="Min narration words")
-    max_narration_words: int = Field(20, ge=1, le=200, description="Max narration words")
-    min_image_prompt_words: int = Field(30, ge=10, le=100, description="Min image prompt words")
-    max_image_prompt_words: int = Field(60, ge=10, le=200, description="Max image prompt words")
-    
-    # === Media Parameters ===
-    # Note: media_width and media_height are auto-determined from template meta tags
-    media_workflow: Optional[str] = Field(None, description="Custom media workflow (image or video)")
-    
-    # === Video Parameters ===
-    video_fps: int = Field(30, ge=15, le=60, description="Video FPS")
-    
-    # === Frame Template (determines video size) ===
-    frame_template: Optional[str] = Field(
-        None, 
-        description="HTML template path with size (e.g., '1080x1920/default.html'). Video size is auto-determined from template."
-    )
-    
-    # === Template Custom Parameters ===
-    template_params: Optional[Dict[str, Any]] = Field(
-        None,
-        description="Custom template parameters (e.g., {'accent_color': '#ff0000', 'background': 'url'}). "
-                    "Available parameters depend on the template. Use GET /api/templates/{template_path}/params to discover them."
-    )
-    
-    # === Image Style ===
-    prompt_prefix: Optional[str] = Field(None, description="Image style prefix")
-    
-    # === BGM ===
-    bgm_path: Optional[str] = Field(None, description="Background music path")
-    bgm_volume: float = Field(0.3, ge=0.0, le=1.0, description="BGM volume (0.0-1.0)")
-    
-    class Config:
-        json_schema_extra = {
-            "example": {
-                "text": "Atomic Habits teaches us that small changes compound over time to produce remarkable results.",
-                "mode": "generate",
-                "n_scenes": 5,
-                "frame_template": "1080x1920/image_default.html",
-                "template_params": {
-                    "accent_color": "#3498db",
-                    "background": "https://example.com/custom-bg.jpg"
-                },
-                "title": "The Power of Atomic Habits"
-            }
-        }
-
-
-class VideoGenerateResponse(BaseModel):
-    """Video generation response (synchronous)"""
-    success: bool = True
-    message: str = "Success"
-    video_url: str = Field(..., description="URL to access generated video")
-    duration: float = Field(..., description="Video duration in seconds")
-    file_size: int = Field(..., description="File size in bytes")
-
-
-class VideoGenerateAsyncResponse(BaseModel):
-    """Video generation async response"""
-    success: bool = True
-    message: str = "Task created successfully"
-    task_id: str = Field(..., description="Task ID for tracking progress")
-

+ 0 - 21
docs/Pixelle-Video-main/api/tasks/__init__.py

@@ -1,21 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Task management for async operations
-"""
-
-from api.tasks.models import Task, TaskStatus, TaskType
-from api.tasks.manager import task_manager
-
-__all__ = ["Task", "TaskStatus", "TaskType", "task_manager"]
-

+ 0 - 270
docs/Pixelle-Video-main/api/tasks/manager.py

@@ -1,270 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Task Manager
-
-In-memory task management for video generation jobs.
-"""
-
-import asyncio
-import uuid
-from datetime import datetime, timedelta
-from typing import Dict, List, Optional, Callable
-from loguru import logger
-
-from api.tasks.models import Task, TaskStatus, TaskType, TaskProgress
-from api.config import api_config
-
-
-class TaskManager:
-    """
-    Task manager for handling async video generation tasks
-    
-    Features:
-    - In-memory storage (can be replaced with Redis later)
-    - Task lifecycle management
-    - Progress tracking
-    - Auto cleanup of old tasks
-    """
-    
-    def __init__(self):
-        self._tasks: Dict[str, Task] = {}
-        self._task_futures: Dict[str, asyncio.Task] = {}
-        self._cleanup_task: Optional[asyncio.Task] = None
-        self._running = False
-    
-    async def start(self):
-        """Start task manager and cleanup scheduler"""
-        if self._running:
-            logger.warning("Task manager already running")
-            return
-        
-        self._running = True
-        self._cleanup_task = asyncio.create_task(self._cleanup_loop())
-        logger.info("✅ Task manager started")
-    
-    async def stop(self):
-        """Stop task manager and cancel all tasks"""
-        self._running = False
-        
-        # Cancel cleanup task
-        if self._cleanup_task:
-            self._cleanup_task.cancel()
-            try:
-                await self._cleanup_task
-            except asyncio.CancelledError:
-                pass
-        
-        # Cancel all running tasks
-        for task_id, future in self._task_futures.items():
-            if not future.done():
-                future.cancel()
-                logger.info(f"Cancelled task: {task_id}")
-        
-        self._tasks.clear()
-        self._task_futures.clear()
-        logger.info("✅ Task manager stopped")
-    
-    def create_task(
-        self,
-        task_type: TaskType,
-        request_params: Optional[dict] = None
-    ) -> Task:
-        """
-        Create a new task
-        
-        Args:
-            task_type: Type of task
-            request_params: Original request parameters
-            
-        Returns:
-            Created task
-        """
-        task_id = str(uuid.uuid4())
-        task = Task(
-            task_id=task_id,
-            task_type=task_type,
-            status=TaskStatus.PENDING,
-            request_params=request_params,
-        )
-        
-        self._tasks[task_id] = task
-        logger.info(f"Created task {task_id} ({task_type})")
-        return task
-    
-    async def execute_task(
-        self,
-        task_id: str,
-        coro_func: Callable,
-        *args,
-        **kwargs
-    ):
-        """
-        Execute task asynchronously
-        
-        Args:
-            task_id: Task ID
-            coro_func: Async function to execute
-            *args: Positional arguments
-            **kwargs: Keyword arguments
-        """
-        task = self._tasks.get(task_id)
-        if not task:
-            logger.error(f"Task {task_id} not found")
-            return
-        
-        # Create async task
-        async def _execute():
-            try:
-                task.status = TaskStatus.RUNNING
-                task.started_at = datetime.now()
-                logger.info(f"Task {task_id} started")
-                
-                # Execute the actual work
-                result = await coro_func(*args, **kwargs)
-                
-                # Update task with result
-                task.status = TaskStatus.COMPLETED
-                task.result = result
-                task.completed_at = datetime.now()
-                logger.info(f"Task {task_id} completed")
-                
-            except Exception as e:
-                task.status = TaskStatus.FAILED
-                task.error = str(e)
-                task.completed_at = datetime.now()
-                logger.error(f"Task {task_id} failed: {e}")
-        
-        # Start execution
-        future = asyncio.create_task(_execute())
-        self._task_futures[task_id] = future
-    
-    def get_task(self, task_id: str) -> Optional[Task]:
-        """Get task by ID"""
-        return self._tasks.get(task_id)
-    
-    def list_tasks(
-        self,
-        status: Optional[TaskStatus] = None,
-        limit: int = 100
-    ) -> List[Task]:
-        """
-        List tasks with optional filtering
-        
-        Args:
-            status: Filter by status
-            limit: Maximum number of tasks to return
-            
-        Returns:
-            List of tasks
-        """
-        tasks = list(self._tasks.values())
-        
-        if status:
-            tasks = [t for t in tasks if t.status == status]
-        
-        # Sort by created_at descending
-        tasks.sort(key=lambda t: t.created_at, reverse=True)
-        
-        return tasks[:limit]
-    
-    def update_progress(
-        self,
-        task_id: str,
-        current: int,
-        total: int,
-        message: str = ""
-    ):
-        """
-        Update task progress
-        
-        Args:
-            task_id: Task ID
-            current: Current progress
-            total: Total steps
-            message: Progress message
-        """
-        task = self._tasks.get(task_id)
-        if not task:
-            return
-        
-        percentage = (current / total * 100) if total > 0 else 0
-        task.progress = TaskProgress(
-            current=current,
-            total=total,
-            percentage=percentage,
-            message=message
-        )
-    
-    def cancel_task(self, task_id: str) -> bool:
-        """
-        Cancel a running task
-        
-        Args:
-            task_id: Task ID
-            
-        Returns:
-            True if cancelled, False otherwise
-        """
-        task = self._tasks.get(task_id)
-        if not task:
-            return False
-        
-        # Do not cancel already-terminal tasks
-        if task.status in [TaskStatus.COMPLETED, TaskStatus.FAILED, TaskStatus.CANCELLED]:
-            return False
-
-        # Cancel future if running
-        future = self._task_futures.get(task_id)
-        if future and not future.done():
-            future.cancel()
-        
-        # Update task status
-        task.status = TaskStatus.CANCELLED
-        task.completed_at = datetime.now()
-        logger.info(f"Cancelled task {task_id}")
-        return True
-    
-    async def _cleanup_loop(self):
-        """Periodically clean up old completed tasks"""
-        while self._running:
-            try:
-                await asyncio.sleep(api_config.task_cleanup_interval)
-                self._cleanup_old_tasks()
-            except asyncio.CancelledError:
-                break
-            except Exception as e:
-                logger.error(f"Error in cleanup loop: {e}")
-    
-    def _cleanup_old_tasks(self):
-        """Remove old completed/failed tasks"""
-        cutoff_time = datetime.now() - timedelta(seconds=api_config.task_retention_time)
-        
-        tasks_to_remove = []
-        for task_id, task in self._tasks.items():
-            if task.status in [TaskStatus.COMPLETED, TaskStatus.FAILED, TaskStatus.CANCELLED]:
-                if task.completed_at and task.completed_at < cutoff_time:
-                    tasks_to_remove.append(task_id)
-        
-        for task_id in tasks_to_remove:
-            del self._tasks[task_id]
-            if task_id in self._task_futures:
-                del self._task_futures[task_id]
-        
-        if tasks_to_remove:
-            logger.info(f"Cleaned up {len(tasks_to_remove)} old tasks")
-
-
-# Global task manager instance
-task_manager = TaskManager()
-

+ 0 - 70
docs/Pixelle-Video-main/api/tasks/models.py

@@ -1,70 +0,0 @@
-# Copyright (C) 2025 AIDC-AI
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#     http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Task data models
-"""
-
-from datetime import datetime
-from enum import Enum
-from typing import Any, Optional
-from pydantic import BaseModel, Field
-
-
-class TaskStatus(str, Enum):
-    """Task status"""
-    PENDING = "pending"
-    RUNNING = "running"
-    COMPLETED = "completed"
-    FAILED = "failed"
-    CANCELLED = "cancelled"
-
-
-class TaskType(str, Enum):
-    """Task type"""
-    VIDEO_GENERATION = "video_generation"
-
-
-class TaskProgress(BaseModel):
-    """Task progress information"""
-    current: int = 0
-    total: int = 0
-    percentage: float = 0.0
-    message: str = ""
-
-
-class Task(BaseModel):
-    """Task model"""
-    task_id: str
-    task_type: TaskType
-    status: TaskStatus = TaskStatus.PENDING
-    
-    # Progress tracking
-    progress: Optional[TaskProgress] = None
-    
-    # Result
-    result: Optional[Any] = None
-    error: Optional[str] = None
-    
-    # Metadata
-    created_at: datetime = Field(default_factory=datetime.now)
-    started_at: Optional[datetime] = None
-    completed_at: Optional[datetime] = None
-    
-    # Request parameters (for reference)
-    request_params: Optional[dict] = None
-    
-    class Config:
-        json_encoders = {
-            datetime: lambda v: v.isoformat()
-        }
-

BIN
docs/Pixelle-Video-main/bgm/default.mp3


+ 0 - 67
docs/Pixelle-Video-main/config.example.yaml

@@ -1,67 +0,0 @@
-# Pixelle-Video Configuration
-# Copy this file to config.yaml and fill in your settings
-# ⚠️ Never commit config.yaml to Git!
-
-project_name: Pixelle-Video
-
-# ==================== LLM Configuration ====================
-# Supports any OpenAI SDK compatible API
-llm:
-  api_key: ""
-  base_url: ""
-  model: ""
-
-# Popular presets:
-# Qwen Max:        base_url: "https://dashscope.aliyuncs.com/compatible-mode/v1"  model: "qwen-max"
-# OpenAI GPT-4o:   base_url: "https://api.openai.com/v1"                          model: "gpt-4o"
-# DeepSeek:        base_url: "https://api.deepseek.com"                           model: "deepseek-chat"
-# Ollama (Local):  base_url: "http://localhost:11434/v1"                          model: "llama3.2"
-
-# ==================== ComfyUI Configuration ====================
-comfyui:
-  # Global ComfyUI settings
-  comfyui_url: http://127.0.0.1:8188  # ComfyUI server URL (required for selfhost workflows)
-  comfyui_api_key: ""  # ComfyUI API key (optional, get from https://platform.comfy.org/profile/api-keys)
-  # Note for Docker users: Use host.docker.internal:8188 (Mac/Windows) or host IP address (Linux)
-  runninghub_api_key: ""  # RunningHub API key (required for runninghub workflows)
-  runninghub_concurrent_limit: 1  # Concurrent execution limit for RunningHub (1-10, default 1 for regular members)
-  
-  # TTS-specific configuration
-  tts:
-    default_workflow: selfhost/tts_edge.json  # TTS workflow to use
-  
-  # Image-specific configuration
-  image:
-    # Required: Default workflow to use (no fallback)
-    # Options: runninghub/image_flux.json (recommended, no local setup)
-    #          selfhost/image_flux.json (requires local ComfyUI)
-    default_workflow: runninghub/image_flux.json
-    
-    # Image prompt prefix (optional)
-    prompt_prefix: "Minimalist black-and-white matchstick figure style illustration, clean lines, simple sketch style"
-  
-  # Video-specific configuration
-  video:
-    # Required: Default workflow to use (no fallback)
-    # Options: runninghub/video_wan2.1_fusionx.json (recommended, no local setup)
-    #          selfhost/video_wan2.1_fusionx.json (requires local ComfyUI)
-    default_workflow: runninghub/video_wan2.1_fusionx.json
-    
-    # Video prompt prefix (optional)
-    prompt_prefix: "Minimalist black-and-white matchstick figure style illustration, clean lines, simple sketch style"
-
-# ==================== Template Configuration ====================
-# Configure default template for video generation
-template:
-  # Default frame template to use when not explicitly specified
-  # Determines video aspect ratio and layout style
-  # Template naming convention:
-  #   - static_*.html: Static style templates (no AI-generated media)
-  #   - image_*.html: Templates requiring AI-generated images
-  #   - video_*.html: Templates requiring AI-generated videos
-  # Options: 
-  #   - 1080x1920 (vertical/portrait): image_default.html, image_modern.html, image_elegant.html, static_simple.html, etc.
-  #   - 1080x1080 (square): image_minimal_framed.html, etc.
-  #   - 1920x1080 (horizontal/landscape): image_film.html, image_full.html, etc.
-  # See templates/ directory for all available templates
-  default_template: "1080x1920/image_default.html"

+ 0 - 123
docs/Pixelle-Video-main/docker-compose.yml

@@ -1,123 +0,0 @@
-version: '3.8'
-
-# Build Arguments Configuration
-# You can override these by setting environment variables before running docker-compose
-#
-# Example for China environment (auto uses Tsinghua mirror):
-#   USE_CN_MIRROR=true docker-compose up -d
-#
-# Example for international environment (default):
-#   docker-compose up -d
-
-services:
-  # Init Service - Ensures config.yaml exists before other services start
-  # This fixes the Docker issue where mounting a non-existent file creates a directory
-  init:
-    image: alpine:latest
-    volumes:
-      - ./:/workspace
-    command: >
-      sh -c '
-        if [ -d /workspace/config.yaml ]; then
-          echo "⚠️  config.yaml is a directory, removing it...";
-          rm -rf /workspace/config.yaml;
-        fi;
-        if [ ! -f /workspace/config.yaml ] && [ -f /workspace/config.example.yaml ]; then
-          echo "📋 Creating config.yaml from config.example.yaml...";
-          cp /workspace/config.example.yaml /workspace/config.yaml;
-          echo "✅ config.yaml created successfully!";
-        else
-          echo "✅ config.yaml already exists.";
-        fi
-      '
-    restart: "no"
-
-  # API Service - FastAPI backend
-  api:
-    build:
-      context: .
-      dockerfile: Dockerfile
-      args:
-        USE_CN_MIRROR: ${USE_CN_MIRROR:-false}
-    container_name: pixelle-video-api
-    command: .venv/bin/python api/app.py --host 0.0.0.0 --port 8000
-    depends_on:
-      init:
-        condition: service_completed_successfully
-    ports:
-      - "8000:8000"
-    volumes:
-      # Mount config file (read-write to allow saving from Web UI)
-      # Note: init service auto-creates config.yaml from config.example.yaml if not exists
-      - ./config.yaml:/app/config.yaml
-      # Mount data directories for persistence
-      # data/ contains: users/, bgm/, templates/, workflows/ (custom resources)
-      - ./data:/app/data
-      - ./output:/app/output
-      # Note: Default resources (bgm/, templates/, workflows/) are baked into the image
-      # Custom resources in data/* will override defaults
-    environment:
-      - TZ=Asia/Shanghai
-    restart: unless-stopped
-    healthcheck:
-      test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
-      interval: 30s
-      timeout: 10s
-      retries: 3
-      start_period: 10s
-    logging:
-      driver: "json-file"
-      options:
-        max-size: "10m"
-        max-file: "3"
-    networks:
-      - pixelle-network
-
-  # Web UI Service - Streamlit frontend
-  web:
-    build:
-      context: .
-      dockerfile: Dockerfile
-      args:
-        USE_CN_MIRROR: ${USE_CN_MIRROR:-false}
-    container_name: pixelle-video-web
-    command: .venv/bin/streamlit run web/app.py --server.port 8501 --server.address 0.0.0.0
-    depends_on:
-      init:
-        condition: service_completed_successfully
-    ports:
-      - "8501:8501"
-    volumes:
-      # Mount config file (read-write to allow saving from Web UI)
-      # Note: init service auto-creates config.yaml from config.example.yaml if not exists
-      - ./config.yaml:/app/config.yaml
-      # Mount data directories for persistence
-      # data/ contains: users/, bgm/, templates/, workflows/ (custom resources)
-      - ./data:/app/data
-      - ./output:/app/output
-      # Note: Default resources (bgm/, templates/, workflows/) are baked into the image
-      # Custom resources in data/* will override defaults
-    environment:
-      - TZ=Asia/Shanghai
-      - STREAMLIT_SERVER_PORT=8501
-      - STREAMLIT_SERVER_ADDRESS=0.0.0.0
-      - STREAMLIT_BROWSER_GATHER_USAGE_STATS=false
-    restart: unless-stopped
-    healthcheck:
-      test: ["CMD", "curl", "-f", "http://localhost:8501/_stcore/health"]
-      interval: 30s
-      timeout: 10s
-      retries: 3
-      start_period: 15s
-    logging:
-      driver: "json-file"
-      options:
-        max-size: "10m"
-        max-file: "3"
-    networks:
-      - pixelle-network
-
-networks:
-  pixelle-network:
-    driver: bridge
-

+ 0 - 84
docs/Pixelle-Video-main/docker-start.sh

@@ -1,84 +0,0 @@
-#!/bin/bash
-# Pixelle-Video Docker Quick Start Script
-
-set -e
-
-echo "🐳 Pixelle-Video Docker Deployment"
-echo "=================================="
-echo ""
-
-# Check if config.yaml exists as a directory (Docker mount issue)
-if [ -d config.yaml ]; then
-    echo "⚠️  config.yaml is a directory (Docker mount issue), removing it..."
-    rm -rf config.yaml
-fi
-
-# Check if config.yaml exists, if not, create from example
-if [ ! -f config.yaml ]; then
-    echo "⚠️  config.yaml not found, creating from config.example.yaml..."
-    if [ -f config.example.yaml ]; then
-        cp config.example.yaml config.yaml
-        echo "✅ config.yaml created successfully!"
-        echo ""
-        echo "⚠️  IMPORTANT: Please edit config.yaml and fill in:"
-        echo "   - LLM API key and settings"
-        echo "   - ComfyUI URL (use host.docker.internal:8188 for local Mac/Windows)"
-        echo "   - RunningHub API key (optional, for cloud workflows)"
-        echo ""
-        echo "You can also configure these settings in the Web UI after starting."
-        echo ""
-    else
-        echo "❌ Error: config.example.yaml not found!"
-        echo ""
-        exit 1
-    fi
-fi
-
-# Check if docker-compose is available
-if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
-    echo "❌ Error: docker-compose not found!"
-    echo ""
-    echo "Please install Docker Compose first:"
-    echo "  https://docs.docker.com/compose/install/"
-    echo ""
-    exit 1
-fi
-
-# Use docker-compose or docker compose based on availability
-if command -v docker-compose &> /dev/null; then
-    DOCKER_COMPOSE="docker-compose"
-else
-    DOCKER_COMPOSE="docker compose"
-fi
-
-echo "📦 Building Docker images..."
-$DOCKER_COMPOSE build
-
-echo ""
-echo "🚀 Starting services..."
-$DOCKER_COMPOSE up -d
-
-echo ""
-echo "⏳ Waiting for services to be ready..."
-sleep 5
-
-echo ""
-echo "✅ Pixelle-Video is now running!"
-echo ""
-echo "Services:"
-echo "  🌐 Web UI:  http://localhost:8501"
-echo "  🔌 API:     http://localhost:8000"
-echo "  📚 API Docs: http://localhost:8000/docs"
-echo ""
-echo "Custom Resources (optional):"
-echo "  📁 data/bgm/        - Custom background music (overrides default)"
-echo "  📁 data/templates/  - Custom HTML templates (overrides default)"
-echo "  📁 data/workflows/  - Custom ComfyUI workflows (overrides default)"
-echo ""
-echo "Useful commands:"
-echo "  View logs:    $DOCKER_COMPOSE logs -f"
-echo "  Stop:         $DOCKER_COMPOSE down"
-echo "  Restart:      $DOCKER_COMPOSE restart"
-echo "  Rebuild:      $DOCKER_COMPOSE up -d --build"
-echo ""
-

+ 0 - 62
docs/Pixelle-Video-main/docs/FAQ.md

@@ -1,62 +0,0 @@
-# 🙋‍♀️ Pixelle-Video FAQ
-
-### How to integrate custom local workflows?
-
-If you want to integrate your own ComfyUI workflows, please follow these specifications:
-
-1.  **Run Locally First**: Ensure the workflow runs correctly in your local ComfyUI.
-2.  **Parameter Binding**: Find the Text node (CLIP Text Encode or similar text input node) where prompt words need to be dynamically passed by the program.
-    -   Edit the **Title** of that node.
-    -   Change the title to `$prompt.text!` or `$prompt.value!` (depending on the input type accepted by the node).
-     <img src="https://github.com/user-attachments/assets/ddb1962c-9272-486f-84ab-8019c3fb5bf4" width="600" alt="参数绑定示例" />
-
-    -   *Reference Example: Check the editing method of existing JSON files in the `workflows/selfhost/` directory.*
-3.  **Export Format**: Export the modified workflow as **API Format** (Save (API Format)).
-4.  **File Naming**: Place the exported JSON file into the `workflows/` directory and adhere to the following naming prefixes:
-    -   **Image Workflows**: Prefix must be `image_` (e.g., `image_my_style.json`)
-    -   **Video Workflows**: Prefix must be `video_`
-    -   **TTS Workflows**: Prefix must be `tts_`
-
-### How to debug RunningHub workflows locally?
-
-If you want to test workflows locally that were originally intended for RunningHub cloud usage:
-
-1.  **Get ID**: Open the RunningHub workflow file and find the ID.
-2.  **Load Workflow**: Paste the ID onto the end of the RunningHub URL (e.g., https://www.runninghub.cn/workflow/1983513964837543938) to enter the workflow page.
-  <img src="https://github.com/user-attachments/assets/e5330b3a-5475-44f2-81e4-057d33fdf71b" width="600" alt="参数绑定示例" />
-
-
-3.  **Download to Local**: Download the workflow as a JSON file from the workbench.
-4.  **Local Testing**: Drag the downloaded file into your local ComfyUI canvas for testing and debugging.
-
-### Common Errors and Solutions
-
-#### 1. TTS (Text-to-Speech) Errors
--   **Reason**: The default Edge-TTS calls Microsoft's free interface, which may fail frequently due to network instability.
--   **Solution**:
-    -   Check your network connection.
-    -   It is recommended to switch to **ComfyUI TTS** workflows (select workflows with the `tts_` prefix) for higher stability.
-
-#### 2. LLM (Large Language Model) Errors
--   **Troubleshooting Steps**:
-    1.  Check if the **Base URL** is correct (ensure no extra spaces or incorrect suffixes).
-    2.  Check if the **API Key** is valid and has sufficient balance.
-    3.  Check if the **Model Name** is spelled correctly.
-    -   *Tip: Please consult the official API documentation of your model provider (e.g., OpenAI, DeepSeek, Alibaba Cloud, etc.) for accurate configuration.*
-
-#### 3. Error Message "Could not find a Chrome executable..."
--   **Reason**: Your computer system lacks the Chrome browser core, causing features dependent on the browser to fail.
--   **Solution**: Please download and install the Google Chrome browser.
-
-### Where are generated videos saved?
-
-All generated videos are automatically saved in the `output/` folder within the project directory. Upon completion, the interface will display the video duration, file size, number of shots, and a download link.
-
-### Community Resources
-
--   **GitHub Repository**: https://github.com/AIDC-AI/Pixelle-Video
--   **Issue Reporting**: Submit bugs or feature requests via GitHub Issues.
--   **Community Support**: Join discussion groups for help and experience sharing.
--   **Contribution**: The project is under the MIT license and welcomes contributions.
-
-💡 **Tip**: If you cannot find the answer you need in this FAQ, please submit an issue on GitHub or join the community discussion. We will continue to update this FAQ based on user feedback!

+ 0 - 65
docs/Pixelle-Video-main/docs/FAQ_CN.md

@@ -1,65 +0,0 @@
-# 🙋‍♀️ Pixelle-Video 常见问题解答 (FAQ)
-
-
-### 本地自己开发的工作流如何集成使用?
-
-如果您想集成自己开发的 ComfyUI 工作流,请遵循以下规范:
-
-1. **本地跑通**:首先确保工作流在您的本地 ComfyUI 中能正常运行。
-2. **参数绑定**:找到需要由程序动态传入提示词的 Text 节点(CLIP Text Encode 或类似文本输入节点)。
-   - 编辑该节点的**标题 (Title)**。
-   - 修改标题为 `$prompt.text!` 或 `$prompt.value!`(根据节点接受的输入类型决定)。
-     <img src="https://github.com/user-attachments/assets/ddb1962c-9272-486f-84ab-8019c3fb5bf4" width="600" alt="参数绑定示例" />
-
-   - *参考示例:可以查看 `workflows/selfhost/` 目录下现有 JSON 文件的编辑方式。*
-3. **导出格式**:将修改好的工作流导出为 **API 格式** (Save (API Format))。
-4. **文件命名**:将导出的 JSON 文件放入 `workflows/` 目录,并遵守以下命名前缀:
-   - **图片类工作流**:前缀必须是 `image_` (例如 `image_my_style.json`)
-   - **视频类工作流**:前缀必须是 `video_`
-   - **语音合成类**:前缀必须是 `tts_`
-
-### 如何在本地调试项目中的 RunningHub 工作流?
-
-如果您想在本地测试项目中原本用于 RunningHub 云端的工作流:
-
-1. **获取 ID**:打开runninghub工作流文件,找到id
-2. **加载工作流**:将 ID 粘贴到 RunningHub 网站 URL 后缀上,如:https://www.runninghub.cn/workflow/1983513964837543938 进入该工作流页面。
-  <img src="https://github.com/user-attachments/assets/e5330b3a-5475-44f2-81e4-057d33fdf71b" width="600" alt="参数绑定示例" />
-
-
-4. **下载到本地**:在工作台中将工作流下载为 JSON 文件。
-5. **本地测试**:将下载的文件拖入您本地的 ComfyUI 画布进行测试和调试。
-   
-
-### 常见的报错及解决方案
-
-#### 1. TTS (语音合成) 报错
-- **原因**:默认的 Edge-TTS 是调用微软的免费接口,可能会受网络波动影响,导致失败频率较高。
-- **解决方案**:
-  - 检查网络连接。
-  - 建议切换使用 **ComfyUI 合成 TTS** 的工作流(选择前缀为 `tts_` 的工作流),稳定性更高。
-
-#### 2. LLM (大模型) 报错
-- **排查步骤**:
-  1. 检查 **Base URL** 是否正确(不要多出空格或错误的后缀)。
-  2. 检查 **API Key** 是否有效且有余额。
-  3. 检查 **Model Name** 是否拼写正确。
-  - *提示:请查阅您所使用的模型服务商(如 OpenAI、DeepSeek、阿里云等)的官方 API 文档获取准确配置。*
-
-#### 3. 错误提示 "Could not find a Chrome executable..."
-- **原因**:您的电脑系统中缺少 Chrome 浏览器内核,导致部分依赖浏览器的功能无法运行。
-- **解决方案**:请下载并安装 Google Chrome 浏览器。
-
-
-### 生成的视频保存在哪里?
-
-所有生成的视频自动保存到项目目录的 `output/` 文件夹中。生成完成后,界面会显示视频时长、文件大小、分镜数量及下载链接。
-
-### 有哪些社区资源?
-
-- **GitHub 仓库**:https://github.com/AIDC-AI/Pixelle-Video
-- **问题反馈**:通过 GitHub Issues 提交 bug 或功能请求
-- **社区支持**:加入讨论群组获取帮助和分享经验
-- **贡献代码**:项目在 MIT 许可证下欢迎贡献
-
-💡 **提示**:如果在此 FAQ 中找不到您需要的答案,请在 GitHub 提交 issue 或加入社区讨论。我们会根据用户反馈持续更新此 FAQ!

+ 0 - 54
docs/Pixelle-Video-main/docs/en/development/architecture.md

@@ -1,54 +0,0 @@
-# Architecture
-
-Technical architecture overview of Pixelle-Video.
-
----
-
-## Core Architecture
-
-Pixelle-Video uses a layered architecture design:
-
-- **Web Layer**: Streamlit Web interface
-- **Service Layer**: Core business logic
-- **ComfyUI Layer**: Image and TTS generation
-
----
-
-## Main Components
-
-### PixelleVideoCore
-
-Core service class coordinating all sub-services.
-
-### LLM Service
-
-Responsible for calling large language models to generate scripts.
-
-### Image Service
-
-Responsible for calling ComfyUI to generate images.
-
-### TTS Service
-
-Responsible for calling ComfyUI to generate speech.
-
-### Video Generator
-
-Responsible for composing the final video.
-
----
-
-## Tech Stack
-
-- **Backend**: Python 3.10+, AsyncIO
-- **Web**: Streamlit
-- **AI**: OpenAI API, ComfyUI
-- **Configuration**: YAML
-- **Tools**: uv (package management)
-
----
-
-## More Information
-
-Detailed architecture documentation coming soon.
-

+ 0 - 50
docs/Pixelle-Video-main/docs/en/development/contributing.md

@@ -1,50 +0,0 @@
-# Contributing
-
-Thank you for your interest in contributing to Pixelle-Video!
-
----
-
-## How to Contribute
-
-1. Fork the repository
-2. Create a feature branch (`git checkout -b feature/AmazingFeature`)
-3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
-4. Push to the branch (`git push origin feature/AmazingFeature`)
-5. Open a Pull Request
-
----
-
-## Development Setup
-
-```bash
-# Clone your fork
-git clone https://github.com/your-username/Pixelle-Video.git
-cd Pixelle-Video
-
-# Install development dependencies
-uv sync
-
-# Run tests
-pytest
-```
-
----
-
-## Code Standards
-
-- All code and comments in English
-- Follow PEP 8 standards
-- Add appropriate tests
-
----
-
-## Submit Issues
-
-Having problems or feature suggestions? Please submit at [GitHub Issues](https://github.com/AIDC-AI/Pixelle-Video/issues).
-
----
-
-## Code of Conduct
-
-Please be friendly and respectful. We are committed to fostering an inclusive community environment.
-

+ 0 - 87
docs/Pixelle-Video-main/docs/en/faq.md

@@ -1,87 +0,0 @@
-# FAQ
-
-Frequently Asked Questions.
-
----
-
-## Installation
-
-### Q: How to install uv?
-
-```bash
-curl -LsSf https://astral.sh/uv/install.sh | sh
-```
-
-### Q: Can I use something other than uv?
-
-Yes, you can use traditional pip + venv approach.
-
----
-
-## Configuration
-
-### Q: Do I need to configure ComfyUI?
-
-**Not necessarily** - it depends on your template choice:
-
-| Template Type | ComfyUI | Best For | Speed |
-|--------------|---------|----------|-------|
-| Text-only<br/>(e.g., `simple.html`) | ❌ Not needed | Quotes, announcements, reading prompts | ⚡⚡⚡ Very fast |
-| AI Images<br/>(e.g., `default.html`) | ✅ Required | Rich visual content | ⚡ Standard |
-
-**Tip**: Beginners can start with text-only templates for instant zero-barrier experience!
-
-**Alternative**: If you need AI images but don't want local ComfyUI, use RunningHub cloud service.
-
-### Q: Which LLMs are supported?
-
-All OpenAI-compatible LLMs, including:
-- Qianwen
-- GPT-4o
-- DeepSeek
-- Ollama (local)
-
----
-
-## Usage
-
-### Q: How long does first-time usage take?
-
-Generating a 3-5 scene video takes approximately 2-5 minutes.
-
-### Q: What if I'm not satisfied with the video?
-
-Try:
-1. Change LLM model
-2. Adjust image dimensions and prompt prefix
-3. Change TTS workflow
-4. Try different video templates
-
-### Q: What are the costs?
-
-- **Completely Free**: Ollama + Local ComfyUI = $0
-- **Recommended**: Qianwen + Local ComfyUI ≈ $0.01-0.05/video
-- **Cloud Solution**: OpenAI + RunningHub (higher cost)
-
----
-
-## Troubleshooting
-
-### Q: ComfyUI connection failed
-
-1. Confirm ComfyUI is running
-2. Check if URL is correct
-3. Click "Test Connection" in Web interface
-
-### Q: LLM API call failed
-
-1. Check if API Key is correct
-2. Check network connection
-3. Review error messages
-
----
-
-## Other Questions
-
-Have other questions? Check [Troubleshooting](troubleshooting.md) or submit an [Issue](https://github.com/AIDC-AI/Pixelle-Video/issues).
-

+ 0 - 45
docs/Pixelle-Video-main/docs/en/gallery/index.md

@@ -1,45 +0,0 @@
-# 🎬 Video Gallery
-
-Showcase of videos created with Pixelle-Video. Click on cards to view complete workflows and configuration files.
-
----
-
-<div class="grid cards" markdown>
-
--   **Reading Habit**
-
-    ---
-
-    <video controls width="100%" style="border-radius: 8px;">
-      <source src="https://your-oss-bucket.oss-cn-hangzhou.aliyuncs.com/pixelle-video/reading-habit/video.mp4" type="video/mp4">
-    </video>
-    
-    [:octicons-mark-github-16: View Workflows & Config](https://github.com/AIDC-AI/Pixelle-Video/tree/main/docs/gallery/reading-habit)
-
--   **Work Efficiency**
-
-    ---
-
-    <video controls width="100%" style="border-radius: 8px;">
-      <source src="https://your-oss-bucket.oss-cn-hangzhou.aliyuncs.com/pixelle-video/work-efficiency/video.mp4" type="video/mp4">
-    </video>
-    
-    [:octicons-mark-github-16: View Workflows & Config](https://github.com/AIDC-AI/Pixelle-Video/tree/main/docs/gallery/work-efficiency)
-
--   **Healthy Diet**
-
-    ---
-
-    <video controls width="100%" style="border-radius: 8px;">
-      <source src="https://your-oss-bucket.oss-cn-hangzhou.aliyuncs.com/pixelle-video/healthy-diet/video.mp4" type="video/mp4">
-    </video>
-    
-    [:octicons-mark-github-16: View Workflows & Config](https://github.com/AIDC-AI/Pixelle-Video/tree/main/docs/gallery/healthy-diet)
-
-</div>
-
----
-
-!!! tip "How to Use"
-    Click on a case card to jump to GitHub, download workflow files and configuration, and reproduce the video effect with one click.
-

+ 0 - 64
docs/Pixelle-Video-main/docs/en/getting-started/configuration.md

@@ -1,64 +0,0 @@
-# Configuration
-
-After installation, you need to configure services to use Pixelle-Video.
-
----
-
-## LLM Configuration
-
-LLM (Large Language Model) is used to generate video scripts.
-
-### Quick Preset Selection
-
-1. Select a preset model from the dropdown:
-   - Qianwen (recommended, great value)
-   - GPT-4o
-   - DeepSeek
-   - Ollama (local, completely free)
-
-2. The system will auto-fill `base_url` and `model`
-
-3. Click「🔑 Get API Key」to register and obtain credentials
-
-4. Enter your API Key
-
----
-
-## Image/Video Generation Configuration
-
-Two options available:
-
-### Local Deployment
-
-Using local ComfyUI service:
-
-1. Install and start ComfyUI
-2. Enter ComfyUI URL (default `http://127.0.0.1:8188`)
-3. Click "Test Connection" to verify
-4. (Optional) Enter ComfyUI API Key (get from [Comfy Platform](https://platform.comfy.org/profile/api-keys))
-
-### Cloud Deployment (Recommended)
-
-Using RunningHub cloud service, no local GPU required:
-
-1. Register for a RunningHub account
-2. Obtain API Key
-3. Enter API Key in configuration
-4. Configure advanced options (optional):
-   - **Concurrent Limit**: Set number of simultaneous tasks (1-10, default 1 for regular members)
-   - **Instance Type**: Choose 24GB or 48GB VRAM machine (48GB for large video generation)
-
----
-
-## Save Configuration
-
-After filling in all required configuration, click the "Save Configuration" button.
-
-Configuration will be saved to `config.yaml` file.
-
----
-
-## Next Steps
-
-- [Quick Start](quick-start.md) - Create your first video
-

+ 0 - 134
docs/Pixelle-Video-main/docs/en/getting-started/installation.md

@@ -1,134 +0,0 @@
-# Installation
-
-This page will guide you through installing Pixelle-Video.
-
----
-
-## System Requirements
-
-### Required
-
-- **Python**: 3.10 or higher
-- **Operating System**: Windows, macOS, or Linux
-- **Package Manager**: uv (recommended) or pip
-
-### Optional
-
-- **GPU**: NVIDIA GPU with 6GB+ VRAM recommended for local ComfyUI
-- **Network**: Stable internet connection for LLM API and image generation services
-
----
-
-## 🪟 Windows All-in-One Package (Recommended for Windows Users)
-
-**No need to install Python, uv, or ffmpeg - ready to use out of the box!**
-
-### Download and Install
-
-1. Visit [GitHub Releases](https://github.com/AIDC-AI/Pixelle-Video/releases/latest) to download the latest version
-2. Download the latest Windows All-in-One Package and extract it to any directory
-3. Double-click `start.bat` to launch the Web interface
-4. Your browser will automatically open `http://localhost:8501`
-
-!!! success "Installation Complete!"
-    The package includes all dependencies, no need to manually install any environment. On first use, you only need to configure API keys in "⚙️ System Configuration" to get started.
-
-!!! tip "Next Steps"
-    After installation, check out the [Configuration Guide](configuration.md) to set up LLM and image generation services, then see [Quick Start](quick-start.md) to create your first video.
-
----
-
-## Install from Source (For macOS / Linux Users or Users Who Need Customization)
-
-### Step 1: Clone the Repository
-
-```bash
-git clone https://github.com/AIDC-AI/Pixelle-Video.git
-cd Pixelle-Video
-```
-
-### Step 2: Install Dependencies
-
-!!! tip "Recommended: Use uv"
-    This project uses `uv` as the package manager, which is faster and more reliable than traditional pip.
-
-#### Using uv (Recommended)
-
-```bash
-# Install uv if you haven't already
-curl -LsSf https://astral.sh/uv/install.sh | sh
-
-# Install project dependencies (uv will create a virtual environment automatically)
-uv sync
-```
-
-#### Using pip
-
-```bash
-# Create virtual environment
-python -m venv venv
-
-# Activate virtual environment
-# Windows:
-venv\Scripts\activate
-# macOS/Linux:
-source venv/bin/activate
-
-# Install dependencies
-pip install -e .
-```
-
----
-
-## Verify Installation
-
-Run the following command to verify the installation:
-
-```bash
-# Using uv
-uv run streamlit run web/app.py
-
-# Or using pip (activate virtual environment first)
-streamlit run web/app.py
-```
-
-Your browser should automatically open `http://localhost:8501` and display the Pixelle-Video web interface.
-
-!!! success "Installation Successful!"
-    If you can see the web interface, the installation was successful! Next, check out the [Configuration Guide](configuration.md) to set up your services.
-
----
-
-## Optional: Install ComfyUI (Local Deployment)
-
-If you want to run image generation locally, you'll need to install ComfyUI:
-
-### Quick Install
-
-```bash
-# Clone ComfyUI
-git clone https://github.com/comfyanonymous/ComfyUI.git
-cd ComfyUI
-
-# Install dependencies
-pip install -r requirements.txt
-```
-
-### Start ComfyUI
-
-```bash
-python main.py
-```
-
-ComfyUI runs on `http://127.0.0.1:8188` by default.
-
-!!! info "ComfyUI Models"
-    ComfyUI requires downloading model files to work. Please refer to the [ComfyUI documentation](https://github.com/comfyanonymous/ComfyUI) for information on downloading and configuring models.
-
----
-
-## Next Steps
-
-- [Configuration](configuration.md) - Configure LLM and image generation services
-- [Quick Start](quick-start.md) - Create your first video
-

+ 0 - 115
docs/Pixelle-Video-main/docs/en/getting-started/quick-start.md

@@ -1,115 +0,0 @@
-# Quick Start
-
-Already installed and configured? Let's create your first video!
-
----
-
-## Start the Web Interface
-
-### Windows All-in-One Package Users
-
-If you're using the Windows All-in-One Package, simply:
-1. Double-click `start.bat`
-2. Your browser will automatically open `http://localhost:8501`
-
-### Install from Source Users
-
-```bash
-# Using uv
-uv run streamlit run web/app.py
-```
-
-Your browser will automatically open `http://localhost:8501`
-
----
-
-## Create Your First Video
-
-### Step 1: Check Configuration
-
-On first use, expand the「⚙️ System Configuration」panel and confirm:
-
-- **LLM Configuration**: Select an AI model (e.g., Qianwen, GPT) and enter API Key
-- **Image Configuration**: Configure ComfyUI address or RunningHub API Key
-
-If not yet configured, see the [Configuration Guide](configuration.md).
-
-Click "Save Configuration" when done.
-
----
-
-### Step 2: Enter a Topic
-
-In the left panel's「📝 Content Input」section:
-
-1. Select「**AI Generate Content**」mode
-2. Enter a topic in the text box, for example:
-   ```
-   Why develop a reading habit
-   ```
-3. (Optional) Set number of scenes, default is 5 frames
-
-!!! tip "Topic Examples"
-    - Why develop a reading habit
-    - How to improve work efficiency
-    - The importance of healthy eating
-    - The meaning of travel
-
----
-
-### Step 3: Configure Voice and Visuals
-
-In the middle panel:
-
-**Voice Settings**
-- Select TTS workflow (default Edge-TTS works well)
-- For voice cloning, upload a reference audio file
-
-**Visual Settings**
-- Select image generation workflow (default works well)
-- Set image dimensions (default 1024x1024)
-- Choose video template (recommend portrait 1080x1920)
-
----
-
-### Step 4: Generate Video
-
-Click the「🎬 Generate Video」button in the right panel!
-
-The system will show real-time progress:
-- Generate script
-- Generate images (for each scene)
-- Synthesize voice
-- Compose video
-
-!!! info "Generation Time"
-    Generating a 5-scene video takes about 2-5 minutes, depending on: LLM API response speed, image generation speed, TTS workflow type, and network conditions
-
----
-
-### Step 5: Preview Video
-
-Once complete, the video will automatically play in the right panel!
-
-You'll see:
-- 📹 Video preview player
-- ⏱️ Video duration
-- 📦 File size
-- 🎬 Number of scenes
-- 📐 Video dimensions
-
-The video file is saved in the `output/` folder.
-
----
-
-## Next Steps
-
-Congratulations! You've successfully created your first video 🎉
-
-Next, you can:
-
-- **Adjust Styles** - See the [Custom Visual Style](../tutorials/custom-style.md) tutorial
-- **Clone Voices** - See the [Voice Cloning with Reference Audio](../tutorials/voice-cloning.md) tutorial
-- **Use API** - See the [API Usage Guide](../user-guide/api.md)
-- **Develop Templates** - See the [Template Development Guide](../user-guide/templates.md)
-

+ 0 - 99
docs/Pixelle-Video-main/docs/en/index.md

@@ -1,99 +0,0 @@
-# Pixelle-Video 🎬
-
-<div align="center" markdown="1">
-
-**AI Video Creator - Generate a short video in 3 minutes**
-
-[![Stars](https://img.shields.io/github/stars/AIDC-AI/Pixelle-Video.svg?style=flat-square)](https://github.com/AIDC-AI/Pixelle-Video/stargazers)
-[![Issues](https://img.shields.io/github/issues/AIDC-AI/Pixelle-Video.svg?style=flat-square)](https://github.com/AIDC-AI/Pixelle-Video/issues)
-[![License](https://img.shields.io/github/license/AIDC-AI/Pixelle-Video.svg?style=flat-square)](https://github.com/AIDC-AI/Pixelle-Video/blob/main/LICENSE)
-
-</div>
-
----
-
-## 🎯 Overview
-
-Simply input a **topic**, and Pixelle-Video will automatically:
-
-- ✍️ Write video scripts
-- 🎨 Generate AI images  
-- 🗣️ Synthesize voice narration
-- 🎵 Add background music
-- 🎬 Create the final video
-
-**No barriers, no video editing experience required** - turn video creation into a one-line task!
-
----
-
-## ✨ Features
-
-- ✅ **Fully Automated** - Input a topic, get a complete video in 3 minutes
-- ✅ **AI-Powered Scripts** - Intelligently create narration based on your topic
-- ✅ **AI-Generated Images** - Each sentence comes with beautiful AI illustrations
-- ✅ **AI Voice Synthesis** - Support for Edge-TTS, Index-TTS and more mainstream TTS solutions
-- ✅ **Background Music** - Add BGM for enhanced atmosphere
-- ✅ **Visual Styles** - Multiple templates to create unique video styles
-- ✅ **Flexible Dimensions** - Support for portrait, landscape and more video sizes
-- ✅ **Multiple AI Models** - Support for GPT, Qianwen, DeepSeek, Ollama, etc.
-- ✅ **Flexible Composition** - Based on ComfyUI architecture, use preset workflows or customize any capability
-
----
-
-## 🎬 Video Examples
-
-!!! info "Sample Videos"
-    Coming soon: Video examples will be added here
-
----
-
-## 🚀 Quick Start
-
-Ready to get started? Just three steps:
-
-1. **[Install Pixelle-Video](getting-started/installation.md)** - Download and install the project
-   - 🪟 **Windows Users (Recommended)**: Use the [All-in-One Package](https://github.com/AIDC-AI/Pixelle-Video/releases/latest), no Python installation required
-   - 💻 **macOS/Linux Users**: Install from source, see [Installation Guide](getting-started/installation.md)
-2. **[Configure Services](getting-started/configuration.md)** - Set up LLM and image generation services
-3. **[Create Your First Video](getting-started/quick-start.md)** - Start creating your first video
-
----
-
-## 💰 Pricing
-
-!!! success "Completely free to run!"
-    
-    - **Completely Free**: Use Ollama (local) + Local ComfyUI = $0
-    - **Recommended**: Use Qianwen LLM (≈$0.01-0.05 per 3-scene video) + Local ComfyUI
-    - **Cloud Solution**: Use OpenAI + RunningHub (higher cost but no local setup required)
-    
-    **Recommendation**: If you have a local GPU, go with the completely free solution. Otherwise, we recommend Qianwen for best value.
-
----
-
-## 🤝 Acknowledgments
-
-Pixelle-Video was inspired by the following excellent open source projects:
-
-- [Pixelle-MCP](https://github.com/AIDC-AI/Pixelle-MCP) - ComfyUI MCP server
-- [MoneyPrinterTurbo](https://github.com/harry0703/MoneyPrinterTurbo) - Excellent video generation tool
-- [NarratoAI](https://github.com/linyqh/NarratoAI) - Video narration automation tool
-- [MoneyPrinterPlus](https://github.com/ddean2009/MoneyPrinterPlus) - Video creation platform
-- [ComfyKit](https://github.com/puke3615/ComfyKit) - ComfyUI workflow wrapper library
-
-Thanks to these projects for their open source spirit! 🙏
-
----
-
-## 📢 Feedback & Support
-
-- 🐛 **Found a bug**: Submit an [Issue](https://github.com/AIDC-AI/Pixelle-Video/issues)
-- 💡 **Feature request**: Submit a [Feature Request](https://github.com/AIDC-AI/Pixelle-Video/issues)
-- ⭐ **Give us a Star**: If this project helps you, please give us a star!
-
----
-
-## 📝 License
-
-This project is licensed under the Apache License 2.0. See the [LICENSE](https://github.com/AIDC-AI/Pixelle-Video/blob/main/LICENSE) file for details.
-

+ 0 - 141
docs/Pixelle-Video-main/docs/en/reference/api-overview.md

@@ -1,141 +0,0 @@
-# API Overview
-
-Pixelle-Video provides both Python SDK and HTTP REST API.
-
----
-
-## Python SDK
-
-### PixelleVideoCore
-
-Main service class providing video generation functionality.
-
-```python
-from pixelle_video.service import PixelleVideoCore
-
-pixelle = PixelleVideoCore()
-await pixelle.initialize()
-```
-
-### generate_video()
-
-Primary method for generating videos.
-
-**Parameters**:
-
-- `text` (str): Topic or complete script
-- `mode` (str): Generation mode ("generate" or "fixed")
-- `n_scenes` (int): Number of scenes
-- `title` (str, optional): Video title
-- `tts_workflow` (str): TTS workflow
-- `media_workflow` (str): Media generation workflow (image or video)
-- `frame_template` (str): Video template
-- `template_params` (dict, optional): Custom template parameters
-- `bgm_path` (str, optional): BGM file path
-- `bgm_volume` (float): BGM volume (0.0-1.0)
-
-**Returns**: `VideoResult` object
-
----
-
-## HTTP REST API
-
-Start the API server:
-
-```bash
-uv run uvicorn api.app:app --host 0.0.0.0 --port 8000
-```
-
-### Video Generation - Synchronous
-
-`POST /api/video/generate/sync`
-
-Generate video synchronously, waits until completion. Suitable for small videos (< 30 seconds).
-
-**Request Body**:
-
-```json
-{
-  "text": "Why you should develop a reading habit",
-  "mode": "generate",
-  "n_scenes": 5,
-  "frame_template": "1080x1920/image_default.html",
-  "template_params": {
-    "accent_color": "#3498db",
-    "background": "https://example.com/custom-bg.jpg"
-  },
-  "title": "The Power of Reading"
-}
-```
-
-**Response**:
-
-```json
-{
-  "success": true,
-  "message": "Success",
-  "video_url": "http://localhost:8000/api/files/xxx/final.mp4",
-  "duration": 45.5,
-  "file_size": 12345678
-}
-```
-
-### Video Generation - Asynchronous
-
-`POST /api/video/generate/async`
-
-Generate video asynchronously, returns task ID immediately. Suitable for large videos.
-
-**Response**:
-
-```json
-{
-  "success": true,
-  "message": "Task created successfully",
-  "task_id": "abc123"
-}
-```
-
-### Query Task Status
-
-`GET /api/tasks/{task_id}`
-
-**Response**:
-
-```json
-{
-  "task_id": "abc123",
-  "status": "completed",
-  "result": {
-    "video_url": "http://localhost:8000/api/files/xxx/final.mp4",
-    "duration": 45.5,
-    "file_size": 12345678
-  }
-}
-```
-
----
-
-## Request Parameters
-
-| Parameter | Type | Required | Description |
-|-----------|------|----------|-------------|
-| `text` | string | Yes | Topic or complete script |
-| `mode` | string | No | `"generate"` (AI generates) or `"fixed"` (use text as-is) |
-| `n_scenes` | int | No | Number of scenes (1-20), only used in generate mode |
-| `title` | string | No | Video title (auto-generated if not provided) |
-| `frame_template` | string | No | Template path, e.g., `1080x1920/image_default.html` |
-| `template_params` | object | No | Custom template parameters (colors, backgrounds, etc.) |
-| `media_workflow` | string | No | Media workflow (image or video generation) |
-| `tts_workflow` | string | No | TTS workflow |
-| `ref_audio` | string | No | Reference audio path for voice cloning |
-| `prompt_prefix` | string | No | Image style prefix |
-| `bgm_path` | string | No | BGM file path |
-| `bgm_volume` | float | No | BGM volume (0.0-1.0, default 0.3) |
-
----
-
-## More Information
-
-API documentation is also available via Swagger UI: `http://localhost:8000/docs`
-

+ 0 - 89
docs/Pixelle-Video-main/docs/en/reference/config-schema.md

@@ -1,89 +0,0 @@
-# Config Schema
-
-Detailed explanation of the `config.yaml` configuration file.
-
----
-
-## Configuration Structure
-
-```yaml
-llm:
-  api_key: "your-api-key"
-  base_url: "https://dashscope.aliyuncs.com/compatible-mode/v1"
-  model: "qwen-plus"
-
-comfyui:
-  comfyui_url: "http://127.0.0.1:8188"
-  comfyui_api_key: ""  # ComfyUI API key (optional)
-  runninghub_api_key: ""
-  runninghub_concurrent_limit: 1  # Concurrent limit (1-10)
-  runninghub_instance_type: ""  # Instance type (optional, set to "plus" for 48GB VRAM)
-  
-  image:
-    default_workflow: "runninghub/image_flux.json"
-    prompt_prefix: "Minimalist illustration style"
-  
-  video:
-    default_workflow: "runninghub/video_wan2.1_fusionx.json"
-    prompt_prefix: "Minimalist illustration style"
-  
-  tts:
-    default_workflow: "selfhost/tts_edge.json"
-
-template:
-  default_template: "1080x1920/image_default.html"
-```
-
----
-
-## LLM Configuration
-
-- `api_key`: API key
-- `base_url`: API service address (supports any OpenAI-compatible interface)
-- `model`: Model name
-
----
-
-## ComfyUI Configuration
-
-### Basic Configuration
-
-- `comfyui_url`: Local ComfyUI address (default `http://127.0.0.1:8188`)
-- `comfyui_api_key`: ComfyUI API key (optional, for [Comfy Platform](https://platform.comfy.org/profile/api-keys))
-
-### RunningHub Cloud Configuration
-
-- `runninghub_api_key`: RunningHub API key (required for cloud workflows)
-- `runninghub_concurrent_limit`: Concurrent execution limit (1-10, default 1 for regular members)
-- `runninghub_instance_type`: Instance type (optional)
-  - Empty or unset: Use 24GB VRAM machine
-  - `"plus"`: Use 48GB VRAM machine (suitable for large video generation)
-
-### Image Configuration
-
-- `default_workflow`: Default image generation workflow
-- `prompt_prefix`: Prompt prefix
-
-### Video Configuration
-
-- `default_workflow`: Default video generation workflow
-  - `runninghub/video_wan2.1_fusionx.json`: Cloud workflow (recommended, no local setup required)
-  - `selfhost/video_wan2.1_fusionx.json`: Local workflow (requires local ComfyUI support)
-- `prompt_prefix`: Video prompt prefix (controls video generation style)
-
-### TTS Configuration
-
-- `default_workflow`: Default TTS workflow
-
----
-
-## Template Configuration
-
-- `default_template`: Default frame template path (e.g., `1080x1920/image_default.html`)
-
----
-
-## More Information
-
-The configuration file is automatically created on first run.
-

+ 0 - 108
docs/Pixelle-Video-main/docs/en/troubleshooting.md

@@ -1,108 +0,0 @@
-# Troubleshooting
-
-Having issues? Here are solutions to common problems.
-
----
-
-## Installation Issues
-
-### Dependency installation failed
-
-```bash
-# Clean cache
-uv cache clean
-
-# Reinstall
-uv sync
-```
-
----
-
-## Configuration Issues
-
-### ComfyUI connection failed
-
-**Possible Causes**:
-- ComfyUI not running
-- Incorrect URL configuration
-- Firewall blocking
-
-**Solutions**:
-1. Confirm ComfyUI is running
-2. Check URL configuration (default `http://127.0.0.1:8188`)
-3. Test by accessing ComfyUI address in browser
-4. Check firewall settings
-
-### LLM API call failed
-
-**Possible Causes**:
-- Incorrect API Key
-- Network issues
-- Insufficient balance
-
-**Solutions**:
-1. Verify API Key is correct
-2. Check network connection
-3. Review error message details
-4. Check account balance
-
----
-
-## Generation Issues
-
-### Video generation failed
-
-**Possible Causes**:
-- Corrupted workflow file
-- Models not downloaded
-- Insufficient resources
-
-**Solutions**:
-1. Check if workflow file exists
-2. Confirm ComfyUI has downloaded required models
-3. Check disk space and memory
-
-### Image generation failed
-
-**Solutions**:
-1. Check if ComfyUI is running properly
-2. Try manually testing workflow in ComfyUI
-3. Check workflow configuration
-
-### TTS generation failed
-
-**Solutions**:
-1. Check if TTS workflow is correct
-2. If using voice cloning, check reference audio format
-3. Review error logs
-
----
-
-## Performance Issues
-
-### Slow generation speed
-
-**Optimization Tips**:
-1. Use local ComfyUI (faster than cloud)
-2. Reduce number of scenes
-3. Use faster LLM (e.g., Qianwen)
-4. Check network connection
-
----
-
-## Other Issues
-
-Still having problems?
-
-1. Check project [GitHub Issues](https://github.com/AIDC-AI/Pixelle-Video/issues)
-2. Submit a new Issue describing your problem
-3. Include error logs and configuration details for quick diagnosis
-
----
-
-## View Logs
-
-Log files are located in project root:
-- `api_server.log` - API service logs
-- `test_output.log` - Test logs
-

+ 0 - 36
docs/Pixelle-Video-main/docs/en/tutorials/custom-style.md

@@ -1,36 +0,0 @@
-# Custom Visual Style
-
-Learn how to adjust image generation parameters to create unique visual styles.
-
----
-
-## Adjust Prompt Prefix
-
-The prompt prefix controls overall visual style:
-
-```
-Minimalist black-and-white illustration, clean lines, simple style
-```
-
----
-
-## Adjust Image Dimensions
-
-Different dimensions for different scenarios:
-
-- **1024x1024**: Square, suitable for Xiaohongshu
-- **1080x1920**: Portrait, suitable for TikTok, Kuaishou
-- **1920x1080**: Landscape, suitable for Bilibili, YouTube
-
----
-
-## Preview Effects
-
-Use the "Preview Style" feature to test different configurations.
-
----
-
-## More Information
-
-More style customization tips coming soon.
-

+ 0 - 35
docs/Pixelle-Video-main/docs/en/tutorials/voice-cloning.md

@@ -1,35 +0,0 @@
-# Voice Cloning
-
-Use reference audio to implement voice cloning functionality.
-
----
-
-## Prepare Reference Audio
-
-1. Prepare a clear audio file (MP3/WAV/FLAC)
-2. Recommended duration: 10-30 seconds
-3. Avoid background noise
-
----
-
-## Usage Steps
-
-1. Select a TTS workflow that supports voice cloning (e.g., Index-TTS) in voice settings
-2. Upload reference audio file
-3. Test effects with "Preview Voice"
-4. Generate video
-
----
-
-## Notes
-
-- Not all TTS workflows support voice cloning
-- Reference audio quality affects cloning results
-- Edge-TTS does not support voice cloning
-
----
-
-## More Information
-
-Detailed voice cloning tutorial coming soon.
-

+ 0 - 33
docs/Pixelle-Video-main/docs/en/tutorials/your-first-video.md

@@ -1,33 +0,0 @@
-# Your First Video
-
-Step-by-step guide to creating your first video with Pixelle-Video.
-
----
-
-## Prerequisites
-
-Make sure you've completed:
-
-- ✅ [Installation](../getting-started/installation.md)
-- ✅ [Configuration](../getting-started/configuration.md)
-
----
-
-## Tutorial Steps
-
-For detailed steps, see [Quick Start](../getting-started/quick-start.md).
-
----
-
-## Tips
-
-- Choose an appropriate topic for better results
-- Start with 3-5 scenes for first generation
-- Preview voice and image effects before generating
-
----
-
-## Troubleshooting
-
-Having issues? Check out [FAQ](../faq.md) or [Troubleshooting](../troubleshooting.md).
-

+ 0 - 42
docs/Pixelle-Video-main/docs/en/user-guide/api.md

@@ -1,42 +0,0 @@
-# API Usage
-
-Pixelle-Video provides a complete Python API for easy integration into your projects.
-
----
-
-## Quick Start
-
-```python
-from pixelle_video.service import PixelleVideoCore
-import asyncio
-
-async def main():
-    # Initialize
-    pixelle = PixelleVideoCore()
-    await pixelle.initialize()
-    
-    # Generate video
-    result = await pixelle.generate_video(
-        text="Why develop a reading habit",
-        mode="generate",
-        n_scenes=5
-    )
-    
-    print(f"Video generated: {result.video_path}")
-
-# Run
-asyncio.run(main())
-```
-
----
-
-## API Reference
-
-For detailed API documentation, see [API Overview](../reference/api-overview.md).
-
----
-
-## Examples
-
-For more usage examples, check the `examples/` directory in the project.
-

+ 0 - 410
docs/Pixelle-Video-main/docs/en/user-guide/templates.md

@@ -1,410 +0,0 @@
-# Template Development
-
-How to create custom video templates.
-
----
-
-## Template Introduction
-
-Video templates use HTML to define the layout and style of video frames. Pixelle-Video provides multiple preset templates covering different video dimensions and style requirements.
-
----
-
-## Built-in Template Preview
-
-### Portrait Templates (1080x1920)
-
-Suitable for TikTok, Kuaishou, Xiaohongshu, and other short video platforms.
-
-<div class="grid cards" markdown>
-
--   **static_default**
-
-    ---
-
-    ![static_default](../../images/1080x1920/static_default_en.jpg)
-    
-    Default static template
-
--   **static_excerpt**
-
-    ---
-
-    ![static_excerpt](../../images/1080x1920/static_excerpt_en.jpg)
-    
-    Text excerpt static template
-
--   **Blur Card**
-
-    ---
-
-    ![blur_card](../../images/1080x1920/image_blur_card_en.jpg)
-    
-    Blurred background card style, suitable for graphic content display
-
--   **Cartoon**
-
-    ---
-
-    ![cartoon](../../images/1080x1920/image_cartoon_en.jpg)
-    
-    Cartoon style, suitable for light and lively content
-
--   **Default**
-
-    ---
-
-    ![default](../../images/1080x1920/image_default_en.jpg)
-    
-    Default template, simple and versatile
-
--   **Elegant**
-
-    ---
-
-    ![elegant](../../images/1080x1920/image_elegant_en.jpg)
-    
-    Elegant style, suitable for artistic and intellectual content
-
--   **Fashion Vintage**
-
-    ---
-
-    ![fashion_vintage](../../images/1080x1920/image_fashion_vintage_en.jpg)
-    
-    Retro fashion style, suitable for nostalgic themes
-
--   **Life Insights**
-
-    ---
-
-    ![life_insights](../../images/1080x1920/image_life_insights_en.jpg)
-    
-    Life insight style, suitable for inspirational content
-
--   **Modern**
-
-    ---
-
-    ![modern](../../images/1080x1920/image_modern_en.jpg)
-    
-    Modern minimalist style, suitable for business and tech content
-
--   **Neon**
-
-    ---
-
-    ![neon](../../images/1080x1920/image_neon_en.jpg)
-    
-    Neon style, suitable for fashion and trendy content
-
--   **Psychology Card**
-
-    ---
-
-    ![psychology_card](../../images/1080x1920/image_psychology_card_en.jpg)
-    
-    Psychology card style, suitable for knowledge popularization
-
--   **Purple**
-
-    ---
-
-    ![purple](../../images/1080x1920/image_purple_en.jpg)
-    
-    Purple theme, suitable for dreamy and mysterious styles
-
--   **Satirical Cartoon**
-
-    ---
-
-    ![satirical_cartoon](../../images/1080x1920/image_satirical_cartoon_en.jpg)
-    
-    80s satirical cartoon style for spiritual tales
-
--   **Simple Black Background**
-
-    ---
-
-    ![simple_black](../../images/1080x1920/image_simple_black_en.jpg)
-    
-    Simple black background, suitable for inspirational content
-
--   **Simple Line Drawing**
-
-    ---
-
-    ![simple_line_drawing](../../images/1080x1920/image_simple_line_drawing_en.jpg)
-    
-    Simple line drawing style for cognitive growth content
-
--   **Book**
-
-    ---
-
-    ![book](../../images/1080x1920/image_book_en.jpg)
-    
-    Book style, suitable for book lists
-
--   **Long Text**
-
-    ---
-
-    ![long_text](../../images/1080x1920/image_long_text_en.jpg)
-    
-    Long text style, suitable for inspirational content
-
--   **Excerpt**
-
-    ---
-
-    ![excerpt](../../images/1080x1920/image_excerpt_en.jpg)
-    
-    Excerpt style, suitable for quotes and book excerpts
-
--   **Health Preservation**
-
-    ---
-
-    ![health_preservation](../../images/1080x1920/image_health_preservation_en.jpg)
-    
-    Health preserving tips, suitable for wellness explainers.
-
--   **Life Insights**
-
-    ---
-
-    ![life_insights_light](../../images/1080x1920/image_life_insights_light_en.jpg)
-    
-    Life insights, conveying warmth and strength
-
--   **Full**
-
-    ---
-
-    ![full](../../images/1080x1920/image_full_en.jpg)
-    
-    Full screen display, suitable for book lists
-
--   **Healing**
-
-    ---
-
-    ![healing](../../images/1080x1920/image_healing_en.jpg)
-    
-    Healing style, suitable for therapeutic content
-
--   **Video_Default**
-
-    ---
-
-    ![video_default](../../images/1080x1920/video_default.jpg)
-    
-    Default dynamic template
-
--   **Video_Healing**
-
-    ---
-
-    ![video_healing](../../images/1080x1920/video_healing.jpg)
-    
-    Healing dynamic template
-
-</div>
-
----
-
-### Landscape Templates (1920x1080)
-
-Suitable for YouTube, Bilibili, and other video platforms.
-
-<div class="grid cards" markdown>
-
--   **Ultrawide Minimal**
-
-    ---
-
-    ![ultrawide_minimal](../../images/1920x1080/image_ultrawide_minimal_en.jpg)
-    
-    Ultrawide minimalist style, suitable for desktop viewing
-
--   **Wide Darktech**
-
-    ---
-
-    ![wide_darktech](../../images/1920x1080/image_wide_darktech_en.jpg)
-    
-    Dark tech style, suitable for technology and gaming content
-
--   **Film**
-
-    ---
-
-    ![film](../../images/1920x1080/image_film_en.jpg)
-    
-    Film style, immersive experience
-
--   **Full**
-
-    ---
-
-    ![full](../../images/1920x1080/image_full_en.jpg)
-    
-    Full screen display, suitable for book lists
-
--   **Book**
-
-    ---
-
-    ![book](../../images/1920x1080/image_book_en.jpg)
-    
-    Book style, suitable for book lists
-
-</div>
-
----
-
-### Square Templates (1080x1080)
-
-Suitable for Instagram, WeChat Moments, and other platforms.
-
-<div class="grid cards" markdown>
-
--   **Minimal Framed**
-
-    ---
-
-    ![minimal_framed](../../images/1080x1080/image_minimal_framed_en.jpg)
-    
-    Minimalist framed style, suitable for social media sharing
-
-</div>
-
----
-
-## Template Naming Convention
-
-Templates follow a unified naming convention to distinguish different types:
-
-- **`static_*.html`**: Static templates
-  - No AI-generated media content required
-  - Pure text style rendering
-  - Suitable for quick generation and low-cost scenarios
-
-- **`image_*.html`**: Image templates
-  - Uses AI-generated images as background
-  - Invokes ComfyUI image generation workflows
-  - Suitable for content requiring visual illustrations
-
-- **`video_*.html`**: Video templates
-  - Uses AI-generated videos as background
-  - Invokes ComfyUI video generation workflows
-  - Creates dynamic video content with enhanced expressiveness
-
-## Template Structure
-
-Templates are located in the `templates/` directory, grouped by size:
-
-```
-templates/
-├── 1080x1920/  # Portrait
-│   ├── static_*.html   # Static templates
-│   ├── image_*.html    # Image templates
-│   └── video_*.html    # Video templates
-├── 1920x1080/  # Landscape
-│   └── image_*.html    # Image templates
-└── 1080x1080/  # Square
-    └── image_*.html    # Image templates
-```
-
----
-
-## Creating Custom Templates
-
-### Steps
-
-1. Copy an existing template file from the `templates/` directory
-2. Modify HTML and CSS styles
-3. Save to the corresponding size directory with `.html` extension
-4. Use the new template name in configuration or Web interface
-
-### Template Variables
-
-Templates support the following Jinja2 variables:
-
-- `{{ title }}` - Video title (optional)
-- `{{ text }}` - Current scene text content
-- `{{ image }}` - Current scene image (if any)
-
-### Example Template
-
-```html
-<!DOCTYPE html>
-<html>
-<head>
-    <style>
-        body {
-            width: 1080px;
-            height: 1920px;
-            margin: 0;
-            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            font-family: 'Arial', sans-serif;
-        }
-        .content {
-            text-align: center;
-            color: white;
-            padding: 40px;
-        }
-        .text {
-            font-size: 48px;
-            line-height: 1.6;
-        }
-    </style>
-</head>
-<body>
-    <div class="content">
-        <div class="text">{{ text }}</div>
-    </div>
-</body>
-</html>
-```
-
----
-
-## Template Development Tips
-
-### 1. Responsive Sizing
-
-Ensure the template's `body` size matches the target video dimensions:
-
-- Portrait: `width: 1080px; height: 1920px;`
-- Landscape: `width: 1920px; height: 1080px;`
-- Square: `width: 1080px; height: 1080px;`
-
-### 2. Text Typography
-
-- Use appropriate font sizes and line heights for readability
-- Add shadows or backgrounds to text for better contrast
-- Control text length to avoid overflow
-
-### 3. Image Handling
-
-- Use `object-fit: cover` to ensure image filling
-- Add gradients or overlay layers to improve text readability
-- Consider fallback solutions for image loading failures
-
-### 4. Performance Optimization
-
-- Avoid overly complex CSS animations
-- Optimize background image sizes
-- Use system fonts or web-safe fonts
-
----
-
-## More Information
-
-For template development questions, feel free to ask in [GitHub Issues](https://github.com/AIDC-AI/Pixelle-Video/issues).
-

+ 0 - 98
docs/Pixelle-Video-main/docs/en/user-guide/web-ui.md

@@ -1,98 +0,0 @@
-# Web UI Guide
-
-Detailed introduction to the Pixelle-Video Web interface features.
-
----
-
-## Interface Layout
-
-The Web interface uses a three-column layout:
-
-- **Left Panel**: Content input and audio settings
-- **Middle Panel**: Voice and visual settings  
-- **Right Panel**: Video generation and preview
-- **Sidebar**: System configuration and FAQ
-
----
-
-## System Configuration
-
-First-time use requires configuring LLM and image generation services. See [Configuration Guide](../getting-started/configuration.md).
-
----
-
-## Content Input
-
-### Generation Mode
-
-- **AI Generate Content**: Enter a topic, AI creates script automatically
-- **Fixed Script Content**: Enter complete script directly
-
-### Fixed Script Split Mode
-
-When using fixed script mode, you can choose how to split the content:
-
-- **By Paragraph**: Split by empty lines, each paragraph becomes a scene
-- **By Line**: Split by line breaks, each line becomes a scene
-- **By Sentence**: Smart sentence boundary detection, each sentence becomes a scene
-
-### Background Music
-
-- Built-in music supported
-- Custom music files supported
-
----
-
-## Voice Settings
-
-### TTS Workflow
-
-- Select TTS workflow
-- Supports Edge-TTS, Index-TTS, etc.
-
-### Reference Audio
-
-- Upload reference audio for voice cloning
-- Supports MP3/WAV/FLAC formats
-
----
-
-## Visual Settings
-
-### Image/Video Generation
-
-- Select media generation workflow (image or video)
-- Adjust prompt prefix to control style
-
-### Video Template
-
-- **Template Preview Gallery**: Visually preview all available templates
-- Supports portrait (1080x1920) / landscape (1920x1080) / square (1080x1080)
-- Template types:
-  - `static_*.html`: Static templates (no AI-generated media)
-  - `image_*.html`: Image templates (requires AI-generated images)
-  - `video_*.html`: Video templates (requires AI-generated videos)
-
----
-
-## Generate Video
-
-After clicking "Generate Video", the system will:
-
-1. Generate video script
-2. Generate images/videos for each scene
-3. Synthesize voice narration
-4. Compose final video
-
-Automatically previews when complete.
-
----
-
-## FAQ
-
-The sidebar includes built-in FAQ for quick reference:
-
-- Common configuration issues
-- Generation failure solutions
-- Performance optimization tips
-

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor