用 Python 构建一个时尚文案自动分类生成器:
输入服饰风格关键词,自动输出国风 / 法式 / 机能三类标准文案模板,用于时尚品牌内容生产。
内容紧扣时尚产业与品牌创新课程,保持去营销化、中立、可教学、可复用,不涉及任何品牌推广。
项目名:StyleScript — 时尚文案自动分类生成器
一、实际应用场景描述
在时尚产业与品牌创新课程中,品牌调性与文案风格的一致性是核心教学模块:
"同样一件衣服,用不同的语言描述,它就是不同的品牌。"
现实场景包括:
- 时尚电商需要为同一件单品生成多风格文案
- 品牌创新作业中,学生需要为同一产品写不同调性的描述
- 内容团队需要快速产出"国风 / 法式 / 机能"三类风格的文案
- 教学中缺乏可复用的"风格模板生成器"
典型教学场景:
- 品牌定位(Brand Positioning)课程中的"调性练习"
- 时尚文案写作工作坊
- 学生小组作业:为虚拟品牌生成多风格内容
- 对比不同风格对同一产品的"意义重构"能力
StyleScript 的目标不是替代文案创作,而是:
把"风格"从模糊的语感,变成可操作、可教学的结构化模板系统。
二、引入痛点
现有文案工具的盲区
维度 通用 AI 写作工具 StyleScript
风格控制 靠 prompt 碰运气 结构化模板,可控可复现
输出一致性 同一风格每次不同 模板保证调性统一
教学价值 黑盒,不可拆解 白盒,每层可讨论
分类能力 不分类 明确三类:国风/法式/机能
真实痛点
- "国风"到底是什么? 学生只会写"中国风""古典美"——然后词穷
- 法式文案不是"浪漫"两个字能概括的——需要结构化的词汇库和句式
- 机能风(Techwear) 有自己的语法:功能、系统、模块、城市……
- 缺乏一个工具,帮学生先理解结构,再填充内容
三、核心逻辑讲解(先讲思想)
核心隐喻
文案不是"写"出来的,而是"组装"出来的——风格 = 词汇 × 句式 × 叙事角度
程序做了什么?
1. 定义三类风格的结构化模板
- 每类风格 = 一套词汇库 + 句式结构 + 叙事角度
- 不是"生成",而是"填空"——这是教学的核心
2. 输入层:服饰属性
- 品类(上衣 / 下装 / 外套 / 鞋履)
- 材质关键词
- 颜色 / 图案
- 功能性特征
3. 映射层:风格 × 属性 → 文案
- 国风:意境化表达、文化符号调用、诗性语言
- 法式:慵懒叙事、生活化场景、克制优雅
- 机能:功能导向、系统思维、未来城市语言
4. 输出层:三类标准文案
- 每条带"风格标签"和"关键修辞标注"
- 支持批量生成
关键设计原则
- 模板化,非黑盒生成
- 结构可见,每层可教学拆解
- 支持学生替换词汇,理解风格机制
四、代码模块化设计
项目结构
style_script/
│
├── README.md
├── requirements.txt
├── main.py
├── core/
│ ├── style_templates.py # 风格模板定义
│ ├── mapper.py # 属性 → 文案映射
│ └── reporter.py # 输出与对比
└── data/
└── wardrobe.json
五、核心代码实现(Python)
1️⃣ 风格模板定义(style_templates.py)
# core/style_templates.py
from dataclasses import dataclass, field
from typing import List
@dataclass
class StyleTemplate:
"""
一类风格的结构化模板
把"语感"拆解为可教学、可替换的模块
"""
name: str # 风格名称
description: str # 风格一句话定义
vocabulary: dict # 词汇库(按维度分类)
sentence_patterns: List[str] # 句式模板(含占位符)
narrative_angle: str # 叙事角度(教学用说明)
mood_keywords: List[str] # 情绪关键词
# ============================================================
# 国风模板
# 核心特征:意境化、文化符号、诗性隐喻、留白美学
# ============================================================
CHINESE_STYLE = StyleTemplate(
name="国风",
description="以东方美学为根基,强调意境、留白与文化自信",
vocabulary={
"材质": ["真丝", "棉麻", "香云纱", "宋锦", "苎麻", "绒面"],
"色彩": ["月白", "黛青", "朱砂", "藕粉", "墨黑", "琥珀"],
"意象": ["山水", "云雾", "竹林", "飞檐", "水墨", "流云"],
"工艺": ["手工盘扣", "苏绣", "扎染", "缂丝", "手工编织"],
"气质": ["清雅", "温润", "飘逸", "内敛", "禅意", "古韵"],
},
sentence_patterns=[
"{气质}的{材质}{品类},如{意象}间的一抹{色彩}",
"以{工艺}为笔,在{材质}上绘就{意象}的意境",
"一袭{品类},承载着{意象}的诗意与{气质}的力量",
"{色彩}色的{品类},似{意象}落入凡间",
"拾起这件{材质}{品类},仿佛触摸到{意象}的温度",
],
narrative_angle="从文化意象和感官意境出发,让服饰成为'可穿的诗'",
mood_keywords=["意境", "留白", "诗意", "内敛", "温润", "古韵"],
)
# ============================================================
# 法式模板
# 核心特征:慵懒叙事、生活化场景、克制优雅、不刻意的时髦
# ============================================================
FRENCH_STYLE = StyleTemplate(
name="法式",
description="以巴黎式生活美学为灵感,强调慵懒、自信与不费力的优雅",
vocabulary={
"材质": ["棉质", "真丝", "粗花呢", "灯芯绒", "皮革", "针织"],
"色彩": ["奶白", "藏蓝", "焦糖", "橄榄绿", "酒红", "燕麦色"],
"场景": ["咖啡馆", "塞纳河畔", "左岸书店", "露天市集", "石板路"],
"气质": ["effortless", "慵懒", "优雅", "随性", "chic", "自由"],
"细节": ["微卷的衣角", "随意的系带", "自然的褶皱", "不经意的光泽"],
},
sentence_patterns=[
"她穿着{品类}走进{场景},{气质}得毫不费力",
"一件{材质}{品类},是{场景}里最安静的时髦",
"{色彩}与{色彩}的碰撞,像{场景}午后的一束自然光",
"不刻意,不隆重——这件{品类}就是{气质}本身",
"当{材质}遇上{细节},巴黎的{场景}便有了温度",
],
narrative_angle="从生活场景和个人气质出发,让服饰成为'不刻意的自我表达'",
mood_keywords=["慵懒", "effortless", "chic", "自由", "优雅", "随性"],
)
# ============================================================
# 机能风模板
# 核心特征:功能导向、系统思维、未来城市、技术美学
# ============================================================
TECH_STYLE = StyleTemplate(
name="机能",
description="以城市机能主义为内核,强调功能性、系统性与未来感",
vocabulary={
"材质": ["GORE-TEX", "Cordura", "Dyneema", "尼龙", "速干面料", "反光材质"],
"色彩": ["黑", "军绿", "炭灰", "深蓝", "沙色", "警示橙"],
"功能": ["防水", "透气", "模块化", "可调节", "多口袋", "反光标识"],
"概念": ["城市探索", "装备系统", "人体工学", "全天候", "轻量化", "防护"],
"气质": ["硬朗", "实用", "未来感", "精密", "克制", "系统化"],
},
sentence_patterns=[
"{功能}+{功能}的{材质}{品类},为{概念}而生",
"将{概念}融入{材质}{品类}——不只是服饰,是装备系统",
"{色彩}的{品类},在{概念}中保持{气质}的表现",
"每一处{功能}设计,都是{概念}的精密回答",
"模块化{品类} × {材质}科技 = {气质}的都市解决方案",
],
narrative_angle="从功能系统和城市需求出发,让服饰成为'可穿戴的工程技术'",
mood_keywords=["功能", "系统", "精密", "未来感", "模块化", "防护"],
)
# 风格注册表
STYLE_REGISTRY = {
"guofeng": CHINESE_STYLE,
"french": FRENCH_STYLE,
"tech": TECH_STYLE,
}
设计说明
每个模板的核心价值在于"可拆解"——学生能看到:风格 = 词汇选择 + 句式结构 + 叙事角度
2️⃣ 属性映射与文案生成(mapper.py)
# core/mapper.py
import random
from typing import Dict, List, Optional
from .style_templates import StyleTemplate, STYLE_REGISTRY
class Garment:
"""一件服饰的结构化描述"""
def __init__(
self,
name: str,
category: str, # 品类:上衣/下装/外套/鞋履
material: str, # 材质
color: str, # 颜色
pattern: Optional[str] = "", # 图案/纹理
features: List[str] = None, # 功能性特征
):
self.name = name
self.category = category
self.material = material
self.color = color
self.pattern = pattern or ""
self.features = features or []
class StyleMapper:
"""
将服饰属性映射到不同风格的文案
核心逻辑:
同一件衣服,填入不同风格的"模板槽位"
→ 得到截然不同的三条文案
"""
def __init__(self):
self.styles = STYLE_REGISTRY
def generate_all(self, garment: Garment) -> Dict[str, str]:
"""为一件服饰生成所有风格的文案"""
results = {}
for key, template in self.styles.items():
results[key] = self._generate_one(garment, template)
return results
def _generate_one(self, garment: Garment, template: StyleTemplate) -> str:
"""将服饰属性填入风格模板"""
# 从词汇库中选取(优先使用实际属性,其次随机选)
vocab = template.vocabulary
# 材质:如果实际材质在词汇库中存在,使用它;否则随机选
material = self._pick(vocab.get("材质", []), garment.material)
# 色彩
color = self._pick(vocab.get("色彩", []), garment.color)
# 品类
category = garment.category
# 从服饰特征中选取一个,映射到风格概念
feature = ""
if garment.features:
feature = random.choice(garment.features)
elif "概念" in vocab:
feature = random.choice(vocab["概念"])
# 意象 / 场景 / 功能(风格特有)
style_specific = self._get_style_specific_word(template, garment)
# 气质
mood = ""
if "气质" in vocab:
mood = random.choice(vocab["气质"])
# 随机选一个句式模板
pattern = random.choice(template.sentence_patterns)
# 填充占位符
text = pattern.format(
材质=material,
色彩=color,
品类=category,
意象=style_specific,
工艺=self._pick(vocab.get("工艺", []), ""),
场景=style_specific,
功能=feature,
概念=feature or style_specific,
细节=self._pick(vocab.get("细节", []), ""),
气质=mood,
描述=garment.name,
)
return text
def _pick(self, candidates: list, fallback: str) -> str:
"""从候选词中选一个,若无候选则返回 fallback"""
if candidates:
return random.choice(candidates)
return fallback or "精选"
def _get_style_specific_word(self, template: StyleTemplate, garment: Garment) -> str:
"""获取风格特有的关键词(意象/场景/概念)"""
vocab = template.vocabulary
if "意象" in vocab:
return random.choice(vocab["意象"])
elif "场景" in vocab:
return random.choice(vocab["场景"])
elif "概念" in vocab:
return random.choice(vocab["概念"])
return ""
设计说明
"_pick" 方法的 fallback 逻辑确保:即使词汇库中没有对应词,也能用实际属性兜底
3️⃣ 输出与对比报告(reporter.py)
# core/reporter.py
from typing import Dict
from .style_templates import StyleTemplate, STYLE_REGISTRY
class StyleReporter:
"""生成风格文案对比报告"""
def __init__(self):
self.styles = STYLE_REGISTRY
def print_report(self, garment_name: str, results: Dict[str, str]):
"""打印三风格对比报告"""
print("\n" + "=" * 65)
print(f" ✨ 时尚文案 · 三风格生成报告")
print(f" 服饰:{garment_name}")
print("=" * 65)
style_order = ["guofeng", "french", "tech"]
style_labels = {
"guofeng": "🇨🇳 国风",
"french": "🇫🇷 法式",
"tech": "⚙️ 机能",
}
for key in style_order:
template: StyleTemplate = self.styles[key]
label = style_labels[key]
text = results[key]
print(f"\n {label}")
print(f" {'-' * 55}")
print(f" 📝 {text}")
print(f" 🎨 叙事角度:{template.narrative_angle}")
print(f" 🏷️ 情绪关键词:{', '.join(template.mood_keywords)}")
# 教学对比
print(f"\n{'=' * 65}")
print(f" 📌 教学对比:同一件服饰,三种语言")
print(f" {'=' * 65}")
guofeng = self.styles["guofeng"]
french = self.styles["french"]
tech = self.styles["tech"]
print(f"\n 国风视角:{guofeng.narrative_angle}")
print(f" 法式视角:{french.narrative_angle}")
print(f" 机能视角:{tech.narrative_angle}")
print(f"\n 💡 核心差异:")
print(f" · 国风用『意象』说话——诗意优先")
print(f" · 法式用『场景』说话——生活优先")
print(f" · 机能用『功能』说话——系统优先")
print(f"\n → 同一件衣服,三种『意义』,三种『人设』")
print(f"\n{'=' * 65}")
print(f" 📌 教学提示:")
print(f" 1. 风格不是形容词的堆砌,而是叙事角度的选择")
print(f" 2. 替换词汇库中的词,即可微调风格强度")
print(f" 3. 句式模板可以扩展——鼓励学生自己写模板")
print(f" 4. 对比练习:同一件衣服,你能写出第 4 种风格吗?")
4️⃣ 主程序(main.py)
# main.py
from core.mapper import Garment, StyleMapper
from core.reporter import StyleReporter
def main():
# 定义一件服饰
jacket = Garment(
name="廓形风衣",
category="外套",
material="棉质",
color="焦糖",
pattern="格纹",
features=["防水", "可拆卸内胆", "多口袋"],
)
# 生成三风格文案
mapper = StyleMapper()
results = mapper.generate_all(jacket)
# 输出报告
reporter = StyleReporter()
reporter.print_report(jacket.name, results)
# 再试一件
print("\n" + "=" * 65)
print(" 🔄 再来一件:\n")
sneaker = Garment(
name="复古跑鞋",
category="鞋履",
material="皮革",
color="奶白",
pattern="",
features=["缓震", "透气", "防滑"],
)
results2 = mapper.generate_all(sneaker)
reporter.print_report(sneaker.name, results2)
if __name__ == "__main__":
main()
六、README 文件
# StyleScript
一个时尚文案自动分类生成器。
## 目的
- 把"风格"从模糊语感,变成结构化、可教学、可拆解的模板系统
- 输入服饰属性,输出国风 / 法式 / 机能三类标准文案
- 用于品牌创新课程的"调性练习"和"意义重构"教学
## 使用说明
### 运行环境
- Python 3.8+
- 仅使用标准库
### 启动
bash
python main.py
### 自定义服饰
修改 main.py 中的 Garment:
python
item = Garment(
name="你的服饰名",
category="品类(上衣/下装/外套/鞋履)",
material="材质",
color="颜色",
pattern="图案(可选)",
features=["功能1", "功能2"], # 可选
)
### 生成文案
python
from core.mapper import StyleMapper
mapper = StyleMapper()
results = mapper.generate_all(item)
results["guofeng"] → 国风文案
results["french"] → 法式文案
results["tech"] → 机能文案
### 扩展词汇库
编辑 `core/style_templates.py`,在对应风格的 `vocabulary` 中添加词汇:
python
"气质": ["你的新词", "另一个新词"],
### 扩展句式
在对应风格的 `sentence_patterns` 中添加模板:
python
"{气质}的{品类},在{场景}中自成风景",
## 输出内容
- 三风格文案(国风 / 法式 / 机能)
- 每条文案的叙事角度
- 情绪关键词标注
- 教学对比分析
## 适用场景
- 品牌定位课程的"调性练习"
- 时尚文案写作工作坊
- 学生小组作业:为虚拟品牌生成多风格内容
- "同一产品,不同意义"的创意训练
## 核心原则
- 模板化,非黑盒生成
- 结构可见,每层可拆解
- 支持学生替换词汇,理解风格机制
- 所有数据本地,无网络请求
## 教学建议
1. 先运行默认示例,观察三类文案的差异
2. 修改一件服饰的属性,看文案如何变化
3. 替换词汇库中的词,微调风格强度
4. 挑战:学生自己写一个新的句式模板
5. 进阶:为同一件衣服写出第 4 种风格
七、核心知识点卡片(去营销化)
卡片 1:品牌调性的结构化表达
- 关键词:Brand Tone、Stylistic Consistency
- 要点:风格不是形容词的堆砌,而是"词汇选择 × 句式结构 × 叙事角度"的系统
卡片 2:意义重构(Reframing)
- 关键词:Product Meaning、Semantic Shift
- 要点:同一件产品,用不同语言描述,它就属于不同的"意义世界"
卡片 3:模板化创作的教学价值
- 关键词:Scaffolding、Creative Constraints
- 要点:给结构(模板),而非给答案——学生在结构中学会自由
八、总结(工程师视角)
这个程序不是在"写文案",而是在"拆解风格的 DNA"。
技术层面
- 用不到 300 行标准库代码,构建了一个"风格生成器"
- 核心数据结构是字典 + 模板字符串——简单到学生能自己改
- 三层分离(模板定义 / 映射逻辑 / 报告输出)让每一层都可以独立教学
教学层面
- 把"国风是什么感觉"变成可拆解的词汇表 + 句式表
- 学生不再是"凭感觉写",而是"理解结构后填充"
- 三风格并列输出,直观展示:同样的信息,不同的意义世界
最终价值
不是告诉你:
"这件衣服很国风 / 很法式 / 很机能"
而是给你一个工具,让每次看到一件衣服时,能问自己:
"如果让国风、法式、机能三个人各自描述它,会说出怎样不同的故事?"
那个"不同的故事",就是品牌创新的起点。
利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!