From 2a2f5b5536f9b5a4de817bb42eae5cd99fba7963 Mon Sep 17 00:00:00 2001 From: imeepos Date: Wed, 3 Sep 2025 19:03:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0cos=E7=9C=9F=E4=BA=BA?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增CosplayRealPersonTemplate模板类 - 模板代码: cosplay_real_person_v1 - 支持图生图+生视频功能 - 使用gemini-2.5-flash-image模型生成cosplay真人照片 - 使用302/MiniMax-Hailuo-02模型生成动作视频 - 图片生成提示词: 生成cosplay插图的真人照片,背景设置在Comiket - 视频生成提示词: cosplay人物做经典动作的动态视频 - 积分消耗: 25分 - 视频时长: 6秒,竖屏比例9:16 - 更新模板导出和注册配置 - 提供完整的示例图片和视频链接 --- .../n8nTemplates/CosplayRealPersonTemplate.ts | 23 +++++++++++++++++++ src/templates/n8nTemplates/index.ts | 3 ++- src/templates/template.service.ts | 3 ++- 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/templates/n8nTemplates/CosplayRealPersonTemplate.ts diff --git a/src/templates/n8nTemplates/CosplayRealPersonTemplate.ts b/src/templates/n8nTemplates/CosplayRealPersonTemplate.ts new file mode 100644 index 0000000..c35b7da --- /dev/null +++ b/src/templates/n8nTemplates/CosplayRealPersonTemplate.ts @@ -0,0 +1,23 @@ +import { N8nVideoGenerateTemplate } from '../n8nTemplate'; + +// cos真人模板 +export class CosplayRealPersonTemplate extends N8nVideoGenerateTemplate { + readonly code = 'cosplay_real_person_v1'; + readonly name = 'cos真人'; + readonly description = '生成cosplay这张插图的真人照片,背景设置在Comiket,并生成cosplay人物做经典动作的视频'; + readonly creditCost = 25; + readonly version = '1.0.0'; + readonly input = 'https://cdn.roasmax.cn/upload/c69a847f8e8740f594f731ef502c4054.png'; // 原始插图示例 + readonly output = 'https://file.302.ai/gpt/imgs/20250903/376c2ee8e6bc06598b34cc43ce649aae.jpg'; // 输出图片示例 + readonly tags = ['cosplay', '真人', 'Comiket', '动漫', '二次元', '视频生成']; + + // N8n模板特定属性 - 图片生成 + readonly imageModel = 'gemini-2.5-flash-image'; // 根据要求使用 gemini-2.5-flash-image + readonly imagePrompt = '生成一张cosplay这张插图的照片,背景设置在Comiket,插图主体大一些'; + + // N8n模板特定属性 - 视频生成 + readonly videoModel = '302/MiniMax-Hailuo-02'; + readonly videoPrompt = '图片里的cosplay人物动起来,做出这个cosplay人物的经典动作'; + readonly duration = 6; // 6秒视频 + readonly aspectRatio = '9:16'; // 竖屏比例 +} diff --git a/src/templates/n8nTemplates/index.ts b/src/templates/n8nTemplates/index.ts index e2e62e7..9cdaf32 100644 --- a/src/templates/n8nTemplates/index.ts +++ b/src/templates/n8nTemplates/index.ts @@ -1,2 +1,3 @@ export * from './PhotoRestoreTemplate'; -export * from './close-eyes.template'; \ No newline at end of file +export * from './close-eyes.template'; +export * from './CosplayRealPersonTemplate'; \ No newline at end of file diff --git a/src/templates/template.service.ts b/src/templates/template.service.ts index 6529881..6efb249 100644 --- a/src/templates/template.service.ts +++ b/src/templates/template.service.ts @@ -1,6 +1,6 @@ import { Injectable, OnModuleInit, Logger } from '@nestjs/common'; import { TemplateManager, Template } from './types'; -import { CloseEyesTemplate, PhotoRestoreTemplate } from './n8nTemplates'; +import { CloseEyesTemplate, PhotoRestoreTemplate, CosplayRealPersonTemplate } from './n8nTemplates'; @Injectable() export class TemplateService implements OnModuleInit { @@ -72,6 +72,7 @@ export class TemplateService implements OnModuleInit { this.templateManager.registerTemplates([ new PhotoRestoreTemplate(), new CloseEyesTemplate(), + new CosplayRealPersonTemplate(), ]); } catch (error) { this.logger.error('模板初始化失败:', error);