071faa482c
纳入 AGC Cargo workspace 的统一 rustfmt 检查与格式化入口 完成项目 TypeScript/Prettier 与 Rust 全量格式化 修复 Pingora expected executable 门禁的空白敏感误报 同步开发运维文档与 AGC skill pack 格式化忽略规则
143 lines
7.2 KiB
TypeScript
143 lines
7.2 KiB
TypeScript
import type { PublicationMaterialsWorkflowId } from './ImageCanvasEditorTypes';
|
|
|
|
export type PublicationMaterialsWorkflow = {
|
|
id: PublicationMaterialsWorkflowId;
|
|
label: string;
|
|
promptLabel?: string;
|
|
englishName: string;
|
|
outputLabel: string;
|
|
sizeLabel: string;
|
|
outputSize: string;
|
|
aspectRatio: string;
|
|
imageSize: string;
|
|
scenario: string;
|
|
fields: string[];
|
|
framework: string[];
|
|
promptConstraints: string[];
|
|
referenceConstraints: string[];
|
|
postProcessConstraints: string[];
|
|
};
|
|
|
|
export const PUBLICATION_MATERIALS_WORKFLOWS: PublicationMaterialsWorkflow[] = [
|
|
{
|
|
id: 'publication-cover-image',
|
|
label: '游戏首图',
|
|
englishName: 'Home Image',
|
|
outputLabel: '单张主视觉',
|
|
sizeLabel: '720 x 540',
|
|
outputSize: '720x540',
|
|
aspectRatio: '4:3',
|
|
imageSize: '1K',
|
|
scenario: '推荐流、作品卡和首屏传播位',
|
|
fields: [
|
|
'游戏名称',
|
|
'玩法分类标签',
|
|
'一句话玩法',
|
|
'主视觉关键词',
|
|
'必要文字',
|
|
],
|
|
framework: [
|
|
'读取游戏基础信息和现有参考图',
|
|
'抽取核心玩法动作、主体物和城市/题材符号',
|
|
'生成一张带标题文字的横版主视觉',
|
|
'按首图尺寸、文字可读性和主体完整度验收',
|
|
],
|
|
promptConstraints: [
|
|
'标题文字必须直接进入画面,优先使用游戏名称;标题应为清晰中文大字,少字、醒目、可读',
|
|
'画面只表达一个强主题,不拼贴多张小图,不做详情页合集,不做截图说明页',
|
|
'主体、玩法道具和背景层级必须清楚;核心主体适合小尺寸推荐卡,缩小后仍能一眼识别',
|
|
'标题与主体不能互相遮挡;主体不裁切,标题不贴边,四周保留安全边距',
|
|
'避免暗黑、脏污、低清、廉价拼贴、文字乱码、伪文字、英文标题、非中文标题、错误游戏名',
|
|
],
|
|
referenceConstraints: [
|
|
'参考图只用于提取视觉约束:主体、玩法元素、色彩气质、画风、构图方向;不得照搬水印、边框、无关 UI、平台外壳或隐私信息',
|
|
],
|
|
postProcessConstraints: [
|
|
'输出检查:720 x 540,4:3;主体完整不裁切;标题清晰可读;画面只有一个主视觉重点',
|
|
'输出 metadata 记录完整提示词、尺寸和参考图摘要',
|
|
'不做真实发布、不写作品数据,只作为画布素材候选',
|
|
],
|
|
},
|
|
{
|
|
id: 'publication-detail-gallery',
|
|
label: '详情五图',
|
|
promptLabel: '详情页单图',
|
|
englishName: 'Detail Gallery',
|
|
outputLabel: '单张详情图',
|
|
sizeLabel: '720 x 1280',
|
|
outputSize: '720x1280',
|
|
aspectRatio: '9:16',
|
|
imageSize: '1K',
|
|
scenario: '作品详情、应用介绍和运营分发图组',
|
|
fields: ['游戏名称', '玩法分类标签', '卖点拆解', '图组顺序', '必要文字'],
|
|
framework: [
|
|
'选择当前这张详情图要表达的单一卖点',
|
|
'生成一张带短标题的竖版详情页素材',
|
|
'让主体、玩法反馈和背景符号保持同一套游戏物料气质',
|
|
'按单图尺寸、标题可读性、主体完整度和非合集画面验收',
|
|
],
|
|
promptConstraints: [
|
|
'本次只生成一张 720 x 1280 竖版详情图;不要把五张图合成一张长图、拼图、多分镜合集或截图说明页',
|
|
'每张图只承载一个卖点,短标题必须直接出现在画面中;标题用简短中文,不堆长句',
|
|
'画面保持与同一游戏后续详情图可组成一套:同一游戏名、同一主体物件体系、同一画风、同一色彩气质',
|
|
'构图要服务当前单一卖点,主体、玩法道具、反馈效果和背景层级清楚;核心信息缩小后仍能识别',
|
|
'短标题不能遮挡核心主体和玩法反馈;避免文字过密、小字不可读、UI 挡主体',
|
|
'连续生成多张详情图时,可以独立生成并允许顺序差异;同一批次复用同一份参考摘要,主动拉开角度、主体姿势和背景变化',
|
|
'避免五联图、分栏、多格漫画、长图合集、重复小图拼贴、文字乱码、伪文字、英文标题、非中文标题',
|
|
],
|
|
referenceConstraints: [
|
|
'从参考图解析并统一:画风、主体物件、玩法道具、背景符号、地域/场景元素、色板和光影氛围',
|
|
'参考图只作为视觉理解来源,不照搬截图 UI、水印、边框、按钮、状态栏、弹窗或无关文字',
|
|
],
|
|
postProcessConstraints: [
|
|
'输出检查:单张 720 x 1280 竖版;只表达一个卖点;标题不截断、不乱码;不是五图合集或拼贴',
|
|
'metadata 记录本张图的卖点、提示词和参考摘要',
|
|
'仅生成画布候选物料,不触发投放、分享或发布',
|
|
],
|
|
},
|
|
{
|
|
id: 'publication-promo-poster',
|
|
label: '运营海报',
|
|
englishName: 'Promo Poster',
|
|
outputLabel: '单张活动海报',
|
|
sizeLabel: '1280 x 720',
|
|
outputSize: '1280x720',
|
|
aspectRatio: '16:9',
|
|
imageSize: '1K',
|
|
scenario: '社群、活动、渠道投放和运营节日位',
|
|
fields: ['游戏名称', '活动主题', '玩法标签', '主文案', '行动指令'],
|
|
framework: [
|
|
'确认运营主题和投放场景',
|
|
'抽取游戏核心视觉符号和活动情绪',
|
|
'生成带主标题、卖点和行动指令的海报',
|
|
'按传播可读性、品牌一致性和尺寸验收',
|
|
],
|
|
promptConstraints: [
|
|
'主标题、游戏名和行动指令必须清晰入画;三者要有明确层级,不能互相抢占',
|
|
'运营氛围可以更强,包括活动感、福利感、节日感、更新感,但不能脱离游戏玩法、主体物件和美术资产',
|
|
'版式必须预留二维码或平台标识位置,但不得生成假二维码、假平台 Logo、假按钮或不可识别图标',
|
|
'右下角必须保留一个干净的白色二维码留白方块,并在方块内部上方用黑色小字写“此处换上你的游戏二维码”;留白内不要生成假二维码',
|
|
'活动主题优先级高于普通详情介绍,但不得覆盖游戏识别;用户仍需一眼知道这是哪款游戏、什么玩法',
|
|
'避免夸张承诺、敏感营销词、虚假福利、价格折扣、具体日期、不可读小字、文字乱码、伪文字',
|
|
],
|
|
referenceConstraints: [
|
|
'参考图用于锁定角色/主体物件、玩法道具、地域/场景符号、色彩气质和画风,不照搬参考图中的 UI、水印、边框或无关文字',
|
|
],
|
|
postProcessConstraints: [
|
|
'输出检查:16:9 横版 720p,建议 1280 x 720;主标题最大,游戏名清楚,行动指令可读;右下角白色二维码留白方块干净,方块内部上方带有黑色小字“此处换上你的游戏二维码”',
|
|
'metadata 记录活动主题、文案、提示词和预留位说明',
|
|
'仅生成画布候选物料,不触发投放、分享或发布',
|
|
],
|
|
},
|
|
];
|
|
|
|
export function getPublicationMaterialsWorkflow(
|
|
workflowId: PublicationMaterialsWorkflowId,
|
|
): PublicationMaterialsWorkflow {
|
|
return (
|
|
PUBLICATION_MATERIALS_WORKFLOWS.find(
|
|
(workflow) => workflow.id === workflowId,
|
|
) ?? PUBLICATION_MATERIALS_WORKFLOWS[0]!
|
|
);
|
|
}
|