# 账号系统规范 > 每个账号独立管理视觉风格、提示词策略和 CapCut 配置。 > 视觉风格直接内嵌在 prompts/*.md 中,无需单独的 styles/ 目录。 --- ## 目录结构 ``` accounts/ # 项目根目录下 ├── _template/ # 新账号模板(含通用 prompt 模板) │ ├── account.json │ ├── prompts/ # 通用提示词模板(生成账号 prompt 的基础) │ │ ├── 通用分镜.md │ │ ├── 通用图片.md │ │ └── 通用视频.md │ └── references/ # 参考图目录 │ └── .gitkeep └── {account}/ # 用户创建的账号(目录名 = account.json 的 id) ├── account.json ├── prompts/ # 账号专属提示词(基于通用模板 + 风格注入生成) │ ├── 分镜.md # 口播文案 → 分镜表 │ ├── 图片提示词.md # shotDesc → imagePrompt │ └── 视频提示词.md # shotDesc → videoPrompt └── references/ # 参考图(生图时作为参考输入) ├── ref_001.png └── ref_002.png ``` --- ## account.json 字段说明 ```json { "id": "tech-talk", "name": "科技解说", "description": "科技类短视频账号,深色背景,赛博朋克风格", "pipeline": "image-video", "defaultFormat": "9:16", "imageModel": "gemini", "videoModel": "veo3-fast", "batchSize": 30, "styles": { "赛博风格": { "references": [ { "file": "cyber_ref.png", "url": "https://oss.../cyber_ref.png" } ] } }, "ttsVoice": "cosyvoice-v3.5-plus-bailian-xxx", "ttsInstruction": "用冷静理性的男性声音朗读,语速适中", "storyboardPrompt": "prompts/分镜.md", "imageStylePrompt": "prompts/图片提示词.md", "videoStylePrompt": "prompts/视频提示词.md", "references": [], "capcut": { "effects": ["录制边框 III"], "filter": "质感暗调:30", "subtitleStyle": { "fontSize": 24, "color": "#FFFFFF", "highlightColor": "#FF6B35", "bold": true, "hasShadow": true, "shadowColor": "#000000", "shadowAlpha": 0.8, "transformY": -380, "alignment": 1, "inAnimation": "淡入", "outAnimation": "淡出" }, "keywordStyle": { "textEffect": "简约白色黑边花字", "fontSize": 60, "color": "#FFFFFF", "bold": true, "transformY": 0, "inAnimation": "打字机效果", "outAnimation": "模糊淡出", "inAnimDuration": 300000, "outAnimDuration": 300000 }, "transitions": { "strategy": "rhythm", "default": { "name": "闪白", "duration": 150000 }, "byPosition": { "hook": { "name": "闪白", "duration": 100000 }, "keypoint": { "name": "闪白", "duration": 120000 }, "body": { "name": "溶解", "duration": 300000 }, "closing": { "name": "闪黑", "duration": 200000 } } }, "defaultBGM": "" } } ``` | 字段 | 类型 | 说明 | |------|------|------| | `id` | string | 账号唯一标识(与目录名一致) | | `name` | string | 账号显示名 | | `description` | string | 一句话描述 | | `pipeline` | string | 流水线类型:`image-video`(默认) | | `defaultFormat` | string | 默认画幅(`9:16` / `16:9` / `1:1` / `4:3`) | | `imageModel` | string | 默认图片模型(`gemini` / `mj`) | | `videoModel` | string | 默认视频模型(`veo3-fast` / `grok-video-3` / `kling`) | | `batchSize` | number | 默认批量生成数量 | | `styles` | object | 命名风格预设,每项含 `references` 数组 | | `ttsVoice` | string | TTS 音色 ID,留空用 config.json 全局默认 | | `ttsInstruction` | string | TTS 语气指令(描述期望的语气、语速、情感) | | `storyboardPrompt` | string | 分镜提示词模板路径(相对于账号目录) | | `imageStylePrompt` | string | 图片提示词模板路径(相对于账号目录) | | `videoStylePrompt` | string | 视频提示词模板路径(相对于账号目录) | | `references` | array | 默认参考图列表(每项含 `file` 和 `url`),已被 `styles` 取代 | | `capcut.effects` | string[] | CapCut 特效名称列表 | | `capcut.filter` | string | CapCut 滤镜,格式 `"名称:强度"`(如 `"质感电影:40"`) | | `capcut.subtitleStyle` | object | 字幕样式(font/字体、fontSize、color、highlightColor、bold、transformY、inAnimation/outAnimation) | | `capcut.keywordStyle` | object | 关键字氛围词样式(textEffect 花字、fontSize、color、动画),留空或删除则关闭 | | `capcut.transitions` | object | 转场配置(strategy + default + byPosition + byDirector) | | `capcut.kenBurns` | object | Ken Burns 关键帧动画(消除图片幻灯片感),见下方 | | `capcut.defaultBGM` | string | 默认背景音乐 URL | ### kenBurns 字段 Ken Burns 关键帧动画:为每张图片添加慢速连续缩放/平移,消除幻灯片感。**速率驱动**,自动适配片段时长(短片段缩放少,长片段缩放多)。 ```json { "kenBurns": { "enabled": true, "default": { "startScale": 1.0, "scaleRate": 0.8, "panXRate": 0, "panYRate": 0 }, "byDirector": { "tarantino": { "startScale": 1.0, "scaleRate": 0.9, "panXRate": 0, "panYRate": -0.3 }, "kitano": { "startScale": 1.03, "scaleRate": 0.5, "panXRate": 0.4, "panYRate": 0 }, "fincher": { "startScale": 1.0, "scaleRate": 0.4, "panXRate": 0, "panYRate": 0 } } } } ``` | 参数 | 类型 | 说明 | |------|------|------| | `enabled` | boolean | `false` 禁用 Ken Burns,默认 `true` | | `default` | object | 默认 Ken Burns 参数(无 directorRef 匹配时使用) | | `byDirector` | object | 按 directorRef 覆盖(key 为导演名小写) | | `startScale` | number | 起始缩放(1.0=原始,1.03=略微放大) | | `scaleRate` | number | 缩放速率(%/秒),如 0.8 = 每秒放大 0.8%。自动乘以片段时长计算 endScale,上限 1.20 | | `panXRate` | number | 水平平移速率(单位/秒),正值右移。自动乘以片段时长 | | `panYRate` | number | 垂直平移速率(单位/秒),正值下移。自动乘以片段时长 | **创建账号时 Agent 应询问**: - 是否需要 Ken Burns 镜头动画?(图片成片必开,视频模式自动跳过) - 镜头风格偏好:微缩放 / 平移+缩放 / 仅缩放 --- ## 提示词模板(prompts/) 每个账号在 `prompts/` 目录下维护三个子 Agent 提示词模板: | 文件 | 用途 | Step | |------|------|------| | `分镜.md` | 口播文案 → 分镜表(shotDesc/script/duration/directorRef) | Step 1 | | `图片提示词.md` | shotDesc + directorRef → imagePrompt | Step 2-A | | `视频提示词.md` | shotDesc + directorRef → videoPrompt | Step 3-A | 这些文件定义了子 Agent 的角色、入参、出参、词库和示例。路径在 account.json 中以相对路径引用,Agent 读取 account.json 后自动定位。 ### 生成方式 账号的 prompts 基于 `_template/prompts/通用*.md` 生成: - 通用模板提供**方法论骨架**(切割规则、导演词库、写法规范、输出格式、质量自检) - 创建账号时通过 Q&A 收集风格信息,注入到骨架的固定位置 - 详细流程见 [account-creation.md](account-creation.md) --- ## 参考图(references/) 参考图用于生图时的风格引导(Gemini 图生图 / MJ --sref)。 ### 管理流程 1. 用户将参考图放入 `accounts/{id}/references/` 目录 2. Agent 上传到 OSS:`node scripts/oss-upload.js accounts/{id}/references/{图片文件}` 3. 将返回的 URL 写入 account.json 的 `references` 数组 --- ## 创建新账号 ### Q&A 创建(推荐) 用户说"创建账号"或"新账号"时,Agent 按 [account-creation.md](account-creation.md) 的结构化问答流程执行: 1. 逐项询问:账号身份 → 内容 DNA → 视觉身份 → 技术配置 2. 基于通用模板 + 用户回答生成 3 个 prompt 文件 + account.json 3. 校验完整性 ### CLI 创建(辅助) ```bash node scripts/pipeline.js create-account \ --id military \ --name "军事账号" \ --desc "军事主题短视频,暗黑漫画风格" \ --video-model veo3-fast-frames \ --references ./ref1.png,./ref2.png ``` 自动完成:创建目录 → 生成 account.json → 复制参考图 → 上传 OSS → 回写 URL。 **注意**:CLI 创建只生成目录结构和 account.json 骨架,prompt 文件仍需通过 Q&A 流程或手动创建。 ### 校验账号 ```bash node scripts/pipeline.js validate-account --account military ``` 检查:id 匹配、必填字段、prompts 模板存在、参考图完整性、OSS URL 有效。