
第2篇:本地目录与资产标准
-
- 1)核心原则:目录是你的“数据库”,命名是你的“主键”
- 2)你要的不是“文件夹”,而是“资产流水线拓扑”
- 3)推荐目录结构(可直接复制使用)
- 4)命名规范:用“可机器解析”的格式,避免人为歧义
-
- 4.1 统一命名的四段式
- 4.2 为什么要把“渠道/规格”写进文件名?
- 5)SSOT(单一事实源):每个 SKU 必须有一份“真相文件”
-
- 5.1 SSOT 里至少要包含什么?
- 6)版本策略:用“发布版本”而不是“最近版本”
- 7)把目录标准“变成自动化”:Make Agent 只要遵循协议就能跑
- 8)你可以直接照做的“最小落地清单”
- 评论区互动
如果你把 Mac Studio M2 Ultra 当作“家庭私有 AI 生产机房”,那真正决定系统可交付的,往往不是 ComfyUI 跑得多快,也不是 RAG 回答多聪明,而是两件事:
这一篇我们就做一件“看似土、但极其工程化”的事:统一目录结构、命名规范、版本策略、以及 SSOT(单一事实源),让 Make Agents、ComfyUI、RAG、Shopify 之间的协作变得可控。
1)核心原则:目录是你的“数据库”,命名是你的“主键”
在电商 AI 自动化里,一切资产最终都要落盘:
- 输入:产品白底图、供应链资料、竞品截图、卖点笔记
- 过程:ComfyUI 生成物、质检记录、参数与模型版本
- 输出:主图/场景图/详情页、Listing 文案字段包、上架 payload
- 运营:广告素材版本、A/B 测试、客服对话与问题归因
所以我们先确定三个硬原则:
- H1:同一 SKU 的所有东西必须落在同一个“SKU 根目录”下
- H2:任何可变内容必须版本化(V001/V002…)
- H3:任何可自动化编排的内容必须结构化(JSON/YAML/CSV),而不是散落的文本
2)你要的不是“文件夹”,而是“资产流水线拓扑”
下面这张图,你可以理解为本专栏的“文件系统协议”。

你会发现:这不是“好看”的目录,而是为了 Make Agent 可以定位、读写、审计。
3)推荐目录结构(可直接复制使用)
以单个 SKU 为单位,目录结构建议如下(示例 SKU:PET-BRUSH-001):
- 00_meta/:SKU 元信息与 SSOT(强制存在)
- 01_input/:输入资料(原图、参考、供应链)
- 02_gen/:ComfyUI 输出(主图/场景/详情 + 质检)
- 03_copy/:RAG 输出(字段化文案包 + 版本)
- 04_publish/:上架输出(payload、截图、回滚信息)
- 05_ops/:投放与 A/B(素材、落地页、实验记录)
- 06_cs/:客服对话与问题归因
- 99_logs/:流水线日志与审计
#mermaid-svg-8POtDWyw57DWdtlI{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-8POtDWyw57DWdtlI .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-8POtDWyw57DWdtlI .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-8POtDWyw57DWdtlI .error-icon{fill:#552222;}#mermaid-svg-8POtDWyw57DWdtlI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-8POtDWyw57DWdtlI .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-8POtDWyw57DWdtlI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-8POtDWyw57DWdtlI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-8POtDWyw57DWdtlI .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-8POtDWyw57DWdtlI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-8POtDWyw57DWdtlI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-8POtDWyw57DWdtlI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-8POtDWyw57DWdtlI .marker.cross{stroke:#333333;}#mermaid-svg-8POtDWyw57DWdtlI svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-8POtDWyw57DWdtlI p{margin:0;}#mermaid-svg-8POtDWyw57DWdtlI .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-8POtDWyw57DWdtlI .cluster-label text{fill:#333;}#mermaid-svg-8POtDWyw57DWdtlI .cluster-label span{color:#333;}#mermaid-svg-8POtDWyw57DWdtlI .cluster-label span p{background-color:transparent;}#mermaid-svg-8POtDWyw57DWdtlI .label text,#mermaid-svg-8POtDWyw57DWdtlI span{fill:#333;color:#333;}#mermaid-svg-8POtDWyw57DWdtlI .node rect,#mermaid-svg-8POtDWyw57DWdtlI .node circle,#mermaid-svg-8POtDWyw57DWdtlI .node ellipse,#mermaid-svg-8POtDWyw57DWdtlI .node polygon,#mermaid-svg-8POtDWyw57DWdtlI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-8POtDWyw57DWdtlI .rough-node .label text,#mermaid-svg-8POtDWyw57DWdtlI .node .label text,#mermaid-svg-8POtDWyw57DWdtlI .image-shape .label,#mermaid-svg-8POtDWyw57DWdtlI .icon-shape .label{text-anchor:middle;}#mermaid-svg-8POtDWyw57DWdtlI .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-8POtDWyw57DWdtlI .rough-node .label,#mermaid-svg-8POtDWyw57DWdtlI .node .label,#mermaid-svg-8POtDWyw57DWdtlI .image-shape .label,#mermaid-svg-8POtDWyw57DWdtlI .icon-shape .label{text-align:center;}#mermaid-svg-8POtDWyw57DWdtlI .node.clickable{cursor:pointer;}#mermaid-svg-8POtDWyw57DWdtlI .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-8POtDWyw57DWdtlI .arrowheadPath{fill:#333333;}#mermaid-svg-8POtDWyw57DWdtlI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-8POtDWyw57DWdtlI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-8POtDWyw57DWdtlI .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8POtDWyw57DWdtlI .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-8POtDWyw57DWdtlI .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8POtDWyw57DWdtlI .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-8POtDWyw57DWdtlI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-8POtDWyw57DWdtlI .cluster text{fill:#333;}#mermaid-svg-8POtDWyw57DWdtlI .cluster span{color:#333;}#mermaid-svg-8POtDWyw57DWdtlI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-8POtDWyw57DWdtlI .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-8POtDWyw57DWdtlI rect.text{fill:none;stroke-width:0;}#mermaid-svg-8POtDWyw57DWdtlI .icon-shape,#mermaid-svg-8POtDWyw57DWdtlI .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8POtDWyw57DWdtlI .icon-shape p,#mermaid-svg-8POtDWyw57DWdtlI .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-8POtDWyw57DWdtlI .icon-shape rect,#mermaid-svg-8POtDWyw57DWdtlI .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8POtDWyw57DWdtlI .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-8POtDWyw57DWdtlI .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-8POtDWyw57DWdtlI :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
PET-BRUSH-001/
00_meta/
01_input/
02_gen/
03_copy/
04_publish/
05_ops/
06_cs/
99_logs/
4)命名规范:用“可机器解析”的格式,避免人为歧义
4.1 统一命名的四段式
建议所有核心文件名遵循:
{SKU}__{ASSET_TYPE}__{CHANNEL}__V{NNN}
- SKU:唯一标识,如 PET-BRUSH-001
- ASSET_TYPE:资产类型(img-main / img-scene / img-detail / copy / payload / qa)
- CHANNEL:渠道或规格(shopify / tiktok / xhs / meta-ads / 800×800)
- VNNN:版本号(V001 起)
示例:
- PET-BRUSH-001__img-main__shopify-800x800__V003.png
- PET-BRUSH-001__img-scene__meta-ads-1200x628__V001.png
- PET-BRUSH-001__copy__shopify__V002.json
- PET-BRUSH-001__payload__shopify__V001.json
4.2 为什么要把“渠道/规格”写进文件名?
因为你后面一定会出现:
- 同一张图要裁 800×800、1200×628、1080×1440
- 同一套文案要适配 Shopify、TikTok Shop、独立站落地页
- 同一 SKU 要跑多轮 A/B(版本号必须能区分)
把“规格”写在文件名里,你就能做到:搜索即定位,脚本也能做批处理归档。
5)SSOT(单一事实源):每个 SKU 必须有一份“真相文件”
你这条生产线的“真相”不在 Excel,也不在口头沟通,而在一份结构化元数据里。
建议在每个 SKU 的 00_meta/ 下放一个:
- sku.json(主元信息)
- mapping.json(字段映射:Make/Shopify/Notion)
- policy.json(合规与禁词/禁图规则)
- versions.json(素材与文案版本索引)
#mermaid-svg-3B1Gn06by1dhxnMX{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3B1Gn06by1dhxnMX .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3B1Gn06by1dhxnMX .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3B1Gn06by1dhxnMX .error-icon{fill:#552222;}#mermaid-svg-3B1Gn06by1dhxnMX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3B1Gn06by1dhxnMX .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3B1Gn06by1dhxnMX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3B1Gn06by1dhxnMX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3B1Gn06by1dhxnMX .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3B1Gn06by1dhxnMX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3B1Gn06by1dhxnMX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3B1Gn06by1dhxnMX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3B1Gn06by1dhxnMX .marker.cross{stroke:#333333;}#mermaid-svg-3B1Gn06by1dhxnMX svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3B1Gn06by1dhxnMX p{margin:0;}#mermaid-svg-3B1Gn06by1dhxnMX .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-3B1Gn06by1dhxnMX .cluster-label text{fill:#333;}#mermaid-svg-3B1Gn06by1dhxnMX .cluster-label span{color:#333;}#mermaid-svg-3B1Gn06by1dhxnMX .cluster-label span p{background-color:transparent;}#mermaid-svg-3B1Gn06by1dhxnMX .label text,#mermaid-svg-3B1Gn06by1dhxnMX span{fill:#333;color:#333;}#mermaid-svg-3B1Gn06by1dhxnMX .node rect,#mermaid-svg-3B1Gn06by1dhxnMX .node circle,#mermaid-svg-3B1Gn06by1dhxnMX .node ellipse,#mermaid-svg-3B1Gn06by1dhxnMX .node polygon,#mermaid-svg-3B1Gn06by1dhxnMX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3B1Gn06by1dhxnMX .rough-node .label text,#mermaid-svg-3B1Gn06by1dhxnMX .node .label text,#mermaid-svg-3B1Gn06by1dhxnMX .image-shape .label,#mermaid-svg-3B1Gn06by1dhxnMX .icon-shape .label{text-anchor:middle;}#mermaid-svg-3B1Gn06by1dhxnMX .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3B1Gn06by1dhxnMX .rough-node .label,#mermaid-svg-3B1Gn06by1dhxnMX .node .label,#mermaid-svg-3B1Gn06by1dhxnMX .image-shape .label,#mermaid-svg-3B1Gn06by1dhxnMX .icon-shape .label{text-align:center;}#mermaid-svg-3B1Gn06by1dhxnMX .node.clickable{cursor:pointer;}#mermaid-svg-3B1Gn06by1dhxnMX .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3B1Gn06by1dhxnMX .arrowheadPath{fill:#333333;}#mermaid-svg-3B1Gn06by1dhxnMX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3B1Gn06by1dhxnMX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3B1Gn06by1dhxnMX .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3B1Gn06by1dhxnMX .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3B1Gn06by1dhxnMX .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3B1Gn06by1dhxnMX .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3B1Gn06by1dhxnMX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3B1Gn06by1dhxnMX .cluster text{fill:#333;}#mermaid-svg-3B1Gn06by1dhxnMX .cluster span{color:#333;}#mermaid-svg-3B1Gn06by1dhxnMX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3B1Gn06by1dhxnMX .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3B1Gn06by1dhxnMX rect.text{fill:none;stroke-width:0;}#mermaid-svg-3B1Gn06by1dhxnMX .icon-shape,#mermaid-svg-3B1Gn06by1dhxnMX .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3B1Gn06by1dhxnMX .icon-shape p,#mermaid-svg-3B1Gn06by1dhxnMX .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3B1Gn06by1dhxnMX .icon-shape rect,#mermaid-svg-3B1Gn06by1dhxnMX .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3B1Gn06by1dhxnMX .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3B1Gn06by1dhxnMX .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3B1Gn06by1dhxnMX :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
00_meta/sku.json
Make Agent
RAG API
ComfyUI Pipeline
Publish Payload
Shopify
5.1 SSOT 里至少要包含什么?
最低配置(建议):
- SKU 基本信息:类目、成本、售价、毛利、目标平台
- 视觉约束:风格、背景库、光照、禁用元素
- 文案约束:品牌词表、禁词、语气、语言
- 上架字段映射:title、body_html、tags、images、variants
- 版本索引:当前“生产可用”的素材版本与文案版本(类似 current_release)
6)版本策略:用“发布版本”而不是“最近版本”
很多人版本号越滚越大,但最后上架用的是哪一版,没人说得清。
所以建议你引入两个概念:
- Work Version(工作版本):V001/V002…,不断试错
- Release Version(发布版本):R2026-01-16 这种“可交付快照”
目录层面可以这样组织:
- 02_gen/release/R2026-01-16/
- 03_copy/release/R2026-01-16/
- 04_publish/release/R2026-01-16/
#mermaid-svg-hIifNJhvJKcLm5Wa{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-hIifNJhvJKcLm5Wa .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-hIifNJhvJKcLm5Wa .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-hIifNJhvJKcLm5Wa .error-icon{fill:#552222;}#mermaid-svg-hIifNJhvJKcLm5Wa .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hIifNJhvJKcLm5Wa .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-hIifNJhvJKcLm5Wa .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hIifNJhvJKcLm5Wa .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hIifNJhvJKcLm5Wa .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-hIifNJhvJKcLm5Wa .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hIifNJhvJKcLm5Wa .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hIifNJhvJKcLm5Wa .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hIifNJhvJKcLm5Wa .marker.cross{stroke:#333333;}#mermaid-svg-hIifNJhvJKcLm5Wa svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hIifNJhvJKcLm5Wa p{margin:0;}#mermaid-svg-hIifNJhvJKcLm5Wa .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-hIifNJhvJKcLm5Wa .cluster-label text{fill:#333;}#mermaid-svg-hIifNJhvJKcLm5Wa .cluster-label span{color:#333;}#mermaid-svg-hIifNJhvJKcLm5Wa .cluster-label span p{background-color:transparent;}#mermaid-svg-hIifNJhvJKcLm5Wa .label text,#mermaid-svg-hIifNJhvJKcLm5Wa span{fill:#333;color:#333;}#mermaid-svg-hIifNJhvJKcLm5Wa .node rect,#mermaid-svg-hIifNJhvJKcLm5Wa .node circle,#mermaid-svg-hIifNJhvJKcLm5Wa .node ellipse,#mermaid-svg-hIifNJhvJKcLm5Wa .node polygon,#mermaid-svg-hIifNJhvJKcLm5Wa .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hIifNJhvJKcLm5Wa .rough-node .label text,#mermaid-svg-hIifNJhvJKcLm5Wa .node .label text,#mermaid-svg-hIifNJhvJKcLm5Wa .image-shape .label,#mermaid-svg-hIifNJhvJKcLm5Wa .icon-shape .label{text-anchor:middle;}#mermaid-svg-hIifNJhvJKcLm5Wa .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-hIifNJhvJKcLm5Wa .rough-node .label,#mermaid-svg-hIifNJhvJKcLm5Wa .node .label,#mermaid-svg-hIifNJhvJKcLm5Wa .image-shape .label,#mermaid-svg-hIifNJhvJKcLm5Wa .icon-shape .label{text-align:center;}#mermaid-svg-hIifNJhvJKcLm5Wa .node.clickable{cursor:pointer;}#mermaid-svg-hIifNJhvJKcLm5Wa .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-hIifNJhvJKcLm5Wa .arrowheadPath{fill:#333333;}#mermaid-svg-hIifNJhvJKcLm5Wa .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hIifNJhvJKcLm5Wa .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hIifNJhvJKcLm5Wa .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hIifNJhvJKcLm5Wa .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-hIifNJhvJKcLm5Wa .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hIifNJhvJKcLm5Wa .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-hIifNJhvJKcLm5Wa .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hIifNJhvJKcLm5Wa .cluster text{fill:#333;}#mermaid-svg-hIifNJhvJKcLm5Wa .cluster span{color:#333;}#mermaid-svg-hIifNJhvJKcLm5Wa div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hIifNJhvJKcLm5Wa .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-hIifNJhvJKcLm5Wa rect.text{fill:none;stroke-width:0;}#mermaid-svg-hIifNJhvJKcLm5Wa .icon-shape,#mermaid-svg-hIifNJhvJKcLm5Wa .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hIifNJhvJKcLm5Wa .icon-shape p,#mermaid-svg-hIifNJhvJKcLm5Wa .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-hIifNJhvJKcLm5Wa .icon-shape rect,#mermaid-svg-hIifNJhvJKcLm5Wa .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hIifNJhvJKcLm5Wa .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-hIifNJhvJKcLm5Wa .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-hIifNJhvJKcLm5Wa :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
否
是
工作版本 V001..V00N
质检通过?
发布快照 RYYYY-MM-DD
上架与投放
数据回流
这一步的价值在于:回滚只需要回到某个 Release 目录,而不是翻文件海。
7)把目录标准“变成自动化”:Make Agent 只要遵循协议就能跑
当你的目录与命名足够严格,你才能让 Make 的编排层“少做判断,多做执行”,比如:
- “为 10 个 SKU 生成主图与文案”
- Agent 拆任务 → 调 ComfyUI → 归档到 02_gen/ → 写版本索引 → 调 RAG → 保存到 03_copy/ → 生成 payload → 放到 04_publish/
这一切的前提,是 路径与命名是稳定协议。
RAG API
ComfyUI
目录资产系统
Make Agent
用户
RAG API
ComfyUI
目录资产系统
Make Agent
用户
#mermaid-svg-RxSiL77UpvhpANrj{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-RxSiL77UpvhpANrj .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-RxSiL77UpvhpANrj .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-RxSiL77UpvhpANrj .error-icon{fill:#552222;}#mermaid-svg-RxSiL77UpvhpANrj .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-RxSiL77UpvhpANrj .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-RxSiL77UpvhpANrj .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-RxSiL77UpvhpANrj .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-RxSiL77UpvhpANrj .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-RxSiL77UpvhpANrj .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-RxSiL77UpvhpANrj .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-RxSiL77UpvhpANrj .marker{fill:#333333;stroke:#333333;}#mermaid-svg-RxSiL77UpvhpANrj .marker.cross{stroke:#333333;}#mermaid-svg-RxSiL77UpvhpANrj svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-RxSiL77UpvhpANrj p{margin:0;}#mermaid-svg-RxSiL77UpvhpANrj .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-RxSiL77UpvhpANrj text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-RxSiL77UpvhpANrj .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-RxSiL77UpvhpANrj .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-RxSiL77UpvhpANrj .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-RxSiL77UpvhpANrj .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-RxSiL77UpvhpANrj #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-RxSiL77UpvhpANrj .sequenceNumber{fill:white;}#mermaid-svg-RxSiL77UpvhpANrj #sequencenumber{fill:#333;}#mermaid-svg-RxSiL77UpvhpANrj #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-RxSiL77UpvhpANrj .messageText{fill:#333;stroke:none;}#mermaid-svg-RxSiL77UpvhpANrj .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-RxSiL77UpvhpANrj .labelText,#mermaid-svg-RxSiL77UpvhpANrj .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-RxSiL77UpvhpANrj .loopText,#mermaid-svg-RxSiL77UpvhpANrj .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-RxSiL77UpvhpANrj .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-RxSiL77UpvhpANrj .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-RxSiL77UpvhpANrj .noteText,#mermaid-svg-RxSiL77UpvhpANrj .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-RxSiL77UpvhpANrj .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-RxSiL77UpvhpANrj .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-RxSiL77UpvhpANrj .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-RxSiL77UpvhpANrj .actorPopupMenu{position:absolute;}#mermaid-svg-RxSiL77UpvhpANrj .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-RxSiL77UpvhpANrj .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-RxSiL77UpvhpANrj .actor-man circle,#mermaid-svg-RxSiL77UpvhpANrj line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-RxSiL77UpvhpANrj :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
生成 SKU 素材+文案
读取 00_meta/sku.json
生成任务(按 SSOT 约束)
输出文件
归档到 02_gen/ + 更新 versions.json
生成字段化文案(按约束)
copy.json
保存到 03_copy/ + 更新 versions.json
8)你可以直接照做的“最小落地清单”
本篇不讲虚的,给你一个落地 checklist:
- 每个 SKU 建立固定目录(00/01/02/03/04/05/06/99)
- 所有核心文件名遵循四段式命名(SKU__type__channel__VNNN)
- 00_meta/sku.json 作为 SSOT 强制存在
- 引入 Release 版本快照(RYYYY-MM-DD)
- ComfyUI 输出必须回写“参数与工作流版本”
- RAG 输出必须是“字段化 JSON”,不要散文式文案
- 上架必须保存 payload 与发布记录(可回滚)
评论区互动
1)你更偏向用哪种“资产主索引”? A. sku.json 为主(推荐) B. Notion 为主(SSOT 在 Notion) C. Google Sheet/Excel 为主
2)你希望目录标准覆盖到哪个粒度? A. 只到 SKU 级 B. 要到素材规格级(800×800、1200×628…) C. 要到每次投放实验(A/B 的版本、数据回流)
你在评论区回复“1A/1B/1C + 2A/2B/2C”,我下一篇可能就按你的选择,把“服务编排、自启动、健康检查、日志与告警”写成一套可复制的机房运行手册。




