广告文案自动化与多语言
好的广告文案是测试出来的,不是拍脑袋写出来的。自动化文案生成 + 系统化多语言适配可以让测试效率提升 10 倍。
广告文案生成流程
graph LR
A[产品卖点] --> B[模板选择]
B --> C[文案变体]
C --> D[A/B 测试]
D --> E[胜出文案]
E --> F[多语言适配]
F --> G[多市场投放]
style C fill:#fff9c4,stroke:#f9a825,stroke-width:2px
style E fill:#c8e6c9,stroke:#43a047,stroke-width:2px
广告文案生成器
from dataclasses import dataclass, field
import random
@dataclass
class ProductInfo:
name: str
category: str
key_features: list[str]
price: float
discount_pct: int = 0
target_audience: str = ""
class AdCopyGenerator:
"""基于模板的广告文案生成器"""
# 文案框架模板
FRAMEWORKS = {
"PAS": { # Problem → Agitate → Solve
"structure": "痛点 → 放大 → 解决方案",
"template": (
"还在为{problem}烦恼?\n"
"{agitate}\n"
"{product}帮你一键解决——{benefit}"
),
},
"AIDA": { # Attention → Interest → Desire → Action
"structure": "注意 → 兴趣 → 欲望 → 行动",
"template": (
"🔥 {attention}\n"
"{interest}\n"
"{desire}\n"
"👉 {cta}"
),
},
"BAB": { # Before → After → Bridge
"structure": "现状 → 理想 → 桥梁",
"template": (
"以前:{before}\n"
"现在:{after}\n"
"因为有了 {product}——{bridge}"
),
},
}
# CTA 文案库
CTAS = [
"立即下单,限时{discount}%OFF",
"点击了解更多 →",
"限量{quantity}件,手慢无",
"免费试用 7 天",
"加入{count}万用户的选择",
]
URGENCY_WORDS = [
"限时", "仅剩", "最后", "今日", "倒计时",
"独家", "首发", "抢先",
]
def generate_variants(
self, product: ProductInfo, count: int = 5
) -> list[dict]:
"""生成多条文案变体"""
variants = []
frameworks = list(self.FRAMEWORKS.keys())
for i in range(count):
fw = frameworks[i % len(frameworks)]
cta = random.choice(self.CTAS)
cta = cta.format(
discount=product.discount_pct,
quantity=random.choice([50, 100, 200]),
count=random.choice([10, 50, 100]),
)
headline = self._generate_headline(product)
variants.append({
"variant_id": f"V{i+1}",
"framework": fw,
"headline": headline,
"cta": cta,
"features": product.key_features[:3],
})
return variants
def _generate_headline(self, product: ProductInfo) -> str:
urgency = random.choice(self.URGENCY_WORDS)
feature = random.choice(product.key_features)
return f"{urgency}!{product.name} — {feature}"
# 使用示例
product = ProductInfo(
name="降噪耳机 Pro",
category="电子产品",
key_features=["40dB 主动降噪", "60 小时续航", "蓝牙 5.3"],
price=499,
discount_pct=30,
target_audience="通勤族/远程办公",
)
generator = AdCopyGenerator()
for v in generator.generate_variants(product, count=3):
print(f"[{v['variant_id']}] {v['framework']}: {v['headline']}")
print(f" CTA: {v['cta']}\n")
多语言广告适配
@dataclass
class LocalizedAd:
language: str
headline: str
description: str
cta: str
char_limit: int
class MultiLangAdapter:
"""多语言广告适配"""
# 各平台各语言的字符限制
CHAR_LIMITS = {
"google_headline": {"en": 30, "zh": 15, "ja": 15, "ko": 15},
"google_description": {"en": 90, "zh": 45, "ja": 45, "ko": 45},
"facebook_primary": {"en": 125, "zh": 63, "ja": 63, "ko": 63},
}
# 文化适配要点
CULTURAL_NOTES = {
"zh-CN": "使用数字吸引力(¥199, 省X元),红色/金色积极",
"zh-TW": "避免简体字,考虑台湾用语差异",
"en-US": "Action verbs, urgency, social proof",
"ja": "敬语,含蓄表达,品质优先于价格",
"ko": "视觉导向,社交证据重要",
"ms": "注意宗教和文化敏感词",
}
def check_length(
self, text: str, ad_type: str, language: str
) -> dict:
limits = self.CHAR_LIMITS.get(ad_type, {})
limit = limits.get(language, 100)
current = len(text)
return {
"text": text[:limit],
"length": current,
"limit": limit,
"ok": current <= limit,
"over_by": max(0, current - limit),
}
def get_cultural_guide(self, market: str) -> str:
return self.CULTURAL_NOTES.get(
market, "无特殊文化要点,遵循通用最佳实践"
)
文案框架对比
| 框架 | 结构 | 最适合 | 转化场景 |
|---|---|---|---|
| PAS | 痛点→放大→解决 | 解决方案型产品 | 搜索广告 |
| AIDA | 注意→兴趣→欲望→行动 | 通用推广 | 信息流广告 |
| BAB | 前→后→桥梁 | 效果对比 | 社交广告 |
| 4U | 紧急→独特→超具体→有用 | 促销活动 | EDM/推送 |
| FAB | 功能→优势→利益 | 科技产品 | 产品页广告 |
本章小结
- 框架化生成——PAS/AIDA/BAB 三大模板覆盖 80% 场景
- 变体测试——至少生成 3-5 条变体,用数据选赢家
- 紧迫感词库——"限时/仅剩/最后" 提升 CTR 15-30%
- 多语言字符限制——中文大约是英文的一半长度限制
- 文化适配——日本重品质、东南亚重社交证据、中国重数字吸引力
下一章:Pixel 与多触点归因