现在项目要进行结构上的解耦,将整体流程拆分为3个板块: 第一个是AI文字部分,主要负责协调数据源和生成基础JSON,比如对于github-trending这个模板来说,它要: 1. 读取各个仓库的README及其他基本数据,生成单个仓库的描述 2. 根据上一步的结果总结内容,获取首屏或者一些全局描述相关的内容 3. 根据步骤1、步骤2生成章节台词内容 4. 视频发布所需的配置信息应该在本阶段生成(标题、描述、标签、板块等) 另外,数据源与AI文字逻辑在模块内需要拆分开,为以后可能的混合数据源做准备,之后可能会有混合多个数据源去生成视频的需求 然后是AI音频部分,需要读取AI文字部分中生成的JSON中的caption_origin来生成音频,然后根据生成的音频拆分为字幕数组(文字、所需时长)。整个AI音频部分就是通过遍历AI文字部分中生成的JSON来执行上述步骤,并将结果合并到JSON 最后是remotion调度器,remotion调度器也是接收固定的JSON类型(其实每个步骤都是,不满足JSON类型要报错),然后遍历JSON下载所有音频(文件命名要根据JSON字段path来命名(共用工具函数)),下载完毕后,合并到JSON 然后调用指定的remotion模板,消费JSON,根据模板生成视频。最终将生成好的视频上传到OSS。调用模板生成视频这里需要有方便的方法进行调试(remotion应该提供直接预览模板的方法),这样开发新模板便不再需要跑完整流程。 以下是JSON模板的参考示例,可根据实际情况进行调整: interface Input { // 数据结构版本 version: "2.0"; // 数据类型(后面可能非ppt形式表达) type: "ppt"; // 全局配置 config?: { // 主题色 theme_color?: string; // 背景音乐 bgm_file_url?: string; // ... }; data: Array<{ title?: string; desc?: string; // 本段落完整字幕 caption_origin?: "你好,我叫张三"; // 拆分后字幕 caption?: { text: string; // 需要占用的时长 duration: number; }[]; // 音频文件url caption_audio_file_url?: ""; card_list?: { title: ""; desc: ""; // ... }[]; // menu?: { icon?: ""; title: ""; desc: ""; // ... }[]; }>; } 这些只是项目流程上的变更,我不希望上面的变更会影响视频生成结果。所有的功能,以github-trending这个模板为准,目的是为项目提供更多扩展上的可能。 基于以上流程,我们或许需要一个新的程序运行方式,该运行方式主要是以后端服务的方式运行,而不是CLI或webui。更适配容器化的运行方式,原生支持定时执行。该程序运行方式将是pipeline的主要运行方式,暂时不考虑CLI或webui的兼容性和可用性。另外或许我们之后还要考虑并发问题,这个可以不做,在架构上保留这种能力 这次改动非常大,应该基本相当于重构了,CLAUDE.md也需要大范围改动甚至重写 检查当下的项目结构与新结构是否有逻辑上的矛盾冲突,如果有,及时告知我;如果没有,请规划后开始进行调整