feat: add zodiac fantasy pig video templates

This commit is contained in:
2026-05-31 13:18:22 +08:00
parent 3f7e33ad00
commit 3f66dbf316
2 changed files with 39 additions and 4 deletions

View File

@@ -9,7 +9,7 @@
## 部署事实 ## 部署事实
- 平台:个人 VPS `76.13.31.179`Docker Compose接入现有 Coolify Traefik - 平台:个人 VPS `76.13.31.179`Docker Compose接入现有 Coolify Traefik
- 发布状态VPS 生产已发布,仅个人使用 - 发布状态VPS 生产已发布,仅个人使用
- 最近生产数据同步2026-05-31`有你家族 · 生肖幻装系列` session `s_zodiac_fantasy_20260531_main` 已同步到 VPS `data/`,包含 12 张专业投影六视图专利图、18 张系列/单款宣发图、6 份专业文字资产;产品尺度统一按 50cm+ 具身 AI 智能陪伴机器人处理,视频暂缓未生成。本轮使用 `scripts/generate-zodiac-fantasy-series-assets.mjs` 以桌面参考图 `1400a0c9-6501-4a8f-942a-59d5e82edacd.png` 为视觉锚点生成。 - 最近生产数据同步2026-05-31`有你家族 · 生肖幻装系列` session `s_zodiac_fantasy_20260531_main` 已同步到 VPS `data/`,包含 12 张专业投影六视图专利图、18 张系列/单款宣发图、6 份专业文字资产、3 条亥猪 C 位 45 秒 Seedance 分段拼接视频(展示视频、触感细节、群体快闪);产品尺度统一按 50cm+ 具身 AI 智能陪伴机器人处理。本轮使用 `scripts/generate-zodiac-fantasy-series-assets.mjs` 以桌面参考图 `1400a0c9-6501-4a8f-942a-59d5e82edacd.png` 为视觉锚点生成图片,视频使用 `scripts/seedance-60s-compose.mjs``zodiac_fantasy_pig_*` 模板生成
- 最近生产部署2026-05-31`有你家族 · 亥猪` 模板约束已发布并完成生产:视频任务统一改为 45 秒;图片包模板移除默认动物鼻子、尾巴、耳朵等提示,改为 40cm+ AI 陪伴机器人摆件、正面宽约 28cm、侧面深约 22cm、软壳/短绒触感但不改变基础机甲结构。生产 session `s_mpsn5ef3_edc352` 已完成 64 张基础图片、4 张十二生肖装甲组合图、5 条 45 秒亥猪视频和 2 条 30 秒十二生肖集合视频。 - 最近生产部署2026-05-31`有你家族 · 亥猪` 模板约束已发布并完成生产:视频任务统一改为 45 秒;图片包模板移除默认动物鼻子、尾巴、耳朵等提示,改为 40cm+ AI 陪伴机器人摆件、正面宽约 28cm、侧面深约 22cm、软壳/短绒触感但不改变基础机甲结构。生产 session `s_mpsn5ef3_edc352` 已完成 64 张基础图片、4 张十二生肖装甲组合图、5 条 45 秒亥猪视频和 2 条 30 秒十二生肖集合视频。
- 上一轮生产部署2026-05-30视频 provider 改为默认 Seedance`VIDEO_PROVIDER=seedance`OpenAI Sora 仅作为可选回退;实测 Ark / Seedance `doubao-seedance-2-0` R2V 不接受 `duration=60`,当前 Seedance 单任务按 15 秒提交。若仍需 60 秒成片,需要分段拼接,或回退 OpenAI Sora 的延展链路。 - 上一轮生产部署2026-05-30视频 provider 改为默认 Seedance`VIDEO_PROVIDER=seedance`OpenAI Sora 仅作为可选回退;实测 Ark / Seedance `doubao-seedance-2-0` R2V 不接受 `duration=60`,当前 Seedance 单任务按 15 秒提交。若仍需 60 秒成片,需要分段拼接,或回退 OpenAI Sora 的延展链路。
- 最近生产数据同步2026-05-30`有你家族 · 糯糯猪` session `s_mps3u047_48e383` 已同步到 VPS `data/`,包含专利包、配件包、生产打样包、宣发包共 64 张图片Seedance 生产环境 Key 已换新并作为当前默认视频 provider。 - 最近生产数据同步2026-05-30`有你家族 · 糯糯猪` session `s_mps3u047_48e383` 已同步到 VPS `data/`,包含专利包、配件包、生产打样包、宣发包共 64 张图片Seedance 生产环境 Key 已换新并作为当前默认视频 provider。

View File

@@ -15,6 +15,10 @@ if (!sessionId) fail('Usage: node scripts/seedance-60s-compose.mjs run --session
const SEGMENT_SECONDS = clampNumber(args['segment-seconds'], 15, 3, 15); const SEGMENT_SECONDS = clampNumber(args['segment-seconds'], 15, 3, 15);
const TARGET_SECONDS = clampNumber(args['target-seconds'] || args.seconds, 45, SEGMENT_SECONDS, 180); const TARGET_SECONDS = clampNumber(args['target-seconds'] || args.seconds, 45, SEGMENT_SECONDS, 180);
const SEGMENT_COUNT = Math.ceil(TARGET_SECONDS / SEGMENT_SECONDS); const SEGMENT_COUNT = Math.ceil(TARGET_SECONDS / SEGMENT_SECONDS);
const PRODUCT_SIZE_LABEL = args['product-size'] || (sessionId.includes('zodiac_fantasy') ? '50cm+' : '40cm+');
const PRODUCT_SIZE_TEXT = sessionId.includes('zodiac_fantasy')
? '主角始终是“有你家族 · 亥猪”50cm+ 具身 AI 智能陪伴机器人,必须明显是家庭空间级真实产品体量;可用成人手部、沙发、展台、包装盒或其他生肖机器人衬托比例,不能像桌面小摆件、掌心玩偶、挂件或盲盒。'
: '主角始终是“有你家族 · 亥猪”40cm+ AI 陪伴机甲摆件,高度必须超过 40cm正面宽约 28cm侧面深约 22cm。';
const TEMPLATE_IDS = [ const TEMPLATE_IDS = [
'video_turntable', 'video_turntable',
'video_unboxing', 'video_unboxing',
@@ -73,6 +77,24 @@ const VIDEO_TEMPLATE_BLUEPRINTS = {
ratio: '16:9', ratio: '16:9',
prompt: character => `生成 ${TARGET_SECONDS} 秒十二生肖装甲走秀短片:${character}. 以亥猪基型为领队,十二套外观像产品发布走秀一样在白色科技展台上轮换展示。颜色可以更丰富,但基础形象不能变:橙色 visor 情绪屏、胸前 M 徽章、斜挎黑色能量肩带、灰橙扣件和短胖站姿全部保留。每个生肖只通过可换装甲区域、色彩符号和表面短绒/软壳材料区分,禁止真实动物器官、禁止重装战斗化。镜头要有节奏感、旋转台、局部特写和集合收束,音乐为原创韩流感电子鼓点,不使用真实歌曲。`, prompt: character => `生成 ${TARGET_SECONDS} 秒十二生肖装甲走秀短片:${character}. 以亥猪基型为领队,十二套外观像产品发布走秀一样在白色科技展台上轮换展示。颜色可以更丰富,但基础形象不能变:橙色 visor 情绪屏、胸前 M 徽章、斜挎黑色能量肩带、灰橙扣件和短胖站姿全部保留。每个生肖只通过可换装甲区域、色彩符号和表面短绒/软壳材料区分,禁止真实动物器官、禁止重装战斗化。镜头要有节奏感、旋转台、局部特写和集合收束,音乐为原创韩流感电子鼓点,不使用真实歌曲。`,
}, },
zodiac_fantasy_pig_showcase: {
title: '亥猪 C 位展示视频',
description: `${TARGET_SECONDS} 秒,亥猪作为 C 位主角,其它 11 款生肖幻装作为背景阵列。`,
ratio: '16:9',
prompt: character => `生成 ${TARGET_SECONDS} 秒“有你家族 · 生肖幻装系列 · 亥猪 C 位展示视频”:${character}. 亥猪必须始终是画面 C 位和视觉焦点,粉色猪系毛绒幻装、粉紫情绪 visor、M 家族徽章、斜挎能量肩带、圆润机甲基型必须清晰保留。其它 11 款生肖机器人只能作为背景阵列、舞台两侧、虚化陈列或后景灯箱出现,不抢主角。镜头结构:开场亥猪 visor 点亮,随后 360 度慢旋展示正面、侧面、背面和顶部,再用展台灯光扫过背景十二生肖阵列,最后亥猪回到正中定格。硬性尺度:全系列都是 50cm+ 具身 AI 智能陪伴机器人,不是小手办。画面风格酷炫、干净、女性向高级感,原创韩流感电子节奏,不使用真实受版权保护歌曲。`,
},
zodiac_fantasy_pig_touch_detail: {
title: '亥猪 C 位触感细节',
description: `${TARGET_SECONDS}展示亥猪毛绒软壳、visor、徽章、肩带和脚底细节。`,
ratio: '9:16',
prompt: character => `生成 ${TARGET_SECONDS} 秒“亥猪 C 位触感细节视频”:${character}. 竖版近景,亥猪是唯一主角,其他生肖只作为远处柔焦背景或镜面反射,不抢画面。重点展示粉色短绒毛绒外层、软壳机甲基体、粉紫 visor 情绪屏呼吸光、胸前 M 徽章、斜挎肩带、猪系胸扣、侧面圆形模块、圆润手臂、稳定脚底。需要有手部轻触、指尖划过短绒、按压软壳边缘、visor 亮起回应的细节,但手部比例必须证明这是 50cm+ 大体量陪伴机器人。禁止把亥猪拍成小玩偶、钥匙扣或桌面小公仔。音乐是原创韩流电子节奏和干净鼓点,不使用真实歌曲。`,
},
zodiac_fantasy_pig_group_flash: {
title: '亥猪 C 位群体快闪',
description: `${TARGET_SECONDS} 秒,十二生肖群体快闪,亥猪领舞/领队/C 位收束。`,
ratio: '16:9',
prompt: character => `生成 ${TARGET_SECONDS} 秒“十二生肖群体快闪视频”:${character}. 亥猪必须是 C 位领队,先单独登场,再由其它 11 款生肖幻装机器人从左右和后方快闪入场形成阵列。其它角色只做背景节奏、队形变化和颜色补充,不改变亥猪主角身份。镜头节奏:快速灯光点亮、生肖角色依次闪现、亥猪向前一步、全员 visor 同步呼吸光、群体 3 排阵列收束。所有角色都是 50cm+ 具身 AI 智能陪伴机器人,体量接近家居摆件/陪伴设备,不是盲盒。风格要酷炫、潮流、女性向高级,原创韩流感电子鼓点,不使用真实受版权保护歌曲。`,
},
}; };
const env = { const env = {
@@ -83,7 +105,7 @@ const apiKey = env.SEEDANCE_API_KEY;
if (!apiKey) fail('SEEDANCE_API_KEY missing'); if (!apiKey) fail('SEEDANCE_API_KEY missing');
const apiBase = env.SEEDANCE_API_BASE || 'https://ark.cn-beijing.volces.com/api/v3'; const apiBase = env.SEEDANCE_API_BASE || 'https://ark.cn-beijing.volces.com/api/v3';
const model = env.SEEDANCE_MODEL || 'doubao-seedance-2-0-260128'; const model = env.SEEDANCE_MODEL || 'doubao-seedance-2-0-260128';
const publicAppUrl = env.PUBLIC_APP_URL || env.NEXT_PUBLIC_APP_URL || 'https://ai-toy.kang-kang.com'; const publicAppUrl = args['public-app-url'] || env.PUBLIC_APP_URL || env.NEXT_PUBLIC_APP_URL || 'https://ai-toy.kang-kang.com';
const sessionPath = path.join(root, 'data', 'sessions', `${sessionId}.json`); const sessionPath = path.join(root, 'data', 'sessions', `${sessionId}.json`);
const trackerDir = path.join(root, 'data', 'video-segments'); const trackerDir = path.join(root, 'data', 'video-segments');
const trackerPath = path.join(trackerDir, `${sessionId}-${runLabel}.json`); const trackerPath = path.join(trackerDir, `${sessionId}-${runLabel}.json`);
@@ -504,8 +526,8 @@ function segmentPrompt(prompt, part) {
'', '',
`这是 Seedance 分段生成的第 ${part}/${SEGMENT_COUNT} 段,每段 ${SEGMENT_SECONDS} 秒,最终会拼成 ${TARGET_SECONDS} 秒完整视频。`, `这是 Seedance 分段生成的第 ${part}/${SEGMENT_COUNT} 段,每段 ${SEGMENT_SECONDS} 秒,最终会拼成 ${TARGET_SECONDS} 秒完整视频。`,
partCue(part), partCue(part),
'硬性尺寸约束:主角始终是“有你家族 · 亥猪”40cm+ AI 陪伴机甲摆件,高度必须超过 40cm正面宽约 28cm侧面深约 22cm。', `硬性尺寸约束:${PRODUCT_SIZE_TEXT}`,
'必须明显是 40cm 以上的实体产品:可用成人双手、包装盒、展台、桌面或家居物件证明比例;不能像掌心小玩偶、桌面迷你摆件、挂件或钥匙扣。', `必须明显是 ${PRODUCT_SIZE_LABEL} 以上的实体产品:可用成人双手、包装盒、展台、桌面或家居物件证明比例;不能像掌心小玩偶、桌面迷你摆件、挂件或钥匙扣。`,
'参考图里的中文和数字只用于理解尺寸比例;成片画面中不要生成任何数字、厘米文字、箭头尺寸标注或文字海报,避免出现错误读数。', '参考图里的中文和数字只用于理解尺寸比例;成片画面中不要生成任何数字、厘米文字、箭头尺寸标注或文字海报,避免出现错误读数。',
'必须保留白色圆润头盔、橙色弧形 visor 情绪屏、深灰面部底层、头顶 MEEY 竖条、胸前 M 徽章、斜挎黑色能量肩带、灰橙功能扣、侧面圆形模块、短胖站立比例。', '必须保留白色圆润头盔、橙色弧形 visor 情绪屏、深灰面部底层、头顶 MEEY 竖条、胸前 M 徽章、斜挎黑色能量肩带、灰橙功能扣、侧面圆形模块、短胖站立比例。',
'外部可呈现亲肤短绒、软壳或软硅胶复合触感,但不能改变基础机甲设计。禁止猪鼻子、猪尾巴、写实猪耳、猪蹄、四足身体、其它动物主体、武器和攻击性重装机甲。', '外部可呈现亲肤短绒、软壳或软硅胶复合触感,但不能改变基础机甲设计。禁止猪鼻子、猪尾巴、写实猪耳、猪蹄、四足身体、其它动物主体、武器和攻击性重装机甲。',
@@ -552,7 +574,20 @@ function findAnchor(session) {
} }
function findVideoReferenceUrls(session, fallbackUrl) { function findVideoReferenceUrls(session, fallbackUrl) {
if (session.id?.includes('zodiac_fantasy') || sessionId.includes('zodiac_fantasy')) {
return [
findAssetUrl(session, 'zodiac_fantasy_pig_sku_card'),
findAssetUrl(session, 'patent_pig_six_view'),
fallbackUrl,
].filter(Boolean).filter((url, index, urls) => urls.indexOf(url) === index);
}
const preferredTemplateIds = [ const preferredTemplateIds = [
'zodiac_fantasy_pig_sku_card',
'zodiac_fantasy_collection_kv',
'zodiac_fantasy_retail_grid',
'zodiac_fantasy_patent_overview',
'zodiac_fantasy_female_lifestyle',
'patent_pig_six_view',
'zodiac_hero_lineup', 'zodiac_hero_lineup',
'zodiac_armor_grid', 'zodiac_armor_grid',
'zodiac_material_palette', 'zodiac_material_palette',